@tetrascience-npm/ts-connectors-sdk 3.1.0

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 (253) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/LICENSE +201 -0
  3. package/README.md +123 -0
  4. package/dist/api-tests/configuration.test.d.ts +2 -0
  5. package/dist/api-tests/configuration.test.d.ts.map +1 -0
  6. package/dist/api-tests/configuration.test.js +49 -0
  7. package/dist/api-tests/configuration.test.js.map +1 -0
  8. package/dist/api-tests/connector-lifetime.test.d.ts +2 -0
  9. package/dist/api-tests/connector-lifetime.test.d.ts.map +1 -0
  10. package/dist/api-tests/connector-lifetime.test.js +64 -0
  11. package/dist/api-tests/connector-lifetime.test.js.map +1 -0
  12. package/dist/api-tests/connector-shutdown.test.d.ts +2 -0
  13. package/dist/api-tests/connector-shutdown.test.d.ts.map +1 -0
  14. package/dist/api-tests/connector-shutdown.test.js +76 -0
  15. package/dist/api-tests/connector-shutdown.test.js.map +1 -0
  16. package/dist/api-tests/fixture/assertions.d.ts +4 -0
  17. package/dist/api-tests/fixture/assertions.d.ts.map +1 -0
  18. package/dist/api-tests/fixture/assertions.js +8 -0
  19. package/dist/api-tests/fixture/assertions.js.map +1 -0
  20. package/dist/api-tests/fixture/config.d.ts +65 -0
  21. package/dist/api-tests/fixture/config.d.ts.map +1 -0
  22. package/dist/api-tests/fixture/config.js +24 -0
  23. package/dist/api-tests/fixture/config.js.map +1 -0
  24. package/dist/api-tests/fixture/connector-api.d.ts +126 -0
  25. package/dist/api-tests/fixture/connector-api.d.ts.map +1 -0
  26. package/dist/api-tests/fixture/connector-api.js +151 -0
  27. package/dist/api-tests/fixture/connector-api.js.map +1 -0
  28. package/dist/api-tests/fixture/connectors/test-connector.d.ts +39 -0
  29. package/dist/api-tests/fixture/connectors/test-connector.d.ts.map +1 -0
  30. package/dist/api-tests/fixture/connectors/test-connector.js +188 -0
  31. package/dist/api-tests/fixture/connectors/test-connector.js.map +1 -0
  32. package/dist/api-tests/fixture/create-http-client.d.ts +6 -0
  33. package/dist/api-tests/fixture/create-http-client.d.ts.map +1 -0
  34. package/dist/api-tests/fixture/create-http-client.js +52 -0
  35. package/dist/api-tests/fixture/create-http-client.js.map +1 -0
  36. package/dist/api-tests/fixture/fixture.d.ts +34 -0
  37. package/dist/api-tests/fixture/fixture.d.ts.map +1 -0
  38. package/dist/api-tests/fixture/fixture.js +62 -0
  39. package/dist/api-tests/fixture/fixture.js.map +1 -0
  40. package/dist/api-tests/fixture/test-connector-factory.d.ts +21 -0
  41. package/dist/api-tests/fixture/test-connector-factory.d.ts.map +1 -0
  42. package/dist/api-tests/fixture/test-connector-factory.js +78 -0
  43. package/dist/api-tests/fixture/test-connector-factory.js.map +1 -0
  44. package/dist/api-tests/label-validation.test.d.ts +2 -0
  45. package/dist/api-tests/label-validation.test.d.ts.map +1 -0
  46. package/dist/api-tests/label-validation.test.js +158 -0
  47. package/dist/api-tests/label-validation.test.js.map +1 -0
  48. package/dist/api-tests/standalone-cloudwatch-logs.test.d.ts +2 -0
  49. package/dist/api-tests/standalone-cloudwatch-logs.test.d.ts.map +1 -0
  50. package/dist/api-tests/standalone-cloudwatch-logs.test.js +32 -0
  51. package/dist/api-tests/standalone-cloudwatch-logs.test.js.map +1 -0
  52. package/dist/api-tests/user-agent.test.d.ts +2 -0
  53. package/dist/api-tests/user-agent.test.d.ts.map +1 -0
  54. package/dist/api-tests/user-agent.test.js +191 -0
  55. package/dist/api-tests/user-agent.test.js.map +1 -0
  56. package/dist/src/api.d.ts +353 -0
  57. package/dist/src/api.d.ts.map +1 -0
  58. package/dist/src/api.js +278 -0
  59. package/dist/src/api.js.map +1 -0
  60. package/dist/src/auth/auth-token-provider.d.ts +7 -0
  61. package/dist/src/auth/auth-token-provider.d.ts.map +1 -0
  62. package/dist/src/auth/auth-token-provider.js +3 -0
  63. package/dist/src/auth/auth-token-provider.js.map +1 -0
  64. package/dist/src/auth/aws-client-provider.d.ts +11 -0
  65. package/dist/src/auth/aws-client-provider.d.ts.map +1 -0
  66. package/dist/src/auth/aws-client-provider.js +3 -0
  67. package/dist/src/auth/aws-client-provider.js.map +1 -0
  68. package/dist/src/auth/aws-env-client-provider.d.ts +20 -0
  69. package/dist/src/auth/aws-env-client-provider.d.ts.map +1 -0
  70. package/dist/src/auth/aws-env-client-provider.js +69 -0
  71. package/dist/src/auth/aws-env-client-provider.js.map +1 -0
  72. package/dist/src/auth/aws-refresh-client-provider.d.ts +26 -0
  73. package/dist/src/auth/aws-refresh-client-provider.d.ts.map +1 -0
  74. package/dist/src/auth/aws-refresh-client-provider.js +111 -0
  75. package/dist/src/auth/aws-refresh-client-provider.js.map +1 -0
  76. package/dist/src/auth/aws-secret-auth-token-provider.d.ts +9 -0
  77. package/dist/src/auth/aws-secret-auth-token-provider.d.ts.map +1 -0
  78. package/dist/src/auth/aws-secret-auth-token-provider.js +58 -0
  79. package/dist/src/auth/aws-secret-auth-token-provider.js.map +1 -0
  80. package/dist/src/auth/index.d.ts +7 -0
  81. package/dist/src/auth/index.d.ts.map +1 -0
  82. package/dist/src/auth/index.js +23 -0
  83. package/dist/src/auth/index.js.map +1 -0
  84. package/dist/src/auth/predefined-auth-token-provider.d.ts +7 -0
  85. package/dist/src/auth/predefined-auth-token-provider.d.ts.map +1 -0
  86. package/dist/src/auth/predefined-auth-token-provider.js +24 -0
  87. package/dist/src/auth/predefined-auth-token-provider.js.map +1 -0
  88. package/dist/src/auth/user-supplied-auth-token-provider.d.ts +7 -0
  89. package/dist/src/auth/user-supplied-auth-token-provider.d.ts.map +1 -0
  90. package/dist/src/auth/user-supplied-auth-token-provider.js +24 -0
  91. package/dist/src/auth/user-supplied-auth-token-provider.js.map +1 -0
  92. package/dist/src/certificates.d.ts +6 -0
  93. package/dist/src/certificates.d.ts.map +1 -0
  94. package/dist/src/certificates.js +88 -0
  95. package/dist/src/certificates.js.map +1 -0
  96. package/dist/src/checksums.d.ts +50 -0
  97. package/dist/src/checksums.d.ts.map +1 -0
  98. package/dist/src/checksums.js +32 -0
  99. package/dist/src/checksums.js.map +1 -0
  100. package/dist/src/config.d.ts +41 -0
  101. package/dist/src/config.d.ts.map +1 -0
  102. package/dist/src/config.js +35 -0
  103. package/dist/src/config.js.map +1 -0
  104. package/dist/src/connector.d.ts +101 -0
  105. package/dist/src/connector.d.ts.map +1 -0
  106. package/dist/src/connector.js +374 -0
  107. package/dist/src/connector.js.map +1 -0
  108. package/dist/src/get-log-event-size.d.ts +3 -0
  109. package/dist/src/get-log-event-size.d.ts.map +1 -0
  110. package/dist/src/get-log-event-size.js +9 -0
  111. package/dist/src/get-log-event-size.js.map +1 -0
  112. package/dist/src/https-proxy-agent.d.ts +15 -0
  113. package/dist/src/https-proxy-agent.d.ts.map +1 -0
  114. package/dist/src/https-proxy-agent.js +31 -0
  115. package/dist/src/https-proxy-agent.js.map +1 -0
  116. package/dist/src/index.d.ts +9 -0
  117. package/dist/src/index.d.ts.map +1 -0
  118. package/dist/src/index.js +25 -0
  119. package/dist/src/index.js.map +1 -0
  120. package/dist/src/logger.d.ts +60 -0
  121. package/dist/src/logger.d.ts.map +1 -0
  122. package/dist/src/logger.js +284 -0
  123. package/dist/src/logger.js.map +1 -0
  124. package/dist/src/manifest.d.ts +4 -0
  125. package/dist/src/manifest.d.ts.map +1 -0
  126. package/dist/src/manifest.js +30 -0
  127. package/dist/src/manifest.js.map +1 -0
  128. package/dist/src/metrics.d.ts +59 -0
  129. package/dist/src/metrics.d.ts.map +1 -0
  130. package/dist/src/metrics.js +125 -0
  131. package/dist/src/metrics.js.map +1 -0
  132. package/dist/src/polling-connector.d.ts +50 -0
  133. package/dist/src/polling-connector.d.ts.map +1 -0
  134. package/dist/src/polling-connector.js +169 -0
  135. package/dist/src/polling-connector.js.map +1 -0
  136. package/dist/src/schemas.d.ts +77 -0
  137. package/dist/src/schemas.d.ts.map +1 -0
  138. package/dist/src/schemas.js +80 -0
  139. package/dist/src/schemas.js.map +1 -0
  140. package/dist/src/streamToString.d.ts +3 -0
  141. package/dist/src/streamToString.d.ts.map +1 -0
  142. package/dist/src/streamToString.js +25 -0
  143. package/dist/src/streamToString.js.map +1 -0
  144. package/dist/src/tdp-client.d.ts +307 -0
  145. package/dist/src/tdp-client.d.ts.map +1 -0
  146. package/dist/src/tdp-client.js +823 -0
  147. package/dist/src/tdp-client.js.map +1 -0
  148. package/dist/src/to-cloudwatch-log-event.d.ts +4 -0
  149. package/dist/src/to-cloudwatch-log-event.d.ts.map +1 -0
  150. package/dist/src/to-cloudwatch-log-event.js +10 -0
  151. package/dist/src/to-cloudwatch-log-event.js.map +1 -0
  152. package/dist/src/types.d.ts +57 -0
  153. package/dist/src/types.d.ts.map +1 -0
  154. package/dist/src/types.js +30 -0
  155. package/dist/src/types.js.map +1 -0
  156. package/dist/src/utils.d.ts +10 -0
  157. package/dist/src/utils.d.ts.map +1 -0
  158. package/dist/src/utils.js +20 -0
  159. package/dist/src/utils.js.map +1 -0
  160. package/dist/test/api.test.d.ts +2 -0
  161. package/dist/test/api.test.d.ts.map +1 -0
  162. package/dist/test/api.test.js +245 -0
  163. package/dist/test/api.test.js.map +1 -0
  164. package/dist/test/auth/aws-env-client-provider.test.d.ts +2 -0
  165. package/dist/test/auth/aws-env-client-provider.test.d.ts.map +1 -0
  166. package/dist/test/auth/aws-env-client-provider.test.js +56 -0
  167. package/dist/test/auth/aws-env-client-provider.test.js.map +1 -0
  168. package/dist/test/auth/aws-refresh-client-provider.test.d.ts +2 -0
  169. package/dist/test/auth/aws-refresh-client-provider.test.d.ts.map +1 -0
  170. package/dist/test/auth/aws-refresh-client-provider.test.js +118 -0
  171. package/dist/test/auth/aws-refresh-client-provider.test.js.map +1 -0
  172. package/dist/test/auth/aws-secret-auth-token-provider.test.d.ts +2 -0
  173. package/dist/test/auth/aws-secret-auth-token-provider.test.d.ts.map +1 -0
  174. package/dist/test/auth/aws-secret-auth-token-provider.test.js +74 -0
  175. package/dist/test/auth/aws-secret-auth-token-provider.test.js.map +1 -0
  176. package/dist/test/auth/predefined-auth-token-provider.test.d.ts +2 -0
  177. package/dist/test/auth/predefined-auth-token-provider.test.d.ts.map +1 -0
  178. package/dist/test/auth/predefined-auth-token-provider.test.js +24 -0
  179. package/dist/test/auth/predefined-auth-token-provider.test.js.map +1 -0
  180. package/dist/test/auth/user-supplied-auth-token-provider.test.d.ts +2 -0
  181. package/dist/test/auth/user-supplied-auth-token-provider.test.d.ts.map +1 -0
  182. package/dist/test/auth/user-supplied-auth-token-provider.test.js +24 -0
  183. package/dist/test/auth/user-supplied-auth-token-provider.test.js.map +1 -0
  184. package/dist/test/certificates.test.d.ts +2 -0
  185. package/dist/test/certificates.test.d.ts.map +1 -0
  186. package/dist/test/certificates.test.js +83 -0
  187. package/dist/test/certificates.test.js.map +1 -0
  188. package/dist/test/checksums.test.d.ts +2 -0
  189. package/dist/test/checksums.test.d.ts.map +1 -0
  190. package/dist/test/checksums.test.js +29 -0
  191. package/dist/test/checksums.test.js.map +1 -0
  192. package/dist/test/connector-shutdown.test.d.ts +2 -0
  193. package/dist/test/connector-shutdown.test.d.ts.map +1 -0
  194. package/dist/test/connector-shutdown.test.js +145 -0
  195. package/dist/test/connector-shutdown.test.js.map +1 -0
  196. package/dist/test/connector.test.d.ts +2 -0
  197. package/dist/test/connector.test.d.ts.map +1 -0
  198. package/dist/test/connector.test.js +286 -0
  199. package/dist/test/connector.test.js.map +1 -0
  200. package/dist/test/healthstatus-enum-values.test.d.ts +2 -0
  201. package/dist/test/healthstatus-enum-values.test.d.ts.map +1 -0
  202. package/dist/test/healthstatus-enum-values.test.js +18 -0
  203. package/dist/test/healthstatus-enum-values.test.js.map +1 -0
  204. package/dist/test/logger.test.d.ts +2 -0
  205. package/dist/test/logger.test.d.ts.map +1 -0
  206. package/dist/test/logger.test.js +301 -0
  207. package/dist/test/logger.test.js.map +1 -0
  208. package/dist/test/manifest.test.d.ts +2 -0
  209. package/dist/test/manifest.test.d.ts.map +1 -0
  210. package/dist/test/manifest.test.js +55 -0
  211. package/dist/test/manifest.test.js.map +1 -0
  212. package/dist/test/polling-connector.test.d.ts +2 -0
  213. package/dist/test/polling-connector.test.d.ts.map +1 -0
  214. package/dist/test/polling-connector.test.js +170 -0
  215. package/dist/test/polling-connector.test.js.map +1 -0
  216. package/dist/test/schemas.test.d.ts +2 -0
  217. package/dist/test/schemas.test.d.ts.map +1 -0
  218. package/dist/test/schemas.test.js +211 -0
  219. package/dist/test/schemas.test.js.map +1 -0
  220. package/dist/test/tdp-client.test.d.ts +2 -0
  221. package/dist/test/tdp-client.test.d.ts.map +1 -0
  222. package/dist/test/tdp-client.test.js +1204 -0
  223. package/dist/test/tdp-client.test.js.map +1 -0
  224. package/dist/test/test-connector/index.d.ts +2 -0
  225. package/dist/test/test-connector/index.d.ts.map +1 -0
  226. package/dist/test/test-connector/index.js +23 -0
  227. package/dist/test/test-connector/index.js.map +1 -0
  228. package/dist/test/test-connector/test-connector.d.ts +7 -0
  229. package/dist/test/test-connector/test-connector.d.ts.map +1 -0
  230. package/dist/test/test-connector/test-connector.js +32 -0
  231. package/dist/test/test-connector/test-connector.js.map +1 -0
  232. package/dist/test/test-utils/api-mocks.d.ts +6 -0
  233. package/dist/test/test-utils/api-mocks.d.ts.map +1 -0
  234. package/dist/test/test-utils/api-mocks.js +19 -0
  235. package/dist/test/test-utils/api-mocks.js.map +1 -0
  236. package/dist/test/test-utils/aws-mocks.d.ts +8 -0
  237. package/dist/test/test-utils/aws-mocks.d.ts.map +1 -0
  238. package/dist/test/test-utils/aws-mocks.js +39 -0
  239. package/dist/test/test-utils/aws-mocks.js.map +1 -0
  240. package/dist/test/test-utils/regex.d.ts +2 -0
  241. package/dist/test/test-utils/regex.d.ts.map +1 -0
  242. package/dist/test/test-utils/regex.js +7 -0
  243. package/dist/test/test-utils/regex.js.map +1 -0
  244. package/dist/test/utils.test.d.ts +2 -0
  245. package/dist/test/utils.test.d.ts.map +1 -0
  246. package/dist/test/utils.test.js +17 -0
  247. package/dist/test/utils.test.js.map +1 -0
  248. package/dist/tsconfig.tsbuildinfo +1 -0
  249. package/dist/vitest.config.d.mts +3 -0
  250. package/dist/vitest.config.d.mts.map +1 -0
  251. package/dist/vitest.config.mjs +20 -0
  252. package/dist/vitest.config.mjs.map +1 -0
  253. package/package.json +133 -0
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-empty-function */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
27
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28
+ return new (P || (P = Promise))(function (resolve, reject) {
29
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
30
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
31
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
33
+ });
34
+ };
35
+ var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
36
+ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
37
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
38
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
39
+ return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
40
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
41
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
42
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
43
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
44
+ function fulfill(value) { resume("next", value); }
45
+ function reject(value) { resume("throw", value); }
46
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.Connector = void 0;
50
+ const api_1 = require("./api");
51
+ const metrics = __importStar(require("./metrics"));
52
+ const types_1 = require("./types");
53
+ const DEFAULT_HEARTBEAT_INTERVAL = 30 * 1000;
54
+ const DEFAULT_METRICS_BATCH_NUMBER = 10;
55
+ const DEFAULT_FILE_PROCESSING_BATCH_SIZE = 50;
56
+ const FILE_PROCESSING_RETRY_NUMBER = 5;
57
+ /**
58
+ * Connector abstract class that should be overridden to define connector
59
+ */
60
+ class Connector {
61
+ get isConnectorLoaded() {
62
+ return !!this.tdpClient.connector;
63
+ }
64
+ /**
65
+ * Connector configuration object
66
+ */
67
+ get connector() {
68
+ if (!this.isConnectorLoaded) {
69
+ throw new Error('Connector information is not loaded');
70
+ }
71
+ return this.tdpClient.connector;
72
+ }
73
+ /**
74
+ * Connector configuration object
75
+ */
76
+ get config() {
77
+ return this.connector.config;
78
+ }
79
+ /**
80
+ * @param tdpClient TDP Client
81
+ * @param options Additional options
82
+ */
83
+ constructor(tdpClient, options = {}) {
84
+ this.tdpClient = tdpClient;
85
+ this.options = options;
86
+ this.logger = tdpClient.logger;
87
+ }
88
+ /**
89
+ * On before connector starts initializing
90
+ */
91
+ onInitiating() { }
92
+ /**
93
+ * On connector initialized
94
+ */
95
+ onInitialized() { }
96
+ /**
97
+ * On connector start uploading file
98
+ */
99
+ onStart() {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ this.logger.debug('Connector onStart');
102
+ yield this.loadConnector();
103
+ });
104
+ }
105
+ /**
106
+ * On connector stop uploading file
107
+ */
108
+ onStop() {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ this.logger.debug('Connector onStop');
111
+ yield this.loadConnector();
112
+ });
113
+ }
114
+ /**
115
+ * On before connector shutting down handler
116
+ */
117
+ onShutdown() { }
118
+ validateConfigByVersion(options) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ var _a, _b, _c;
121
+ const { version } = options;
122
+ this.logger.debug('Validating config by version', { version });
123
+ let config = null;
124
+ try {
125
+ config = yield this.tdpClient.getConfig({ version });
126
+ }
127
+ catch (e) {
128
+ const msg = (_c = (_b = (_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : '';
129
+ if (msg.includes('Invalid organization setting')) {
130
+ return {
131
+ valid: false,
132
+ status: types_1.CommandStatus.SUCCESS,
133
+ error: msg,
134
+ };
135
+ }
136
+ return {
137
+ valid: false,
138
+ error: e.message,
139
+ };
140
+ }
141
+ if (config) {
142
+ return this.validateConfig(config);
143
+ }
144
+ else {
145
+ return {
146
+ valid: false,
147
+ error: 'Could not retrieve version to validate.',
148
+ };
149
+ }
150
+ });
151
+ }
152
+ /**
153
+ * On before connector shutting down handler
154
+ */
155
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
156
+ validateConfig(config) {
157
+ this.logger.debug('Default connector validateConfig implementation always returns true');
158
+ return {
159
+ valid: true,
160
+ };
161
+ }
162
+ /**
163
+ * On configuration updated handler
164
+ * @param prev Previous configuration object
165
+ */
166
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
167
+ onConnectorUpdated(prev) {
168
+ this.logger.debug('Connector updated');
169
+ }
170
+ /**
171
+ * Command execution handler
172
+ * @param command Command to handle
173
+ */
174
+ handleCommand(command) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ const { commandId, action } = command;
177
+ try {
178
+ this.logger.debug('Handling command', { id: commandId, action });
179
+ const response = yield this.tryHandleCommand(command);
180
+ yield this.tdpClient.sendCommandResponse(Object.assign(Object.assign({}, command), { status: types_1.CommandStatus.SUCCESS, body: response }));
181
+ this.logger.debug('Handled command', { id: commandId, action });
182
+ }
183
+ catch (err) {
184
+ this.logger.error('Command execution error', err, { id: commandId, action });
185
+ if (err instanceof types_1.UnknownCommandError) {
186
+ this.logger.error('Unknown command', err, { id: commandId, action });
187
+ yield this.tdpClient.sendCommandResponse(Object.assign(Object.assign({}, command), { status: types_1.CommandStatus.REJECTED, body: {
188
+ message: err.message,
189
+ } }));
190
+ }
191
+ else {
192
+ yield this.tdpClient.sendCommandResponse(Object.assign(Object.assign({}, command), { status: types_1.CommandStatus.FAILURE, body: {
193
+ message: err === null || err === void 0 ? void 0 : err.message,
194
+ code: err === null || err === void 0 ? void 0 : err.code,
195
+ } }));
196
+ }
197
+ }
198
+ });
199
+ }
200
+ tryHandleCommand(command) {
201
+ switch (command.action) {
202
+ case types_1.CommandAction.ValidateConfig:
203
+ return this.validateConfigByVersion(command.body);
204
+ case types_1.CommandAction.UpdateConfig:
205
+ return this.loadConnector();
206
+ case types_1.CommandAction.Shutdown:
207
+ return this.shutdown();
208
+ case types_1.CommandAction.Start:
209
+ return this.onStart();
210
+ case types_1.CommandAction.Stop:
211
+ return this.onStop();
212
+ default:
213
+ throw new types_1.UnknownCommandError(command.action);
214
+ }
215
+ }
216
+ /**
217
+ * Start connector execution
218
+ * - Initialize TDP Client
219
+ * - Load connector configuration
220
+ * - Register common command handlers
221
+ */
222
+ start() {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ try {
225
+ this.logger.info('Connector initializing');
226
+ yield this.onInitiating();
227
+ yield this.tdpClient.init();
228
+ yield this.loadConnector(false);
229
+ if (this.connector.hostType === api_1.ConnectorHostType.STANDALONE) {
230
+ this.logger.debug('Connector is in standalone host mode, registring shutdown handler if process is terminated');
231
+ process.on('SIGTERM', () => __awaiter(this, void 0, void 0, function* () { return yield this.shutdown(); }));
232
+ }
233
+ // NOTE: We should start heartbeat as soon as possible as it is used to determine connector status
234
+ // that affects connector handling logic (e.g. should we sent commands to connector or not)
235
+ this.startHeartbeat();
236
+ this.startMetricsReporting();
237
+ // NOTE: Subscribe to all commands
238
+ this.tdpClient.commands.addListener('command', (command) => __awaiter(this, void 0, void 0, function* () {
239
+ try {
240
+ yield this.handleCommand(command);
241
+ }
242
+ catch (err) {
243
+ this.logger.error('Unhandled command execution error', err);
244
+ }
245
+ }));
246
+ yield this.onInitialized();
247
+ this.logger.info('Connector initialized', {
248
+ namespace: this.connector.artifact.namespace,
249
+ slug: this.connector.artifact.slug,
250
+ version: this.connector.artifact.version,
251
+ });
252
+ this.tdpClient.startCommandsListener();
253
+ if (this.connector.operatingStatus === api_1.OperatingStatus.RUNNING) {
254
+ yield this.onStart();
255
+ }
256
+ }
257
+ catch (err) {
258
+ this.logger.error('Unhandled error starting connector', err);
259
+ throw err;
260
+ }
261
+ });
262
+ }
263
+ loadConnector() {
264
+ return __awaiter(this, arguments, void 0, function* (emitEvent = true) {
265
+ const prevConnector = this.isConnectorLoaded ? this.connector : undefined;
266
+ yield this.tdpClient.reloadConnector();
267
+ if (emitEvent) {
268
+ yield this.onConnectorUpdated(prevConnector);
269
+ }
270
+ });
271
+ }
272
+ startHeartbeat() {
273
+ this.logger.debug('Starting heartbeat');
274
+ const heartbeat = () => __awaiter(this, void 0, void 0, function* () {
275
+ try {
276
+ yield this.tdpClient.heartbeat();
277
+ }
278
+ catch (err) {
279
+ this.logger.error('Error sending heartbeat', err);
280
+ }
281
+ });
282
+ setImmediate(heartbeat);
283
+ this.heartbeatInterval = setInterval(heartbeat, this.options.heartbeatUploadInterval || DEFAULT_HEARTBEAT_INTERVAL);
284
+ }
285
+ startMetricsReporting() {
286
+ this.logger.debug('Starting metrics reporting');
287
+ this.metricsCollector = new metrics.MetricsCollector({
288
+ exporter: (metrics) => __awaiter(this, void 0, void 0, function* () {
289
+ try {
290
+ yield this.tdpClient.reportMetrics(metrics.map(({ name, unit, point }) => ({
291
+ name,
292
+ unit,
293
+ values: [point],
294
+ })));
295
+ }
296
+ catch (err) {
297
+ this.logger.error('Error sending metrics', err);
298
+ }
299
+ }),
300
+ batchNumber: this.options.metricsBatchNumber || DEFAULT_METRICS_BATCH_NUMBER,
301
+ });
302
+ // NOTE: Add default metrics
303
+ this.logger.debug('Registering default metrics providers: CpuUsage, MemoryAvailable, MemoryUsed');
304
+ this.metricsCollector.registerProvider(new metrics.CpuUsageMetricProvider());
305
+ this.metricsCollector.registerProvider(new metrics.MemoryAvailableMetricProvider());
306
+ this.metricsCollector.registerProvider(new metrics.MemoryUsedMetricProvider());
307
+ this.metricsCollector.start();
308
+ }
309
+ shutdown() {
310
+ return __awaiter(this, void 0, void 0, function* () {
311
+ var _a, _b, _c;
312
+ this.logger.debug('Connector shutting down');
313
+ yield this.onShutdown();
314
+ (_a = this.tdpClient) === null || _a === void 0 ? void 0 : _a.stopCommandsListener();
315
+ (_b = this.metricsCollector) === null || _b === void 0 ? void 0 : _b.stop();
316
+ if (this.heartbeatInterval) {
317
+ clearInterval(this.heartbeatInterval);
318
+ }
319
+ this.logger.debug('Connector shutdown complete');
320
+ yield ((_c = this.tdpClient) === null || _c === void 0 ? void 0 : _c.logger.stopCloudwatch());
321
+ });
322
+ }
323
+ /**
324
+ * Number of file processing retries
325
+ */
326
+ get fileProcessingRetryNumber() {
327
+ return FILE_PROCESSING_RETRY_NUMBER;
328
+ }
329
+ /**
330
+ * Number of file to process in one batch
331
+ */
332
+ get fileProcessingBatchSize() {
333
+ return DEFAULT_FILE_PROCESSING_BATCH_SIZE;
334
+ }
335
+ getFilesToProcess() {
336
+ return __asyncGenerator(this, arguments, function* getFilesToProcess_1(options = {}) {
337
+ const startProcessingTime = new Date();
338
+ let batchIndex = 0;
339
+ // NOTE: We need to keep track of the total number of files to process (taken from the first call to getPendingFiles
340
+ // because in case of a failures or issues, we don't want to get stuck in an infinite loop.
341
+ let numberOfFilesToProcess = null;
342
+ let numberOfFilesProcessed = 0;
343
+ let files = [];
344
+ do {
345
+ const filesToProcess = yield __await(this.getFilesToProcessBatch(startProcessingTime, options));
346
+ files = filesToProcess.files;
347
+ numberOfFilesToProcess = numberOfFilesToProcess !== null && numberOfFilesToProcess !== void 0 ? numberOfFilesToProcess : filesToProcess.total;
348
+ this.logger.info('Processing next files batch', {
349
+ total: numberOfFilesToProcess,
350
+ currentBatchSize: files.length,
351
+ batchIndex,
352
+ });
353
+ for (const file of files) {
354
+ yield yield __await(file);
355
+ }
356
+ numberOfFilesProcessed += files.length;
357
+ batchIndex++;
358
+ // Process is stopped when number of files processed is equal or more than number of files to process
359
+ // or when number of files in the current batch is less than the batch size
360
+ } while (numberOfFilesProcessed < numberOfFilesToProcess && files.length === this.fileProcessingBatchSize);
361
+ });
362
+ }
363
+ getFilesToProcessBatch(startProcessingTime, options) {
364
+ this.logger.info('Getting pending files');
365
+ return this.tdpClient.getFiles(Object.assign(Object.assign({
366
+ // PROCESSING should be included as well as when we get pending files there should not be processing ones
367
+ statuses: [api_1.ProcessingStatus.PENDING, api_1.ProcessingStatus.ERROR, api_1.ProcessingStatus.PROCESSING] }, options), { maxErrors: this.fileProcessingRetryNumber, take: this.fileProcessingBatchSize,
368
+ // We want to get all files that were updated before the start of the processing to not get
369
+ // files that were updated during the processing
370
+ updatedBefore: startProcessingTime }));
371
+ }
372
+ }
373
+ exports.Connector = Connector;
374
+ //# sourceMappingURL=connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import * as logs from '@aws-sdk/client-cloudwatch-logs';
2
+ export declare function getLogEventSize(logEvent: logs.InputLogEvent): number;
3
+ //# sourceMappingURL=get-log-event-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-log-event-size.d.ts","sourceRoot":"","sources":["../../src/get-log-event-size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAC;AAGxD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAEpE"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLogEventSize = getLogEventSize;
4
+ // Based on https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-logs/command/PutLogEventsCommand/
5
+ function getLogEventSize(logEvent) {
6
+ var _a;
7
+ return Buffer.byteLength((_a = logEvent.message) !== null && _a !== void 0 ? _a : "", 'utf8') + 26; // 26 bytes for the timestamp and other metadata
8
+ }
9
+ //# sourceMappingURL=get-log-event-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-log-event-size.js","sourceRoot":"","sources":["../../src/get-log-event-size.ts"],"names":[],"mappings":";;AAGA,0CAEC;AAHD,sHAAsH;AACtH,SAAgB,eAAe,CAAC,QAA4B;;IAC1D,OAAO,MAAM,CAAC,UAAU,CAAC,MAAA,QAAQ,CAAC,OAAO,mCAAI,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,gDAAgD;AACjH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { AgentConnectOpts } from 'agent-base';
2
+ import http from 'http';
3
+ import { HttpsProxyAgent, HttpsProxyAgentOptions } from 'https-proxy-agent';
4
+ type PatchedHttpsProxyAgentOptions<T> = HttpsProxyAgentOptions<T> & {
5
+ ca: string | string[];
6
+ rejectUnauthorized?: boolean;
7
+ };
8
+ export declare class PatchedHttpsProxyAgent<Uri extends string> extends HttpsProxyAgent<Uri> {
9
+ private readonly ca;
10
+ private readonly rejectUnauthorized;
11
+ constructor(proxy: Uri | URL, opts?: PatchedHttpsProxyAgentOptions<Uri>);
12
+ connect(req: http.ClientRequest, opts: AgentConnectOpts): Promise<import("net").Socket>;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=https-proxy-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-proxy-agent.d.ts","sourceRoot":"","sources":["../../src/https-proxy-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,KAAK,6BAA6B,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAAG;IAClE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAGF,qBAAa,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAE,SAAQ,eAAe,CAAC,GAAG,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;gBAE7C,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,6BAA6B,CAAC,GAAG,CAAC;IAMjE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB;CAG9D"}
@@ -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.PatchedHttpsProxyAgent = void 0;
13
+ const https_proxy_agent_1 = require("https-proxy-agent");
14
+ // More details: https://github.com/TooTallNate/proxy-agents/issues/89
15
+ class PatchedHttpsProxyAgent extends https_proxy_agent_1.HttpsProxyAgent {
16
+ constructor(proxy, opts) {
17
+ super(proxy, opts);
18
+ this.ca = opts === null || opts === void 0 ? void 0 : opts.ca;
19
+ this.rejectUnauthorized = opts === null || opts === void 0 ? void 0 : opts.rejectUnauthorized;
20
+ }
21
+ connect(req, opts) {
22
+ const _super = Object.create(null, {
23
+ connect: { get: () => super.connect }
24
+ });
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ return _super.connect.call(this, req, Object.assign(opts, { ca: this.ca, rejectUnauthorized: this.rejectUnauthorized }));
27
+ });
28
+ }
29
+ }
30
+ exports.PatchedHttpsProxyAgent = PatchedHttpsProxyAgent;
31
+ //# sourceMappingURL=https-proxy-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-proxy-agent.js","sourceRoot":"","sources":["../../src/https-proxy-agent.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,yDAA4E;AAO5E,sEAAsE;AACtE,MAAa,sBAA2C,SAAQ,mCAAoB;IAIlF,YAAY,KAAgB,EAAE,IAAyC;QACrE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC;IACrD,CAAC;IAEK,OAAO,CAAC,GAAuB,EAAE,IAAsB;;;;;YAC3D,OAAO,OAAM,OAAO,YAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAC/G,CAAC;KAAA;CACF;AAbD,wDAaC"}
@@ -0,0 +1,9 @@
1
+ export * from './logger';
2
+ export * from './api';
3
+ export * from './connector';
4
+ export * from './polling-connector';
5
+ export * from './tdp-client';
6
+ export * from './types';
7
+ export * from './auth';
8
+ export * from './schemas';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,25 @@
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("./api"), exports);
19
+ __exportStar(require("./connector"), exports);
20
+ __exportStar(require("./polling-connector"), exports);
21
+ __exportStar(require("./tdp-client"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ __exportStar(require("./auth"), exports);
24
+ __exportStar(require("./schemas"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,8CAA4B;AAC5B,sDAAoC;AACpC,+CAA6B;AAC7B,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B"}
@@ -0,0 +1,60 @@
1
+ import * as logs from '@aws-sdk/client-cloudwatch-logs';
2
+ export type ConsoleMethod = 'debug' | 'info' | 'warn' | 'error';
3
+ export interface LoggerOptions {
4
+ metadata?: any;
5
+ writeToCloudwatch?: boolean;
6
+ orgSlug: string;
7
+ connectorId: string;
8
+ }
9
+ export interface LogEvent {
10
+ timestamp: Date;
11
+ method: ConsoleMethod;
12
+ message: string;
13
+ error?: LogError;
14
+ extra: any;
15
+ }
16
+ export type LogError = Record<string, unknown> | {
17
+ message: string;
18
+ response: any;
19
+ } | undefined;
20
+ export declare function CLOUDWATCH_BUFFER_LIMIT(): number;
21
+ export declare function CLOUDWATCH_FLUSH_LIMIT(): number;
22
+ export declare function CLOUDWATCH_FLUSH_INTERVAL_MS(): number;
23
+ export declare const MAX_EVENT_SIZE_BYTES: number;
24
+ export declare const MAX_BATCH_SIZE_BYTES: number;
25
+ export declare const MAX_BATCH_SIZE_EVENTS: number;
26
+ export declare class Logger {
27
+ private readonly options;
28
+ private cloudwatchBuffer;
29
+ private cloudwatchClient;
30
+ readonly logStreamName: string;
31
+ readonly logGroupName: string;
32
+ private hasLoggedBufferFull;
33
+ private hasHitFlushLimit;
34
+ private cloudwatchBufferFlushTimeout;
35
+ private bufferFlushLock;
36
+ constructor(options: LoggerOptions);
37
+ debug(message: string): void;
38
+ debug(message: string, meta: any): void;
39
+ debug(message: string, error: Error, meta?: any): void;
40
+ info(message: string): void;
41
+ info(message: string, meta: any): void;
42
+ info(message: string, error: Error, meta?: any): void;
43
+ warn(message: string): void;
44
+ warn(message: string, meta: any): void;
45
+ warn(message: string, error: Error, meta?: any): void;
46
+ error(message: string): void;
47
+ error(message: string, meta: any): void;
48
+ error(message: string, error: Error, meta?: any): void;
49
+ private log;
50
+ private write;
51
+ getLogError(error?: Error): LogError;
52
+ startCloudwatch(client: logs.CloudWatchLogsClient): Promise<void>;
53
+ stopCloudwatch(): Promise<void>;
54
+ flushCloudwatchBuffer(trigger: string): Promise<void>;
55
+ private sendToCloudwatchBuffer;
56
+ private sendToConsole;
57
+ private createLogStream;
58
+ private putLogEvents;
59
+ }
60
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}