@rio-cloud/cdk-v2-constructs 1.0.1-alpha.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/.gitattributes +15 -0
- package/.jsii +7832 -0
- package/.versionrc.json +14 -0
- package/API.md +8136 -0
- package/CHANGELOG.md +5 -0
- package/LICENSE +202 -0
- package/README.md +56 -0
- package/lib/datadog/datadogLogIndexMonitoring.d.ts +49 -0
- package/lib/datadog/datadogLogIndexMonitoring.js +116 -0
- package/lib/datadog/datadogMonitor.d.ts +13 -0
- package/lib/datadog/datadogMonitor.js +19 -0
- package/lib/datadog/index.d.ts +1 -0
- package/lib/datadog/index.js +19 -0
- package/lib/fargate/datadog.d.ts +18 -0
- package/lib/fargate/datadog.js +225 -0
- package/lib/fargate/rio-fargate-service.d.ts +276 -0
- package/lib/fargate/rio-fargate-service.js +147 -0
- package/lib/fargate/spring.d.ts +6 -0
- package/lib/fargate/spring.js +39 -0
- package/lib/index.d.ts +21 -0
- package/lib/index.js +34 -0
- package/lib/kafka/index.d.ts +2 -0
- package/lib/kafka/index.js +15 -0
- package/lib/kafka/kafka-event-spec.d.ts +43 -0
- package/lib/kafka/kafka-event-spec.js +106 -0
- package/lib/kafka/kafka-topic.d.ts +102 -0
- package/lib/kafka/kafka-topic.js +70 -0
- package/lib/pipeline/rio-backup-secrets-restore-stage.d.ts +40 -0
- package/lib/pipeline/rio-backup-secrets-restore-stage.js +104 -0
- package/lib/pipeline/rio-bitbucket-source-action.d.ts +25 -0
- package/lib/pipeline/rio-bitbucket-source-action.js +36 -0
- package/lib/rio-claidometer.d.ts +21 -0
- package/lib/rio-claidometer.js +39 -0
- package/lib/rio-landing-zone.d.ts +16 -0
- package/lib/rio-landing-zone.js +57 -0
- package/lib/rio-load-balancer.d.ts +26 -0
- package/lib/rio-load-balancer.js +42 -0
- package/lib/toggle.d.ts +21 -0
- package/lib/toggle.js +44 -0
- package/lib/watchful/alb.d.ts +47 -0
- package/lib/watchful/alb.js +52 -0
- package/lib/watchful/aspect.d.ts +16 -0
- package/lib/watchful/aspect.js +55 -0
- package/lib/watchful/cloudfront.d.ts +50 -0
- package/lib/watchful/cloudfront.js +65 -0
- package/lib/watchful/datadog-log-alarm.d.ts +37 -0
- package/lib/watchful/datadog-log-alarm.js +88 -0
- package/lib/watchful/datadog-metric-alarm.d.ts +32 -0
- package/lib/watchful/datadog-metric-alarm.js +158 -0
- package/lib/watchful/docdb.d.ts +62 -0
- package/lib/watchful/docdb.js +102 -0
- package/lib/watchful/dynamodb.d.ts +69 -0
- package/lib/watchful/dynamodb.js +87 -0
- package/lib/watchful/ecs.d.ts +50 -0
- package/lib/watchful/ecs.js +69 -0
- package/lib/watchful/lambda.d.ts +59 -0
- package/lib/watchful/lambda.js +65 -0
- package/lib/watchful/metric-alarm.d.ts +34 -0
- package/lib/watchful/metric-alarm.js +3 -0
- package/lib/watchful/rds.d.ts +47 -0
- package/lib/watchful/rds.js +47 -0
- package/lib/watchful/targetgroup.d.ts +47 -0
- package/lib/watchful/targetgroup.js +54 -0
- package/lib/watchful/upperToLower.d.ts +7 -0
- package/lib/watchful/upperToLower.js +35 -0
- package/lib/watchful/watchful.d.ts +119 -0
- package/lib/watchful/watchful.js +182 -0
- package/node_modules/argparse/CHANGELOG.md +216 -0
- package/node_modules/argparse/LICENSE +254 -0
- package/node_modules/argparse/README.md +84 -0
- package/node_modules/argparse/argparse.js +3707 -0
- package/node_modules/argparse/lib/sub.js +67 -0
- package/node_modules/argparse/lib/textwrap.js +440 -0
- package/node_modules/argparse/package.json +31 -0
- package/node_modules/js-yaml/CHANGELOG.md +616 -0
- package/node_modules/js-yaml/LICENSE +21 -0
- package/node_modules/js-yaml/README.md +246 -0
- package/node_modules/js-yaml/bin/js-yaml.js +126 -0
- package/node_modules/js-yaml/dist/js-yaml.js +3874 -0
- package/node_modules/js-yaml/dist/js-yaml.min.js +2 -0
- package/node_modules/js-yaml/dist/js-yaml.mjs +3851 -0
- package/node_modules/js-yaml/index.js +47 -0
- package/node_modules/js-yaml/lib/common.js +59 -0
- package/node_modules/js-yaml/lib/dumper.js +965 -0
- package/node_modules/js-yaml/lib/exception.js +55 -0
- package/node_modules/js-yaml/lib/loader.js +1727 -0
- package/node_modules/js-yaml/lib/schema/core.js +11 -0
- package/node_modules/js-yaml/lib/schema/default.js +22 -0
- package/node_modules/js-yaml/lib/schema/failsafe.js +17 -0
- package/node_modules/js-yaml/lib/schema/json.js +19 -0
- package/node_modules/js-yaml/lib/schema.js +121 -0
- package/node_modules/js-yaml/lib/snippet.js +101 -0
- package/node_modules/js-yaml/lib/type/binary.js +125 -0
- package/node_modules/js-yaml/lib/type/bool.js +35 -0
- package/node_modules/js-yaml/lib/type/float.js +97 -0
- package/node_modules/js-yaml/lib/type/int.js +156 -0
- package/node_modules/js-yaml/lib/type/map.js +8 -0
- package/node_modules/js-yaml/lib/type/merge.js +12 -0
- package/node_modules/js-yaml/lib/type/null.js +35 -0
- package/node_modules/js-yaml/lib/type/omap.js +44 -0
- package/node_modules/js-yaml/lib/type/pairs.js +53 -0
- package/node_modules/js-yaml/lib/type/seq.js +8 -0
- package/node_modules/js-yaml/lib/type/set.js +29 -0
- package/node_modules/js-yaml/lib/type/str.js +8 -0
- package/node_modules/js-yaml/lib/type/timestamp.js +88 -0
- package/node_modules/js-yaml/lib/type.js +66 -0
- package/node_modules/js-yaml/package.json +66 -0
- package/package.json +126 -0
- package/release-commit-check.js +6 -0
- package/version.json +3 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Watchful = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const cw_actions = require("aws-cdk-lib/aws-cloudwatch-actions");
|
|
8
|
+
const ssm = require("aws-cdk-lib/aws-ssm");
|
|
9
|
+
const constructs_1 = require("constructs");
|
|
10
|
+
const __1 = require("..");
|
|
11
|
+
/**
|
|
12
|
+
* A construct to watch given scope or resources. Opinionated DataDog alarms are automatically created for watched resources.
|
|
13
|
+
*/
|
|
14
|
+
class Watchful extends constructs_1.Construct {
|
|
15
|
+
constructor(scope, id, props = {}) {
|
|
16
|
+
var _b, _c;
|
|
17
|
+
super(scope, id);
|
|
18
|
+
// const opsGenieAlarmTopicArn = Fn.importValue('opsgenie-cloudwatch-alarm-sns-topic-arn');
|
|
19
|
+
// const opsGenieAlarmTopic = sns.Topic.fromTopicArn(this, 'OpsGenieTopic', opsGenieAlarmTopicArn);
|
|
20
|
+
this.alarmTopic = props.alarmSns;
|
|
21
|
+
this.dataDogMonitorServiceToken = props.dataDogMonitorServiceToken;
|
|
22
|
+
this.dataDogMonitorServiceName = (_b = props.dataDogMonitorServiceName) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Stack.of(this).stackName;
|
|
23
|
+
if (props.dataDogMonitorServiceToken !== undefined) {
|
|
24
|
+
const teamNameParam = ssm.StringParameter.fromStringParameterName(this, 'TeamNameParam', '/config/team/name');
|
|
25
|
+
this.dataDogOpsGenieIntegrationName = (_c = props.dataDogOpsGenieIntegrationName) !== null && _c !== void 0 ? _c : teamNameParam.stringValue;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Adds the alarmTopic as alarm action to the given alarm.
|
|
30
|
+
* @param alarm The watchful to add those resources to
|
|
31
|
+
*/
|
|
32
|
+
createAlarm(scope, id, alarm) {
|
|
33
|
+
var _b, _c;
|
|
34
|
+
if (this.alarmTopic !== undefined) {
|
|
35
|
+
const cwAlarm = alarm.metric.createAlarm(scope, id, {
|
|
36
|
+
alarmDescription: alarm.alarmDescription,
|
|
37
|
+
threshold: alarm.threshold,
|
|
38
|
+
comparisonOperator: alarm.comparisonOperator,
|
|
39
|
+
evaluationPeriods: alarm.evaluationPeriods,
|
|
40
|
+
});
|
|
41
|
+
if (this.alarmTopic) {
|
|
42
|
+
cwAlarm.addAlarmAction(new cw_actions.SnsAction(this.alarmTopic));
|
|
43
|
+
cwAlarm.addOkAction(new cw_actions.SnsAction(this.alarmTopic));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (this.dataDogMonitorServiceToken !== undefined) {
|
|
47
|
+
new __1.DataDogMetricAlarm(scope, id, {
|
|
48
|
+
serviceToken: (_b = this.dataDogMonitorServiceToken) !== null && _b !== void 0 ? _b : '',
|
|
49
|
+
serviceName: this.dataDogMonitorServiceName,
|
|
50
|
+
dataDogOpsGenieIntegrationName: (_c = this.dataDogOpsGenieIntegrationName) !== null && _c !== void 0 ? _c : '',
|
|
51
|
+
alarmDescription: alarm.alarmDescription,
|
|
52
|
+
comparisonOperator: alarm.comparisonOperator,
|
|
53
|
+
evaluationPeriods: alarm.evaluationPeriods,
|
|
54
|
+
metric: alarm.metric,
|
|
55
|
+
threshold: alarm.threshold,
|
|
56
|
+
treatMissingData: alarm.treatMissingData,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Adds an alert for error logs
|
|
62
|
+
* @param scope
|
|
63
|
+
*/
|
|
64
|
+
createLogAlarm(scope, id, alarm) {
|
|
65
|
+
var _b;
|
|
66
|
+
if (this.dataDogMonitorServiceToken !== undefined) {
|
|
67
|
+
new __1.DataDogLogAlarm(scope, id, {
|
|
68
|
+
serviceToken: (_b = this.dataDogMonitorServiceToken) !== null && _b !== void 0 ? _b : '',
|
|
69
|
+
serviceName: this.dataDogMonitorServiceName,
|
|
70
|
+
autoCloseOpsGenieAlerts: alarm.autoCloseOpsGenieAlerts,
|
|
71
|
+
period: alarm.period,
|
|
72
|
+
unitOfPeriod: alarm.unitOfPeriod,
|
|
73
|
+
periodOperator: alarm.periodOperator,
|
|
74
|
+
statistic: alarm.statistic,
|
|
75
|
+
queryFilters: alarm.queryFilters,
|
|
76
|
+
alarmDescription: alarm.alarmDescription,
|
|
77
|
+
threshold: alarm.threshold,
|
|
78
|
+
priority: alarm.priority,
|
|
79
|
+
index: alarm.index,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Watches the given scope and adds alarms for known resources.
|
|
85
|
+
*/
|
|
86
|
+
watchScope(scope) {
|
|
87
|
+
const aspect = new __1.WatchfulAspect(this);
|
|
88
|
+
aws_cdk_lib_1.Aspects.of(scope).add(aspect);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Adds alarms for the given lambda function.
|
|
92
|
+
* @param fn A lambda function that should be watched [disable-awslint:ref-via-interface]
|
|
93
|
+
*/
|
|
94
|
+
watchLambdaFunction(fn, options = {}) {
|
|
95
|
+
new __1.WatchLambdaFunction(this, fn.node.id, {
|
|
96
|
+
watchful: this,
|
|
97
|
+
fn,
|
|
98
|
+
...options,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Adds alarms for the given Cloudfront Distribution.
|
|
103
|
+
* @param cf A Cloudfront Distribution that should be watched [disable-awslint:ref-via-interface]
|
|
104
|
+
*/
|
|
105
|
+
watchCloudfrontDistribution(cf, options = {}) {
|
|
106
|
+
new __1.WatchCloudfrontDistribution(this, cf.node.id, {
|
|
107
|
+
watchful: this,
|
|
108
|
+
cf,
|
|
109
|
+
...options,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Adds alarms for the given ECS service.
|
|
114
|
+
* @param service An ECS service that should be watched [disable-awslint:ref-via-interface]
|
|
115
|
+
*/
|
|
116
|
+
watchEcsService(service, options = {}) {
|
|
117
|
+
new __1.WatchEcsService(this, service.node.id, {
|
|
118
|
+
watchful: this,
|
|
119
|
+
service,
|
|
120
|
+
...options,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Adds alarms for the given application load balancer.
|
|
125
|
+
* @param alb An application load balancer that should be watched [disable-awslint:ref-via-interface]
|
|
126
|
+
*/
|
|
127
|
+
watchAlb(alb, options = {}) {
|
|
128
|
+
new __1.WatchApplicationLoadBalancer(this, alb.node.id, {
|
|
129
|
+
watchful: this,
|
|
130
|
+
alb,
|
|
131
|
+
...options,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Adds alarms for the given application target gorup.
|
|
136
|
+
* @param atg An application target group that should be watched [disable-awslint:ref-via-interface]
|
|
137
|
+
*/
|
|
138
|
+
watchApplicationTargetGroup(atg, options = {}) {
|
|
139
|
+
new __1.WatchApplicationTargetGroup(this, atg.node.id, {
|
|
140
|
+
watchful: this,
|
|
141
|
+
atg,
|
|
142
|
+
...options,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Adds alarms for the given DocDb cluster.
|
|
147
|
+
* @param docDb An DocDb cluster that should be watched [disable-awslint:ref-via-interface]
|
|
148
|
+
*/
|
|
149
|
+
watchDocDb(docDb, options = {}) {
|
|
150
|
+
new __1.WatchDocDbCluster(this, docDb.node.id, {
|
|
151
|
+
watchful: this,
|
|
152
|
+
docDb,
|
|
153
|
+
...options,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Adds alarms for the given database cluster.
|
|
158
|
+
* @param databaseCluster An database cluster that should be watched [disable-awslint:ref-via-interface]
|
|
159
|
+
*/
|
|
160
|
+
watchDatabaseCluster(databaseCluster, options = {}) {
|
|
161
|
+
new __1.WatchDatabaseCluster(this, databaseCluster.node.id, {
|
|
162
|
+
watchful: this,
|
|
163
|
+
databaseCluster,
|
|
164
|
+
...options,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Adds alarms for the given DynamoDb table.
|
|
169
|
+
* @param dynamoDbTable An database cluster that should be watched [disable-awslint:ref-via-interface]
|
|
170
|
+
*/
|
|
171
|
+
watchDynamoDbTable(dynamoDbTable, options = {}) {
|
|
172
|
+
new __1.WatchDynamoDbTable(this, dynamoDbTable.node.id, {
|
|
173
|
+
watchful: this,
|
|
174
|
+
dynamoDbTable: dynamoDbTable,
|
|
175
|
+
...options,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.Watchful = Watchful;
|
|
180
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
181
|
+
Watchful[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.Watchful", version: "0.0.0" };
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hmdWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWwvd2F0Y2hmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNkM7QUFFN0MsaUVBQWlFO0FBUWpFLDJDQUEyQztBQUMzQywyQ0FBbUQ7QUFDbkQsMEJBc0JZO0FBb0RaOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFNckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF1QixFQUFFOztRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDJGQUEyRjtRQUMzRixtR0FBbUc7UUFDbkcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUMsMEJBQTBCLENBQUM7UUFFbkUsSUFBSSxDQUFDLHlCQUF5QixTQUFHLEtBQUssQ0FBQyx5QkFBeUIsbUNBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdGLElBQUksS0FBSyxDQUFDLDBCQUEwQixLQUFLLFNBQVMsRUFBRTtZQUVsRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUMvRCxJQUFJLEVBQ0osZUFBZSxFQUNmLG1CQUFtQixDQUNwQixDQUFDO1lBQ0YsSUFBSSxDQUFDLDhCQUE4QixTQUFHLEtBQUssQ0FBQyw4QkFBOEIsbUNBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztTQUN6RztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQ3RFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FB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QUFDLGVBQW9DLEVBQUUsVUFBdUMsRUFBRTtRQUN6RyxJQUFJLHdCQUFvQixDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUN0RCxRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWU7WUFDZixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCLENBQUMsYUFBNkIsRUFBRSxVQUFxQyxFQUFFO1FBQzlGLElBQUksc0JBQWtCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2xELFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLGFBQWE7WUFDNUIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFqTUgsNEJBa01DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNwZWN0cywgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjbG91ZGZyb250IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIGN3X2FjdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBkb2NkYiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZG9jZGInO1xuaW1wb3J0ICogYXMgZHluYW1vZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHJkcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgV2F0Y2hmdWxBc3BlY3QsXG4gIFdhdGNoTGFtYmRhRnVuY3Rpb24sXG4gIFdhdGNoTGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICBXYXRjaENsb3VkZnJvbnREaXN0cmlidXRpb24sXG4gIFdhdGNoQ2xvdWRmcm9udERpc3RyaWJ1dGlvbk9wdGlvbnMsXG4gIFdhdGNoQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsXG4gIFdhdGNoQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJPcHRpb25zLFxuICBXYXRjaEVjc1NlcnZpY2UsXG4gIFdhdGNoRWNzU2VydmljZU9wdGlvbnMsXG4gIFdhdGNoQXBwbGljYXRpb25UYXJnZXRHcm91cCxcbiAgV2F0Y2hBcHBsaWNhdGlvblRhcmdldEdyb3VwT3B0aW9ucyxcbiAgRGF0YURvZ01ldHJpY0FsYXJtLFxuICBEYXRhRG9nTG9nQWxhcm0sXG4gIE1ldHJpY0FsYXJtUHJvcHMsXG4gIFdhdGNoRG9jRGJDbHVzdGVyLFxuICBXYXRjaERvY0RiQ2x1c3Rlck9wdGlvbnMsXG4gIFdhdGNoRGF0YWJhc2VDbHVzdGVyLFxuICBXYXRjaERhdGFiYXNlQ2x1c3Rlck9wdGlvbnMsXG4gIFdhdGNoRHluYW1vRGJUYWJsZSxcbiAgV2F0Y2hEeW5hbW9EYlRhYmxlT3B0aW9ucyxcbiAgTG9nQWxhcm1Qcm9wcyxcbn0gZnJvbSAnLi4nO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgV2F0Y2hmdWwgaW1wbGVtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVdhdGNoZnVsIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBBZGRzIGFuZCBhbGVydCBmb3IgZXJyb3IgbG9nc1xuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2VcbiAgICovXG4gIGNyZWF0ZUxvZ0FsYXJtKHNjb3BlOiBDb25zdHJ1Y3QsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIGFsYXJtOiBMb2dBbGFybVByb3BzKTogdm9pZDtcbiAgLyoqXG4gICAqIEFkZHMgdGhlIGFsYXJtVG9waWMgYXMgYWxhcm0gYWN0aW9uIHRvIHRoZSBnaXZlbiBhbGFybS5cbiAgICogQHBhcmFtIGFsYXJtIFRoZSB3YXRjaGZ1bCB0byBhZGQgdGhvc2UgcmVzb3VyY2VzIHRvXG4gICAqXG4gICAqL1xuICBjcmVhdGVBbGFybShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhbGFybTogTWV0cmljQWxhcm1Qcm9wcyk6IHZvaWQ7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgV2F0Y2hmdWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXYXRjaGZ1bFByb3BzIHtcbiAgLyoqXG4gICAqIEFuIFNOUyB0b3BpYyBhcyB0YXJnZXQgZm9yIGFsYXJtIGFjdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0OiBUaGUgU05TIHRvcGljIHByb3ZpZGVkIGJ5IE9wc0dlbmllIEludGVncmF0aW9uIGFjY291bnQgbW9kdWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1TbnM/OiBzbnMuSVRvcGljO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSB0b2tlbiBmb3IgdGhlIERhdGFEb2cgTW9uaXRvciBjdXN0b20gcmVzb3VyY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0OiBFbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFEb2dNb25pdG9yU2VydmljZVRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdDogVGhlIHN0YWNrIGFubWUuXG4gICAqL1xuICByZWFkb25seSBkYXRhRG9nTW9uaXRvclNlcnZpY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT3BzR2VuaWUgaGFuZGxlIHVzZWQgaW4gRGF0YURvZyB0byBmb3J3YXJkIHRoZSBERCBtb25pdG9yIHRvIE9wc0dlbmllLlxuICAgKlxuICAgKiBAZGVmYXVsdDogRW1wdHkgaWYgZGF0YURvZ01vbml0b3JTZXJ2aWNlVG9rZW4gaXMgbm90IHNldC4gT3RoZXJ3aXNlLCB0ZWFtIFNTTSBwYXJhbWV0ZXIgZnJvbSBMYW5kaW5nWm9uZSBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YURvZ09wc0dlbmllSW50ZWdyYXRpb25OYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uc3RydWN0IHRvIHdhdGNoIGdpdmVuIHNjb3BlIG9yIHJlc291cmNlcy4gT3BpbmlvbmF0ZWQgRGF0YURvZyBhbGFybXMgYXJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3Igd2F0Y2hlZCByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBXYXRjaGZ1bCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElXYXRjaGZ1bCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxhcm1Ub3BpYz86IHNucy5JVG9waWM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YURvZ01vbml0b3JTZXJ2aWNlVG9rZW4/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YURvZ09wc0dlbmllSW50ZWdyYXRpb25OYW1lPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFEb2dNb25pdG9yU2VydmljZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogV2F0Y2hmdWxQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIGNvbnN0IG9wc0dlbmllQWxhcm1Ub3BpY0FybiA9IEZuLmltcG9ydFZhbHVlKCdvcHNnZW5pZS1jbG91ZHdhdGNoLWFsYXJtLXNucy10b3BpYy1hcm4nKTtcbiAgICAvLyBjb25zdCBvcHNHZW5pZUFsYXJtVG9waWMgPSBzbnMuVG9waWMuZnJvbVRvcGljQXJuKHRoaXMsICdPcHNHZW5pZVRvcGljJywgb3BzR2VuaWVBbGFybVRvcGljQXJuKTtcbiAgICB0aGlzLmFsYXJtVG9waWMgPSBwcm9wcy5hbGFybVNucztcbiAgICB0aGlzLmRhdGFEb2dNb25pdG9yU2VydmljZVRva2VuID0gcHJvcHMuZGF0YURvZ01vbml0b3JTZXJ2aWNlVG9rZW47XG5cbiAgICB0aGlzLmRhdGFEb2dNb25pdG9yU2VydmljZU5hbWUgPSBwcm9wcy5kYXRhRG9nTW9uaXRvclNlcnZpY2VOYW1lID8/IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcblxuICAgIGlmIChwcm9wcy5kYXRhRG9nTW9uaXRvclNlcnZpY2VUb2tlbiAhPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGNvbnN0IHRlYW1OYW1lUGFyYW0gPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnVGVhbU5hbWVQYXJhbScsXG4gICAgICAgICcvY29uZmlnL3RlYW0vbmFtZScsXG4gICAgICApO1xuICAgICAgdGhpcy5kYXRhRG9nT3BzR2VuaWVJbnRlZ3JhdGlvbk5hbWUgPSBwcm9wcy5kYXRhRG9nT3BzR2VuaWVJbnRlZ3JhdGlvbk5hbWUgPz8gdGVhbU5hbWVQYXJhbS5zdHJpbmdWYWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgYWxhcm1Ub3BpYyBhcyBhbGFybSBhY3Rpb24gdG8gdGhlIGdpdmVuIGFsYXJtLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIHdhdGNoZnVsIHRvIGFkZCB0aG9zZSByZXNvdXJjZXMgdG9cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBbGFybShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhbGFybTogTWV0cmljQWxhcm1Qcm9wcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtVG9waWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY3dBbGFybSA9IGFsYXJtLm1ldHJpYy5jcmVhdGVBbGFybShzY29wZSwgaWQsIHtcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYWxhcm0uYWxhcm1EZXNjcmlwdGlvbixcbiAgICAgICAgdGhyZXNob2xkOiBhbGFybS50aHJlc2hvbGQsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogYWxhcm0uY29tcGFyaXNvbk9wZXJhdG9yLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogYWxhcm0uZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLmFsYXJtVG9waWMpIHtcbiAgICAgICAgY3dBbGFybS5hZGRBbGFybUFjdGlvbihuZXcgY3dfYWN0aW9ucy5TbnNBY3Rpb24odGhpcy5hbGFybVRvcGljKSk7XG4gICAgICAgIGN3QWxhcm0uYWRkT2tBY3Rpb24obmV3IGN3X2FjdGlvbnMuU25zQWN0aW9uKHRoaXMuYWxhcm1Ub3BpYykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGFEb2dNb25pdG9yU2VydmljZVRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldyBEYXRhRG9nTWV0cmljQWxhcm0oc2NvcGUsIGlkLCB7XG4gICAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5kYXRhRG9nTW9uaXRvclNlcnZpY2VUb2tlbiA/PyAnJyxcbiAgICAgICAgc2VydmljZU5hbWU6IHRoaXMuZGF0YURvZ01vbml0b3JTZXJ2aWNlTmFtZSxcbiAgICAgICAgZGF0YURvZ09wc0dlbmllSW50ZWdyYXRpb25OYW1lOiB0aGlzLmRhdGFEb2dPcHNHZW5pZUludGVncmF0aW9uTmFtZSA/PyAnJyxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYWxhcm0uYWxhcm1EZXNjcmlwdGlvbixcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBhbGFybS5jb21wYXJpc29uT3BlcmF0b3IsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgbWV0cmljOiBhbGFybS5tZXRyaWMsXG4gICAgICAgIHRocmVzaG9sZDogYWxhcm0udGhyZXNob2xkLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBhbGFybS50cmVhdE1pc3NpbmdEYXRhLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWxlcnQgZm9yIGVycm9yIGxvZ3NcbiAgICogQHBhcmFtIHNjb3BlXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTG9nQWxhcm0oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYWxhcm06IExvZ0FsYXJtUHJvcHMpOnZvaWQge1xuXG4gICAgaWYgKHRoaXMuZGF0YURvZ01vbml0b3JTZXJ2aWNlVG9rZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3IERhdGFEb2dMb2dBbGFybShzY29wZSwgaWQsIHtcbiAgICAgICAgc2VydmljZVRva2VuOiB0aGlzLmRhdGFEb2dNb25pdG9yU2VydmljZVRva2VuID8/ICcnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogdGhpcy5kYXRhRG9nTW9uaXRvclNlcnZpY2VOYW1lLFxuICAgICAgICBhdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0czogYWxhcm0uYXV0b0Nsb3NlT3BzR2VuaWVBbGVydHMsXG4gICAgICAgIHBlcmlvZDogYWxhcm0ucGVyaW9kLFxuICAgICAgICB1bml0T2ZQZXJpb2Q6IGFsYXJtLnVuaXRPZlBlcmlvZCwgLy8gdG9EbzogbW92ZSB0aGF0IHNvbWV3aGVyZSBlbHNlIGFuZCBzZXQgZGVmYXVsdHMgdGhlcmU/XG4gICAgICAgIHBlcmlvZE9wZXJhdG9yOiBhbGFybS5wZXJpb2RPcGVyYXRvcixcbiAgICAgICAgc3RhdGlzdGljOiBhbGFybS5zdGF0aXN0aWMsXG4gICAgICAgIHF1ZXJ5RmlsdGVyczogYWxhcm0ucXVlcnlGaWx0ZXJzLCAvLyB0b0RvOiBtb3ZlIHRoYXQgc29tZXdoZXJlIGVsc2UgYW5kIHNldCBkZWZhdWx0cyB0aGVyZT9cbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYWxhcm0uYWxhcm1EZXNjcmlwdGlvbixcbiAgICAgICAgdGhyZXNob2xkOiBhbGFybS50aHJlc2hvbGQsXG4gICAgICAgIHByaW9yaXR5OiBhbGFybS5wcmlvcml0eSxcbiAgICAgICAgaW5kZXg6IGFsYXJtLmluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoZXMgdGhlIGdpdmVuIHNjb3BlIGFuZCBhZGRzIGFsYXJtcyBmb3Iga25vd24gcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIHdhdGNoU2NvcGUoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IGFzcGVjdCA9IG5ldyBXYXRjaGZ1bEFzcGVjdCh0aGlzKTtcbiAgICBBc3BlY3RzLm9mKHNjb3BlKS5hZGQoYXNwZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFsYXJtcyBmb3IgdGhlIGdpdmVuIGxhbWJkYSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGZuIEEgbGFtYmRhIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIHdhdGNoZWQgW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICovXG4gIHB1YmxpYyB3YXRjaExhbWJkYUZ1bmN0aW9uKGZuOiBsYW1iZGEuRnVuY3Rpb24sIG9wdGlvbnM6IFdhdGNoTGFtYmRhRnVuY3Rpb25PcHRpb25zID0ge30pOiB2b2lkIHtcblxuICAgIG5ldyBXYXRjaExhbWJkYUZ1bmN0aW9uKHRoaXMsIGZuLm5vZGUuaWQsIHtcbiAgICAgIHdhdGNoZnVsOiB0aGlzLFxuICAgICAgZm4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gQ2xvdWRmcm9udCBEaXN0cmlidXRpb24uXG4gICAqIEBwYXJhbSBjZiBBIENsb3VkZnJvbnQgRGlzdHJpYnV0aW9uIHRoYXQgc2hvdWxkIGJlIHdhdGNoZWQgW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICovXG4gIHB1YmxpYyB3YXRjaENsb3VkZnJvbnREaXN0cmlidXRpb24oXG4gICAgY2Y6IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uLFxuICAgIG9wdGlvbnM6IFdhdGNoQ2xvdWRmcm9udERpc3RyaWJ1dGlvbk9wdGlvbnMgPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgbmV3IFdhdGNoQ2xvdWRmcm9udERpc3RyaWJ1dGlvbih0aGlzLCBjZi5ub2RlLmlkLCB7XG4gICAgICB3YXRjaGZ1bDogdGhpcyxcbiAgICAgIGNmLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFsYXJtcyBmb3IgdGhlIGdpdmVuIEVDUyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gc2VydmljZSBBbiBFQ1Mgc2VydmljZSB0aGF0IHNob3VsZCBiZSB3YXRjaGVkIFtkaXNhYmxlLWF3c2xpbnQ6cmVmLXZpYS1pbnRlcmZhY2VdXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hFY3NTZXJ2aWNlKHNlcnZpY2U6IGVjcy5CYXNlU2VydmljZSwgb3B0aW9uczogV2F0Y2hFY3NTZXJ2aWNlT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgbmV3IFdhdGNoRWNzU2VydmljZSh0aGlzLCBzZXJ2aWNlLm5vZGUuaWQsIHtcbiAgICAgIHdhdGNoZnVsOiB0aGlzLFxuICAgICAgc2VydmljZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbGFybXMgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBsb2FkIGJhbGFuY2VyLlxuICAgKiBAcGFyYW0gYWxiIEFuIGFwcGxpY2F0aW9uIGxvYWQgYmFsYW5jZXIgdGhhdCBzaG91bGQgYmUgd2F0Y2hlZCBbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXVxuICAgKi9cbiAgcHVibGljIHdhdGNoQWxiKGFsYjogZWxidjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsIG9wdGlvbnM6IFdhdGNoQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICBuZXcgV2F0Y2hBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcih0aGlzLCBhbGIubm9kZS5pZCwge1xuICAgICAgd2F0Y2hmdWw6IHRoaXMsXG4gICAgICBhbGIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gdGFyZ2V0IGdvcnVwLlxuICAgKiBAcGFyYW0gYXRnIEFuIGFwcGxpY2F0aW9uIHRhcmdldCBncm91cCB0aGF0IHNob3VsZCBiZSB3YXRjaGVkIFtkaXNhYmxlLWF3c2xpbnQ6cmVmLXZpYS1pbnRlcmZhY2VdXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hBcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgIGF0ZzogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCxcbiAgICBvcHRpb25zOiBXYXRjaEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBPcHRpb25zID0ge30sXG4gICk6IHZvaWQge1xuICAgIG5ldyBXYXRjaEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGhpcywgYXRnLm5vZGUuaWQsIHtcbiAgICAgIHdhdGNoZnVsOiB0aGlzLFxuICAgICAgYXRnLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFsYXJtcyBmb3IgdGhlIGdpdmVuIERvY0RiIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBkb2NEYiBBbiAgRG9jRGIgY2x1c3RlciB0aGF0IHNob3VsZCBiZSB3YXRjaGVkIFtkaXNhYmxlLWF3c2xpbnQ6cmVmLXZpYS1pbnRlcmZhY2VdXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hEb2NEYihkb2NEYjogZG9jZGIuRGF0YWJhc2VDbHVzdGVyLCBvcHRpb25zOiBXYXRjaERvY0RiQ2x1c3Rlck9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIG5ldyBXYXRjaERvY0RiQ2x1c3Rlcih0aGlzLCBkb2NEYi5ub2RlLmlkLCB7XG4gICAgICB3YXRjaGZ1bDogdGhpcyxcbiAgICAgIGRvY0RiLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFsYXJtcyBmb3IgdGhlIGdpdmVuIGRhdGFiYXNlIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBkYXRhYmFzZUNsdXN0ZXIgQW4gZGF0YWJhc2UgY2x1c3RlciB0aGF0IHNob3VsZCBiZSB3YXRjaGVkIFtkaXNhYmxlLWF3c2xpbnQ6cmVmLXZpYS1pbnRlcmZhY2VdXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hEYXRhYmFzZUNsdXN0ZXIoZGF0YWJhc2VDbHVzdGVyOiByZHMuRGF0YWJhc2VDbHVzdGVyLCBvcHRpb25zOiBXYXRjaERhdGFiYXNlQ2x1c3Rlck9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIG5ldyBXYXRjaERhdGFiYXNlQ2x1c3Rlcih0aGlzLCBkYXRhYmFzZUNsdXN0ZXIubm9kZS5pZCwge1xuICAgICAgd2F0Y2hmdWw6IHRoaXMsXG4gICAgICBkYXRhYmFzZUNsdXN0ZXIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gRHluYW1vRGIgdGFibGUuXG4gICAqIEBwYXJhbSBkeW5hbW9EYlRhYmxlIEFuIGRhdGFiYXNlIGNsdXN0ZXIgdGhhdCBzaG91bGQgYmUgd2F0Y2hlZCBbZGlzYWJsZS1hd3NsaW50OnJlZi12aWEtaW50ZXJmYWNlXVxuICAgKi9cbiAgcHVibGljIHdhdGNoRHluYW1vRGJUYWJsZShkeW5hbW9EYlRhYmxlOiBkeW5hbW9kYi5UYWJsZSwgb3B0aW9uczogV2F0Y2hEeW5hbW9EYlRhYmxlT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgbmV3IFdhdGNoRHluYW1vRGJUYWJsZSh0aGlzLCBkeW5hbW9EYlRhYmxlLm5vZGUuaWQsIHtcbiAgICAgIHdhdGNoZnVsOiB0aGlzLFxuICAgICAgZHluYW1vRGJUYWJsZTogZHluYW1vRGJUYWJsZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [2.0.1] - 2020-08-29
|
|
10
|
+
### Fixed
|
|
11
|
+
- Fix issue with `process.argv` when used with interpreters (`coffee`, `ts-node`, etc.), #150.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [2.0.0] - 2020-08-14
|
|
15
|
+
### Changed
|
|
16
|
+
- Full rewrite. Now port from python 3.9.0 & more precise following.
|
|
17
|
+
See [doc](./doc) for difference and migration info.
|
|
18
|
+
- node.js 10+ required
|
|
19
|
+
- Removed most of local docs in favour of original ones.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [1.0.10] - 2018-02-15
|
|
23
|
+
### Fixed
|
|
24
|
+
- Use .concat instead of + for arrays, #122.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## [1.0.9] - 2016-09-29
|
|
28
|
+
### Changed
|
|
29
|
+
- Rerelease after 1.0.8 - deps cleanup.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
## [1.0.8] - 2016-09-29
|
|
33
|
+
### Changed
|
|
34
|
+
- Maintenance (deps bump, fix node 6.5+ tests, coverage report).
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## [1.0.7] - 2016-03-17
|
|
38
|
+
### Changed
|
|
39
|
+
- Teach `addArgument` to accept string arg names. #97, @tomxtobin.
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## [1.0.6] - 2016-02-06
|
|
43
|
+
### Changed
|
|
44
|
+
- Maintenance: moved to eslint & updated CS.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## [1.0.5] - 2016-02-05
|
|
48
|
+
### Changed
|
|
49
|
+
- Removed lodash dependency to significantly reduce install size.
|
|
50
|
+
Thanks to @mourner.
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
## [1.0.4] - 2016-01-17
|
|
54
|
+
### Changed
|
|
55
|
+
- Maintenance: lodash update to 4.0.0.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## [1.0.3] - 2015-10-27
|
|
59
|
+
### Fixed
|
|
60
|
+
- Fix parse `=` in args: `--examplepath="C:\myfolder\env=x64"`. #84, @CatWithApple.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## [1.0.2] - 2015-03-22
|
|
64
|
+
### Changed
|
|
65
|
+
- Relaxed lodash version dependency.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## [1.0.1] - 2015-02-20
|
|
69
|
+
### Changed
|
|
70
|
+
- Changed dependencies to be compatible with ancient nodejs.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## [1.0.0] - 2015-02-19
|
|
74
|
+
### Changed
|
|
75
|
+
- Maintenance release.
|
|
76
|
+
- Replaced `underscore` with `lodash`.
|
|
77
|
+
- Bumped version to 1.0.0 to better reflect semver meaning.
|
|
78
|
+
- HISTORY.md -> CHANGELOG.md
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
## [0.1.16] - 2013-12-01
|
|
82
|
+
### Changed
|
|
83
|
+
- Maintenance release. Updated dependencies and docs.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## [0.1.15] - 2013-05-13
|
|
87
|
+
### Fixed
|
|
88
|
+
- Fixed #55, @trebor89
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
## [0.1.14] - 2013-05-12
|
|
92
|
+
### Fixed
|
|
93
|
+
- Fixed #62, @maxtaco
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## [0.1.13] - 2013-04-08
|
|
97
|
+
### Changed
|
|
98
|
+
- Added `.npmignore` to reduce package size
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
## [0.1.12] - 2013-02-10
|
|
102
|
+
### Fixed
|
|
103
|
+
- Fixed conflictHandler (#46), @hpaulj
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## [0.1.11] - 2013-02-07
|
|
107
|
+
### Added
|
|
108
|
+
- Added 70+ tests (ported from python), @hpaulj
|
|
109
|
+
- Added conflictHandler, @applepicke
|
|
110
|
+
- Added fromfilePrefixChar, @hpaulj
|
|
111
|
+
|
|
112
|
+
### Fixed
|
|
113
|
+
- Multiple bugfixes, @hpaulj
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
## [0.1.10] - 2012-12-30
|
|
117
|
+
### Added
|
|
118
|
+
- Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion)
|
|
119
|
+
support, thanks to @hpaulj
|
|
120
|
+
|
|
121
|
+
### Fixed
|
|
122
|
+
- Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
## [0.1.9] - 2012-12-27
|
|
126
|
+
### Fixed
|
|
127
|
+
- Fixed option dest interferens with other options (issue #23), thanks to @hpaulj
|
|
128
|
+
- Fixed default value behavior with `*` positionals, thanks to @hpaulj
|
|
129
|
+
- Improve `getDefault()` behavior, thanks to @hpaulj
|
|
130
|
+
- Improve negative argument parsing, thanks to @hpaulj
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
## [0.1.8] - 2012-12-01
|
|
134
|
+
### Fixed
|
|
135
|
+
- Fixed parser parents (issue #19), thanks to @hpaulj
|
|
136
|
+
- Fixed negative argument parse (issue #20), thanks to @hpaulj
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
## [0.1.7] - 2012-10-14
|
|
140
|
+
### Fixed
|
|
141
|
+
- Fixed 'choices' argument parse (issue #16)
|
|
142
|
+
- Fixed stderr output (issue #15)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
## [0.1.6] - 2012-09-09
|
|
146
|
+
### Fixed
|
|
147
|
+
- Fixed check for conflict of options (thanks to @tomxtobin)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
## [0.1.5] - 2012-09-03
|
|
151
|
+
### Fixed
|
|
152
|
+
- Fix parser #setDefaults method (thanks to @tomxtobin)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
## [0.1.4] - 2012-07-30
|
|
156
|
+
### Fixed
|
|
157
|
+
- Fixed pseudo-argument support (thanks to @CGamesPlay)
|
|
158
|
+
- Fixed addHelp default (should be true), if not set (thanks to @benblank)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
## [0.1.3] - 2012-06-27
|
|
162
|
+
### Fixed
|
|
163
|
+
- Fixed formatter api name: Formatter -> HelpFormatter
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## [0.1.2] - 2012-05-29
|
|
167
|
+
### Fixed
|
|
168
|
+
- Removed excess whitespace in help
|
|
169
|
+
- Fixed error reporting, when parcer with subcommands
|
|
170
|
+
called with empty arguments
|
|
171
|
+
|
|
172
|
+
### Added
|
|
173
|
+
- Added basic tests
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
## [0.1.1] - 2012-05-23
|
|
177
|
+
### Fixed
|
|
178
|
+
- Fixed line wrapping in help formatter
|
|
179
|
+
- Added better error reporting on invalid arguments
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## [0.1.0] - 2012-05-16
|
|
183
|
+
### Added
|
|
184
|
+
- First release.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
[2.0.1]: https://github.com/nodeca/argparse/compare/2.0.0...2.0.1
|
|
188
|
+
[2.0.0]: https://github.com/nodeca/argparse/compare/1.0.10...2.0.0
|
|
189
|
+
[1.0.10]: https://github.com/nodeca/argparse/compare/1.0.9...1.0.10
|
|
190
|
+
[1.0.9]: https://github.com/nodeca/argparse/compare/1.0.8...1.0.9
|
|
191
|
+
[1.0.8]: https://github.com/nodeca/argparse/compare/1.0.7...1.0.8
|
|
192
|
+
[1.0.7]: https://github.com/nodeca/argparse/compare/1.0.6...1.0.7
|
|
193
|
+
[1.0.6]: https://github.com/nodeca/argparse/compare/1.0.5...1.0.6
|
|
194
|
+
[1.0.5]: https://github.com/nodeca/argparse/compare/1.0.4...1.0.5
|
|
195
|
+
[1.0.4]: https://github.com/nodeca/argparse/compare/1.0.3...1.0.4
|
|
196
|
+
[1.0.3]: https://github.com/nodeca/argparse/compare/1.0.2...1.0.3
|
|
197
|
+
[1.0.2]: https://github.com/nodeca/argparse/compare/1.0.1...1.0.2
|
|
198
|
+
[1.0.1]: https://github.com/nodeca/argparse/compare/1.0.0...1.0.1
|
|
199
|
+
[1.0.0]: https://github.com/nodeca/argparse/compare/0.1.16...1.0.0
|
|
200
|
+
[0.1.16]: https://github.com/nodeca/argparse/compare/0.1.15...0.1.16
|
|
201
|
+
[0.1.15]: https://github.com/nodeca/argparse/compare/0.1.14...0.1.15
|
|
202
|
+
[0.1.14]: https://github.com/nodeca/argparse/compare/0.1.13...0.1.14
|
|
203
|
+
[0.1.13]: https://github.com/nodeca/argparse/compare/0.1.12...0.1.13
|
|
204
|
+
[0.1.12]: https://github.com/nodeca/argparse/compare/0.1.11...0.1.12
|
|
205
|
+
[0.1.11]: https://github.com/nodeca/argparse/compare/0.1.10...0.1.11
|
|
206
|
+
[0.1.10]: https://github.com/nodeca/argparse/compare/0.1.9...0.1.10
|
|
207
|
+
[0.1.9]: https://github.com/nodeca/argparse/compare/0.1.8...0.1.9
|
|
208
|
+
[0.1.8]: https://github.com/nodeca/argparse/compare/0.1.7...0.1.8
|
|
209
|
+
[0.1.7]: https://github.com/nodeca/argparse/compare/0.1.6...0.1.7
|
|
210
|
+
[0.1.6]: https://github.com/nodeca/argparse/compare/0.1.5...0.1.6
|
|
211
|
+
[0.1.5]: https://github.com/nodeca/argparse/compare/0.1.4...0.1.5
|
|
212
|
+
[0.1.4]: https://github.com/nodeca/argparse/compare/0.1.3...0.1.4
|
|
213
|
+
[0.1.3]: https://github.com/nodeca/argparse/compare/0.1.2...0.1.3
|
|
214
|
+
[0.1.2]: https://github.com/nodeca/argparse/compare/0.1.1...0.1.2
|
|
215
|
+
[0.1.1]: https://github.com/nodeca/argparse/compare/0.1.0...0.1.1
|
|
216
|
+
[0.1.0]: https://github.com/nodeca/argparse/releases/tag/0.1.0
|