@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.
Files changed (110) hide show
  1. package/.gitattributes +15 -0
  2. package/.jsii +7832 -0
  3. package/.versionrc.json +14 -0
  4. package/API.md +8136 -0
  5. package/CHANGELOG.md +5 -0
  6. package/LICENSE +202 -0
  7. package/README.md +56 -0
  8. package/lib/datadog/datadogLogIndexMonitoring.d.ts +49 -0
  9. package/lib/datadog/datadogLogIndexMonitoring.js +116 -0
  10. package/lib/datadog/datadogMonitor.d.ts +13 -0
  11. package/lib/datadog/datadogMonitor.js +19 -0
  12. package/lib/datadog/index.d.ts +1 -0
  13. package/lib/datadog/index.js +19 -0
  14. package/lib/fargate/datadog.d.ts +18 -0
  15. package/lib/fargate/datadog.js +225 -0
  16. package/lib/fargate/rio-fargate-service.d.ts +276 -0
  17. package/lib/fargate/rio-fargate-service.js +147 -0
  18. package/lib/fargate/spring.d.ts +6 -0
  19. package/lib/fargate/spring.js +39 -0
  20. package/lib/index.d.ts +21 -0
  21. package/lib/index.js +34 -0
  22. package/lib/kafka/index.d.ts +2 -0
  23. package/lib/kafka/index.js +15 -0
  24. package/lib/kafka/kafka-event-spec.d.ts +43 -0
  25. package/lib/kafka/kafka-event-spec.js +106 -0
  26. package/lib/kafka/kafka-topic.d.ts +102 -0
  27. package/lib/kafka/kafka-topic.js +70 -0
  28. package/lib/pipeline/rio-backup-secrets-restore-stage.d.ts +40 -0
  29. package/lib/pipeline/rio-backup-secrets-restore-stage.js +104 -0
  30. package/lib/pipeline/rio-bitbucket-source-action.d.ts +25 -0
  31. package/lib/pipeline/rio-bitbucket-source-action.js +36 -0
  32. package/lib/rio-claidometer.d.ts +21 -0
  33. package/lib/rio-claidometer.js +39 -0
  34. package/lib/rio-landing-zone.d.ts +16 -0
  35. package/lib/rio-landing-zone.js +57 -0
  36. package/lib/rio-load-balancer.d.ts +26 -0
  37. package/lib/rio-load-balancer.js +42 -0
  38. package/lib/toggle.d.ts +21 -0
  39. package/lib/toggle.js +44 -0
  40. package/lib/watchful/alb.d.ts +47 -0
  41. package/lib/watchful/alb.js +52 -0
  42. package/lib/watchful/aspect.d.ts +16 -0
  43. package/lib/watchful/aspect.js +55 -0
  44. package/lib/watchful/cloudfront.d.ts +50 -0
  45. package/lib/watchful/cloudfront.js +65 -0
  46. package/lib/watchful/datadog-log-alarm.d.ts +37 -0
  47. package/lib/watchful/datadog-log-alarm.js +88 -0
  48. package/lib/watchful/datadog-metric-alarm.d.ts +32 -0
  49. package/lib/watchful/datadog-metric-alarm.js +158 -0
  50. package/lib/watchful/docdb.d.ts +62 -0
  51. package/lib/watchful/docdb.js +102 -0
  52. package/lib/watchful/dynamodb.d.ts +69 -0
  53. package/lib/watchful/dynamodb.js +87 -0
  54. package/lib/watchful/ecs.d.ts +50 -0
  55. package/lib/watchful/ecs.js +69 -0
  56. package/lib/watchful/lambda.d.ts +59 -0
  57. package/lib/watchful/lambda.js +65 -0
  58. package/lib/watchful/metric-alarm.d.ts +34 -0
  59. package/lib/watchful/metric-alarm.js +3 -0
  60. package/lib/watchful/rds.d.ts +47 -0
  61. package/lib/watchful/rds.js +47 -0
  62. package/lib/watchful/targetgroup.d.ts +47 -0
  63. package/lib/watchful/targetgroup.js +54 -0
  64. package/lib/watchful/upperToLower.d.ts +7 -0
  65. package/lib/watchful/upperToLower.js +35 -0
  66. package/lib/watchful/watchful.d.ts +119 -0
  67. package/lib/watchful/watchful.js +182 -0
  68. package/node_modules/argparse/CHANGELOG.md +216 -0
  69. package/node_modules/argparse/LICENSE +254 -0
  70. package/node_modules/argparse/README.md +84 -0
  71. package/node_modules/argparse/argparse.js +3707 -0
  72. package/node_modules/argparse/lib/sub.js +67 -0
  73. package/node_modules/argparse/lib/textwrap.js +440 -0
  74. package/node_modules/argparse/package.json +31 -0
  75. package/node_modules/js-yaml/CHANGELOG.md +616 -0
  76. package/node_modules/js-yaml/LICENSE +21 -0
  77. package/node_modules/js-yaml/README.md +246 -0
  78. package/node_modules/js-yaml/bin/js-yaml.js +126 -0
  79. package/node_modules/js-yaml/dist/js-yaml.js +3874 -0
  80. package/node_modules/js-yaml/dist/js-yaml.min.js +2 -0
  81. package/node_modules/js-yaml/dist/js-yaml.mjs +3851 -0
  82. package/node_modules/js-yaml/index.js +47 -0
  83. package/node_modules/js-yaml/lib/common.js +59 -0
  84. package/node_modules/js-yaml/lib/dumper.js +965 -0
  85. package/node_modules/js-yaml/lib/exception.js +55 -0
  86. package/node_modules/js-yaml/lib/loader.js +1727 -0
  87. package/node_modules/js-yaml/lib/schema/core.js +11 -0
  88. package/node_modules/js-yaml/lib/schema/default.js +22 -0
  89. package/node_modules/js-yaml/lib/schema/failsafe.js +17 -0
  90. package/node_modules/js-yaml/lib/schema/json.js +19 -0
  91. package/node_modules/js-yaml/lib/schema.js +121 -0
  92. package/node_modules/js-yaml/lib/snippet.js +101 -0
  93. package/node_modules/js-yaml/lib/type/binary.js +125 -0
  94. package/node_modules/js-yaml/lib/type/bool.js +35 -0
  95. package/node_modules/js-yaml/lib/type/float.js +97 -0
  96. package/node_modules/js-yaml/lib/type/int.js +156 -0
  97. package/node_modules/js-yaml/lib/type/map.js +8 -0
  98. package/node_modules/js-yaml/lib/type/merge.js +12 -0
  99. package/node_modules/js-yaml/lib/type/null.js +35 -0
  100. package/node_modules/js-yaml/lib/type/omap.js +44 -0
  101. package/node_modules/js-yaml/lib/type/pairs.js +53 -0
  102. package/node_modules/js-yaml/lib/type/seq.js +8 -0
  103. package/node_modules/js-yaml/lib/type/set.js +29 -0
  104. package/node_modules/js-yaml/lib/type/str.js +8 -0
  105. package/node_modules/js-yaml/lib/type/timestamp.js +88 -0
  106. package/node_modules/js-yaml/lib/type.js +66 -0
  107. package/node_modules/js-yaml/package.json +66 -0
  108. package/package.json +126 -0
  109. package/release-commit-check.js +6 -0
  110. 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