@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.
- package/CHANGELOG.md +201 -0
- package/LICENSE +201 -0
- package/README.md +123 -0
- package/dist/api-tests/configuration.test.d.ts +2 -0
- package/dist/api-tests/configuration.test.d.ts.map +1 -0
- package/dist/api-tests/configuration.test.js +49 -0
- package/dist/api-tests/configuration.test.js.map +1 -0
- package/dist/api-tests/connector-lifetime.test.d.ts +2 -0
- package/dist/api-tests/connector-lifetime.test.d.ts.map +1 -0
- package/dist/api-tests/connector-lifetime.test.js +64 -0
- package/dist/api-tests/connector-lifetime.test.js.map +1 -0
- package/dist/api-tests/connector-shutdown.test.d.ts +2 -0
- package/dist/api-tests/connector-shutdown.test.d.ts.map +1 -0
- package/dist/api-tests/connector-shutdown.test.js +76 -0
- package/dist/api-tests/connector-shutdown.test.js.map +1 -0
- package/dist/api-tests/fixture/assertions.d.ts +4 -0
- package/dist/api-tests/fixture/assertions.d.ts.map +1 -0
- package/dist/api-tests/fixture/assertions.js +8 -0
- package/dist/api-tests/fixture/assertions.js.map +1 -0
- package/dist/api-tests/fixture/config.d.ts +65 -0
- package/dist/api-tests/fixture/config.d.ts.map +1 -0
- package/dist/api-tests/fixture/config.js +24 -0
- package/dist/api-tests/fixture/config.js.map +1 -0
- package/dist/api-tests/fixture/connector-api.d.ts +126 -0
- package/dist/api-tests/fixture/connector-api.d.ts.map +1 -0
- package/dist/api-tests/fixture/connector-api.js +151 -0
- package/dist/api-tests/fixture/connector-api.js.map +1 -0
- package/dist/api-tests/fixture/connectors/test-connector.d.ts +39 -0
- package/dist/api-tests/fixture/connectors/test-connector.d.ts.map +1 -0
- package/dist/api-tests/fixture/connectors/test-connector.js +188 -0
- package/dist/api-tests/fixture/connectors/test-connector.js.map +1 -0
- package/dist/api-tests/fixture/create-http-client.d.ts +6 -0
- package/dist/api-tests/fixture/create-http-client.d.ts.map +1 -0
- package/dist/api-tests/fixture/create-http-client.js +52 -0
- package/dist/api-tests/fixture/create-http-client.js.map +1 -0
- package/dist/api-tests/fixture/fixture.d.ts +34 -0
- package/dist/api-tests/fixture/fixture.d.ts.map +1 -0
- package/dist/api-tests/fixture/fixture.js +62 -0
- package/dist/api-tests/fixture/fixture.js.map +1 -0
- package/dist/api-tests/fixture/test-connector-factory.d.ts +21 -0
- package/dist/api-tests/fixture/test-connector-factory.d.ts.map +1 -0
- package/dist/api-tests/fixture/test-connector-factory.js +78 -0
- package/dist/api-tests/fixture/test-connector-factory.js.map +1 -0
- package/dist/api-tests/label-validation.test.d.ts +2 -0
- package/dist/api-tests/label-validation.test.d.ts.map +1 -0
- package/dist/api-tests/label-validation.test.js +158 -0
- package/dist/api-tests/label-validation.test.js.map +1 -0
- package/dist/api-tests/standalone-cloudwatch-logs.test.d.ts +2 -0
- package/dist/api-tests/standalone-cloudwatch-logs.test.d.ts.map +1 -0
- package/dist/api-tests/standalone-cloudwatch-logs.test.js +32 -0
- package/dist/api-tests/standalone-cloudwatch-logs.test.js.map +1 -0
- package/dist/api-tests/user-agent.test.d.ts +2 -0
- package/dist/api-tests/user-agent.test.d.ts.map +1 -0
- package/dist/api-tests/user-agent.test.js +191 -0
- package/dist/api-tests/user-agent.test.js.map +1 -0
- package/dist/src/api.d.ts +353 -0
- package/dist/src/api.d.ts.map +1 -0
- package/dist/src/api.js +278 -0
- package/dist/src/api.js.map +1 -0
- package/dist/src/auth/auth-token-provider.d.ts +7 -0
- package/dist/src/auth/auth-token-provider.d.ts.map +1 -0
- package/dist/src/auth/auth-token-provider.js +3 -0
- package/dist/src/auth/auth-token-provider.js.map +1 -0
- package/dist/src/auth/aws-client-provider.d.ts +11 -0
- package/dist/src/auth/aws-client-provider.d.ts.map +1 -0
- package/dist/src/auth/aws-client-provider.js +3 -0
- package/dist/src/auth/aws-client-provider.js.map +1 -0
- package/dist/src/auth/aws-env-client-provider.d.ts +20 -0
- package/dist/src/auth/aws-env-client-provider.d.ts.map +1 -0
- package/dist/src/auth/aws-env-client-provider.js +69 -0
- package/dist/src/auth/aws-env-client-provider.js.map +1 -0
- package/dist/src/auth/aws-refresh-client-provider.d.ts +26 -0
- package/dist/src/auth/aws-refresh-client-provider.d.ts.map +1 -0
- package/dist/src/auth/aws-refresh-client-provider.js +111 -0
- package/dist/src/auth/aws-refresh-client-provider.js.map +1 -0
- package/dist/src/auth/aws-secret-auth-token-provider.d.ts +9 -0
- package/dist/src/auth/aws-secret-auth-token-provider.d.ts.map +1 -0
- package/dist/src/auth/aws-secret-auth-token-provider.js +58 -0
- package/dist/src/auth/aws-secret-auth-token-provider.js.map +1 -0
- package/dist/src/auth/index.d.ts +7 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +23 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/predefined-auth-token-provider.d.ts +7 -0
- package/dist/src/auth/predefined-auth-token-provider.d.ts.map +1 -0
- package/dist/src/auth/predefined-auth-token-provider.js +24 -0
- package/dist/src/auth/predefined-auth-token-provider.js.map +1 -0
- package/dist/src/auth/user-supplied-auth-token-provider.d.ts +7 -0
- package/dist/src/auth/user-supplied-auth-token-provider.d.ts.map +1 -0
- package/dist/src/auth/user-supplied-auth-token-provider.js +24 -0
- package/dist/src/auth/user-supplied-auth-token-provider.js.map +1 -0
- package/dist/src/certificates.d.ts +6 -0
- package/dist/src/certificates.d.ts.map +1 -0
- package/dist/src/certificates.js +88 -0
- package/dist/src/certificates.js.map +1 -0
- package/dist/src/checksums.d.ts +50 -0
- package/dist/src/checksums.d.ts.map +1 -0
- package/dist/src/checksums.js +32 -0
- package/dist/src/checksums.js.map +1 -0
- package/dist/src/config.d.ts +41 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +35 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/connector.d.ts +101 -0
- package/dist/src/connector.d.ts.map +1 -0
- package/dist/src/connector.js +374 -0
- package/dist/src/connector.js.map +1 -0
- package/dist/src/get-log-event-size.d.ts +3 -0
- package/dist/src/get-log-event-size.d.ts.map +1 -0
- package/dist/src/get-log-event-size.js +9 -0
- package/dist/src/get-log-event-size.js.map +1 -0
- package/dist/src/https-proxy-agent.d.ts +15 -0
- package/dist/src/https-proxy-agent.d.ts.map +1 -0
- package/dist/src/https-proxy-agent.js +31 -0
- package/dist/src/https-proxy-agent.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/logger.d.ts +60 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +284 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/manifest.d.ts +4 -0
- package/dist/src/manifest.d.ts.map +1 -0
- package/dist/src/manifest.js +30 -0
- package/dist/src/manifest.js.map +1 -0
- package/dist/src/metrics.d.ts +59 -0
- package/dist/src/metrics.d.ts.map +1 -0
- package/dist/src/metrics.js +125 -0
- package/dist/src/metrics.js.map +1 -0
- package/dist/src/polling-connector.d.ts +50 -0
- package/dist/src/polling-connector.d.ts.map +1 -0
- package/dist/src/polling-connector.js +169 -0
- package/dist/src/polling-connector.js.map +1 -0
- package/dist/src/schemas.d.ts +77 -0
- package/dist/src/schemas.d.ts.map +1 -0
- package/dist/src/schemas.js +80 -0
- package/dist/src/schemas.js.map +1 -0
- package/dist/src/streamToString.d.ts +3 -0
- package/dist/src/streamToString.d.ts.map +1 -0
- package/dist/src/streamToString.js +25 -0
- package/dist/src/streamToString.js.map +1 -0
- package/dist/src/tdp-client.d.ts +307 -0
- package/dist/src/tdp-client.d.ts.map +1 -0
- package/dist/src/tdp-client.js +823 -0
- package/dist/src/tdp-client.js.map +1 -0
- package/dist/src/to-cloudwatch-log-event.d.ts +4 -0
- package/dist/src/to-cloudwatch-log-event.d.ts.map +1 -0
- package/dist/src/to-cloudwatch-log-event.js +10 -0
- package/dist/src/to-cloudwatch-log-event.js.map +1 -0
- package/dist/src/types.d.ts +57 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +30 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +10 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +20 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/test/api.test.d.ts +2 -0
- package/dist/test/api.test.d.ts.map +1 -0
- package/dist/test/api.test.js +245 -0
- package/dist/test/api.test.js.map +1 -0
- package/dist/test/auth/aws-env-client-provider.test.d.ts +2 -0
- package/dist/test/auth/aws-env-client-provider.test.d.ts.map +1 -0
- package/dist/test/auth/aws-env-client-provider.test.js +56 -0
- package/dist/test/auth/aws-env-client-provider.test.js.map +1 -0
- package/dist/test/auth/aws-refresh-client-provider.test.d.ts +2 -0
- package/dist/test/auth/aws-refresh-client-provider.test.d.ts.map +1 -0
- package/dist/test/auth/aws-refresh-client-provider.test.js +118 -0
- package/dist/test/auth/aws-refresh-client-provider.test.js.map +1 -0
- package/dist/test/auth/aws-secret-auth-token-provider.test.d.ts +2 -0
- package/dist/test/auth/aws-secret-auth-token-provider.test.d.ts.map +1 -0
- package/dist/test/auth/aws-secret-auth-token-provider.test.js +74 -0
- package/dist/test/auth/aws-secret-auth-token-provider.test.js.map +1 -0
- package/dist/test/auth/predefined-auth-token-provider.test.d.ts +2 -0
- package/dist/test/auth/predefined-auth-token-provider.test.d.ts.map +1 -0
- package/dist/test/auth/predefined-auth-token-provider.test.js +24 -0
- package/dist/test/auth/predefined-auth-token-provider.test.js.map +1 -0
- package/dist/test/auth/user-supplied-auth-token-provider.test.d.ts +2 -0
- package/dist/test/auth/user-supplied-auth-token-provider.test.d.ts.map +1 -0
- package/dist/test/auth/user-supplied-auth-token-provider.test.js +24 -0
- package/dist/test/auth/user-supplied-auth-token-provider.test.js.map +1 -0
- package/dist/test/certificates.test.d.ts +2 -0
- package/dist/test/certificates.test.d.ts.map +1 -0
- package/dist/test/certificates.test.js +83 -0
- package/dist/test/certificates.test.js.map +1 -0
- package/dist/test/checksums.test.d.ts +2 -0
- package/dist/test/checksums.test.d.ts.map +1 -0
- package/dist/test/checksums.test.js +29 -0
- package/dist/test/checksums.test.js.map +1 -0
- package/dist/test/connector-shutdown.test.d.ts +2 -0
- package/dist/test/connector-shutdown.test.d.ts.map +1 -0
- package/dist/test/connector-shutdown.test.js +145 -0
- package/dist/test/connector-shutdown.test.js.map +1 -0
- package/dist/test/connector.test.d.ts +2 -0
- package/dist/test/connector.test.d.ts.map +1 -0
- package/dist/test/connector.test.js +286 -0
- package/dist/test/connector.test.js.map +1 -0
- package/dist/test/healthstatus-enum-values.test.d.ts +2 -0
- package/dist/test/healthstatus-enum-values.test.d.ts.map +1 -0
- package/dist/test/healthstatus-enum-values.test.js +18 -0
- package/dist/test/healthstatus-enum-values.test.js.map +1 -0
- package/dist/test/logger.test.d.ts +2 -0
- package/dist/test/logger.test.d.ts.map +1 -0
- package/dist/test/logger.test.js +301 -0
- package/dist/test/logger.test.js.map +1 -0
- package/dist/test/manifest.test.d.ts +2 -0
- package/dist/test/manifest.test.d.ts.map +1 -0
- package/dist/test/manifest.test.js +55 -0
- package/dist/test/manifest.test.js.map +1 -0
- package/dist/test/polling-connector.test.d.ts +2 -0
- package/dist/test/polling-connector.test.d.ts.map +1 -0
- package/dist/test/polling-connector.test.js +170 -0
- package/dist/test/polling-connector.test.js.map +1 -0
- package/dist/test/schemas.test.d.ts +2 -0
- package/dist/test/schemas.test.d.ts.map +1 -0
- package/dist/test/schemas.test.js +211 -0
- package/dist/test/schemas.test.js.map +1 -0
- package/dist/test/tdp-client.test.d.ts +2 -0
- package/dist/test/tdp-client.test.d.ts.map +1 -0
- package/dist/test/tdp-client.test.js +1204 -0
- package/dist/test/tdp-client.test.js.map +1 -0
- package/dist/test/test-connector/index.d.ts +2 -0
- package/dist/test/test-connector/index.d.ts.map +1 -0
- package/dist/test/test-connector/index.js +23 -0
- package/dist/test/test-connector/index.js.map +1 -0
- package/dist/test/test-connector/test-connector.d.ts +7 -0
- package/dist/test/test-connector/test-connector.d.ts.map +1 -0
- package/dist/test/test-connector/test-connector.js +32 -0
- package/dist/test/test-connector/test-connector.js.map +1 -0
- package/dist/test/test-utils/api-mocks.d.ts +6 -0
- package/dist/test/test-utils/api-mocks.d.ts.map +1 -0
- package/dist/test/test-utils/api-mocks.js +19 -0
- package/dist/test/test-utils/api-mocks.js.map +1 -0
- package/dist/test/test-utils/aws-mocks.d.ts +8 -0
- package/dist/test/test-utils/aws-mocks.d.ts.map +1 -0
- package/dist/test/test-utils/aws-mocks.js +39 -0
- package/dist/test/test-utils/aws-mocks.js.map +1 -0
- package/dist/test/test-utils/regex.d.ts +2 -0
- package/dist/test/test-utils/regex.d.ts.map +1 -0
- package/dist/test/test-utils/regex.js +7 -0
- package/dist/test/test-utils/regex.js.map +1 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +17 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.mts +3 -0
- package/dist/vitest.config.d.mts.map +1 -0
- package/dist/vitest.config.mjs +20 -0
- package/dist/vitest.config.mjs.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-secret-auth-token-provider.js","sourceRoot":"","sources":["../../../src/auth/aws-secret-auth-token-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAI3C,MAAa,0BAA0B;IACrC,YACU,SAAwB,EACf,YAAoB;QAD7B,cAAS,GAAT,SAAS,CAAe;QACf,iBAAY,GAAZ,YAAY,CAAQ;IACpC,CAAC;IAEE,YAAY;;YAChB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAC7C,IAAI,GAAG,CAAC,mBAAmB,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,cAAc,EAAE,IAAI;aACrB,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAA,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACrF,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB,CAAC;QACJ,CAAC;KAAA;CACF;AAtBD,gEAsBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './auth-token-provider';
|
|
2
|
+
export * from './predefined-auth-token-provider';
|
|
3
|
+
export * from './aws-secret-auth-token-provider';
|
|
4
|
+
export * from './user-supplied-auth-token-provider';
|
|
5
|
+
export * from './aws-refresh-client-provider';
|
|
6
|
+
export * from './aws-env-client-provider';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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("./auth-token-provider"), exports);
|
|
18
|
+
__exportStar(require("./predefined-auth-token-provider"), exports);
|
|
19
|
+
__exportStar(require("./aws-secret-auth-token-provider"), exports);
|
|
20
|
+
__exportStar(require("./user-supplied-auth-token-provider"), exports);
|
|
21
|
+
__exportStar(require("./aws-refresh-client-provider"), exports);
|
|
22
|
+
__exportStar(require("./aws-env-client-provider"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,mEAAiD;AACjD,mEAAiD;AACjD,sEAAoD;AACpD,gEAA8C;AAC9C,4DAA0C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AuthToken, IAuthTokenProvider } from './auth-token-provider';
|
|
2
|
+
export declare class PredefinedAuthTokenProvider implements IAuthTokenProvider {
|
|
3
|
+
private readonly token;
|
|
4
|
+
constructor(token: string);
|
|
5
|
+
getAuthToken(): Promise<AuthToken>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=predefined-auth-token-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predefined-auth-token-provider.d.ts","sourceRoot":"","sources":["../../../src/auth/predefined-auth-token-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAEpC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAGzC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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.PredefinedAuthTokenProvider = void 0;
|
|
13
|
+
class PredefinedAuthTokenProvider {
|
|
14
|
+
constructor(token) {
|
|
15
|
+
this.token = token;
|
|
16
|
+
}
|
|
17
|
+
getAuthToken() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return { value: this.token };
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.PredefinedAuthTokenProvider = PredefinedAuthTokenProvider;
|
|
24
|
+
//# sourceMappingURL=predefined-auth-token-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predefined-auth-token-provider.js","sourceRoot":"","sources":["../../../src/auth/predefined-auth-token-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,MAAa,2BAA2B;IACtC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAExC,YAAY;;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;KAAA;CACF;AAND,kEAMC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AuthToken, IAuthTokenProvider } from './auth-token-provider';
|
|
2
|
+
export declare class UserSuppliedAuthTokenProvider implements IAuthTokenProvider {
|
|
3
|
+
private readonly token;
|
|
4
|
+
constructor(token: string);
|
|
5
|
+
getAuthToken(): Promise<AuthToken>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=user-supplied-auth-token-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-supplied-auth-token-provider.d.ts","sourceRoot":"","sources":["../../../src/auth/user-supplied-auth-token-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,qBAAa,6BAA8B,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAEpC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAGzC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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.UserSuppliedAuthTokenProvider = void 0;
|
|
13
|
+
class UserSuppliedAuthTokenProvider {
|
|
14
|
+
constructor(token) {
|
|
15
|
+
this.token = token;
|
|
16
|
+
}
|
|
17
|
+
getAuthToken() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return { value: this.token };
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.UserSuppliedAuthTokenProvider = UserSuppliedAuthTokenProvider;
|
|
24
|
+
//# sourceMappingURL=user-supplied-auth-token-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-supplied-auth-token-provider.js","sourceRoot":"","sources":["../../../src/auth/user-supplied-auth-token-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,MAAa,6BAA6B;IACxC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAExC,YAAY;;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;KAAA;CACF;AAND,sEAMC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
import { TDPClientConfig } from './config';
|
|
3
|
+
import { Logger } from './logger';
|
|
4
|
+
export declare function loadCertificatesFromLocalVolume(config: Pick<TDPClientConfig, 'localCertificateFile'>, logger: Logger): Promise<string[]>;
|
|
5
|
+
export declare function loadTdpCertificates(s3Client: S3Client, logger: Logger, config: Pick<TDPClientConfig, 'tdpCertificateKey' | 'streamBucket' | 'localCertificateFile'>): Promise<string[]>;
|
|
6
|
+
//# sourceMappingURL=certificates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificates.d.ts","sourceRoot":"","sources":["../../src/certificates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAIhE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAoDlC,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,sBAAsB,CAAC,EACrD,MAAM,EAAE,MAAM,qBAkBf;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,GAAG,cAAc,GAAG,sBAAsB,CAAC,GAC3F,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.loadCertificatesFromLocalVolume = loadCertificatesFromLocalVolume;
|
|
13
|
+
exports.loadTdpCertificates = loadTdpCertificates;
|
|
14
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
15
|
+
const promises_1 = require("fs/promises");
|
|
16
|
+
const streamToString_1 = require("./streamToString");
|
|
17
|
+
function isFileNotFoundError(ex) {
|
|
18
|
+
return ex.code === 'ENOENT';
|
|
19
|
+
}
|
|
20
|
+
function loadTdpCertificatesFromS3(s3Client, logger, config) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
if (!config.streamBucket) {
|
|
23
|
+
logger.info(`STREAM_BUCKET config not set; skipping TDP certificate retrieval`);
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
if (!config.tdpCertificateKey) {
|
|
27
|
+
logger.info(`TDP_CERTIFICATE_KEY config not set; skipping TDP certificate retrieval`);
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
logger.info(`Retrieving TDP certificates from AWS S3`, {
|
|
31
|
+
key: config.tdpCertificateKey,
|
|
32
|
+
bucket: config.streamBucket,
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
const getObjectResponse = yield s3Client.send(new client_s3_1.GetObjectCommand({
|
|
36
|
+
Bucket: config.streamBucket,
|
|
37
|
+
Key: config.tdpCertificateKey,
|
|
38
|
+
}));
|
|
39
|
+
const cert = yield (0, streamToString_1.streamToString)(getObjectResponse === null || getObjectResponse === void 0 ? void 0 : getObjectResponse.Body);
|
|
40
|
+
if (!cert) {
|
|
41
|
+
logger.warn(`Failed to load TDP certificates from S3, undefined response`);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
logger.info(`Found TDP certificate in S3`);
|
|
45
|
+
return [cert];
|
|
46
|
+
}
|
|
47
|
+
catch (ex) {
|
|
48
|
+
if (ex.message.match(/specified key does not exist/)) {
|
|
49
|
+
logger.warn(`Did not find TDP certificate in S3`, ex);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
logger.error(`Error retrieving TDP certificates from S3`, ex);
|
|
53
|
+
}
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function loadCertificatesFromLocalVolume(config, logger) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const { localCertificateFile: localCertFile } = config;
|
|
61
|
+
try {
|
|
62
|
+
logger.debug('Loading TDP certificates from local volume', { path: localCertFile });
|
|
63
|
+
const cert = yield (0, promises_1.readFile)(localCertFile, 'utf-8');
|
|
64
|
+
logger.info('TDP certificates loaded from local volume', { path: localCertFile });
|
|
65
|
+
return [cert];
|
|
66
|
+
}
|
|
67
|
+
catch (ex) {
|
|
68
|
+
if (isFileNotFoundError(ex)) {
|
|
69
|
+
logger.debug('Local TDP certificate file does not exist', { path: localCertFile });
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
logger.error('Error loading TDP certificates from local volume', ex);
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function loadTdpCertificates(s3Client, logger, config) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
let certificates = yield loadCertificatesFromLocalVolume(config, logger);
|
|
82
|
+
if (certificates.length === 0) {
|
|
83
|
+
certificates = yield loadTdpCertificatesFromS3(s3Client, logger, config);
|
|
84
|
+
}
|
|
85
|
+
return certificates;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=certificates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificates.js","sourceRoot":"","sources":["../../src/certificates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ChecksumAlgorithm } from '@aws-sdk/client-s3';
|
|
2
|
+
/**
|
|
3
|
+
* MetadataChecksums
|
|
4
|
+
*
|
|
5
|
+
* The metadata checksum fields saved to the uploaded file
|
|
6
|
+
*
|
|
7
|
+
* @property {string?} [ts_raw_md5_checksum=] - The MD5 checksum of the file
|
|
8
|
+
* @property {string?} [ts_raw_sha1_checksum=] - The SHA1 checksum of the file
|
|
9
|
+
* @property {string?} [ts_raw_sha256_checksum=] - The SHA256 checksum of the file
|
|
10
|
+
* @property {string?} [ts_raw_crc32_checksum=] - The CRC32 checksum of the file
|
|
11
|
+
* @property {string?} [ts_raw_crc32c_checksum=] - The CRC32C checksum of the file
|
|
12
|
+
*/
|
|
13
|
+
export type MetadataChecksums = {
|
|
14
|
+
ts_raw_md5_checksum?: string;
|
|
15
|
+
ts_raw_sha1_checksum?: string;
|
|
16
|
+
ts_raw_sha256_checksum?: string;
|
|
17
|
+
ts_raw_crc32_checksum?: string;
|
|
18
|
+
ts_raw_crc32c_checksum?: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* ParameterChecksumObject
|
|
22
|
+
*
|
|
23
|
+
* The fields passed to the checksum argument of upload requests
|
|
24
|
+
*
|
|
25
|
+
* @property {string?} [rawMd5Checksum=] - The MD5 checksum of the file
|
|
26
|
+
* @property {string?} [rawSha1Checksum=] - The SHA1 checksum of the file
|
|
27
|
+
* @property {string?} [rawSha256Checksum=] - The SHA256 checksum of the file
|
|
28
|
+
* @property {string?} [rawCrc32Checksum=] - The CRC32 checksum of the file
|
|
29
|
+
* @property {string?} [rawCrc32cChecksum=] - The CRC32C checksum of the file
|
|
30
|
+
*
|
|
31
|
+
* @property {ChecksumAlgorithm} [s3AdditionalChecksum="SHA256"] - The checksum algorithm for S3 to calculate
|
|
32
|
+
*/
|
|
33
|
+
export type ParameterChecksumObject = {
|
|
34
|
+
rawMd5Checksum?: string;
|
|
35
|
+
rawSha1Checksum?: string;
|
|
36
|
+
rawSha256Checksum?: string;
|
|
37
|
+
rawCrc32Checksum?: string;
|
|
38
|
+
rawCrc32cChecksum?: string;
|
|
39
|
+
s3AdditionalChecksum?: ChecksumAlgorithm;
|
|
40
|
+
};
|
|
41
|
+
export type ParameterChecksums = Omit<ParameterChecksumObject, 's3AdditionalChecksum'>;
|
|
42
|
+
export declare const AllChecksumAlgorithms: {
|
|
43
|
+
MD5: string;
|
|
44
|
+
CRC32: "CRC32";
|
|
45
|
+
CRC32C: "CRC32C";
|
|
46
|
+
SHA1: "SHA1";
|
|
47
|
+
SHA256: "SHA256";
|
|
48
|
+
};
|
|
49
|
+
export declare function mapChecksumData(checksums: ParameterChecksumObject): MetadataChecksums;
|
|
50
|
+
//# sourceMappingURL=checksums.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksums.d.ts","sourceRoot":"","sources":["../../src/checksums.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,iBAAiB,CAAC;CAC1C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAA;AAEtF,eAAO,MAAM,qBAAqB;;;;;;CAGjC,CAAC;AAkBF,wBAAgB,eAAe,CAAC,SAAS,EAAE,uBAAuB,qBAYjE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AllChecksumAlgorithms = void 0;
|
|
4
|
+
exports.mapChecksumData = mapChecksumData;
|
|
5
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
6
|
+
exports.AllChecksumAlgorithms = Object.assign(Object.assign({}, client_s3_1.ChecksumAlgorithm), { MD5: 'md5' });
|
|
7
|
+
const checksumKeys = {
|
|
8
|
+
[exports.AllChecksumAlgorithms.MD5]: 'ts_raw_md5_checksum',
|
|
9
|
+
[exports.AllChecksumAlgorithms.SHA1]: 'ts_raw_sha1_checksum',
|
|
10
|
+
[exports.AllChecksumAlgorithms.SHA256]: 'ts_raw_sha256_checksum',
|
|
11
|
+
[exports.AllChecksumAlgorithms.CRC32]: 'ts_raw_crc32_checksum',
|
|
12
|
+
[exports.AllChecksumAlgorithms.CRC32C]: 'ts_raw_crc32c_checksum',
|
|
13
|
+
};
|
|
14
|
+
const parameterChecksumKeys = {
|
|
15
|
+
[exports.AllChecksumAlgorithms.MD5]: 'rawMd5Checksum',
|
|
16
|
+
[exports.AllChecksumAlgorithms.SHA1]: 'rawSha1Checksum',
|
|
17
|
+
[exports.AllChecksumAlgorithms.SHA256]: 'rawSha256Checksum',
|
|
18
|
+
[exports.AllChecksumAlgorithms.CRC32]: 'rawCrc32Checksum',
|
|
19
|
+
[exports.AllChecksumAlgorithms.CRC32C]: 'rawCrc32cChecksum',
|
|
20
|
+
};
|
|
21
|
+
function mapChecksumData(checksums) {
|
|
22
|
+
const checksumResult = {};
|
|
23
|
+
for (const algorithm of Object.keys(checksumKeys)) {
|
|
24
|
+
const rawKey = parameterChecksumKeys[algorithm];
|
|
25
|
+
const checksumKey = checksumKeys[algorithm];
|
|
26
|
+
if (checksums === null || checksums === void 0 ? void 0 : checksums[rawKey]) {
|
|
27
|
+
checksumResult[checksumKey] = checksums[rawKey];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return checksumResult;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=checksums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksums.js","sourceRoot":"","sources":["../../src/checksums.ts"],"names":[],"mappings":";;;AAkEA,0CAYC;AA9ED,kDAAuD;AA6C1C,QAAA,qBAAqB,mCAC7B,6BAAiB,KACpB,GAAG,EAAE,KAAK,IACV;AAEF,MAAM,YAAY,GAA4C;IAC5D,CAAC,6BAAqB,CAAC,GAAG,CAAC,EAAE,qBAAqB;IAClD,CAAC,6BAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB;IACpD,CAAC,6BAAqB,CAAC,MAAM,CAAC,EAAE,wBAAwB;IACxD,CAAC,6BAAqB,CAAC,KAAK,CAAC,EAAE,uBAAuB;IACtD,CAAC,6BAAqB,CAAC,MAAM,CAAC,EAAE,wBAAwB;CACzD,CAAC;AAEF,MAAM,qBAAqB,GAA6C;IACtE,CAAC,6BAAqB,CAAC,GAAG,CAAC,EAAE,gBAAgB;IAC7C,CAAC,6BAAqB,CAAC,IAAI,CAAC,EAAE,iBAAiB;IAC/C,CAAC,6BAAqB,CAAC,MAAM,CAAC,EAAE,mBAAmB;IACnD,CAAC,6BAAqB,CAAC,KAAK,CAAC,EAAE,kBAAkB;IACjD,CAAC,6BAAqB,CAAC,MAAM,CAAC,EAAE,mBAAmB;CACpD,CAAA;AAED,SAAgB,eAAe,CAAC,SAAkC;IAChE,MAAM,cAAc,GAAsB,EAAE,CAAC;IAE7C,KAAI,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,MAAM,CAAC,EAAE,CAAC;YACvB,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { IAuthTokenProvider } from './auth';
|
|
2
|
+
export type ArtifactType = 'connector' | 'data-app';
|
|
3
|
+
export interface TDPClientOptions {
|
|
4
|
+
awsRegion?: string;
|
|
5
|
+
orgSlug?: string;
|
|
6
|
+
hubId?: string;
|
|
7
|
+
connectorId?: string;
|
|
8
|
+
datalakeBucket?: string;
|
|
9
|
+
streamBucket?: string;
|
|
10
|
+
tdpCertificateKey?: string;
|
|
11
|
+
jwtTokenParameter?: string;
|
|
12
|
+
tdpEndpoint?: string;
|
|
13
|
+
outboundCommandQueue?: string;
|
|
14
|
+
kmsKeyId?: string;
|
|
15
|
+
authTokenProvider?: IAuthTokenProvider;
|
|
16
|
+
artifactType?: ArtifactType;
|
|
17
|
+
localCertificateFile?: string;
|
|
18
|
+
httpRequestTimeout?: number;
|
|
19
|
+
manifestFile?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class TDPClientConfig {
|
|
22
|
+
readonly awsRegion: string;
|
|
23
|
+
readonly orgSlug: string;
|
|
24
|
+
readonly hubId: string;
|
|
25
|
+
readonly connectorId: string;
|
|
26
|
+
readonly datalakeBucket: string;
|
|
27
|
+
readonly streamBucket: string;
|
|
28
|
+
readonly tdpCertificateKey: string;
|
|
29
|
+
readonly jwtTokenParameter: string;
|
|
30
|
+
readonly tdpEndpoint: string;
|
|
31
|
+
readonly outboundCommandQueue: string;
|
|
32
|
+
readonly kmsKeyId: string;
|
|
33
|
+
readonly authTokenProvider?: IAuthTokenProvider;
|
|
34
|
+
readonly artifactType: ArtifactType;
|
|
35
|
+
readonly localCertificateFile: string;
|
|
36
|
+
readonly httpRequestTimeout: number;
|
|
37
|
+
readonly manifestFile: string;
|
|
38
|
+
constructor(options?: TDPClientOptions);
|
|
39
|
+
private getArtifactType;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG5C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,OAAO,GAAE,gBAAqB;IAmB1C,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
exports.TDPClientConfig = void 0;
|
|
7
|
+
const process_1 = __importDefault(require("process"));
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
class TDPClientConfig {
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.awsRegion = options.awsRegion || process_1.default.env.AWS_REGION;
|
|
12
|
+
this.orgSlug = options.orgSlug || process_1.default.env.ORG_SLUG;
|
|
13
|
+
this.hubId = options.hubId || process_1.default.env.HUB_ID;
|
|
14
|
+
this.connectorId = options.connectorId || process_1.default.env.CONNECTOR_ID;
|
|
15
|
+
this.datalakeBucket = options.datalakeBucket || process_1.default.env.DATALAKE_BUCKET;
|
|
16
|
+
this.streamBucket = options.streamBucket || process_1.default.env.STREAM_BUCKET;
|
|
17
|
+
this.tdpCertificateKey = options.tdpCertificateKey || process_1.default.env.TDP_CERTIFICATE_KEY;
|
|
18
|
+
this.jwtTokenParameter = options.jwtTokenParameter || process_1.default.env.JWT_TOKEN_PARAMETER;
|
|
19
|
+
this.tdpEndpoint = options.tdpEndpoint || process_1.default.env.TDP_ENDPOINT;
|
|
20
|
+
this.outboundCommandQueue = options.outboundCommandQueue || process_1.default.env.OUTBOUND_COMMAND_QUEUE;
|
|
21
|
+
this.kmsKeyId = options.kmsKeyId || process_1.default.env.KMS_KEY_ID;
|
|
22
|
+
this.authTokenProvider = options.authTokenProvider;
|
|
23
|
+
this.artifactType = options.artifactType || this.getArtifactType();
|
|
24
|
+
this.localCertificateFile = options.localCertificateFile || '/etc/tetra/tdp-cert-chain.pem';
|
|
25
|
+
this.httpRequestTimeout = options.httpRequestTimeout || parseInt(process_1.default.env.HTTP_REQUEST_TIMEOUT_MS || '') || 10 * 1000;
|
|
26
|
+
this.manifestFile = options.manifestFile || process_1.default.env.MANIFEST_FILE || (0, path_1.join)(process_1.default.cwd(), 'manifest.json');
|
|
27
|
+
}
|
|
28
|
+
getArtifactType() {
|
|
29
|
+
const artifactType = process_1.default.env.ARTIFACT_TYPE;
|
|
30
|
+
const isValid = artifactType === 'connector' || artifactType === 'data-app';
|
|
31
|
+
return isValid ? artifactType : 'connector';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.TDPClientConfig = TDPClientConfig;
|
|
35
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAG9B,+BAA4B;AAuB5B,MAAa,eAAe;IAkB1B,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAO,CAAC,GAAG,CAAC,UAAW,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAO,CAAC,GAAG,CAAC,QAAS,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAO,CAAC,GAAG,CAAC,MAAO,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAO,CAAC,GAAG,CAAC,YAAa,CAAC;QACpE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,iBAAO,CAAC,GAAG,CAAC,eAAgB,CAAC;QAC7E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAO,CAAC,GAAG,CAAC,aAAc,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,iBAAO,CAAC,GAAG,CAAC,mBAAoB,CAAC;QACvF,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,iBAAO,CAAC,GAAG,CAAC,mBAAoB,CAAC;QACvF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAO,CAAC,GAAG,CAAC,YAAa,CAAC;QACpE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,iBAAO,CAAC,GAAG,CAAC,sBAAuB,CAAC;QAChG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAO,CAAC,GAAG,CAAC,UAAW,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,+BAA+B,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,QAAQ,CAAC,iBAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;QACzH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAA,WAAI,EAAC,iBAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;IAChH,CAAC;IAEO,eAAe;QACrB,MAAM,YAAY,GAAG,iBAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,UAAU,CAAC;QAC5E,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAC9C,CAAC;CACF;AA1CD,0CA0CC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ConnectorDto, ConnectorFileDto, ProcessingStatus } from './api';
|
|
2
|
+
import { Logger } from './logger';
|
|
3
|
+
import * as metrics from './metrics';
|
|
4
|
+
import { TDPClient } from './tdp-client';
|
|
5
|
+
import { CommandRequest, ConfigValidationResult } from './types';
|
|
6
|
+
export type ConnectorOptions = {
|
|
7
|
+
metricsBatchNumber?: number;
|
|
8
|
+
heartbeatUploadInterval?: number;
|
|
9
|
+
};
|
|
10
|
+
export type GetNotProcessedFilesOptions = {
|
|
11
|
+
excludeFileIds?: string[];
|
|
12
|
+
excludeUniqueExternalIds?: string[];
|
|
13
|
+
statuses?: ProcessingStatus[];
|
|
14
|
+
orderBy?: string;
|
|
15
|
+
orderDirection?: 'ASC' | 'DESC';
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Connector abstract class that should be overridden to define connector
|
|
19
|
+
*/
|
|
20
|
+
export declare abstract class Connector<TConfig = any> {
|
|
21
|
+
protected readonly tdpClient: TDPClient;
|
|
22
|
+
protected readonly options: ConnectorOptions;
|
|
23
|
+
protected heartbeatInterval: ReturnType<typeof setInterval> | undefined;
|
|
24
|
+
protected readonly logger: Logger;
|
|
25
|
+
get isConnectorLoaded(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Connector configuration object
|
|
28
|
+
*/
|
|
29
|
+
get connector(): ConnectorDto;
|
|
30
|
+
/**
|
|
31
|
+
* Connector configuration object
|
|
32
|
+
*/
|
|
33
|
+
get config(): TConfig | null | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Metrics collector
|
|
36
|
+
*/
|
|
37
|
+
protected metricsCollector: metrics.MetricsCollector | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* @param tdpClient TDP Client
|
|
40
|
+
* @param options Additional options
|
|
41
|
+
*/
|
|
42
|
+
protected constructor(tdpClient: TDPClient, options?: ConnectorOptions);
|
|
43
|
+
/**
|
|
44
|
+
* On before connector starts initializing
|
|
45
|
+
*/
|
|
46
|
+
protected onInitiating(): void;
|
|
47
|
+
/**
|
|
48
|
+
* On connector initialized
|
|
49
|
+
*/
|
|
50
|
+
protected onInitialized(): void;
|
|
51
|
+
/**
|
|
52
|
+
* On connector start uploading file
|
|
53
|
+
*/
|
|
54
|
+
protected onStart(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* On connector stop uploading file
|
|
57
|
+
*/
|
|
58
|
+
protected onStop(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* On before connector shutting down handler
|
|
61
|
+
*/
|
|
62
|
+
protected onShutdown(): void;
|
|
63
|
+
private validateConfigByVersion;
|
|
64
|
+
/**
|
|
65
|
+
* On before connector shutting down handler
|
|
66
|
+
*/
|
|
67
|
+
protected validateConfig(config: TConfig): Promise<ConfigValidationResult> | ConfigValidationResult;
|
|
68
|
+
/**
|
|
69
|
+
* On configuration updated handler
|
|
70
|
+
* @param prev Previous configuration object
|
|
71
|
+
*/
|
|
72
|
+
protected onConnectorUpdated(prev: ConnectorDto | undefined): void;
|
|
73
|
+
/**
|
|
74
|
+
* Command execution handler
|
|
75
|
+
* @param command Command to handle
|
|
76
|
+
*/
|
|
77
|
+
protected handleCommand(command: CommandRequest): Promise<void>;
|
|
78
|
+
private tryHandleCommand;
|
|
79
|
+
/**
|
|
80
|
+
* Start connector execution
|
|
81
|
+
* - Initialize TDP Client
|
|
82
|
+
* - Load connector configuration
|
|
83
|
+
* - Register common command handlers
|
|
84
|
+
*/
|
|
85
|
+
start(): Promise<void>;
|
|
86
|
+
protected loadConnector(emitEvent?: boolean): Promise<void>;
|
|
87
|
+
private startHeartbeat;
|
|
88
|
+
private startMetricsReporting;
|
|
89
|
+
shutdown(): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Number of file processing retries
|
|
92
|
+
*/
|
|
93
|
+
protected get fileProcessingRetryNumber(): number;
|
|
94
|
+
/**
|
|
95
|
+
* Number of file to process in one batch
|
|
96
|
+
*/
|
|
97
|
+
protected get fileProcessingBatchSize(): number;
|
|
98
|
+
protected getFilesToProcess(options?: GetNotProcessedFilesOptions): AsyncGenerator<ConnectorFileDto>;
|
|
99
|
+
private getFilesToProcessBatch;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAIhB,gBAAgB,EACjB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAiB,cAAc,EAAiB,sBAAsB,EAAuB,MAAM,SAAS,CAAC;AAQpH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,8BAAsB,SAAS,CAAC,OAAO,GAAG,GAAG;IAoCzC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS;IACvC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IApC9C,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,SAAS,CAAC;IACxE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,IAAI,iBAAiB,YAEpB;IAED;;OAEG;IACH,IAAI,SAAS,iBAMZ;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAEvC;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAEjE;;;OAGG;IACH,SAAS,aACY,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,gBAAqB;IAKnD;;OAEG;IACH,SAAS,CAAC,YAAY;IAEtB;;OAEG;IACH,SAAS,CAAC,aAAa;IAEvB;;OAEG;cACa,OAAO;IAKvB;;OAEG;cACa,MAAM;IAKtB;;OAEG;IACH,SAAS,CAAC,UAAU;YAEN,uBAAuB;IAkCrC;;OAEG;IAEH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,sBAAsB;IAOnG;;;OAGG;IAEH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS;IAI3D;;;OAGG;cACa,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrE,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACG,KAAK;cA6CK,aAAa,CAAC,SAAS,UAAO;IAQ9C,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,qBAAqB;IA4BvB,QAAQ;IAYd;;OAEG;IACH,SAAS,KAAK,yBAAyB,IAAI,MAAM,CAEhD;IAED;;OAEG;IACH,SAAS,KAAK,uBAAuB,IAAI,MAAM,CAE9C;cAEgB,iBAAiB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAAC,gBAAgB,CAAC;IAkC/G,OAAO,CAAC,sBAAsB;CAgB/B"}
|