@digitraffic/common 2022.10.6-1 → 2022.10.10-1
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/README.md +54 -0
- package/aws/index.d.ts +1 -0
- package/aws/index.js +18 -0
- package/aws/infra/api/index.d.ts +1 -0
- package/aws/infra/api/index.js +18 -0
- package/aws/infra/api/responses.js +1 -1
- package/aws/infra/stack/lambda-configs.js +1 -1
- package/aws/infra/stack/rest_apis.d.ts +1 -0
- package/aws/infra/stack/rest_apis.js +8 -2
- package/aws/infra/stack/stack-checking-aspect.d.ts +4 -3
- package/aws/infra/stack/stack-checking-aspect.js +8 -7
- package/aws/infra/stack/stack.d.ts +4 -1
- package/aws/infra/stack/stack.js +1 -1
- package/aws/infra/usage-plans.js +1 -1
- package/aws/types/errors.js +1 -1
- package/aws/types/tags.js +1 -1
- package/database/last-updated.js +10 -10
- package/package.json +3 -2
- package/test/httpserver.js +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.js +18 -0
- package/types/language.js +1 -1
- package/utils/geometry.js +1 -1
- package/src/aws/infra/api/integration.js +0 -52
- package/src/aws/infra/api/response.js +0 -61
- package/src/aws/infra/api/responses.js +0 -79
- package/src/aws/infra/api/static-integration.js +0 -54
- package/src/aws/infra/canaries/canary-alarm.js +0 -26
- package/src/aws/infra/canaries/canary-parameters.js +0 -3
- package/src/aws/infra/canaries/canary-role.js +0 -46
- package/src/aws/infra/canaries/canary.js +0 -29
- package/src/aws/infra/canaries/database-canary.js +0 -55
- package/src/aws/infra/canaries/database-checker.js +0 -109
- package/src/aws/infra/canaries/url-canary.js +0 -46
- package/src/aws/infra/canaries/url-checker.js +0 -238
- package/src/aws/infra/documentation.js +0 -95
- package/src/aws/infra/scheduler.js +0 -31
- package/src/aws/infra/security-rule.js +0 -39
- package/src/aws/infra/sqs-integration.js +0 -93
- package/src/aws/infra/sqs-queue.js +0 -130
- package/src/aws/infra/stack/lambda-configs.js +0 -93
- package/src/aws/infra/stack/monitoredfunction.js +0 -135
- package/src/aws/infra/stack/rest_apis.js +0 -179
- package/src/aws/infra/stack/stack-checking-aspect.js +0 -163
- package/src/aws/infra/stack/stack.js +0 -58
- package/src/aws/infra/stack/subscription.js +0 -41
- package/src/aws/infra/usage-plans.js +0 -42
- package/src/aws/runtime/apikey.js +0 -13
- package/src/aws/runtime/digitraffic-integration-response.js +0 -26
- package/src/aws/runtime/messaging.js +0 -31
- package/src/aws/runtime/s3.js +0 -30
- package/src/aws/runtime/secrets/dbsecret.js +0 -96
- package/src/aws/runtime/secrets/proxy-holder.js +0 -26
- package/src/aws/runtime/secrets/rds-holder.js +0 -26
- package/src/aws/runtime/secrets/secret-holder.js +0 -73
- package/src/aws/runtime/secrets/secret.js +0 -43
- package/src/aws/types/errors.js +0 -9
- package/src/aws/types/lambda-response.js +0 -28
- package/src/aws/types/mediatypes.js +0 -15
- package/src/aws/types/model-with-reference.js +0 -3
- package/src/aws/types/proxytypes.js +0 -3
- package/src/aws/types/tags.js +0 -7
- package/src/database/cached.js +0 -32
- package/src/database/database.js +0 -62
- package/src/database/last-updated.js +0 -54
- package/src/marine/id_utils.js +0 -33
- package/src/marine/rtz.js +0 -3
- package/src/test/asserter.js +0 -45
- package/src/test/db-testutils.js +0 -31
- package/src/test/httpserver.js +0 -67
- package/src/test/secret.js +0 -25
- package/src/test/secrets-manager.js +0 -59
- package/src/test/testutils.js +0 -44
- package/src/types/input-error.js +0 -7
- package/src/types/language.js +0 -10
- package/src/types/traffictype.js +0 -13
- package/src/types/validator.js +0 -14
- package/src/utils/api-model.js +0 -129
- package/src/utils/base64.js +0 -21
- package/src/utils/date-utils.js +0 -34
- package/src/utils/geojson-types.js +0 -18
- package/src/utils/geometry.js +0 -140
- package/src/utils/retry.js +0 -50
- package/src/utils/slack.js +0 -25
- package/src/utils/utils.js +0 -40
- package/test/marine/id_utils.test.js +0 -69
- package/test/promise/promise.test.js +0 -125
- package/test/secrets/dbsecret.test.js +0 -71
- package/test/secrets/secret-holder.test.js +0 -124
- package/test/secrets/secret.test.js +0 -66
- package/test/test/httpserver.test.js +0 -87
- package/test/utils/date-utils.test.js +0 -51
- package/test/utils/geometry.test.js +0 -49
- package/test/utils/utils.test.js +0 -49
- package/yarn.lock +0 -3200
@@ -1,58 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficStack = exports.SSM_KEY_ALARM_TOPIC = exports.SSM_KEY_WARNING_TOPIC = exports.SOLUTION_KEY = void 0;
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
5
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
6
|
-
const aws_sns_1 = require("aws-cdk-lib/aws-sns");
|
7
|
-
const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
|
8
|
-
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
9
|
-
const stack_checking_aspect_1 = require("./stack-checking-aspect");
|
10
|
-
const SSM_ROOT = '/digitraffic';
|
11
|
-
exports.SOLUTION_KEY = 'Solution';
|
12
|
-
const MONITORING_ROOT = '/monitoring';
|
13
|
-
exports.SSM_KEY_WARNING_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/warning-topic`;
|
14
|
-
exports.SSM_KEY_ALARM_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/alarm-topic`;
|
15
|
-
class DigitrafficStack extends aws_cdk_lib_1.Stack {
|
16
|
-
constructor(scope, id, configuration) {
|
17
|
-
super(scope, id, configuration.stackProps);
|
18
|
-
this.configuration = configuration;
|
19
|
-
if (configuration.secretId) {
|
20
|
-
this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, 'Secret', configuration.secretId);
|
21
|
-
}
|
22
|
-
// VPC reference construction requires vpcId and availability zones
|
23
|
-
// private subnets are used in Lambda configuration
|
24
|
-
if (configuration.vpcId) {
|
25
|
-
this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, 'vpc', {
|
26
|
-
vpcId: configuration.vpcId,
|
27
|
-
privateSubnetIds: configuration.privateSubnetIds,
|
28
|
-
availabilityZones: configuration.availabilityZones,
|
29
|
-
});
|
30
|
-
}
|
31
|
-
// security group that allows Lambda database access
|
32
|
-
if (configuration.lambdaDbSgId) {
|
33
|
-
this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, 'LambdaDbSG', configuration.lambdaDbSgId);
|
34
|
-
}
|
35
|
-
this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, 'AlarmTopic', aws_ssm_1.StringParameter.fromStringParameterName(this, 'AlarmTopicParam', exports.SSM_KEY_ALARM_TOPIC).stringValue);
|
36
|
-
this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, 'WarningTopic', aws_ssm_1.StringParameter.fromStringParameterName(this, 'WarningTopicParam', exports.SSM_KEY_WARNING_TOPIC).stringValue);
|
37
|
-
this.addAspects();
|
38
|
-
}
|
39
|
-
addAspects() {
|
40
|
-
aws_cdk_lib_1.Aspects.of(this).add(stack_checking_aspect_1.StackCheckingAspect.create(this));
|
41
|
-
}
|
42
|
-
createLambdaEnvironment() {
|
43
|
-
return this.createDefaultLambdaEnvironment(this.configuration.shortName);
|
44
|
-
}
|
45
|
-
createDefaultLambdaEnvironment(dbApplication) {
|
46
|
-
return this.configuration.secretId ? {
|
47
|
-
SECRET_ID: this.configuration.secretId,
|
48
|
-
DB_APPLICATION: dbApplication,
|
49
|
-
} : {
|
50
|
-
DB_APPLICATION: dbApplication,
|
51
|
-
};
|
52
|
-
}
|
53
|
-
grantSecret(...lambdas) {
|
54
|
-
lambdas.forEach((l) => this.secret.grantRead(l));
|
55
|
-
}
|
56
|
-
}
|
57
|
-
exports.DigitrafficStack = DigitrafficStack;
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1RDtBQUN2RCxpREFBNkQ7QUFFN0QsaURBQWtEO0FBQ2xELGlEQUFvRDtBQUNwRCx1RUFBK0Q7QUFHL0QsbUVBQTREO0FBSzVELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBc0IvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsYUFBaUM7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLDJCQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDakY7UUFFRCxtRUFBbUU7UUFDbkUsbURBQW1EO1FBQ25ELElBQUksYUFBYSxDQUFDLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQzFCLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7Z0JBQ2hELGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxpQkFBNkI7YUFDakUsQ0FBQyxDQUFDO1NBQ047UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsdUJBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQ3JDLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSwyQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUN2RCx5QkFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSw2QkFBcUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBbUIsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO1lBQ3RDLGNBQWMsRUFBRSxhQUFhO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0EsY0FBYyxFQUFFLGFBQWE7U0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFtQjtRQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDSjtBQTlERCw0Q0E4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzcGVjdHMsIFN0YWNrLCBTdGFja1Byb3BzfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7SVZwYywgU2VjdXJpdHlHcm91cCwgVnBjfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHtJU2VjdXJpdHlHcm91cH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQge0lUb3BpYywgVG9waWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc25zXCI7XG5pbXBvcnQge1N0cmluZ1BhcmFtZXRlcn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7SVNlY3JldCwgU2VjcmV0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQge0Z1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuXG5pbXBvcnQge1N0YWNrQ2hlY2tpbmdBc3BlY3R9IGZyb20gXCIuL3N0YWNrLWNoZWNraW5nLWFzcGVjdFwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1RyYWZmaWNUeXBlfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXMvdHJhZmZpY3R5cGVcIjtcbmltcG9ydCB7REJMYW1iZGFFbnZpcm9ubWVudH0gZnJvbSBcIi4vbGFtYmRhLWNvbmZpZ3NcIjtcblxuY29uc3QgU1NNX1JPT1QgPSAnL2RpZ2l0cmFmZmljJztcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSAnU29sdXRpb24nO1xuY29uc3QgTU9OSVRPUklOR19ST09UID0gJy9tb25pdG9yaW5nJztcblxuZXhwb3J0IGNvbnN0IFNTTV9LRVlfV0FSTklOR19UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS93YXJuaW5nLXRvcGljYDtcbmV4cG9ydCBjb25zdCBTU01fS0VZX0FMQVJNX1RPUElDID0gYCR7U1NNX1JPT1R9JHtNT05JVE9SSU5HX1JPT1R9L2FsYXJtLXRvcGljYDtcblxuZXhwb3J0IHR5cGUgU3RhY2tDb25maWd1cmF0aW9uID0ge1xuICAgIHJlYWRvbmx5IHNob3J0TmFtZT86IHN0cmluZztcbiAgICByZWFkb25seSBzZWNyZXRJZD86IHN0cmluZztcbiAgICByZWFkb25seSBhbGFybVRvcGljQXJuOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljQXJuOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW5hYmxlQ2FuYXJpZXM6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgbG9nc0Rlc3RpbmF0aW9uQXJuPzogc3RyaW5nO1xuXG4gICAgcmVhZG9ubHkgdnBjSWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbGFtYmRhRGJTZ0lkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRJZHM/OiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdO1xuXG4gICAgcmVhZG9ubHkgdHJhZmZpY1R5cGU6IFRyYWZmaWNUeXBlO1xuICAgIHJlYWRvbmx5IHByb2R1Y3Rpb246IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgc3RhY2tQcm9wczogU3RhY2tQcm9wcztcblxuICAgIHJlYWRvbmx5IHdoaXRlbGlzdGVkUmVzb3VyY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgICByZWFkb25seSBsYW1iZGFEYlNnOiBJU2VjdXJpdHlHcm91cDtcbiAgICByZWFkb25seSBhbGFybVRvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgY29uZmlndXJhdGlvbi5zdGFja1Byb3BzKTtcblxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnNlY3JldElkKSB7XG4gICAgICAgICAgICB0aGlzLnNlY3JldCA9IFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKHRoaXMsICdTZWNyZXQnLCBjb25maWd1cmF0aW9uLnNlY3JldElkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZQQyByZWZlcmVuY2UgY29uc3RydWN0aW9uIHJlcXVpcmVzIHZwY0lkIGFuZCBhdmFpbGFiaWxpdHkgem9uZXNcbiAgICAgICAgLy8gcHJpdmF0ZSBzdWJuZXRzIGFyZSB1c2VkIGluIExhbWJkYSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZwY0lkKSB7XG4gICAgICAgICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tVnBjQXR0cmlidXRlcyh0aGlzLCAndnBjJywge1xuICAgICAgICAgICAgICAgIHZwY0lkOiBjb25maWd1cmF0aW9uLnZwY0lkLFxuICAgICAgICAgICAgICAgIHByaXZhdGVTdWJuZXRJZHM6IGNvbmZpZ3VyYXRpb24ucHJpdmF0ZVN1Ym5ldElkcyxcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lczogY29uZmlndXJhdGlvbi5hdmFpbGFiaWxpdHlab25lcyBhcyBzdHJpbmdbXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdXJpdHkgZ3JvdXAgdGhhdCBhbGxvd3MgTGFtYmRhIGRhdGFiYXNlIGFjY2Vzc1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5sYW1iZGFEYlNnSWQpIHtcbiAgICAgICAgICAgIHRoaXMubGFtYmRhRGJTZyA9IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZCh0aGlzLCAnTGFtYmRhRGJTRycsIGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxhcm1Ub3BpYyA9IFRvcGljLmZyb21Ub3BpY0Fybih0aGlzLFxuICAgICAgICAgICAgJ0FsYXJtVG9waWMnLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdBbGFybVRvcGljUGFyYW0nLCBTU01fS0VZX0FMQVJNX1RPUElDKS5zdHJpbmdWYWx1ZSk7XG4gICAgICAgIHRoaXMud2FybmluZ1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKHRoaXMsICdXYXJuaW5nVG9waWMnLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdXYXJuaW5nVG9waWNQYXJhbScsIFNTTV9LRVlfV0FSTklOR19UT1BJQykuc3RyaW5nVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuYWRkQXNwZWN0cygpO1xuICAgIH1cblxuICAgIGFkZEFzcGVjdHMoKSB7XG4gICAgICAgIEFzcGVjdHMub2YodGhpcykuYWRkKFN0YWNrQ2hlY2tpbmdBc3BlY3QuY3JlYXRlKHRoaXMpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVMYW1iZGFFbnZpcm9ubWVudCgpOiBEQkxhbWJkYUVudmlyb25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVmYXVsdExhbWJkYUVudmlyb25tZW50KHRoaXMuY29uZmlndXJhdGlvbi5zaG9ydE5hbWUgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBjcmVhdGVEZWZhdWx0TGFtYmRhRW52aXJvbm1lbnQoZGJBcHBsaWNhdGlvbjogc3RyaW5nKTogREJMYW1iZGFFbnZpcm9ubWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uc2VjcmV0SWQgPyB7XG4gICAgICAgICAgICBTRUNSRVRfSUQ6IHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZCxcbiAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICB9IDoge1xuICAgICAgICAgICAgREJfQVBQTElDQVRJT046IGRiQXBwbGljYXRpb24sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ3JhbnRTZWNyZXQoLi4ubGFtYmRhczogRnVuY3Rpb25bXSkge1xuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGw6IEZ1bmN0aW9uKSA9PiB0aGlzLnNlY3JldC5ncmFudFJlYWQobCkpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,41 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficLogSubscriptions = exports.createSubscription = void 0;
|
4
|
-
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
5
|
-
/**
|
6
|
-
* Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
|
7
|
-
* https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
|
8
|
-
* @param lambda The Lambda function, needed to create a dependency
|
9
|
-
* @param lambdaName The Lambda name from which the Log Group name is derived
|
10
|
-
* @param logDestinationArn Destination for streamed logs
|
11
|
-
* @param stack CloudFormation stack
|
12
|
-
*/
|
13
|
-
function createSubscription(lambda, lambdaName, logDestinationArn, stack) {
|
14
|
-
if (logDestinationArn == undefined) {
|
15
|
-
return undefined;
|
16
|
-
}
|
17
|
-
const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambdaName}LogsSubscription`, {
|
18
|
-
logGroupName: `/aws/lambda/${lambdaName}`,
|
19
|
-
filterPattern: '',
|
20
|
-
destinationArn: logDestinationArn,
|
21
|
-
});
|
22
|
-
filter.node.addDependency(lambda);
|
23
|
-
return filter;
|
24
|
-
}
|
25
|
-
exports.createSubscription = createSubscription;
|
26
|
-
class DigitrafficLogSubscriptions {
|
27
|
-
constructor(stack, ...lambdas) {
|
28
|
-
if (stack.configuration.logsDestinationArn) {
|
29
|
-
lambdas.forEach(lambda => {
|
30
|
-
const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambda.givenName}LogsSubscription`, {
|
31
|
-
logGroupName: `/aws/lambda/${lambda.givenName}`,
|
32
|
-
filterPattern: '',
|
33
|
-
destinationArn: stack.configuration.logsDestinationArn,
|
34
|
-
});
|
35
|
-
filter.node.addDependency(lambda);
|
36
|
-
});
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
exports.DigitrafficLogSubscriptions = DigitrafficLogSubscriptions;
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTJEO0FBTTNEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFnQixFQUFFLFVBQWtCLEVBQUUsaUJBQXFDLEVBQUUsS0FBZ0I7SUFDNUgsSUFBSSxpQkFBaUIsSUFBSSxTQUFTLEVBQUU7UUFDaEMsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdDQUFxQixDQUFDLEtBQUssRUFBRSxHQUFHLFVBQVUsa0JBQWtCLEVBQUU7UUFDN0UsWUFBWSxFQUFFLGVBQWUsVUFBVSxFQUFFO1FBQ3pDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGNBQWMsRUFBRSxpQkFBaUI7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELGdEQWFDO0FBRUQsTUFBYSwyQkFBMkI7SUFDcEMsWUFBWSxLQUF1QixFQUFFLEdBQUcsT0FBNEI7UUFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZ0NBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsa0JBQWtCLEVBQUU7b0JBQ25GLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQy9DLGFBQWEsRUFBRSxFQUFFO29CQUNqQixjQUFjLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBNEI7aUJBQ25FLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztDQUNKO0FBZEQsa0VBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NmblN1YnNjcmlwdGlvbkZpbHRlcn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0RpZ2l0cmFmZmljU3RhY2t9IGZyb20gXCIuL3N0YWNrXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TW9uaXRvcmVkRnVuY3Rpb259IGZyb20gXCIuL21vbml0b3JlZGZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgdGhhdCBzdWJzY3JpYmVzIHRvIGEgTGFtYmRhIExvZyBHcm91cCBhbmQgZGVsaXZlcnMgdGhlIGxvZ3MgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1sb2dzLXN1YnNjcmlwdGlvbmZpbHRlci5odG1sXG4gKiBAcGFyYW0gbGFtYmRhIFRoZSBMYW1iZGEgZnVuY3Rpb24sIG5lZWRlZCB0byBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gbGFtYmRhTmFtZSBUaGUgTGFtYmRhIG5hbWUgZnJvbSB3aGljaCB0aGUgTG9nIEdyb3VwIG5hbWUgaXMgZGVyaXZlZFxuICogQHBhcmFtIGxvZ0Rlc3RpbmF0aW9uQXJuIERlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBsb2dzXG4gKiBAcGFyYW0gc3RhY2sgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihsYW1iZGE6IEZ1bmN0aW9uLCBsYW1iZGFOYW1lOiBzdHJpbmcsIGxvZ0Rlc3RpbmF0aW9uQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YWNrOiBDb25zdHJ1Y3QpOiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChsb2dEZXN0aW5hdGlvbkFybiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYU5hbWV9YCxcbiAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dEZXN0aW5hdGlvbkFybixcbiAgICB9KTtcblxuICAgIGZpbHRlci5ub2RlLmFkZERlcGVuZGVuY3kobGFtYmRhKTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0xvZ1N1YnNjcmlwdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCAuLi5sYW1iZGFzOiBNb25pdG9yZWRGdW5jdGlvbltdKSB7XG4gICAgICAgIGlmIChzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybikge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKGxhbWJkYSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhLmdpdmVuTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICAgICAgICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYS5naXZlbk5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybiBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubm9kZS5hZGREZXBlbmRlbmN5KGxhbWJkYSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -1,42 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createDefaultUsagePlan = exports.createUsagePlan = void 0;
|
4
|
-
/**
|
5
|
-
* Creates an usage plan for a REST API with a single API key
|
6
|
-
* @param api The REST API
|
7
|
-
* @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
|
8
|
-
* @param apiKeyName Name for the API key, this is displayed in the AWS Console
|
9
|
-
* @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
|
10
|
-
*/
|
11
|
-
function createUsagePlan(api, apiKeyId, apiKeyName) {
|
12
|
-
const apiKey = api.addApiKey(apiKeyId);
|
13
|
-
const plan = api.addUsagePlan(apiKeyName, {
|
14
|
-
name: apiKeyName,
|
15
|
-
});
|
16
|
-
plan.addApiStage({
|
17
|
-
stage: api.deploymentStage,
|
18
|
-
});
|
19
|
-
plan.addApiKey(apiKey);
|
20
|
-
return apiKey;
|
21
|
-
}
|
22
|
-
exports.createUsagePlan = createUsagePlan;
|
23
|
-
/**
|
24
|
-
* Creates a default usage plan for a REST API with a single API key
|
25
|
-
* @param api The REST API
|
26
|
-
* @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
|
27
|
-
*/
|
28
|
-
function createDefaultUsagePlan(api, apiName) {
|
29
|
-
const apiKeyName = apiName + ' API Key';
|
30
|
-
const usagePlanName = apiName + ' API Usage Plan';
|
31
|
-
const apiKey = api.addApiKey(apiKeyName, { apiKeyName: apiKeyName });
|
32
|
-
const plan = api.addUsagePlan(usagePlanName, {
|
33
|
-
name: usagePlanName,
|
34
|
-
});
|
35
|
-
plan.addApiStage({
|
36
|
-
stage: api.deploymentStage,
|
37
|
-
});
|
38
|
-
plan.addApiKey(apiKey);
|
39
|
-
return apiKey;
|
40
|
-
}
|
41
|
-
exports.createDefaultUsagePlan = createDefaultUsagePlan;
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcGxhbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3VzYWdlLXBsYW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFZLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQjtJQUM5RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO1FBQ3RDLElBQUksRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUM7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLGVBQWU7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBWEQsMENBV0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsR0FBWSxFQUFFLE9BQWU7SUFDaEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN4QyxNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtRQUN6QyxJQUFJLEVBQUUsYUFBYTtLQUN0QixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxlQUFlO0tBQzdCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELHdEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQXBpS2V5LCBSZXN0QXBpfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiB1c2FnZSBwbGFuIGZvciBhIFJFU1QgQVBJIHdpdGggYSBzaW5nbGUgQVBJIGtleVxyXG4gKiBAcGFyYW0gYXBpIFRoZSBSRVNUIEFQSVxyXG4gKiBAcGFyYW0gYXBpS2V5SWQgSWQgZm9yIHRoZSBBUEkga2V5LCB0aGlzIGlzIGEgc3Vycm9nYXRlIGlkIGZvciBDREssIG5vdCBkaXNwbGF5ZWQgYW55d2hlcmVcclxuICogQHBhcmFtIGFwaUtleU5hbWUgTmFtZSBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgZGlzcGxheWVkIGluIHRoZSBBV1MgQ29uc29sZVxyXG4gKiBAZGVwcmVjYXRlZCBDcmVhdGVzIHJhbmRvbWl6ZWQgQVBJIGtleSBuYW1lcywgdXNlIGNyZWF0ZURlZmF1bHRVc2FnZVBsYW4gaW5zdGVhZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzYWdlUGxhbihhcGk6IFJlc3RBcGksIGFwaUtleUlkOiBzdHJpbmcsIGFwaUtleU5hbWU6IHN0cmluZyk6IElBcGlLZXkge1xyXG4gICAgY29uc3QgYXBpS2V5ID0gYXBpLmFkZEFwaUtleShhcGlLZXlJZCk7XHJcbiAgICBjb25zdCBwbGFuID0gYXBpLmFkZFVzYWdlUGxhbihhcGlLZXlOYW1lLCB7XHJcbiAgICAgICAgbmFtZTogYXBpS2V5TmFtZSxcclxuICAgIH0pO1xyXG4gICAgcGxhbi5hZGRBcGlTdGFnZSh7XHJcbiAgICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2UsXHJcbiAgICB9KTtcclxuICAgIHBsYW4uYWRkQXBpS2V5KGFwaUtleSk7XHJcblxyXG4gICAgcmV0dXJuIGFwaUtleTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBkZWZhdWx0IHVzYWdlIHBsYW4gZm9yIGEgUkVTVCBBUEkgd2l0aCBhIHNpbmdsZSBBUEkga2V5XHJcbiAqIEBwYXJhbSBhcGkgVGhlIFJFU1QgQVBJXHJcbiAqIEBwYXJhbSBhcGlOYW1lIE5hbWUgb2YgdGhlIGFwaS4gV2lsbCBnZW5lcmF0ZSBrZXk6IGFwaU5hbWUgKyAnIEFQSSBLZXknIGFuZCBwbGFuOiBhcGlOYW1lICsgJyBBUEkgVXNhZ2UgUGxhbidcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuKGFwaTogUmVzdEFwaSwgYXBpTmFtZTogc3RyaW5nKTogSUFwaUtleSB7XHJcbiAgICBjb25zdCBhcGlLZXlOYW1lID0gYXBpTmFtZSArICcgQVBJIEtleSc7XHJcbiAgICBjb25zdCB1c2FnZVBsYW5OYW1lID0gYXBpTmFtZSArICcgQVBJIFVzYWdlIFBsYW4nO1xyXG4gICAgY29uc3QgYXBpS2V5ID0gYXBpLmFkZEFwaUtleShhcGlLZXlOYW1lLCB7IGFwaUtleU5hbWU6IGFwaUtleU5hbWUgfSk7XHJcbiAgICBjb25zdCBwbGFuID0gYXBpLmFkZFVzYWdlUGxhbih1c2FnZVBsYW5OYW1lLCB7XHJcbiAgICAgICAgbmFtZTogdXNhZ2VQbGFuTmFtZSxcclxuICAgIH0pO1xyXG4gICAgcGxhbi5hZGRBcGlTdGFnZSh7XHJcbiAgICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2UsXHJcbiAgICB9KTtcclxuICAgIHBsYW4uYWRkQXBpS2V5KGFwaUtleSk7XHJcblxyXG4gICAgcmV0dXJuIGFwaUtleTtcclxufVxyXG4iXX0=
|
@@ -1,13 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getApiKeyFromAPIGateway = void 0;
|
4
|
-
const aws_sdk_1 = require("aws-sdk");
|
5
|
-
function getApiKeyFromAPIGateway(keyId) {
|
6
|
-
const agw = new aws_sdk_1.APIGateway();
|
7
|
-
return agw.getApiKey({
|
8
|
-
apiKey: keyId,
|
9
|
-
includeValue: true,
|
10
|
-
}).promise();
|
11
|
-
}
|
12
|
-
exports.getApiKeyFromAPIGateway = getApiKeyFromAPIGateway;
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL2FwaWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUM7QUFFbkMsU0FBZ0IsdUJBQXVCLENBQUMsS0FBYTtJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakIsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakIsQ0FBQztBQU5ELDBEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUElHYXRld2F5fSBmcm9tIFwiYXdzLXNka1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpS2V5RnJvbUFQSUdhdGV3YXkoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8QVBJR2F0ZXdheS5UeXBlcy5BcGlLZXk+IHtcbiAgICBjb25zdCBhZ3cgPSBuZXcgQVBJR2F0ZXdheSgpO1xuICAgIHJldHVybiBhZ3cuZ2V0QXBpS2V5KHtcbiAgICAgICAgYXBpS2V5OiBrZXlJZCxcbiAgICAgICAgaW5jbHVkZVZhbHVlOiB0cnVlLFxuICAgIH0pLnByb21pc2UoKTtcbn1cbiJdfQ==
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficIntegrationResponse = void 0;
|
4
|
-
const mediatypes_1 = require("../types/mediatypes");
|
5
|
-
const response_1 = require("../infra/api/response");
|
6
|
-
class DigitrafficIntegrationResponse {
|
7
|
-
static ok(mediaType) {
|
8
|
-
return this.create("200", mediaType);
|
9
|
-
}
|
10
|
-
static badRequest(mediaType) {
|
11
|
-
return this.create("400", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
|
12
|
-
}
|
13
|
-
static notImplemented(mediaType) {
|
14
|
-
return this.create("501", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
|
15
|
-
}
|
16
|
-
static create(statusCode, mediaType) {
|
17
|
-
return {
|
18
|
-
statusCode,
|
19
|
-
responseTemplates: {
|
20
|
-
[mediaType]: response_1.RESPONSE_DEFAULT_LAMBDA,
|
21
|
-
},
|
22
|
-
};
|
23
|
-
}
|
24
|
-
}
|
25
|
-
exports.DigitrafficIntegrationResponse = DigitrafficIntegrationResponse;
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQThDO0FBQzlDLG9EQUE4RDtBQUU5RCxNQUFzQiw4QkFBOEI7SUFFaEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLHNCQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksc0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFNBQW9CO1FBQ2xELE9BQU87WUFDSCxVQUFVO1lBQ1YsaUJBQWlCLEVBQUU7Z0JBQ2YsQ0FBQyxTQUFTLENBQUMsRUFBRSxrQ0FBdUI7YUFDdkM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBdEJELHdFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZWdyYXRpb25SZXNwb25zZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge01lZGlhVHlwZX0gZnJvbSBcIi4uL3R5cGVzL21lZGlhdHlwZXNcIjtcbmltcG9ydCB7UkVTUE9OU0VfREVGQVVMVF9MQU1CREF9IGZyb20gXCIuLi9pbmZyYS9hcGkvcmVzcG9uc2VcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERpZ2l0cmFmZmljSW50ZWdyYXRpb25SZXNwb25zZSB7XG5cbiAgICBzdGF0aWMgb2sobWVkaWFUeXBlOiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiMjAwXCIsIG1lZGlhVHlwZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGJhZFJlcXVlc3QobWVkaWFUeXBlPzogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShcIjQwMFwiLCBtZWRpYVR5cGUgPz8gTWVkaWFUeXBlLlRFWFRfUExBSU4pO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3RJbXBsZW1lbnRlZChtZWRpYVR5cGU/OiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiNTAxXCIsIG1lZGlhVHlwZSA/PyBNZWRpYVR5cGUuVEVYVF9QTEFJTik7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZShzdGF0dXNDb2RlOiBzdHJpbmcsIG1lZGlhVHlwZTogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICBbbWVkaWFUeXBlXTogUkVTUE9OU0VfREVGQVVMVF9MQU1CREEsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuIl19
|
@@ -1,31 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.snsPublish = void 0;
|
4
|
-
/**
|
5
|
-
* Utility function for publishing SNS messages.
|
6
|
-
* Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
|
7
|
-
* Retries a single time in case of failure.
|
8
|
-
* @param message
|
9
|
-
* @param topicArn
|
10
|
-
* @param sns
|
11
|
-
*/
|
12
|
-
async function snsPublish(message, topicArn, sns) {
|
13
|
-
const publishParams = {
|
14
|
-
Message: message,
|
15
|
-
TopicArn: topicArn,
|
16
|
-
};
|
17
|
-
try {
|
18
|
-
await sns.publish(publishParams).promise();
|
19
|
-
}
|
20
|
-
catch (error) {
|
21
|
-
console.error('method=snsPublish error, retrying', error);
|
22
|
-
try {
|
23
|
-
await sns.publish(publishParams).promise();
|
24
|
-
}
|
25
|
-
catch (e2) {
|
26
|
-
console.error('method=snsPublish error after retry', e2);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
exports.snsPublish = snsPublish;
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL21lc3NhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxHQUFRO0lBQ3hFLE1BQU0sYUFBYSxHQUFHO1FBQ2xCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO0tBQ3JCLENBQUM7SUFDRixJQUFJO1FBQ0EsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzlDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUk7WUFDQSxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDNUQ7S0FDSjtBQUNMLENBQUM7QUFmRCxnQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U05TfSBmcm9tIFwiYXdzLXNka1wiO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHB1Ymxpc2hpbmcgU05TIG1lc3NhZ2VzLlxuICogTWFkZSBiZWNhdXNlIHVzaW5nICphd2FpdCogd2l0aCBBV1MgQVBJcyBkb2Vzbid0IHJlcXVpcmUgY2FsbGluZyBwcm9taXNlKCkgYnV0IG5vdGhpbmcgd29ya3MgaWYgaXQgaXNuJ3QgY2FsbGVkLlxuICogUmV0cmllcyBhIHNpbmdsZSB0aW1lIGluIGNhc2Ugb2YgZmFpbHVyZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKiBAcGFyYW0gdG9waWNBcm5cbiAqIEBwYXJhbSBzbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNuc1B1Ymxpc2gobWVzc2FnZTogc3RyaW5nLCB0b3BpY0Fybjogc3RyaW5nLCBzbnM6IFNOUykge1xuICAgIGNvbnN0IHB1Ymxpc2hQYXJhbXMgPSB7XG4gICAgICAgIE1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIFRvcGljQXJuOiB0b3BpY0FybixcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNucy5wdWJsaXNoKHB1Ymxpc2hQYXJhbXMpLnByb21pc2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciwgcmV0cnlpbmcnLCBlcnJvcik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzbnMucHVibGlzaChwdWJsaXNoUGFyYW1zKS5wcm9taXNlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciBhZnRlciByZXRyeScsIGUyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
package/src/aws/runtime/s3.js
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.uploadToS3 = void 0;
|
4
|
-
const aws_sdk_1 = require("aws-sdk");
|
5
|
-
async function uploadToS3(bucketName, body, objectName, cannedAcl, contentType) {
|
6
|
-
const s3 = new aws_sdk_1.S3();
|
7
|
-
try {
|
8
|
-
await doUpload(s3, bucketName, body, objectName, cannedAcl, contentType);
|
9
|
-
}
|
10
|
-
catch (error) {
|
11
|
-
console.warn('method=uploadToS3 retrying upload to bucket %s', bucketName);
|
12
|
-
try {
|
13
|
-
await doUpload(s3, bucketName, body, objectName, cannedAcl, contentType);
|
14
|
-
}
|
15
|
-
catch (e2) {
|
16
|
-
console.error('method=uploadToS3 failed retrying upload to bucket %s', bucketName);
|
17
|
-
}
|
18
|
-
}
|
19
|
-
}
|
20
|
-
exports.uploadToS3 = uploadToS3;
|
21
|
-
function doUpload(s3, bucketName, body, filename, cannedAcl, contentType) {
|
22
|
-
return s3.upload({
|
23
|
-
Bucket: bucketName,
|
24
|
-
Body: body,
|
25
|
-
Key: filename,
|
26
|
-
ACL: cannedAcl,
|
27
|
-
ContentType: contentType,
|
28
|
-
}).promise();
|
29
|
-
}
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvczMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTJCO0FBRXBCLEtBQUssVUFBVSxVQUFVLENBQzVCLFVBQWtCLEVBQ2xCLElBQVUsRUFDVixVQUFrQixFQUNsQixTQUFrQixFQUNsQixXQUFvQjtJQUdwQixNQUFNLEVBQUUsR0FBRyxJQUFJLFlBQUUsRUFBRSxDQUFDO0lBQ3BCLElBQUk7UUFDQSxNQUFNLFFBQVEsQ0FDVixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FDM0QsQ0FBQztLQUNMO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLElBQUk7WUFDQSxNQUFNLFFBQVEsQ0FDVixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FDM0QsQ0FBQztTQUNMO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3RGO0tBQ0o7QUFDTCxDQUFDO0FBdkJELGdDQXVCQztBQUVELFNBQVMsUUFBUSxDQUNiLEVBQU0sRUFDTixVQUFrQixFQUNsQixJQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsU0FBa0IsRUFDbEIsV0FBb0I7SUFHcEIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2IsTUFBTSxFQUFFLFVBQVU7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixHQUFHLEVBQUUsUUFBUTtRQUNiLEdBQUcsRUFBRSxTQUFTO1FBQ2QsV0FBVyxFQUFFLFdBQVc7S0FDM0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1MzfSBmcm9tIFwiYXdzLXNka1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBsb2FkVG9TMzxCb2R5PihcbiAgICBidWNrZXROYW1lOiBzdHJpbmcsXG4gICAgYm9keTogQm9keSxcbiAgICBvYmplY3ROYW1lOiBzdHJpbmcsXG4gICAgY2FubmVkQWNsPzogc3RyaW5nLFxuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nLFxuKSB7XG5cbiAgICBjb25zdCBzMyA9IG5ldyBTMygpO1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRvVXBsb2FkKFxuICAgICAgICAgICAgczMsIGJ1Y2tldE5hbWUsIGJvZHksIG9iamVjdE5hbWUsIGNhbm5lZEFjbCwgY29udGVudFR5cGUsXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdtZXRob2Q9dXBsb2FkVG9TMyByZXRyeWluZyB1cGxvYWQgdG8gYnVja2V0ICVzJywgYnVja2V0TmFtZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBkb1VwbG9hZChcbiAgICAgICAgICAgICAgICBzMywgYnVja2V0TmFtZSwgYm9keSwgb2JqZWN0TmFtZSwgY2FubmVkQWNsLCBjb250ZW50VHlwZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9dXBsb2FkVG9TMyBmYWlsZWQgcmV0cnlpbmcgdXBsb2FkIHRvIGJ1Y2tldCAlcycsIGJ1Y2tldE5hbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkb1VwbG9hZDxCb2R5PihcbiAgICBzMzogUzMsXG4gICAgYnVja2V0TmFtZTogc3RyaW5nLFxuICAgIGJvZHk6IEJvZHksXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBjYW5uZWRBY2w/OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmcsXG4pIHtcblxuICAgIHJldHVybiBzMy51cGxvYWQoe1xuICAgICAgICBCdWNrZXQ6IGJ1Y2tldE5hbWUsXG4gICAgICAgIEJvZHk6IGJvZHksXG4gICAgICAgIEtleTogZmlsZW5hbWUsXG4gICAgICAgIEFDTDogY2FubmVkQWNsLFxuICAgICAgICBDb250ZW50VHlwZTogY29udGVudFR5cGUsXG4gICAgfSkucHJvbWlzZSgpO1xufVxuIl19
|
@@ -1,96 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.checkExpectedSecretKeys = exports.withDbSecret = exports.DatabaseEnvironmentKeys = exports.RdsSecretKey = exports.RdsProxySecretKey = void 0;
|
4
|
-
const secret_1 = require("./secret");
|
5
|
-
var RdsProxySecretKey;
|
6
|
-
(function (RdsProxySecretKey) {
|
7
|
-
RdsProxySecretKey["username"] = "username";
|
8
|
-
RdsProxySecretKey["password"] = "password";
|
9
|
-
RdsProxySecretKey["proxy_host"] = "proxy_host";
|
10
|
-
RdsProxySecretKey["proxy_ro_host"] = "proxy_ro_host";
|
11
|
-
})(RdsProxySecretKey = exports.RdsProxySecretKey || (exports.RdsProxySecretKey = {}));
|
12
|
-
var RdsSecretKey;
|
13
|
-
(function (RdsSecretKey) {
|
14
|
-
RdsSecretKey["username"] = "username";
|
15
|
-
RdsSecretKey["password"] = "password";
|
16
|
-
RdsSecretKey["host"] = "host";
|
17
|
-
RdsSecretKey["ro_host"] = "ro_host";
|
18
|
-
})(RdsSecretKey = exports.RdsSecretKey || (exports.RdsSecretKey = {}));
|
19
|
-
var DatabaseEnvironmentKeys;
|
20
|
-
(function (DatabaseEnvironmentKeys) {
|
21
|
-
DatabaseEnvironmentKeys["DB_USER"] = "DB_USER";
|
22
|
-
DatabaseEnvironmentKeys["DB_PASS"] = "DB_PASS";
|
23
|
-
DatabaseEnvironmentKeys["DB_URI"] = "DB_URI";
|
24
|
-
DatabaseEnvironmentKeys["DB_RO_URI"] = "DB_RO_URI";
|
25
|
-
DatabaseEnvironmentKeys["DB_APPLICATION"] = "DB_APPLICATION";
|
26
|
-
})(DatabaseEnvironmentKeys = exports.DatabaseEnvironmentKeys || (exports.DatabaseEnvironmentKeys = {}));
|
27
|
-
function setDbSecret(secret) {
|
28
|
-
process.env[DatabaseEnvironmentKeys.DB_USER] = secret.username;
|
29
|
-
process.env[DatabaseEnvironmentKeys.DB_PASS] = secret.password;
|
30
|
-
process.env[DatabaseEnvironmentKeys.DB_URI] = secret.host;
|
31
|
-
process.env[DatabaseEnvironmentKeys.DB_RO_URI] = secret.ro_host;
|
32
|
-
}
|
33
|
-
// cached at Lambda container level
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
35
|
-
let cachedSecret;
|
36
|
-
const missingSecretErrorText = 'Missing or empty secretId';
|
37
|
-
/**
|
38
|
-
* Run the given function with secret retrieved from Secrets Manager. Also injects database-credentials into environment.
|
39
|
-
*
|
40
|
-
* @deprecated use SecretHolder & ProxyHolder
|
41
|
-
* @see SecretOptions
|
42
|
-
*
|
43
|
-
* @param {string} secretId
|
44
|
-
* @param {function} fn
|
45
|
-
* @param {SecretOptions} options
|
46
|
-
*/
|
47
|
-
async function withDbSecret(secretId, fn, options) {
|
48
|
-
if (!secretId) {
|
49
|
-
console.error(missingSecretErrorText);
|
50
|
-
return Promise.reject(missingSecretErrorText);
|
51
|
-
}
|
52
|
-
if (!cachedSecret) {
|
53
|
-
// if prefix is given, first set db values and then fetch secret
|
54
|
-
if (options?.prefix) {
|
55
|
-
// first set db values
|
56
|
-
await (0, secret_1.withSecret)(secretId, (fetchedSecret) => {
|
57
|
-
setDbSecret(fetchedSecret);
|
58
|
-
});
|
59
|
-
// then actual secret
|
60
|
-
await (0, secret_1.withSecretAndPrefix)(secretId, options.prefix, (fetchedSecret) => {
|
61
|
-
cachedSecret = fetchedSecret;
|
62
|
-
});
|
63
|
-
}
|
64
|
-
else {
|
65
|
-
await (0, secret_1.withSecret)(secretId, (fetchedSecret) => {
|
66
|
-
setDbSecret(fetchedSecret);
|
67
|
-
cachedSecret = fetchedSecret;
|
68
|
-
});
|
69
|
-
}
|
70
|
-
}
|
71
|
-
try {
|
72
|
-
if (options?.expectedKeys?.length) {
|
73
|
-
checkExpectedSecretKeys(options.expectedKeys, cachedSecret);
|
74
|
-
}
|
75
|
-
return fn(cachedSecret);
|
76
|
-
}
|
77
|
-
catch (error) {
|
78
|
-
console.error('method=withDbSecret Caught an error, refreshing secret', error);
|
79
|
-
// try to refetch secret in case it has changed
|
80
|
-
await (0, secret_1.withSecret)(secretId, (fetchedSecret) => {
|
81
|
-
setDbSecret(fetchedSecret);
|
82
|
-
cachedSecret = fetchedSecret;
|
83
|
-
});
|
84
|
-
return fn(cachedSecret);
|
85
|
-
}
|
86
|
-
}
|
87
|
-
exports.withDbSecret = withDbSecret;
|
88
|
-
function checkExpectedSecretKeys(keys, secret) {
|
89
|
-
const missingKeys = keys.filter(key => !(key in secret));
|
90
|
-
if (missingKeys.length) {
|
91
|
-
console.error(`method=checkExpectedSecretKeys secret didn't contain the key(s) ${missingKeys}`);
|
92
|
-
throw new Error('Expected keys were not found');
|
93
|
-
}
|
94
|
-
}
|
95
|
-
exports.checkExpectedSecretKeys = checkExpectedSecretKeys;
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJzZWNyZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvc2VjcmV0cy9kYnNlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBeUQ7QUFTekQsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLDBDQUFxQixDQUFBO0lBQUUsMENBQXFCLENBQUE7SUFBRSw4Q0FBeUIsQ0FBQTtJQUFFLG9EQUErQixDQUFBO0FBQzVHLENBQUMsRUFGVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUU1QjtBQUVELElBQVksWUFFWDtBQUZELFdBQVksWUFBWTtJQUNwQixxQ0FBcUIsQ0FBQTtJQUFFLHFDQUFxQixDQUFBO0lBQUUsNkJBQWEsQ0FBQTtJQUFFLG1DQUFtQixDQUFBO0FBQ3BGLENBQUMsRUFGVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUV2QjtBQUtELElBQVksdUJBTVg7QUFORCxXQUFZLHVCQUF1QjtJQUMvQiw4Q0FBbUIsQ0FBQTtJQUNuQiw4Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBaUIsQ0FBQTtJQUNqQixrREFBdUIsQ0FBQTtJQUN2Qiw0REFBaUMsQ0FBQTtBQUNyQyxDQUFDLEVBTlcsdUJBQXVCLEdBQXZCLCtCQUF1QixLQUF2QiwrQkFBdUIsUUFNbEM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUFnQjtJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDcEUsQ0FBQztBQUVELG1DQUFtQztBQUNuQyw4REFBOEQ7QUFDOUQsSUFBSSxZQUFpQixDQUFDO0FBRXRCLE1BQU0sc0JBQXNCLEdBQUcsMkJBQTJCLENBQUM7QUFtQjNEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQW1CLFFBQWdCLEVBQUUsRUFBNkMsRUFBRSxPQUF1QjtJQUN6SSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNmLGdFQUFnRTtRQUNoRSxJQUFJLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDakIsc0JBQXNCO1lBQ3RCLE1BQU0sSUFBQSxtQkFBVSxFQUFDLFFBQVEsRUFBRSxDQUFDLGFBQXVCLEVBQUUsRUFBRTtnQkFDbkQsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBRUgscUJBQXFCO1lBQ3JCLE1BQU0sSUFBQSw0QkFBbUIsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQXFCLEVBQUUsRUFBRTtnQkFDMUUsWUFBWSxHQUFHLGFBQWEsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLElBQUEsbUJBQVUsRUFBQyxRQUFRLEVBQUUsQ0FBQyxhQUF1QixFQUFFLEVBQUU7Z0JBQ25ELFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsWUFBWSxHQUFHLGFBQWEsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNOO0tBQ0o7SUFDRCxJQUFJO1FBQ0EsSUFBSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRTtZQUMvQix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDM0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0RBQXdELEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsK0NBQStDO1FBQy9DLE1BQU0sSUFBQSxtQkFBVSxFQUFDLFFBQVEsRUFBRSxDQUFDLGFBQXVCLEVBQUUsRUFBRTtZQUNuRCxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0IsWUFBWSxHQUFHLGFBQWEsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzNCO0FBQ0wsQ0FBQztBQXZDRCxvQ0F1Q0M7QUFFRCxTQUFnQix1QkFBdUIsQ0FBUyxJQUFjLEVBQUUsTUFBYztJQUMxRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLG1FQUFtRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNuRDtBQUNMLENBQUM7QUFORCwwREFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7d2l0aFNlY3JldCwgd2l0aFNlY3JldEFuZFByZWZpeH0gZnJvbSBcIi4vc2VjcmV0XCI7XG5cbmV4cG9ydCB0eXBlIERiU2VjcmV0ID0ge1xuICAgIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmdcbiAgICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nXG4gICAgcmVhZG9ubHkgcm9faG9zdDogc3RyaW5nXG59O1xuXG5leHBvcnQgZW51bSBSZHNQcm94eVNlY3JldEtleSB7XG4gICAgdXNlcm5hbWUgPSBcInVzZXJuYW1lXCIsIHBhc3N3b3JkID0gXCJwYXNzd29yZFwiLCBwcm94eV9ob3N0ID0gXCJwcm94eV9ob3N0XCIsIHByb3h5X3JvX2hvc3QgPSBcInByb3h5X3JvX2hvc3RcIlxufVxuXG5leHBvcnQgZW51bSBSZHNTZWNyZXRLZXkge1xuICAgIHVzZXJuYW1lID0gXCJ1c2VybmFtZVwiLCBwYXNzd29yZCA9IFwicGFzc3dvcmRcIiwgaG9zdCA9IFwiaG9zdFwiLCByb19ob3N0ID0gXCJyb19ob3N0XCJcbn1cblxuZXhwb3J0IHR5cGUgUmRzUHJveHlTZWNyZXQgPSBSZWNvcmQ8UmRzUHJveHlTZWNyZXRLZXksIHN0cmluZz47XG5leHBvcnQgdHlwZSBSZHNTZWNyZXQgPSBSZWNvcmQ8UmRzU2VjcmV0S2V5LCBzdHJpbmc+O1xuXG5leHBvcnQgZW51bSBEYXRhYmFzZUVudmlyb25tZW50S2V5cyB7XG4gICAgREJfVVNFUiA9IFwiREJfVVNFUlwiLFxuICAgIERCX1BBU1MgPSBcIkRCX1BBU1NcIixcbiAgICBEQl9VUkkgPSBcIkRCX1VSSVwiLFxuICAgIERCX1JPX1VSSSA9IFwiREJfUk9fVVJJXCIsXG4gICAgREJfQVBQTElDQVRJT04gPSBcIkRCX0FQUExJQ0FUSU9OXCIsXG59XG5cbmZ1bmN0aW9uIHNldERiU2VjcmV0KHNlY3JldDogRGJTZWNyZXQpIHtcbiAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXSA9IHNlY3JldC51c2VybmFtZTtcbiAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9QQVNTXSA9IHNlY3JldC5wYXNzd29yZDtcbiAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VUkldID0gc2VjcmV0Lmhvc3Q7XG4gICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfUk9fVVJJXSA9IHNlY3JldC5yb19ob3N0O1xufVxuXG4vLyBjYWNoZWQgYXQgTGFtYmRhIGNvbnRhaW5lciBsZXZlbFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmxldCBjYWNoZWRTZWNyZXQ6IGFueTtcblxuY29uc3QgbWlzc2luZ1NlY3JldEVycm9yVGV4dCA9ICdNaXNzaW5nIG9yIGVtcHR5IHNlY3JldElkJztcblxuLyoqXG4gKiBZb3UgY2FuIGdpdmUgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciByZXRyaWV2aW5nIGEgc2VjcmV0OlxuICpcbiAqIGV4cGVjdGVkS2V5czogdGhlIGxpc3Qgb2Yga2V5cyB0aGUgc2VjcmV0IG11c3QgaW5jbHVkZS4gIElmIG5vdCwgYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKiBwcmVmaXg6IGEgcHJlZml4IHRoYXQncyBpbmNsdWRlZCBpbiByZXRyaWV2ZWQgc2VjcmV0J3Mga2V5cy4gIE9ubHkga2V5cyBiZWdpbmluZyB3aXRoIHRoZSBwcmVmaXggd2lsbCBiZSBpbmNsdWRlZC5cbiAqIFRoZSBzZWNyZXQgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpbGwgbm90IGluY2x1ZGUgdGhlIHByZWZpeCBpbiBpdCdzIGtleXMuXG5cbiAqL1xuZXhwb3J0IHR5cGUgU2VjcmV0T3B0aW9ucyA9IHtcbiAgICByZWFkb25seSBleHBlY3RlZEtleXM/OiBzdHJpbmdbXSxcbiAgICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU2VjcmV0VG9Qcm9taXNlRnVuY3Rpb248U2VjcmV0LCBSZXNwb25zZSA9IHZvaWQ+ID0gKHNlY3JldDogU2VjcmV0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB8IHZvaWQ7XG5leHBvcnQgdHlwZSBTZWNyZXRGdW5jdGlvbjxTZWNyZXQsIFJlc3BvbnNlID0gdm9pZD4gPSAoc2VjcmV0SWQ6IHN0cmluZywgZm46IFNlY3JldFRvUHJvbWlzZUZ1bmN0aW9uPFNlY3JldCwgUmVzcG9uc2U+LCBvcHRpb25zPzogU2VjcmV0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+O1xuZXhwb3J0IHR5cGUgRW1wdHlTZWNyZXRGdW5jdGlvbjxSZXNwb25zZSA9IHZvaWQ+ID0gU2VjcmV0RnVuY3Rpb248RGJTZWNyZXQsIFJlc3BvbnNlPjtcblxuLyoqXG4gKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpdGggc2VjcmV0IHJldHJpZXZlZCBmcm9tIFNlY3JldHMgTWFuYWdlci4gIEFsc28gaW5qZWN0cyBkYXRhYmFzZS1jcmVkZW50aWFscyBpbnRvIGVudmlyb25tZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIHVzZSBTZWNyZXRIb2xkZXIgJiBQcm94eUhvbGRlclxuICogQHNlZSBTZWNyZXRPcHRpb25zXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldElkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmblxuICogQHBhcmFtIHtTZWNyZXRPcHRpb25zfSBvcHRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoRGJTZWNyZXQ8U2VjcmV0LCBSZXNwb25zZT4oc2VjcmV0SWQ6IHN0cmluZywgZm46IFNlY3JldFRvUHJvbWlzZUZ1bmN0aW9uPFNlY3JldCwgUmVzcG9uc2U+LCBvcHRpb25zPzogU2VjcmV0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKCFzZWNyZXRJZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1pc3NpbmdTZWNyZXRFcnJvclRleHQpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobWlzc2luZ1NlY3JldEVycm9yVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKCFjYWNoZWRTZWNyZXQpIHtcbiAgICAgICAgLy8gaWYgcHJlZml4IGlzIGdpdmVuLCBmaXJzdCBzZXQgZGIgdmFsdWVzIGFuZCB0aGVuIGZldGNoIHNlY3JldFxuICAgICAgICBpZiAob3B0aW9ucz8ucHJlZml4KSB7XG4gICAgICAgICAgICAvLyBmaXJzdCBzZXQgZGIgdmFsdWVzXG4gICAgICAgICAgICBhd2FpdCB3aXRoU2VjcmV0KHNlY3JldElkLCAoZmV0Y2hlZFNlY3JldDogRGJTZWNyZXQpID0+IHtcbiAgICAgICAgICAgICAgICBzZXREYlNlY3JldChmZXRjaGVkU2VjcmV0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyB0aGVuIGFjdHVhbCBzZWNyZXRcbiAgICAgICAgICAgIGF3YWl0IHdpdGhTZWNyZXRBbmRQcmVmaXgoc2VjcmV0SWQsIG9wdGlvbnMucHJlZml4LCAoZmV0Y2hlZFNlY3JldDogU2VjcmV0KSA9PiB7XG4gICAgICAgICAgICAgICAgY2FjaGVkU2VjcmV0ID0gZmV0Y2hlZFNlY3JldDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgd2l0aFNlY3JldChzZWNyZXRJZCwgKGZldGNoZWRTZWNyZXQ6IERiU2VjcmV0KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RGJTZWNyZXQoZmV0Y2hlZFNlY3JldCk7XG4gICAgICAgICAgICAgICAgY2FjaGVkU2VjcmV0ID0gZmV0Y2hlZFNlY3JldDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmIChvcHRpb25zPy5leHBlY3RlZEtleXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY2hlY2tFeHBlY3RlZFNlY3JldEtleXMob3B0aW9ucy5leHBlY3RlZEtleXMsIGNhY2hlZFNlY3JldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZuKGNhY2hlZFNlY3JldCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignbWV0aG9kPXdpdGhEYlNlY3JldCBDYXVnaHQgYW4gZXJyb3IsIHJlZnJlc2hpbmcgc2VjcmV0JywgZXJyb3IpO1xuICAgICAgICAvLyB0cnkgdG8gcmVmZXRjaCBzZWNyZXQgaW4gY2FzZSBpdCBoYXMgY2hhbmdlZFxuICAgICAgICBhd2FpdCB3aXRoU2VjcmV0KHNlY3JldElkLCAoZmV0Y2hlZFNlY3JldDogRGJTZWNyZXQpID0+IHtcbiAgICAgICAgICAgIHNldERiU2VjcmV0KGZldGNoZWRTZWNyZXQpO1xuICAgICAgICAgICAgY2FjaGVkU2VjcmV0ID0gZmV0Y2hlZFNlY3JldDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmbihjYWNoZWRTZWNyZXQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRTZWNyZXRLZXlzPFNlY3JldD4oa2V5czogc3RyaW5nW10sIHNlY3JldDogU2VjcmV0KSB7XG4gICAgY29uc3QgbWlzc2luZ0tleXMgPSBrZXlzLmZpbHRlcihrZXkgPT4gIShrZXkgaW4gc2VjcmV0KSk7XG4gICAgaWYgKG1pc3NpbmdLZXlzLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBtZXRob2Q9Y2hlY2tFeHBlY3RlZFNlY3JldEtleXMgc2VjcmV0IGRpZG4ndCBjb250YWluIHRoZSBrZXkocykgJHttaXNzaW5nS2V5c31gKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBrZXlzIHdlcmUgbm90IGZvdW5kJyk7XG4gICAgfVxufVxuIl19
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ProxyHolder = void 0;
|
4
|
-
const secret_holder_1 = require("./secret-holder");
|
5
|
-
const dbsecret_1 = require("./dbsecret");
|
6
|
-
const RDS_PROXY_SECRET_KEYS = Object.values(dbsecret_1.RdsProxySecretKey);
|
7
|
-
/**
|
8
|
-
* Holds credentials for RDS Proxy access.
|
9
|
-
*/
|
10
|
-
class ProxyHolder {
|
11
|
-
constructor(secretId) {
|
12
|
-
this.secretHolder = new secret_holder_1.SecretHolder(secretId, '', RDS_PROXY_SECRET_KEYS);
|
13
|
-
}
|
14
|
-
static create() {
|
15
|
-
return new ProxyHolder(process.env.SECRET_ID);
|
16
|
-
}
|
17
|
-
async setCredentials() {
|
18
|
-
const secret = await this.secretHolder.get();
|
19
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER] = secret.username;
|
20
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_PASS] = secret.password;
|
21
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_URI] = secret.proxy_host;
|
22
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_RO_URI] = secret.proxy_ro_host;
|
23
|
-
}
|
24
|
-
}
|
25
|
-
exports.ProxyHolder = ProxyHolder;
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktaG9sZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL3NlY3JldHMvcHJveHktaG9sZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUE2QztBQUM3Qyx5Q0FBc0Y7QUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLDRCQUFpQixDQUFDLENBQUM7QUFFL0Q7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFHcEIsWUFBWSxRQUFnQjtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksNEJBQVksQ0FBaUIsUUFBUSxFQUFFLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTTtRQUNULE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDMUUsQ0FBQztDQUNKO0FBbkJELGtDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VjcmV0SG9sZGVyfSBmcm9tIFwiLi9zZWNyZXQtaG9sZGVyXCI7XG5pbXBvcnQge0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLCBSZHNQcm94eVNlY3JldEtleSwgUmRzUHJveHlTZWNyZXR9IGZyb20gXCIuL2Ric2VjcmV0XCI7XG5cbmNvbnN0IFJEU19QUk9YWV9TRUNSRVRfS0VZUyA9IE9iamVjdC52YWx1ZXMoUmRzUHJveHlTZWNyZXRLZXkpO1xuXG4vKipcbiAqIEhvbGRzIGNyZWRlbnRpYWxzIGZvciBSRFMgUHJveHkgYWNjZXNzLlxuICovXG5leHBvcnQgY2xhc3MgUHJveHlIb2xkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjcmV0SG9sZGVyO1xuXG4gICAgY29uc3RydWN0b3Ioc2VjcmV0SWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlY3JldEhvbGRlciA9IG5ldyBTZWNyZXRIb2xkZXI8UmRzUHJveHlTZWNyZXQ+KHNlY3JldElkLCAnJywgUkRTX1BST1hZX1NFQ1JFVF9LRVlTKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5SG9sZGVyKHByb2Nlc3MuZW52LlNFQ1JFVF9JRCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDcmVkZW50aWFscygpIHtcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgdGhpcy5zZWNyZXRIb2xkZXIuZ2V0KCk7XG5cbiAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfVVNFUl0gPSBzZWNyZXQudXNlcm5hbWU7XG4gICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1BBU1NdID0gc2VjcmV0LnBhc3N3b3JkO1xuICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VUkldID0gc2VjcmV0LnByb3h5X2hvc3Q7XG4gICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1JPX1VSSV0gPSBzZWNyZXQucHJveHlfcm9faG9zdDtcbiAgICB9XG59XG4iXX0=
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.RdsHolder = void 0;
|
4
|
-
const secret_holder_1 = require("./secret-holder");
|
5
|
-
const dbsecret_1 = require("./dbsecret");
|
6
|
-
const RDS_SECRET_KEYS = Object.values(dbsecret_1.RdsSecretKey);
|
7
|
-
/**
|
8
|
-
* Holds credentials for RDS access.
|
9
|
-
*/
|
10
|
-
class RdsHolder {
|
11
|
-
constructor(secretId) {
|
12
|
-
this.secretHolder = new secret_holder_1.SecretHolder(secretId, '', RDS_SECRET_KEYS);
|
13
|
-
}
|
14
|
-
static create() {
|
15
|
-
return new RdsHolder(process.env.SECRET_ID);
|
16
|
-
}
|
17
|
-
async setCredentials() {
|
18
|
-
const secret = await this.secretHolder.get();
|
19
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER] = secret.username;
|
20
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_PASS] = secret.password;
|
21
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_URI] = secret.host;
|
22
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_RO_URI] = secret.ro_host;
|
23
|
-
}
|
24
|
-
}
|
25
|
-
exports.RdsHolder = RdsHolder;
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hd3MvcnVudGltZS9zZWNyZXRzL3Jkcy1ob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZDO0FBQzdDLHlDQUE0RTtBQUU1RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUFZLENBQUMsQ0FBQztBQUVwRDs7R0FFRztBQUNILE1BQWEsU0FBUztJQUdsQixZQUFZLFFBQWdCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFZLFFBQVEsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUFuQkQsOEJBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWNyZXRIb2xkZXJ9IGZyb20gXCIuL3NlY3JldC1ob2xkZXJcIjtcbmltcG9ydCB7RGF0YWJhc2VFbnZpcm9ubWVudEtleXMsIFJkc1NlY3JldCwgUmRzU2VjcmV0S2V5fSBmcm9tIFwiLi9kYnNlY3JldFwiO1xuXG5jb25zdCBSRFNfU0VDUkVUX0tFWVMgPSBPYmplY3QudmFsdWVzKFJkc1NlY3JldEtleSk7XG5cbi8qKlxuICogSG9sZHMgY3JlZGVudGlhbHMgZm9yIFJEUyBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZHNIb2xkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjcmV0SG9sZGVyO1xuXG4gICAgY29uc3RydWN0b3Ioc2VjcmV0SWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlY3JldEhvbGRlciA9IG5ldyBTZWNyZXRIb2xkZXI8UmRzU2VjcmV0PihzZWNyZXRJZCwgJycsIFJEU19TRUNSRVRfS0VZUyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZHNIb2xkZXIocHJvY2Vzcy5lbnYuU0VDUkVUX0lEIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENyZWRlbnRpYWxzKCkge1xuICAgICAgICBjb25zdCBzZWNyZXQgPSBhd2FpdCB0aGlzLnNlY3JldEhvbGRlci5nZXQoKTtcblxuICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXSA9IHNlY3JldC51c2VybmFtZTtcbiAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfUEFTU10gPSBzZWNyZXQucGFzc3dvcmQ7XG4gICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VSSV0gPSBzZWNyZXQuaG9zdDtcbiAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfUk9fVVJJXSA9IHNlY3JldC5yb19ob3N0O1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,73 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.SecretHolder = void 0;
|
4
|
-
const secret_1 = require("./secret");
|
5
|
-
const dbsecret_1 = require("./dbsecret");
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
7
|
-
const NodeTtl = require('node-ttl');
|
8
|
-
const DEFAULT_PREFIX = '';
|
9
|
-
const DEFAULT_SECRET_KEY = 'SECRET';
|
10
|
-
const DEFAULT_CONFIGURATION = {
|
11
|
-
ttl: 5 * 60, // timeout secrets in 5 minutes
|
12
|
-
};
|
13
|
-
/**
|
14
|
-
* Utility class for getting secrets from Secret Manager.
|
15
|
-
* Supports prefix for secrets, checking of expected keys and ttl-configuration.
|
16
|
-
*
|
17
|
-
* By default, secrets are cached for 5 minutes and then reread from the Secrets Manager(This can be overridden with configuration).
|
18
|
-
*
|
19
|
-
* Supports setting the database environment paramaters from the secret too.
|
20
|
-
*/
|
21
|
-
class SecretHolder {
|
22
|
-
constructor(secretId, prefix = '', expectedKeys = [], configuration = DEFAULT_CONFIGURATION) {
|
23
|
-
this.secretId = secretId;
|
24
|
-
this.prefix = prefix;
|
25
|
-
this.expectedKeys = expectedKeys;
|
26
|
-
this.secretCache = new NodeTtl(configuration);
|
27
|
-
}
|
28
|
-
async initSecret() {
|
29
|
-
const secretValue = await (0, secret_1.getSecret)(this.secretId);
|
30
|
-
console.info("refreshing secret " + this.secretId);
|
31
|
-
this.secretCache.push(DEFAULT_SECRET_KEY, secretValue);
|
32
|
-
}
|
33
|
-
static create(prefix = DEFAULT_PREFIX, expectedKeys = []) {
|
34
|
-
return new SecretHolder(process.env.SECRET_ID, prefix, expectedKeys);
|
35
|
-
}
|
36
|
-
async get() {
|
37
|
-
const secret = await this.getSecret();
|
38
|
-
const parsedSecret = this.prefix === DEFAULT_PREFIX ? secret : this.parseSecret(secret, `${this.prefix}.`);
|
39
|
-
if (this.expectedKeys.length > 0) {
|
40
|
-
(0, dbsecret_1.checkExpectedSecretKeys)(this.expectedKeys, parsedSecret);
|
41
|
-
}
|
42
|
-
return parsedSecret;
|
43
|
-
}
|
44
|
-
parseSecret(secret, prefix) {
|
45
|
-
const parsed = {};
|
46
|
-
const skip = prefix.length;
|
47
|
-
for (const key in secret) {
|
48
|
-
if (key.startsWith(prefix)) {
|
49
|
-
parsed[key.substring(skip)] = secret[key];
|
50
|
-
}
|
51
|
-
}
|
52
|
-
return parsed;
|
53
|
-
}
|
54
|
-
async getSecret() {
|
55
|
-
const secret = this.secretCache.get(DEFAULT_SECRET_KEY);
|
56
|
-
if (!secret) {
|
57
|
-
await this.initSecret();
|
58
|
-
}
|
59
|
-
return secret || this.secretCache.get(DEFAULT_SECRET_KEY);
|
60
|
-
}
|
61
|
-
/**
|
62
|
-
* @deprecated Use ProxyHolder
|
63
|
-
*/
|
64
|
-
async setDatabaseCredentials() {
|
65
|
-
const secret = await this.getSecret();
|
66
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER] = secret.username;
|
67
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_PASS] = secret.password;
|
68
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_URI] = secret.host;
|
69
|
-
process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_RO_URI] = secret.ro_host;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
exports.SecretHolder = SecretHolder;
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hd3MvcnVudGltZS9zZWNyZXRzL3NlY3JldC1ob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQWtEO0FBQ2xELHlDQUFzRjtBQUV0Riw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXBDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLHFCQUFxQixHQUFHO0lBQzFCLEdBQUcsRUFBRSxDQUFDLEdBQUMsRUFBRSxFQUFFLCtCQUErQjtDQUM3QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILE1BQWEsWUFBWTtJQU9yQixZQUFZLFFBQWdCLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxlQUF5QixFQUFFLEVBQUUsYUFBYSxHQUFHLHFCQUFxQjtRQUN6RyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUVqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVTtRQUNwQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsa0JBQVMsRUFBUyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUksTUFBTSxHQUFHLGNBQWMsRUFBRSxlQUF5QixFQUFFO1FBQ3hFLE9BQU8sSUFBSSxZQUFZLENBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFtQixFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUc7UUFDWixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQVUsQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQWtDLEVBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUV4SSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5QixJQUFBLGtDQUF1QixFQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDNUQ7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQXFCLEVBQUUsTUFBYztRQUNyRCxNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM3QztTQUNKO1FBRUQsT0FBTyxNQUEyQixDQUFDO0lBQ3ZDLENBQUM7SUFHTyxLQUFLLENBQUMsU0FBUztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMzQjtRQUVELE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHNCQUFzQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQVksQ0FBQztRQUVoRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDcEUsQ0FBQztDQUNKO0FBekVELG9DQXlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R2VuZXJpY1NlY3JldCwgZ2V0U2VjcmV0fSBmcm9tIFwiLi9zZWNyZXRcIjtcbmltcG9ydCB7Y2hlY2tFeHBlY3RlZFNlY3JldEtleXMsIERhdGFiYXNlRW52aXJvbm1lbnRLZXlzLCBEYlNlY3JldH0gZnJvbSBcIi4vZGJzZWNyZXRcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbmNvbnN0IE5vZGVUdGwgPSByZXF1aXJlKCdub2RlLXR0bCcpO1xuXG5jb25zdCBERUZBVUxUX1BSRUZJWCA9ICcnO1xuY29uc3QgREVGQVVMVF9TRUNSRVRfS0VZID0gJ1NFQ1JFVCc7XG5jb25zdCBERUZBVUxUX0NPTkZJR1VSQVRJT04gPSB7XG4gICAgdHRsOiA1KjYwLCAvLyB0aW1lb3V0IHNlY3JldHMgaW4gNSBtaW51dGVzXG59O1xuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGdldHRpbmcgc2VjcmV0cyBmcm9tIFNlY3JldCBNYW5hZ2VyLlxuICogU3VwcG9ydHMgcHJlZml4IGZvciBzZWNyZXRzLCBjaGVja2luZyBvZiBleHBlY3RlZCBrZXlzIGFuZCB0dGwtY29uZmlndXJhdGlvbi5cbiAqXG4gKiBCeSBkZWZhdWx0LCBzZWNyZXRzIGFyZSBjYWNoZWQgZm9yIDUgbWludXRlcyBhbmQgdGhlbiByZXJlYWQgZnJvbSB0aGUgU2VjcmV0cyBNYW5hZ2VyKFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBjb25maWd1cmF0aW9uKS5cbiAqXG4gKiBTdXBwb3J0cyBzZXR0aW5nIHRoZSBkYXRhYmFzZSBlbnZpcm9ubWVudCBwYXJhbWF0ZXJzIGZyb20gdGhlIHNlY3JldCB0b28uXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXRIb2xkZXI8U2VjcmV0PiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWNyZXRJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleHBlY3RlZEtleXM6IHN0cmluZ1tdO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWNyZXRDYWNoZTtcblxuICAgIGNvbnN0cnVjdG9yKHNlY3JldElkOiBzdHJpbmcsIHByZWZpeCA9ICcnLCBleHBlY3RlZEtleXM6IHN0cmluZ1tdID0gW10sIGNvbmZpZ3VyYXRpb24gPSBERUZBVUxUX0NPTkZJR1VSQVRJT04pIHtcbiAgICAgICAgdGhpcy5zZWNyZXRJZCA9IHNlY3JldElkO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgdGhpcy5leHBlY3RlZEtleXMgPSBleHBlY3RlZEtleXM7XG5cbiAgICAgICAgdGhpcy5zZWNyZXRDYWNoZSA9IG5ldyBOb2RlVHRsKGNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdFNlY3JldCgpIHtcbiAgICAgICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBhd2FpdCBnZXRTZWNyZXQ8U2VjcmV0Pih0aGlzLnNlY3JldElkKTtcblxuICAgICAgICBjb25zb2xlLmluZm8oXCJyZWZyZXNoaW5nIHNlY3JldCBcIiArIHRoaXMuc2VjcmV0SWQpO1xuXG4gICAgICAgIHRoaXMuc2VjcmV0Q2FjaGUucHVzaChERUZBVUxUX1NFQ1JFVF9LRVksIHNlY3JldFZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxTPihwcmVmaXggPSBERUZBVUxUX1BSRUZJWCwgZXhwZWN0ZWRLZXlzOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2VjcmV0SG9sZGVyPFM+KHByb2Nlc3MuZW52LlNFQ1JFVF9JRCBhcyBzdHJpbmcsIHByZWZpeCwgZXhwZWN0ZWRLZXlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KCk6IFByb21pc2U8U2VjcmV0PiB7XG4gICAgICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IHRoaXMuZ2V0U2VjcmV0PFNlY3JldD4oKTtcbiAgICAgICAgY29uc3QgcGFyc2VkU2VjcmV0ID0gdGhpcy5wcmVmaXggPT09IERFRkFVTFRfUFJFRklYID8gc2VjcmV0IDogdGhpcy5wYXJzZVNlY3JldChzZWNyZXQgYXMgdW5rbm93biBhcyBHZW5lcmljU2VjcmV0LCAgYCR7dGhpcy5wcmVmaXh9LmApO1xuXG4gICAgICAgIGlmICh0aGlzLmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjaGVja0V4cGVjdGVkU2VjcmV0S2V5cyh0aGlzLmV4cGVjdGVkS2V5cywgcGFyc2VkU2VjcmV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJzZWRTZWNyZXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVNlY3JldChzZWNyZXQ6IEdlbmVyaWNTZWNyZXQsIHByZWZpeDogc3RyaW5nKTogU2VjcmV0IHtcbiAgICAgICAgY29uc3QgcGFyc2VkOiBHZW5lcmljU2VjcmV0ID0ge307XG4gICAgICAgIGNvbnN0IHNraXAgPSBwcmVmaXgubGVuZ3RoO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNlY3JldCkge1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRba2V5LnN1YnN0cmluZyhza2lwKV0gPSBzZWNyZXRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJzZWQgYXMgdW5rbm93biBhcyBTZWNyZXQ7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGFzeW5jIGdldFNlY3JldDxTPigpOiBQcm9taXNlPFM+IHtcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gdGhpcy5zZWNyZXRDYWNoZS5nZXQoREVGQVVMVF9TRUNSRVRfS0VZKTtcblxuICAgICAgICBpZiAoIXNlY3JldCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbml0U2VjcmV0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VjcmV0IHx8IHRoaXMuc2VjcmV0Q2FjaGUuZ2V0KERFRkFVTFRfU0VDUkVUX0tFWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIFByb3h5SG9sZGVyXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNldERhdGFiYXNlQ3JlZGVudGlhbHMoKSB7XG4gICAgICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IHRoaXMuZ2V0U2VjcmV0PERiU2VjcmV0PigpO1xuXG4gICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VTRVJdID0gc2VjcmV0LnVzZXJuYW1lO1xuICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9QQVNTXSA9IHNlY3JldC5wYXNzd29yZDtcbiAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfVVJJXSA9IHNlY3JldC5ob3N0O1xuICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9ST19VUkldID0gc2VjcmV0LnJvX2hvc3Q7XG4gICAgfVxufVxuIl19
|
@@ -1,43 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.withSecretAndPrefix = exports.getSecret = exports.withSecret = void 0;
|
4
|
-
const aws_sdk_1 = require("aws-sdk");
|
5
|
-
const smClient = new aws_sdk_1.SecretsManager({
|
6
|
-
region: process.env.AWS_REGION,
|
7
|
-
});
|
8
|
-
/**
|
9
|
-
@deprecated use SecretHolder & ProxyHolder
|
10
|
-
*/
|
11
|
-
async function withSecret(secretId, fn) {
|
12
|
-
return fn(await getSecret(secretId));
|
13
|
-
}
|
14
|
-
exports.withSecret = withSecret;
|
15
|
-
async function getSecret(secretId, prefix = '') {
|
16
|
-
const secretObj = await smClient.getSecretValue({
|
17
|
-
SecretId: secretId,
|
18
|
-
}).promise();
|
19
|
-
if (!secretObj.SecretString) {
|
20
|
-
throw new Error('No secret found!');
|
21
|
-
}
|
22
|
-
const secret = JSON.parse(secretObj.SecretString);
|
23
|
-
if (prefix === '') {
|
24
|
-
return secret;
|
25
|
-
}
|
26
|
-
return parseSecret(secret, `${prefix}.`);
|
27
|
-
}
|
28
|
-
exports.getSecret = getSecret;
|
29
|
-
function parseSecret(secret, prefix) {
|
30
|
-
const parsed = {};
|
31
|
-
const skip = prefix.length;
|
32
|
-
for (const key in secret) {
|
33
|
-
if (key.startsWith(prefix)) {
|
34
|
-
parsed[key.substring(skip)] = secret[key];
|
35
|
-
}
|
36
|
-
}
|
37
|
-
return parsed;
|
38
|
-
}
|
39
|
-
async function withSecretAndPrefix(secretId, prefix, fn) {
|
40
|
-
return fn(await getSecret(secretId, prefix));
|
41
|
-
}
|
42
|
-
exports.withSecretAndPrefix = withSecretAndPrefix;
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL3NlY3JldHMvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF1QztBQUd2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLHdCQUFjLENBQUM7SUFDaEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtDQUNqQyxDQUFDLENBQUM7QUFJSDs7R0FFRztBQUNJLEtBQUssVUFBVSxVQUFVLENBQW1CLFFBQWdCLEVBQUUsRUFBNkM7SUFDOUcsT0FBTyxFQUFFLENBQUMsTUFBTSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsZ0NBRUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFTLFFBQWdCLEVBQUUsTUFBTSxHQUFHLEVBQUU7SUFDakUsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQzVDLFFBQVEsRUFBRSxRQUFRO0tBQ3JCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUViLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWxELElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUNmLE9BQU8sTUFBTSxDQUFDO0tBQ2pCO0lBRUQsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBaEJELDhCQWdCQztBQUVELFNBQVMsV0FBVyxDQUFTLE1BQXFCLEVBQUUsTUFBYztJQUM5RCxNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdDO0tBQ0o7SUFFRCxPQUFPLE1BQTJCLENBQUM7QUFDdkMsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FBbUIsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsRUFBNkM7SUFDdkksT0FBTyxFQUFFLENBQUMsTUFBTSxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUZELGtEQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWNyZXRzTWFuYWdlcn0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQge1NlY3JldFRvUHJvbWlzZUZ1bmN0aW9ufSBmcm9tIFwiLi9kYnNlY3JldFwiO1xuXG5jb25zdCBzbUNsaWVudCA9IG5ldyBTZWNyZXRzTWFuYWdlcih7XG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5BV1NfUkVHSU9OLFxufSk7XG5cbmV4cG9ydCB0eXBlIEdlbmVyaWNTZWNyZXQgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4vKipcbiBAZGVwcmVjYXRlZCB1c2UgU2VjcmV0SG9sZGVyICYgUHJveHlIb2xkZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhTZWNyZXQ8U2VjcmV0LCBSZXNwb25zZT4oc2VjcmV0SWQ6IHN0cmluZywgZm46IFNlY3JldFRvUHJvbWlzZUZ1bmN0aW9uPFNlY3JldCwgUmVzcG9uc2U+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICByZXR1cm4gZm4oYXdhaXQgZ2V0U2VjcmV0KHNlY3JldElkKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZWNyZXQ8U2VjcmV0PihzZWNyZXRJZDogc3RyaW5nLCBwcmVmaXggPSAnJyk6IFByb21pc2U8U2VjcmV0PiB7XG4gICAgY29uc3Qgc2VjcmV0T2JqID0gYXdhaXQgc21DbGllbnQuZ2V0U2VjcmV0VmFsdWUoe1xuICAgICAgICBTZWNyZXRJZDogc2VjcmV0SWQsXG4gICAgfSkucHJvbWlzZSgpO1xuXG4gICAgaWYgKCFzZWNyZXRPYmouU2VjcmV0U3RyaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc2VjcmV0IGZvdW5kIScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0T2JqLlNlY3JldFN0cmluZyk7XG5cbiAgICBpZiAocHJlZml4ID09PSAnJykge1xuICAgICAgICByZXR1cm4gc2VjcmV0O1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZVNlY3JldChzZWNyZXQsIGAke3ByZWZpeH0uYCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2VjcmV0PFNlY3JldD4oc2VjcmV0OiBHZW5lcmljU2VjcmV0LCBwcmVmaXg6IHN0cmluZyk6IFNlY3JldCB7XG4gICAgY29uc3QgcGFyc2VkOiBHZW5lcmljU2VjcmV0ID0ge307XG4gICAgY29uc3Qgc2tpcCA9IHByZWZpeC5sZW5ndGg7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzZWNyZXQpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICAgIHBhcnNlZFtrZXkuc3Vic3RyaW5nKHNraXApXSA9IHNlY3JldFtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlZCBhcyB1bmtub3duIGFzIFNlY3JldDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhTZWNyZXRBbmRQcmVmaXg8U2VjcmV0LCBSZXNwb25zZT4oc2VjcmV0SWQ6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIGZuOiBTZWNyZXRUb1Byb21pc2VGdW5jdGlvbjxTZWNyZXQsIFJlc3BvbnNlPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgcmV0dXJuIGZuKGF3YWl0IGdldFNlY3JldChzZWNyZXRJZCwgcHJlZml4KSk7XG59XG4iXX0=
|
package/src/aws/types/errors.js
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.BAD_REQUEST_MESSAGE = exports.OK_MESSAGE = exports.ERROR_MESSAGE = exports.NOT_FOUND_MESSAGE = void 0;
|
4
|
-
// DEPRECATED, remove this!
|
5
|
-
exports.NOT_FOUND_MESSAGE = 'NOT_FOUND';
|
6
|
-
exports.ERROR_MESSAGE = 'ERROR';
|
7
|
-
exports.OK_MESSAGE = 'OK';
|
8
|
-
exports.BAD_REQUEST_MESSAGE = 'BAD REQUEST';
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy90eXBlcy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQTJCO0FBQ2QsUUFBQSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDaEMsUUFBQSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFFBQUEsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNsQixRQUFBLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERFUFJFQ0FURUQsIHJlbW92ZSB0aGlzIVxyXG5leHBvcnQgY29uc3QgTk9UX0ZPVU5EX01FU1NBR0UgPSAnTk9UX0ZPVU5EJztcclxuZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0UgPSAnRVJST1InO1xyXG5leHBvcnQgY29uc3QgT0tfTUVTU0FHRSA9ICdPSyc7XHJcbmV4cG9ydCBjb25zdCBCQURfUkVRVUVTVF9NRVNTQUdFID0gJ0JBRCBSRVFVRVNUJztcclxuIl19
|