@aws-cdk/aws-bedrock-agentcore-alpha 2.235.1-alpha.0 → 2.237.0-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/.jsii +1709 -625
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +41 -1
- package/README.md +275 -14
- package/lib/common/types.d.ts +35 -0
- package/lib/common/types.js +41 -0
- package/lib/gateway/gateway-base.d.ts +2 -2
- package/lib/gateway/gateway-base.js +4 -4
- package/lib/gateway/gateway.d.ts +59 -7
- package/lib/gateway/gateway.js +103 -7
- package/lib/gateway/inbound-auth/authorizer.d.ts +25 -0
- package/lib/gateway/inbound-auth/authorizer.js +17 -7
- package/lib/gateway/inbound-auth/custom-claim.d.ts +50 -0
- package/lib/gateway/inbound-auth/custom-claim.js +127 -0
- package/lib/gateway/interceptor.d.ts +137 -0
- package/lib/gateway/interceptor.js +143 -0
- package/lib/gateway/outbound-auth/api-key.js +1 -1
- package/lib/gateway/outbound-auth/credential-provider.js +1 -1
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +7 -6
- package/lib/gateway/targets/schema/tool-schema.js +7 -6
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +5 -5
- package/lib/gateway/targets/target.d.ts +2 -1
- package/lib/gateway/targets/target.js +11 -4
- package/lib/index.d.ts +5 -1
- package/lib/index.js +9 -2
- package/lib/memory/memory-strategy.d.ts +19 -0
- package/lib/memory/memory-strategy.js +41 -2
- package/lib/memory/memory.d.ts +5 -4
- package/lib/memory/memory.js +16 -9
- package/lib/memory/strategies/managed-strategy.d.ts +26 -0
- package/lib/memory/strategies/managed-strategy.js +46 -4
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/network/network-configuration.js +4 -4
- package/lib/runtime/inbound-auth/custom-claim.d.ts +50 -0
- package/lib/runtime/inbound-auth/custom-claim.js +127 -0
- package/lib/runtime/{runtime-authorizer-configuration.d.ts → inbound-auth/runtime-authorizer-configuration.d.ts} +10 -3
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +183 -0
- package/lib/runtime/runtime-artifact.js +1 -1
- package/lib/runtime/runtime-base.d.ts +2 -2
- package/lib/runtime/runtime-base.js +4 -4
- package/lib/runtime/runtime-endpoint-base.d.ts +2 -2
- package/lib/runtime/runtime-endpoint-base.js +4 -4
- package/lib/runtime/runtime-endpoint.d.ts +2 -1
- package/lib/runtime/runtime-endpoint.js +11 -4
- package/lib/runtime/runtime.d.ts +3 -2
- package/lib/runtime/runtime.js +11 -4
- package/lib/tools/browser.d.ts +5 -5
- package/lib/tools/browser.js +22 -14
- package/lib/tools/code-interpreter.d.ts +5 -5
- package/lib/tools/code-interpreter.js +16 -8
- package/package.json +19 -11
- package/lib/runtime/runtime-authorizer-configuration.js +0 -159
|
@@ -25,7 +25,7 @@ const PROMPT_MAX_LENGTH = 30000;
|
|
|
25
25
|
* with specific models and prompt templates.
|
|
26
26
|
*/
|
|
27
27
|
class ManagedMemoryStrategy {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.237.0-alpha.0" };
|
|
29
29
|
name;
|
|
30
30
|
description;
|
|
31
31
|
/**
|
|
@@ -40,6 +40,10 @@ class ManagedMemoryStrategy {
|
|
|
40
40
|
* The configuration for the custom extraction.
|
|
41
41
|
*/
|
|
42
42
|
extractionOverride;
|
|
43
|
+
/**
|
|
44
|
+
* The configuration for episodic reflection.
|
|
45
|
+
*/
|
|
46
|
+
reflectionConfiguration;
|
|
43
47
|
strategyType;
|
|
44
48
|
/**
|
|
45
49
|
* Constructor to create a new managed memory strategy
|
|
@@ -66,6 +70,7 @@ class ManagedMemoryStrategy {
|
|
|
66
70
|
this.strategyType = strategyType;
|
|
67
71
|
this.consolidationOverride = props.customConsolidation;
|
|
68
72
|
this.extractionOverride = props.customExtraction;
|
|
73
|
+
this.reflectionConfiguration = props.reflectionConfiguration;
|
|
69
74
|
// ------------------------------------------------------
|
|
70
75
|
// Validations
|
|
71
76
|
// ------------------------------------------------------
|
|
@@ -75,18 +80,22 @@ class ManagedMemoryStrategy {
|
|
|
75
80
|
if (this.namespaces) {
|
|
76
81
|
(0, validation_helpers_1.throwIfInvalid)(this._validateMemoryStrategyNamespaces, this.namespaces);
|
|
77
82
|
}
|
|
83
|
+
if (this.reflectionConfiguration) {
|
|
84
|
+
(0, validation_helpers_1.throwIfInvalid)(this._validateReflectionConfiguration, this.reflectionConfiguration);
|
|
85
|
+
}
|
|
78
86
|
}
|
|
79
87
|
/**
|
|
80
88
|
* Renders the network configuration as a CloudFormation property.
|
|
81
89
|
* @returns The CloudFormation property for the memory strategy.
|
|
82
90
|
*/
|
|
83
91
|
render() {
|
|
84
|
-
// If no overrides, use built-in strategy format
|
|
85
|
-
if (!this.consolidationOverride && !this.extractionOverride) {
|
|
92
|
+
// If no overrides and no reflection config, use built-in strategy format
|
|
93
|
+
if (!this.consolidationOverride && !this.extractionOverride && !this.reflectionConfiguration) {
|
|
86
94
|
const cfnStrategyMap = {
|
|
87
95
|
[memory_strategy_1.MemoryStrategyType.USER_PREFERENCE]: 'userPreferenceMemoryStrategy',
|
|
88
96
|
[memory_strategy_1.MemoryStrategyType.SEMANTIC]: 'semanticMemoryStrategy',
|
|
89
97
|
[memory_strategy_1.MemoryStrategyType.SUMMARIZATION]: 'summaryMemoryStrategy',
|
|
98
|
+
[memory_strategy_1.MemoryStrategyType.EPISODIC]: 'episodicMemoryStrategy',
|
|
90
99
|
[memory_strategy_1.MemoryStrategyType.CUSTOM]: 'customMemoryStrategy',
|
|
91
100
|
};
|
|
92
101
|
const strategyKey = cfnStrategyMap[this.strategyType];
|
|
@@ -99,11 +108,27 @@ class ManagedMemoryStrategy {
|
|
|
99
108
|
},
|
|
100
109
|
};
|
|
101
110
|
}
|
|
111
|
+
// For episodic with reflection config only (no other overrides)
|
|
112
|
+
if (this.strategyType === memory_strategy_1.MemoryStrategyType.EPISODIC && this.reflectionConfiguration &&
|
|
113
|
+
!this.consolidationOverride && !this.extractionOverride) {
|
|
114
|
+
return {
|
|
115
|
+
episodicMemoryStrategy: {
|
|
116
|
+
name: this.name,
|
|
117
|
+
description: this.description,
|
|
118
|
+
namespaces: this.namespaces,
|
|
119
|
+
type: this.strategyType,
|
|
120
|
+
reflectionConfiguration: {
|
|
121
|
+
namespaces: this.reflectionConfiguration.namespaces,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
102
126
|
// If overrides are provided, use custom strategy format
|
|
103
127
|
const cfnStrategyMap = {
|
|
104
128
|
[memory_strategy_1.MemoryStrategyType.USER_PREFERENCE]: 'userPreferenceOverride',
|
|
105
129
|
[memory_strategy_1.MemoryStrategyType.SEMANTIC]: 'semanticOverride',
|
|
106
130
|
[memory_strategy_1.MemoryStrategyType.SUMMARIZATION]: 'summaryOverride',
|
|
131
|
+
[memory_strategy_1.MemoryStrategyType.EPISODIC]: 'episodicOverride',
|
|
107
132
|
[memory_strategy_1.MemoryStrategyType.CUSTOM]: '',
|
|
108
133
|
};
|
|
109
134
|
const strategyKey = cfnStrategyMap[this.strategyType];
|
|
@@ -207,6 +232,23 @@ class ManagedMemoryStrategy {
|
|
|
207
232
|
}
|
|
208
233
|
return errors;
|
|
209
234
|
};
|
|
235
|
+
/**
|
|
236
|
+
* Validates the episodic reflection configuration
|
|
237
|
+
* @param config - The reflection configuration to validate
|
|
238
|
+
* @returns Array of validation error messages, empty if valid
|
|
239
|
+
*/
|
|
240
|
+
_validateReflectionConfiguration = (config) => {
|
|
241
|
+
let errors = [];
|
|
242
|
+
// Validate that namespaces array is not empty
|
|
243
|
+
if (!config.namespaces || config.namespaces.length === 0) {
|
|
244
|
+
errors.push('Reflection configuration must have at least one namespace');
|
|
245
|
+
}
|
|
246
|
+
// Validate each namespace in reflection configuration
|
|
247
|
+
if (config.namespaces) {
|
|
248
|
+
errors.push(...this._validateMemoryStrategyNamespaces(config.namespaces));
|
|
249
|
+
}
|
|
250
|
+
return errors;
|
|
251
|
+
};
|
|
210
252
|
}
|
|
211
253
|
exports.ManagedMemoryStrategy = ManagedMemoryStrategy;
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmFnZWQtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSw2Q0FBNkM7QUFJN0Msd0RBQW9KO0FBQ3BKLDhEQUF3RztBQUV4Rzs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBNkRoQzs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hCLElBQUksQ0FBUztJQUNiLFdBQVcsQ0FBVTtJQUNyQzs7T0FFRztJQUNhLFVBQVUsQ0FBVztJQUNyQzs7T0FFRztJQUNhLHFCQUFxQixDQUFrQjtJQUN2RDs7T0FFRztJQUNhLGtCQUFrQixDQUFrQjtJQUNwQyxZQUFZLENBQXFCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFZLFlBQWdDLEVBQUUsS0FBMkI7Ozs7Ozs7K0NBdEI5RCxxQkFBcUI7Ozs7UUF1QjlCLHlEQUF5RDtRQUN6RCw4QkFBOEI7UUFDOUIseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUVqRCx5REFBeUQ7UUFDekQsY0FBYztRQUNkLHlEQUF5RDtRQUN6RCxJQUFBLG1DQUFjLEVBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMscUJB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QUksTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsOENBQXlCLEVBQUM7WUFDdkMsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsaUJBQWlCO1lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7U0FDN0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNLLGlDQUFpQyxHQUFHLENBQUMsVUFBb0IsRUFBWSxFQUFFO1FBQzdFLElBQUksTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUUxQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsNERBQTREO1lBQzVELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUMzQixTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDakMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QyxFQUFFLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyw0REFBNEQsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQzs7QUE1TEosc0RBNkxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSUJlZHJvY2tJbnZva2FibGUgfSBmcm9tICdAYXdzLWNkay9hd3MtYmVkcm9jay1hbHBoYSc7XG5pbXBvcnQgeyBBcm4sIEFybkZvcm1hdCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgR3JhbnQsIElHcmFudGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE1lbW9yeVN0cmF0ZWd5Q29tbW9uUHJvcHMsIElNZW1vcnlTdHJhdGVneSwgTWVtb3J5U3RyYXRlZ3lUeXBlLCBNRU1PUllfTkFNRV9NSU5fTEVOR1RILCBNRU1PUllfTkFNRV9NQVhfTEVOR1RIIH0gZnJvbSAnLi4vbWVtb3J5LXN0cmF0ZWd5JztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgsIHRocm93SWZJbnZhbGlkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RBTlRTXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUlOX0xFTkdUSCA9IDE7XG4vKipcbiAqIE1heGltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUFYX0xFTkdUSCA9IDMwMDAwO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIG92ZXJyaWRpbmcgbW9kZWwgYW5kIHByb21wdCB0ZW1wbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJyaWRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBtb2RlbCB0byB1c2UgZm9yIGNvbnNvbGlkYXRpb24vZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWw6IElCZWRyb2NrSW52b2thYmxlO1xuICAvKipcbiAgICogVGhlIHByb21wdCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHN5c3RlbSBwcm9tcHQgdG8gZGVmaW5lXG4gICAqIHRoZSBtb2RlbCdzIG1lbW9yeSBjb25zb2xpZGF0aW9uL2V4dHJhY3Rpb24gc3RyYXRlZ3kuXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBwcm92aWRlcyBjdXN0b21pemF0aW9uIHRvIGhvdyB0aGUgbW9kZWwgaWRlbnRpZmllcyBhbmQgZXh0cmFjdHNcbiAgICogcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIG1lbW9yeSBzdG9yYWdlLiBZb3UgY2FuIHVzZSB0aGUgZGVmYXVsdCB1c2VyIHByb21wdCBvciBjcmVhdGUgYSBjdXN0b21pemVkIG9uZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3N5c3RlbS1wcm9tcHRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGFwcGVuZFRvUHJvbXB0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBhIG1lbW9yeSBzdHJhdGVneSB0aGF0IGNhbiBvdmVycmlkZVxuICogZXhpc3RpbmcgYnVpbHQtaW4gZGVmYXVsdCBwcm9tcHRzL21vZGVsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRTdHJhdGVneVByb3BzIGV4dGVuZHMgTWVtb3J5U3RyYXRlZ3lDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBleHRyYWN0aW9uLlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgY3VzdG9taXphdGlvbiB0byBob3cgdGhlIG1vZGVsIGlkZW50aWZpZXNcbiAgICogYW5kIGV4dHJhY3RzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBtZW1vcnkgc3RvcmFnZS5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXh0cmFjdGlvbj86IE92ZXJyaWRlQ29uZmlnO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29uc29saWRhdGlvbi5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHByb3ZpZGVzIGN1c3RvbWl6YXRpb24gdG8gaG93IHRoZSBtb2RlbCBpZGVudGlmaWVzXG4gICAqIGFuZCBleHRyYWN0cyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgbWVtb3J5IHN0b3JhZ2UuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGV4dHJhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNvbnNvbGlkYXRpb24/OiBPdmVycmlkZUNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2VzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICogUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBmb3Igb3JnYW5pemluZyBtZW1vcnkgZGF0YVxuICAgKiBVc2UgYSBoaWVyYXJjaGljYWwgZm9ybWF0IHNlcGFyYXRlZCBieSBmb3J3YXJkIHNsYXNoZXMgKC8pXG4gICAqXG4gICAqIFVzZSBhIGhpZXJhcmNoaWNhbCBmb3JtYXQgc2VwYXJhdGVkIGJ5IGZvcndhcmQgc2xhc2hlcyAoLykgdG8gb3JnYW5pemUgbmFtZXNwYWNlcyBsb2dpY2FsbHkuXG4gICAqIFlvdSBjYW4gaW5jbHVkZSB0aGVzZSBkZWZpbmVkIHZhcmlhYmxlczpcbiAgICpcbiAgICogLSB7c2Vzc2lvbklkfSAtIHRoZSB1c2VyIGlkZW50aWZpZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUgQ3JlYXRlRXZlbnQgQVBJXG4gICAqIC0ge21lbW9yeVN0cmF0ZWd5SWR9IC0gYW4gaWRlbnRpZmllciBmb3IgYW4gZXh0cmFjdGlvbiBzdHJhdGVneVxuICAgKiAtIHtzZXNzaW9uSWR9IC0gYW4gaWRlbnRpZmllciBmb3IgZWFjaCBzZXNzaW9uXG4gICAqXG4gICAqIEV4YW1wbGUgbmFtZXNwYWNlIHBhdGg6XG4gICAqIC9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3Rpb25zL3thY3Rpb25JZH0vc2Vzc2lvbnMve3Nlc3Npb25JZH1cbiAgICpcbiAgICogQWZ0ZXIgbWVtb3J5IGNyZWF0aW9uLCB0aGlzIG5hbWVzcGFjZSBtaWdodCBsb29rIGxpa2U6XG4gICAqIC9hY3Rvci9hY3Rvci0zYWZjNWFhOGZlZjkvc3RyYXRlZ3kvc3VtbWFyaXphdGlvbi1meTVjNWZ3Yzcvc2Vzc2lvbi9zZXNzaW9uLXFqN3RwZDFrdnI4XG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBNYW5hZ2VkIG1lbW9yeSBzdHJhdGVneSB0aGF0IGhhbmRsZXMgYm90aCBidWlsdC1pbiBhbmQgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMuXG4gKiBUaGlzIHN0cmF0ZWd5IGNhbiBiZSB1c2VkIGZvciBxdWljayBzZXR1cCB3aXRoIGJ1aWx0LWluIGRlZmF1bHRzIG9yIGN1c3RvbWl6ZWRcbiAqIHdpdGggc3BlY2lmaWMgbW9kZWxzIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IGltcGxlbWVudHMgSU1lbW9yeVN0cmF0ZWd5IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZXMgZm9yIHRoZSBzdHJhdGVneVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29uc29saWRhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25zb2xpZGF0aW9uT3ZlcnJpZGU/OiBPdmVycmlkZUNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGV4dHJhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0cmFjdGlvbk92ZXJyaWRlPzogT3ZlcnJpZGVDb25maWc7XG4gIHB1YmxpYyByZWFkb25seSBzdHJhdGVneVR5cGU6IE1lbW9yeVN0cmF0ZWd5VHlwZTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgdG8gY3JlYXRlIGEgbmV3IG1hbmFnZWQgbWVtb3J5IHN0cmF0ZWd5XG4gICAqIEBwYXJhbSBzdHJhdGVneVR5cGUgdGhlIHN0cmF0ZWd5IHR5cGVcbiAgICogQHBhcmFtIHByb3BzIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0cmF0ZWd5VHlwZTogTWVtb3J5U3RyYXRlZ3lUeXBlLCBwcm9wczogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZXQgcHJvcGVydGllcyBhbmQgZGVmYXVsdHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLm5hbWVzcGFjZXMgPSBwcm9wcy5uYW1lc3BhY2VzO1xuICAgIHRoaXMuc3RyYXRlZ3lUeXBlID0gc3RyYXRlZ3lUeXBlO1xuICAgIHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlID0gcHJvcHMuY3VzdG9tQ29uc29saWRhdGlvbjtcbiAgICB0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSA9IHByb3BzLmN1c3RvbUV4dHJhY3Rpb247XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBWYWxpZGF0aW9uc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlUHJvbXB0LCB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZT8uYXBwZW5kVG9Qcm9tcHQpO1xuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlUHJvbXB0LCB0aGlzLmV4dHJhY3Rpb25PdmVycmlkZT8uYXBwZW5kVG9Qcm9tcHQpO1xuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lLCB0aGlzLm5hbWUpO1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZXMpIHtcbiAgICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lc3BhY2VzLCB0aGlzLm5hbWVzcGFjZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYXMgYSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eS5cbiAgICogQHJldHVybnMgVGhlIENsb3VkRm9ybWF0aW9uIHByb3BlcnR5IGZvciB0aGUgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBiZWRyb2NrYWdlbnRjb3JlLkNmbk1lbW9yeS5NZW1vcnlTdHJhdGVneVByb3BlcnR5IHtcbiAgICAvLyBJZiBubyBvdmVycmlkZXMsIHVzZSBidWlsdC1pbiBzdHJhdGVneSBmb3JtYXRcbiAgICBpZiAoIXRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlICYmICF0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSkge1xuICAgICAgY29uc3QgY2ZuU3RyYXRlZ3lNYXA6IFJlY29yZDxNZW1vcnlTdHJhdGVneVR5cGUsIHN0cmluZz4gPSB7XG4gICAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuVVNFUl9QUkVGRVJFTkNFXTogJ3VzZXJQcmVmZXJlbmNlTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDXTogJ3NlbWFudGljTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT05dOiAnc3VtbWFyeU1lbW9yeVN0cmF0ZWd5JyxcbiAgICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5DVVNUT01dOiAnY3VzdG9tTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0cmF0ZWd5S2V5ID0gY2ZuU3RyYXRlZ3lNYXBbdGhpcy5zdHJhdGVneVR5cGVdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3N0cmF0ZWd5S2V5XToge1xuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBuYW1lc3BhY2VzOiB0aGlzLm5hbWVzcGFjZXMsXG4gICAgICAgICAgdHlwZTogdGhpcy5zdHJhdGVneVR5cGUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIG92ZXJyaWRlcyBhcmUgcHJvdmlkZWQsIHVzZSBjdXN0b20gc3RyYXRlZ3kgZm9ybWF0XG4gICAgY29uc3QgY2ZuU3RyYXRlZ3lNYXA6IFJlY29yZDxNZW1vcnlTdHJhdGVneVR5cGUsIHN0cmluZz4gPSB7XG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlVTRVJfUFJFRkVSRU5DRV06ICd1c2VyUHJlZmVyZW5jZU92ZXJyaWRlJyxcbiAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUNdOiAnc2VtYW50aWNPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT05dOiAnc3VtbWFyeU92ZXJyaWRlJyxcbiAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuQ1VTVE9NXTogJycsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5S2V5ID0gY2ZuU3RyYXRlZ3lNYXBbdGhpcy5zdHJhdGVneVR5cGVdO1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21NZW1vcnlTdHJhdGVneToge1xuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICBuYW1lc3BhY2VzOiB0aGlzLm5hbWVzcGFjZXMsXG4gICAgICAgIHR5cGU6IHRoaXMuc3RyYXRlZ3lUeXBlLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgW3N0cmF0ZWd5S2V5XToge1xuICAgICAgICAgICAgLi4uKHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlICYmIHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbjoge1xuICAgICAgICAgICAgICAgIG1vZGVsSWQ6IEFybi5zcGxpdCh0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZS5tb2RlbC5pbnZva2FibGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKVxuICAgICAgICAgICAgICAgICAgLnJlc291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRUb1Byb21wdDogdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGUuYXBwZW5kVG9Qcm9tcHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSAmJiB7XG4gICAgICAgICAgICAgIGV4dHJhY3Rpb246IHtcbiAgICAgICAgICAgICAgICBtb2RlbElkOiBBcm4uc3BsaXQodGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUubW9kZWwuaW52b2thYmxlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSlcbiAgICAgICAgICAgICAgICAgIC5yZXNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgYXBwZW5kVG9Qcm9tcHQ6IHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlLmFwcGVuZFRvUHJvbXB0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byB0aGUgcm9sZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgZ3JhbnRlZSB0byBncmFudCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcmV0dXJucyBUaGUgR3JhbnQgb2JqZWN0IGZvciBjaGFpbmluZ1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZ3JhbnQxID0gdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGU/Lm1vZGVsLmdyYW50SW52b2tlKGdyYW50ZWUpO1xuICAgIGNvbnN0IGdyYW50MiA9IHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlPy5tb2RlbC5ncmFudEludm9rZShncmFudGVlKTtcbiAgICByZXR1cm4gZ3JhbnQxICYmIGdyYW50MiA/IGdyYW50MS5jb21iaW5lKGdyYW50MikgOiBncmFudDEgfHwgZ3JhbnQyO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFZBTElEQVRPUlNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSBzdHJhdGVneSBuYW1lXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lID0gKG5hbWU6IHN0cmluZywgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgZmllbGROYW1lOiAnTWVtb3J5IG5hbWUnLFxuICAgICAgbWluTGVuZ3RoOiBNRU1PUllfTkFNRV9NSU5fTEVOR1RILFxuICAgICAgbWF4TGVuZ3RoOiBNRU1PUllfTkFNRV9NQVhfTEVOR1RILFxuICAgIH0sIHNjb3BlKSk7XG5cbiAgICAvLyBDaGVjayBpZiBuYW1lIG1hdGNoZXMgdGhlIEFXUyBBUEkgcGF0dGVybjogW2EtekEtWl1bYS16QS1aMC05X117MCw0N31cbiAgICAvLyBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGZvbGxvd2VkIGJ5IHVwIHRvIDQ3IGxldHRlcnMsIG51bWJlcnMsIG9yIHVuZGVyc2NvcmVzXG4gICAgY29uc3QgdmFsaWROYW1lUGF0dGVybiA9IC9eW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kLztcbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUZpZWxkUGF0dGVybihuYW1lLCAnTWVtb3J5IG5hbWUnLCB2YWxpZE5hbWVQYXR0ZXJuLCB1bmRlZmluZWQsIHNjb3BlKSk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb21wdFxuICAgKiBAcGFyYW0gcHJvbXB0IC0gVGhlIHByb21wdCB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVQcm9tcHQgPSAocHJvbXB0Pzogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoIXByb21wdCkge1xuICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG4gICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICB2YWx1ZTogcHJvbXB0LFxuICAgICAgZmllbGROYW1lOiAnUHJvbXB0JyxcbiAgICAgIG1pbkxlbmd0aDogUFJPTVBUX01JTl9MRU5HVEgsXG4gICAgICBtYXhMZW5ndGg6IFBST01QVF9NQVhfTEVOR1RILFxuICAgIH0sIHNjb3BlKSk7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZW1vcnkgc3RyYXRlZ3kgbmFtZXNwYWNlc1xuICAgKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZU1lbW9yeVN0cmF0ZWd5TmFtZXNwYWNlcyA9IChuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG5hbWVzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIG5hbWVzcGFjZXMpIHtcbiAgICAgIC8vIE9ubHkgY2hlY2sgZm9yIHRlbXBsYXRlIHZhcmlhYmxlcyBpbiBuYW1lc3BhY2UgZGVmaW5pdGlvblxuICAgICAgaWYgKG5hbWVzcGFjZS5pbmNsdWRlcygneycpICYmICEoXG4gICAgICAgIG5hbWVzcGFjZS5pbmNsdWRlcygne2FjdG9ySWR9JykgfHxcbiAgICAgICAgICAgIG5hbWVzcGFjZS5pbmNsdWRlcygne3Nlc3Npb25JZH0nKSB8fFxuICAgICAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7bWVtb3J5U3RyYXRlZ3lJZH0nKVxuICAgICAgKSkge1xuICAgICAgICBlcnJvcnMucHVzaChgTmFtZXNwYWNlIHdpdGggdGVtcGxhdGVzIHNob3VsZCBjb250YWluIHZhbGlkIHZhcmlhYmxlczogJHtuYW1lc3BhY2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcbn1cbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmFnZWQtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSw2Q0FBNkM7QUFJN0Msd0RBQW9KO0FBQ3BKLDhEQUF3RztBQUV4Rzs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBOEVoQzs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hCLElBQUksQ0FBUztJQUNiLFdBQVcsQ0FBVTtJQUNyQzs7T0FFRztJQUNhLFVBQVUsQ0FBVztJQUNyQzs7T0FFRztJQUNhLHFCQUFxQixDQUFrQjtJQUN2RDs7T0FFRztJQUNhLGtCQUFrQixDQUFrQjtJQUNwRDs7T0FFRztJQUNhLHVCQUF1QixDQUFtQztJQUMxRCxZQUFZLENBQXFCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFZLFlBQWdDLEVBQUUsS0FBMkI7Ozs7Ozs7K0NBMUI5RCxxQkFBcUI7Ozs7UUEyQjlCLHlEQUF5RDtRQUN6RCw4QkFBOEI7UUFDOUIseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBRTdELHlEQUF5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QUksQ0FBQyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDOztBQTNPSixzREE0T0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJQmVkcm9ja0ludm9rYWJsZSB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1iZWRyb2NrLWFscGhhJztcbmltcG9ydCB7IEFybiwgQXJuRm9ybWF0IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBHcmFudCwgSUdyYW50YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTWVtb3J5U3RyYXRlZ3lDb21tb25Qcm9wcywgSU1lbW9yeVN0cmF0ZWd5LCBNZW1vcnlTdHJhdGVneVR5cGUsIE1FTU9SWV9OQU1FX01JTl9MRU5HVEgsIE1FTU9SWV9OQU1FX01BWF9MRU5HVEggfSBmcm9tICcuLi9tZW1vcnktc3RyYXRlZ3knO1xuaW1wb3J0IHsgdmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCwgdGhyb3dJZkludmFsaWQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVEFOVFNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogTWluaW11bSBsZW5ndGggZm9yIHByb21wdFxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IFBST01QVF9NSU5fTEVOR1RIID0gMTtcbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIHByb21wdFxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IFBST01QVF9NQVhfTEVOR1RIID0gMzAwMDA7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3Igb3ZlcnJpZGluZyBtb2RlbCBhbmQgcHJvbXB0IHRlbXBsYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnJpZGVDb25maWcge1xuICAvKipcbiAgICogVGhlIG1vZGVsIHRvIHVzZSBmb3IgY29uc29saWRhdGlvbi9leHRyYWN0aW9uXG4gICAqL1xuICByZWFkb25seSBtb2RlbDogSUJlZHJvY2tJbnZva2FibGU7XG4gIC8qKlxuICAgKiBUaGUgcHJvbXB0IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgc3lzdGVtIHByb21wdCB0byBkZWZpbmVcbiAgICogdGhlIG1vZGVsJ3MgbWVtb3J5IGNvbnNvbGlkYXRpb24vZXh0cmFjdGlvbiBzdHJhdGVneS5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHByb3ZpZGVzIGN1c3RvbWl6YXRpb24gdG8gaG93IHRoZSBtb2RlbCBpZGVudGlmaWVzIGFuZCBleHRyYWN0c1xuICAgKiByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgbWVtb3J5IHN0b3JhZ2UuIFlvdSBjYW4gdXNlIHRoZSBkZWZhdWx0IHVzZXIgcHJvbXB0IG9yIGNyZWF0ZSBhIGN1c3RvbWl6ZWQgb25lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvc3lzdGVtLXByb21wdHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwZW5kVG9Qcm9tcHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBlcGlzb2RpYyBtZW1vcnkgcmVmbGVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVwaXNvZGljUmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogTmFtZXNwYWNlcyBmb3IgZXBpc29kaWMgcmVmbGVjdGlvblxuICAgKiBNaW5pbXVtIDEgbmFtZXNwYWNlIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgbWVtb3J5IHN0cmF0ZWd5IHRoYXQgY2FuIG92ZXJyaWRlXG4gKiBleGlzdGluZyBidWlsdC1pbiBkZWZhdWx0IHByb21wdHMvbW9kZWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFN0cmF0ZWd5UHJvcHMgZXh0ZW5kcyBNZW1vcnlTdHJhdGVneUNvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGV4dHJhY3Rpb24uXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBwcm92aWRlcyBjdXN0b21pemF0aW9uIHRvIGhvdyB0aGUgbW9kZWwgaWRlbnRpZmllc1xuICAgKiBhbmQgZXh0cmFjdHMgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIG1lbW9yeSBzdG9yYWdlLlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBleHRyYWN0aW9uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21FeHRyYWN0aW9uPzogT3ZlcnJpZGVDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBjb25zb2xpZGF0aW9uLlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgY3VzdG9taXphdGlvbiB0byBob3cgdGhlIG1vZGVsIGlkZW50aWZpZXNcbiAgICogYW5kIGV4dHJhY3RzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBtZW1vcnkgc3RvcmFnZS5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ29uc29saWRhdGlvbj86IE92ZXJyaWRlQ29uZmlnO1xuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZXMgZm9yIHRoZSBzdHJhdGVneVxuICAgKiBSZXByZXNlbnRzIGEgbmFtZXNwYWNlIGZvciBvcmdhbml6aW5nIG1lbW9yeSBkYXRhXG4gICAqIFVzZSBhIGhpZXJhcmNoaWNhbCBmb3JtYXQgc2VwYXJhdGVkIGJ5IGZvcndhcmQgc2xhc2hlcyAoLylcbiAgICpcbiAgICogVXNlIGEgaGllcmFyY2hpY2FsIGZvcm1hdCBzZXBhcmF0ZWQgYnkgZm9yd2FyZCBzbGFzaGVzICgvKSB0byBvcmdhbml6ZSBuYW1lc3BhY2VzIGxvZ2ljYWxseS5cbiAgICogWW91IGNhbiBpbmNsdWRlIHRoZXNlIGRlZmluZWQgdmFyaWFibGVzOlxuICAgKlxuICAgKiAtIHtzZXNzaW9uSWR9IC0gdGhlIHVzZXIgaWRlbnRpZmllciB0byBiZSBjcmVhdGVkIGluIHRoZSBDcmVhdGVFdmVudCBBUElcbiAgICogLSB7bWVtb3J5U3RyYXRlZ3lJZH0gLSBhbiBpZGVudGlmaWVyIGZvciBhbiBleHRyYWN0aW9uIHN0cmF0ZWd5XG4gICAqIC0ge3Nlc3Npb25JZH0gLSBhbiBpZGVudGlmaWVyIGZvciBlYWNoIHNlc3Npb25cbiAgICpcbiAgICogRXhhbXBsZSBuYW1lc3BhY2UgcGF0aDpcbiAgICogL3N0cmF0ZWdpZXMve21lbW9yeVN0cmF0ZWd5SWR9L2FjdGlvbnMve2FjdGlvbklkfS9zZXNzaW9ucy97c2Vzc2lvbklkfVxuICAgKlxuICAgKiBBZnRlciBtZW1vcnkgY3JlYXRpb24sIHRoaXMgbmFtZXNwYWNlIG1pZ2h0IGxvb2sgbGlrZTpcbiAgICogL2FjdG9yL2FjdG9yLTNhZmM1YWE4ZmVmOS9zdHJhdGVneS9zdW1tYXJpemF0aW9uLWZ5NWM1ZndjNy9zZXNzaW9uL3Nlc3Npb24tcWo3dHBkMWt2cjhcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZXBpc29kaWMgbWVtb3J5IHJlZmxlY3Rpb24gKG9ubHkgYXBwbGljYWJsZSBmb3IgRVBJU09ESUMgc3RyYXRlZ3kgdHlwZSlcbiAgICogRGVmaW5lcyBhZGRpdGlvbmFsIG5hbWVzcGFjZXMgZm9yIHJlZmxlY3Rpb24tYmFzZWQgZXBpc29kaWMgcmVjYWxsXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVmbGVjdGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSByZWZsZWN0aW9uQ29uZmlndXJhdGlvbj86IEVwaXNvZGljUmVmbGVjdGlvbkNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogTWFuYWdlZCBtZW1vcnkgc3RyYXRlZ3kgdGhhdCBoYW5kbGVzIGJvdGggYnVpbHQtaW4gYW5kIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zLlxuICogVGhpcyBzdHJhdGVneSBjYW4gYmUgdXNlZCBmb3IgcXVpY2sgc2V0dXAgd2l0aCBidWlsdC1pbiBkZWZhdWx0cyBvciBjdXN0b21pemVkXG4gKiB3aXRoIHNwZWNpZmljIG1vZGVscyBhbmQgcHJvbXB0IHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmFnZWRNZW1vcnlTdHJhdGVneSBpbXBsZW1lbnRzIElNZW1vcnlTdHJhdGVneSB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2VzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2VzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGNvbnNvbGlkYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uc29saWRhdGlvbk92ZXJyaWRlPzogT3ZlcnJpZGVDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBleHRyYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4dHJhY3Rpb25PdmVycmlkZT86IE92ZXJyaWRlQ29uZmlnO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIGVwaXNvZGljIHJlZmxlY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24/OiBFcGlzb2RpY1JlZmxlY3Rpb25Db25maWd1cmF0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RyYXRlZ3lUeXBlOiBNZW1vcnlTdHJhdGVneVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIHRvIGNyZWF0ZSBhIG5ldyBtYW5hZ2VkIG1lbW9yeSBzdHJhdGVneVxuICAgKiBAcGFyYW0gc3RyYXRlZ3lUeXBlIHRoZSBzdHJhdGVneSB0eXBlXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyBmb3IgdGhlIHN0cmF0ZWd5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdHJhdGVneVR5cGU6IE1lbW9yeVN0cmF0ZWd5VHlwZSwgcHJvcHM6IE1hbmFnZWRTdHJhdGVneVByb3BzKSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2V0IHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5uYW1lc3BhY2VzID0gcHJvcHMubmFtZXNwYWNlcztcbiAgICB0aGlzLnN0cmF0ZWd5VHlwZSA9IHN0cmF0ZWd5VHlwZTtcbiAgICB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZSA9IHByb3BzLmN1c3RvbUNvbnNvbGlkYXRpb247XG4gICAgdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUgPSBwcm9wcy5jdXN0b21FeHRyYWN0aW9uO1xuICAgIHRoaXMucmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24gPSBwcm9wcy5yZWZsZWN0aW9uQ29uZmlndXJhdGlvbjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFZhbGlkYXRpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVQcm9tcHQsIHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlPy5hcHBlbmRUb1Byb21wdCk7XG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVQcm9tcHQsIHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlPy5hcHBlbmRUb1Byb21wdCk7XG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVNZW1vcnlTdHJhdGVneU5hbWUsIHRoaXMubmFtZSk7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlcykge1xuICAgICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVNZW1vcnlTdHJhdGVneU5hbWVzcGFjZXMsIHRoaXMubmFtZXNwYWNlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlZmxlY3Rpb25Db25maWd1cmF0aW9uKSB7XG4gICAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZVJlZmxlY3Rpb25Db25maWd1cmF0aW9uLCB0aGlzLnJlZmxlY3Rpb25Db25maWd1cmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIGFzIGEgQ2xvdWRGb3JtYXRpb24gcHJvcGVydHkuXG4gICAqIEByZXR1cm5zIFRoZSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eSBmb3IgdGhlIG1lbW9yeSBzdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eSB7XG4gICAgLy8gSWYgbm8gb3ZlcnJpZGVzIGFuZCBubyByZWZsZWN0aW9uIGNvbmZpZywgdXNlIGJ1aWx0LWluIHN0cmF0ZWd5IGZvcm1hdFxuICAgIGlmICghdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGUgJiYgIXRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlICYmICF0aGlzLnJlZmxlY3Rpb25Db25maWd1cmF0aW9uKSB7XG4gICAgICBjb25zdCBjZm5TdHJhdGVneU1hcDogUmVjb3JkPE1lbW9yeVN0cmF0ZWd5VHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0VdOiAndXNlclByZWZlcmVuY2VNZW1vcnlTdHJhdGVneScsXG4gICAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUNdOiAnc2VtYW50aWNNZW1vcnlTdHJhdGVneScsXG4gICAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuU1VNTUFSSVpBVElPTl06ICdzdW1tYXJ5TWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLkVQSVNPRElDXTogJ2VwaXNvZGljTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLkNVU1RPTV06ICdjdXN0b21NZW1vcnlTdHJhdGVneScsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc3RyYXRlZ3lLZXkgPSBjZm5TdHJhdGVneU1hcFt0aGlzLnN0cmF0ZWd5VHlwZV07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbc3RyYXRlZ3lLZXldOiB7XG4gICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIG5hbWVzcGFjZXM6IHRoaXMubmFtZXNwYWNlcyxcbiAgICAgICAgICB0eXBlOiB0aGlzLnN0cmF0ZWd5VHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRm9yIGVwaXNvZGljIHdpdGggcmVmbGVjdGlvbiBjb25maWcgb25seSAobm8gb3RoZXIgb3ZlcnJpZGVzKVxuICAgIGlmICh0aGlzLnN0cmF0ZWd5VHlwZSA9PT0gTWVtb3J5U3RyYXRlZ3lUeXBlLkVQSVNPRElDICYmIHRoaXMucmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24gJiZcbiAgICAgICAgIXRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlICYmICF0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXBpc29kaWNNZW1vcnlTdHJhdGVneToge1xuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBuYW1lc3BhY2VzOiB0aGlzLm5hbWVzcGFjZXMsXG4gICAgICAgICAgdHlwZTogdGhpcy5zdHJhdGVneVR5cGUsXG4gICAgICAgICAgcmVmbGVjdGlvbkNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIG5hbWVzcGFjZXM6IHRoaXMucmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24ubmFtZXNwYWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBvdmVycmlkZXMgYXJlIHByb3ZpZGVkLCB1c2UgY3VzdG9tIHN0cmF0ZWd5IGZvcm1hdFxuICAgIGNvbnN0IGNmblN0cmF0ZWd5TWFwOiBSZWNvcmQ8TWVtb3J5U3RyYXRlZ3lUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0VdOiAndXNlclByZWZlcmVuY2VPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDXTogJ3NlbWFudGljT3ZlcnJpZGUnLFxuICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OXTogJ3N1bW1hcnlPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLkVQSVNPRElDXTogJ2VwaXNvZGljT3ZlcnJpZGUnLFxuICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5DVVNUT01dOiAnJyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RyYXRlZ3lLZXkgPSBjZm5TdHJhdGVneU1hcFt0aGlzLnN0cmF0ZWd5VHlwZV07XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1c3RvbU1lbW9yeVN0cmF0ZWd5OiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIG5hbWVzcGFjZXM6IHRoaXMubmFtZXNwYWNlcyxcbiAgICAgICAgdHlwZTogdGhpcy5zdHJhdGVneVR5cGUsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBbc3RyYXRlZ3lLZXldOiB7XG4gICAgICAgICAgICAuLi4odGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGUgJiYge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgbW9kZWxJZDogQXJuLnNwbGl0KHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlLm1vZGVsLmludm9rYWJsZUFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpXG4gICAgICAgICAgICAgICAgICAucmVzb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGFwcGVuZFRvUHJvbXB0OiB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZS5hcHBlbmRUb1Byb21wdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlICYmIHtcbiAgICAgICAgICAgICAgZXh0cmFjdGlvbjoge1xuICAgICAgICAgICAgICAgIG1vZGVsSWQ6IEFybi5zcGxpdCh0aGlzLmV4dHJhY3Rpb25PdmVycmlkZS5tb2RlbC5pbnZva2FibGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKVxuICAgICAgICAgICAgICAgICAgLnJlc291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRUb1Byb21wdDogdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUuYXBwZW5kVG9Qcm9tcHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSByb2xlXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBncmFudGVlIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBncmFudDEgPSB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZT8ubW9kZWwuZ3JhbnRJbnZva2UoZ3JhbnRlZSk7XG4gICAgY29uc3QgZ3JhbnQyID0gdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGU/Lm1vZGVsLmdyYW50SW52b2tlKGdyYW50ZWUpO1xuICAgIHJldHVybiBncmFudDEgJiYgZ3JhbnQyID8gZ3JhbnQxLmNvbWJpbmUoZ3JhbnQyKSA6IGdyYW50MSB8fCBncmFudDI7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gVkFMSURBVE9SU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWVtb3J5IHN0cmF0ZWd5IG5hbWVcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVNZW1vcnlTdHJhdGVneU5hbWUgPSAobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdNZW1vcnkgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IE1FTU9SWV9OQU1FX01JTl9MRU5HVEgsXG4gICAgICBtYXhMZW5ndGg6IE1FTU9SWV9OQU1FX01BWF9MRU5HVEgsXG4gICAgfSwgc2NvcGUpKTtcblxuICAgIC8vIENoZWNrIGlmIG5hbWUgbWF0Y2hlcyB0aGUgQVdTIEFQSSBwYXR0ZXJuOiBbYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fVxuICAgIC8vIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gNDcgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXNcbiAgICBjb25zdCB2YWxpZE5hbWVQYXR0ZXJuID0gL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvO1xuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlRmllbGRQYXR0ZXJuKG5hbWUsICdNZW1vcnkgbmFtZScsIHZhbGlkTmFtZVBhdHRlcm4sIHVuZGVmaW5lZCwgc2NvcGUpKTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgcHJvbXB0XG4gICAqIEBwYXJhbSBwcm9tcHQgLSBUaGUgcHJvbXB0IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb21wdCA9IChwcm9tcHQ/OiBzdHJpbmcsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICghcHJvbXB0KSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgIHZhbHVlOiBwcm9tcHQsXG4gICAgICBmaWVsZE5hbWU6ICdQcm9tcHQnLFxuICAgICAgbWluTGVuZ3RoOiBQUk9NUFRfTUlOX0xFTkdUSCxcbiAgICAgIG1heExlbmd0aDogUFJPTVBUX01BWF9MRU5HVEgsXG4gICAgfSwgc2NvcGUpKTtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSBzdHJhdGVneSBuYW1lc3BhY2VzXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gVGhlIG5hbWVzcGFjZXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lc3BhY2VzID0gKG5hbWVzcGFjZXM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobmFtZXNwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgbmFtZXNwYWNlcykge1xuICAgICAgLy8gT25seSBjaGVjayBmb3IgdGVtcGxhdGUgdmFyaWFibGVzIGluIG5hbWVzcGFjZSBkZWZpbml0aW9uXG4gICAgICBpZiAobmFtZXNwYWNlLmluY2x1ZGVzKCd7JykgJiYgIShcbiAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7YWN0b3JJZH0nKSB8fFxuICAgICAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7c2Vzc2lvbklkfScpIHx8XG4gICAgICAgICAgICBuYW1lc3BhY2UuaW5jbHVkZXMoJ3ttZW1vcnlTdHJhdGVneUlkfScpXG4gICAgICApKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGBOYW1lc3BhY2Ugd2l0aCB0ZW1wbGF0ZXMgc2hvdWxkIGNvbnRhaW4gdmFsaWQgdmFyaWFibGVzOiAke25hbWVzcGFjZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVwaXNvZGljIHJlZmxlY3Rpb24gY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIHJlZmxlY3Rpb24gY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVSZWZsZWN0aW9uQ29uZmlndXJhdGlvbiA9IChjb25maWc6IEVwaXNvZGljUmVmbGVjdGlvbkNvbmZpZ3VyYXRpb24pOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgbmFtZXNwYWNlcyBhcnJheSBpcyBub3QgZW1wdHlcbiAgICBpZiAoIWNvbmZpZy5uYW1lc3BhY2VzIHx8IGNvbmZpZy5uYW1lc3BhY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZXJyb3JzLnB1c2goJ1JlZmxlY3Rpb24gY29uZmlndXJhdGlvbiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5hbWVzcGFjZScpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGVhY2ggbmFtZXNwYWNlIGluIHJlZmxlY3Rpb24gY29uZmlndXJhdGlvblxuICAgIGlmIChjb25maWcubmFtZXNwYWNlcykge1xuICAgICAgZXJyb3JzLnB1c2goLi4udGhpcy5fdmFsaWRhdGVNZW1vcnlTdHJhdGVneU5hbWVzcGFjZXMoY29uZmlnLm5hbWVzcGFjZXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xufVxuIl19
|
|
@@ -86,7 +86,7 @@ const DEFAULT_TOKEN_BASED_TRIGGER = 100;
|
|
|
86
86
|
* Use AgentCore memory for event storage with custom triggers. Define memory processing logic in your own environment.
|
|
87
87
|
*/
|
|
88
88
|
class SelfManagedMemoryStrategy {
|
|
89
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.
|
|
89
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.237.0-alpha.0" };
|
|
90
90
|
name;
|
|
91
91
|
description;
|
|
92
92
|
strategyType;
|
|
@@ -8,7 +8,7 @@ const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
|
8
8
|
* Abstract base class for network configuration.
|
|
9
9
|
*/
|
|
10
10
|
class NetworkConfiguration {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.237.0-alpha.0" };
|
|
12
12
|
/**
|
|
13
13
|
* The network mode to use.
|
|
14
14
|
* Configure the security level for agent
|
|
@@ -87,7 +87,7 @@ exports.NetworkConfiguration = NetworkConfiguration;
|
|
|
87
87
|
* Network configuration for the Browser tool.
|
|
88
88
|
*/
|
|
89
89
|
class BrowserNetworkConfiguration extends NetworkConfiguration {
|
|
90
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.
|
|
90
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.237.0-alpha.0" };
|
|
91
91
|
/**
|
|
92
92
|
* Creates a public network configuration. PUBLIC is the default network mode.
|
|
93
93
|
* @returns A BrowserNetworkConfiguration.
|
|
@@ -133,7 +133,7 @@ exports.BrowserNetworkConfiguration = BrowserNetworkConfiguration;
|
|
|
133
133
|
* Network configuration for the Code Interpreter tool.
|
|
134
134
|
*/
|
|
135
135
|
class CodeInterpreterNetworkConfiguration extends NetworkConfiguration {
|
|
136
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.
|
|
136
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.237.0-alpha.0" };
|
|
137
137
|
/**
|
|
138
138
|
* Creates a public network configuration.
|
|
139
139
|
* @returns A CodeInterpreterNetworkConfiguration.
|
|
@@ -187,7 +187,7 @@ exports.CodeInterpreterNetworkConfiguration = CodeInterpreterNetworkConfiguratio
|
|
|
187
187
|
* Network configuration for the Runtime.
|
|
188
188
|
*/
|
|
189
189
|
class RuntimeNetworkConfiguration extends NetworkConfiguration {
|
|
190
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.
|
|
190
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.237.0-alpha.0" };
|
|
191
191
|
/**
|
|
192
192
|
* Creates a public network configuration. PUBLIC is the default network mode.
|
|
193
193
|
* @returns A RuntimeNetworkConfiguration.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
import { CfnRuntime } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
14
|
+
import { CustomClaimOperator } from '../../common/types';
|
|
15
|
+
/**
|
|
16
|
+
* Represents a custom claim validation configuration for Runtime JWT authorizers.
|
|
17
|
+
* Custom claims allow you to validate additional fields in JWT tokens beyond
|
|
18
|
+
* the standard audience, client, and scope validations.
|
|
19
|
+
*/
|
|
20
|
+
export declare class RuntimeCustomClaim {
|
|
21
|
+
private readonly name;
|
|
22
|
+
private readonly valueType;
|
|
23
|
+
private readonly operator;
|
|
24
|
+
private readonly value;
|
|
25
|
+
/**
|
|
26
|
+
* Create a custom claim with a string value.
|
|
27
|
+
* String claims must use the EQUALS operator.
|
|
28
|
+
*
|
|
29
|
+
* @param name The name of the claim in the JWT token
|
|
30
|
+
* @param value The string value to match (must exactly equal)
|
|
31
|
+
* @returns A RuntimeCustomClaim configured for string validation
|
|
32
|
+
*/
|
|
33
|
+
static withStringValue(name: string, value: string): RuntimeCustomClaim;
|
|
34
|
+
/**
|
|
35
|
+
* Create a custom claim with a string array value.
|
|
36
|
+
* String array claims can use CONTAINS (default) or CONTAINS_ANY operator.
|
|
37
|
+
*
|
|
38
|
+
* @param name The name of the claim in the JWT token
|
|
39
|
+
* @param values The array of string values to match. For CONTAINS operator, must contain exactly one value.
|
|
40
|
+
* @param operator The match operator (defaults to CONTAINS)
|
|
41
|
+
* @returns A RuntimeCustomClaim configured for string array validation
|
|
42
|
+
*/
|
|
43
|
+
static withStringArrayValue(name: string, values: string[], operator?: CustomClaimOperator): RuntimeCustomClaim;
|
|
44
|
+
private constructor();
|
|
45
|
+
/**
|
|
46
|
+
* Render the custom claim as a CloudFormation property
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
_render(): CfnRuntime.CustomClaimValidationTypeProperty;
|
|
50
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuntimeCustomClaim = void 0;
|
|
4
|
+
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
10
|
+
* with the License. A copy of the License is located at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
15
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
16
|
+
* and limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
19
|
+
const types_1 = require("../../common/types");
|
|
20
|
+
const validation_helpers_1 = require("../validation-helpers");
|
|
21
|
+
/**
|
|
22
|
+
* Represents a custom claim validation configuration for Runtime JWT authorizers.
|
|
23
|
+
* Custom claims allow you to validate additional fields in JWT tokens beyond
|
|
24
|
+
* the standard audience, client, and scope validations.
|
|
25
|
+
*/
|
|
26
|
+
class RuntimeCustomClaim {
|
|
27
|
+
name;
|
|
28
|
+
valueType;
|
|
29
|
+
operator;
|
|
30
|
+
value;
|
|
31
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeCustomClaim", version: "2.237.0-alpha.0" };
|
|
32
|
+
/**
|
|
33
|
+
* Create a custom claim with a string value.
|
|
34
|
+
* String claims must use the EQUALS operator.
|
|
35
|
+
*
|
|
36
|
+
* @param name The name of the claim in the JWT token
|
|
37
|
+
* @param value The string value to match (must exactly equal)
|
|
38
|
+
* @returns A RuntimeCustomClaim configured for string validation
|
|
39
|
+
*/
|
|
40
|
+
static withStringValue(name, value) {
|
|
41
|
+
return new RuntimeCustomClaim(name, types_1.CustomClaimValueType.STRING, types_1.CustomClaimOperator.EQUALS, value);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a custom claim with a string array value.
|
|
45
|
+
* String array claims can use CONTAINS (default) or CONTAINS_ANY operator.
|
|
46
|
+
*
|
|
47
|
+
* @param name The name of the claim in the JWT token
|
|
48
|
+
* @param values The array of string values to match. For CONTAINS operator, must contain exactly one value.
|
|
49
|
+
* @param operator The match operator (defaults to CONTAINS)
|
|
50
|
+
* @returns A RuntimeCustomClaim configured for string array validation
|
|
51
|
+
*/
|
|
52
|
+
static withStringArrayValue(name, values, operator = types_1.CustomClaimOperator.CONTAINS) {
|
|
53
|
+
try {
|
|
54
|
+
jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_CustomClaimOperator(operator);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
58
|
+
Error.captureStackTrace(error, this.withStringArrayValue);
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
// Validate operator is valid for STRING_ARRAY type
|
|
63
|
+
if (operator !== types_1.CustomClaimOperator.CONTAINS && operator !== types_1.CustomClaimOperator.CONTAINS_ANY) {
|
|
64
|
+
throw new validation_helpers_1.ValidationError(`Custom claim '${name}': STRING_ARRAY type only supports CONTAINS or CONTAINS_ANY operators, got ${operator}`);
|
|
65
|
+
}
|
|
66
|
+
return new RuntimeCustomClaim(name, types_1.CustomClaimValueType.STRING_ARRAY, operator, values);
|
|
67
|
+
}
|
|
68
|
+
constructor(name, valueType, operator, value) {
|
|
69
|
+
this.name = name;
|
|
70
|
+
this.valueType = valueType;
|
|
71
|
+
this.operator = operator;
|
|
72
|
+
this.value = value;
|
|
73
|
+
if (aws_cdk_lib_1.Token.isUnresolved(value)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Validate that value matches the valueType
|
|
77
|
+
if (valueType === types_1.CustomClaimValueType.STRING && typeof value !== 'string') {
|
|
78
|
+
throw new validation_helpers_1.ValidationError(`Custom claim '${name}': STRING type requires a string value, got ${typeof value}`);
|
|
79
|
+
}
|
|
80
|
+
if (valueType === types_1.CustomClaimValueType.STRING_ARRAY && !Array.isArray(value)) {
|
|
81
|
+
throw new validation_helpers_1.ValidationError(`Custom claim '${name}': STRING_ARRAY type requires an array value, got ${typeof value}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Render the custom claim as a CloudFormation property
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
_render() {
|
|
89
|
+
// Build the claim match value based on operator and value type
|
|
90
|
+
let claimMatchValue;
|
|
91
|
+
if (this.valueType === types_1.CustomClaimValueType.STRING) {
|
|
92
|
+
// STRING type always uses matchValueString with EQUALS operator
|
|
93
|
+
claimMatchValue = {
|
|
94
|
+
matchValueString: this.value,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// STRING_ARRAY type: CONTAINS uses matchValueString, CONTAINS_ANY uses matchValueStringList
|
|
99
|
+
if (this.operator === types_1.CustomClaimOperator.CONTAINS) {
|
|
100
|
+
// CONTAINS requires a single string value (check if claim array contains this string)
|
|
101
|
+
const values = this.value;
|
|
102
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(values[0]) && values.length !== 1) {
|
|
103
|
+
throw new validation_helpers_1.ValidationError(`Custom claim '${this.name}': CONTAINS operator requires exactly one value, got ${values.length} values`);
|
|
104
|
+
}
|
|
105
|
+
claimMatchValue = {
|
|
106
|
+
matchValueString: values[0],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// CONTAINS_ANY uses matchValueStringList
|
|
111
|
+
claimMatchValue = {
|
|
112
|
+
matchValueStringList: this.value,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
inboundTokenClaimName: this.name,
|
|
118
|
+
inboundTokenClaimValueType: this.valueType,
|
|
119
|
+
authorizingClaimMatchValue: {
|
|
120
|
+
claimMatchOperator: this.operator,
|
|
121
|
+
claimMatchValue: claimMatchValue,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.RuntimeCustomClaim = RuntimeCustomClaim;
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLWNsYWltLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0M7QUFFcEMsOENBQStFO0FBQy9FLDhEQUF3RDtBQUV4RDs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBa0I7SUFxQ1Y7SUFDQTtJQUNBO0lBQ0E7O0lBdkNuQjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN2RCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLDRCQUFvQixDQUFDLE1BQU0sRUFBRSwyQkFBbUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDckc7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsSUFBWSxFQUNaLE1BQWdCLEVBQ2hCLFdBQWdDLDJCQUFtQixDQUFDLFFBQVE7Ozs7Ozs7Ozs7UUFFNUQsbURBQW1EO1FBQ25ELElBQUksUUFBUSxLQUFLLDJCQUFtQixDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssMkJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0YsTUFBTSxJQUFJLG9DQUFlLENBQ3ZCLGlCQUFpQixJQUFJLDhFQUE4RSxRQUFRLEVBQUUsQ0FDOUcsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLDRCQUFvQixDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDMUY7SUFFRCxZQUNtQixJQUFZLEVBQ1osU0FBK0IsRUFDL0IsUUFBNkIsRUFDN0IsS0FBd0I7UUFIeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzdCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBRXpDLElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUNELDRDQUE0QztRQUM1QyxJQUFJLFNBQVMsS0FBSyw0QkFBb0IsQ0FBQyxNQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0UsTUFBTSxJQUFJLG9DQUFlLENBQUMsaUJBQWlCLElBQUksK0NBQStDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssNEJBQW9CLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdFLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLGlCQUFpQixJQUFJLHFEQUFxRCxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEgsQ0FBQztLQUNGO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTztRQUNaLCtEQUErRDtRQUMvRCxJQUFJLGVBQXVELENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLDRCQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELGdFQUFnRTtZQUNoRSxlQUFlLEdBQUc7Z0JBQ2hCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFlO2FBQ3ZDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLDRGQUE0RjtZQUM1RixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssMkJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25ELHNGQUFzRjtnQkFDdEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQWlCLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMxRCxNQUFNLElBQUksb0NBQWUsQ0FDdkIsaUJBQWlCLElBQUksQ0FBQyxJQUFJLHdEQUF3RCxNQUFNLENBQUMsTUFBTSxTQUFTLENBQ3pHLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxlQUFlLEdBQUc7b0JBQ2hCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzVCLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04seUNBQXlDO2dCQUN6QyxlQUFlLEdBQUc7b0JBQ2hCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFpQjtpQkFDN0MsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTztZQUNMLHFCQUFxQixFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxTQUFTO1lBQzFDLDBCQUEwQixFQUFFO2dCQUMxQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDakMsZUFBZSxFQUFFLGVBQWU7YUFDakM7U0FDRixDQUFDO0tBQ0g7O0FBL0ZILGdEQWdHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IEN1c3RvbUNsYWltT3BlcmF0b3IsIEN1c3RvbUNsYWltVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGN1c3RvbSBjbGFpbSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIFJ1bnRpbWUgSldUIGF1dGhvcml6ZXJzLlxuICogQ3VzdG9tIGNsYWltcyBhbGxvdyB5b3UgdG8gdmFsaWRhdGUgYWRkaXRpb25hbCBmaWVsZHMgaW4gSldUIHRva2VucyBiZXlvbmRcbiAqIHRoZSBzdGFuZGFyZCBhdWRpZW5jZSwgY2xpZW50LCBhbmQgc2NvcGUgdmFsaWRhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ3VzdG9tQ2xhaW0ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIGNsYWltIHdpdGggYSBzdHJpbmcgdmFsdWUuXG4gICAqIFN0cmluZyBjbGFpbXMgbXVzdCB1c2UgdGhlIEVRVUFMUyBvcGVyYXRvci5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNsYWltIGluIHRoZSBKV1QgdG9rZW5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgdG8gbWF0Y2ggKG11c3QgZXhhY3RseSBlcXVhbClcbiAgICogQHJldHVybnMgQSBSdW50aW1lQ3VzdG9tQ2xhaW0gY29uZmlndXJlZCBmb3Igc3RyaW5nIHZhbGlkYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFJ1bnRpbWVDdXN0b21DbGFpbSB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ3VzdG9tQ2xhaW0obmFtZSwgQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUuU1RSSU5HLCBDdXN0b21DbGFpbU9wZXJhdG9yLkVRVUFMUywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSBjbGFpbSB3aXRoIGEgc3RyaW5nIGFycmF5IHZhbHVlLlxuICAgKiBTdHJpbmcgYXJyYXkgY2xhaW1zIGNhbiB1c2UgQ09OVEFJTlMgKGRlZmF1bHQpIG9yIENPTlRBSU5TX0FOWSBvcGVyYXRvci5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNsYWltIGluIHRoZSBKV1QgdG9rZW5cbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyB0byBtYXRjaC4gRm9yIENPTlRBSU5TIG9wZXJhdG9yLCBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgdmFsdWUuXG4gICAqIEBwYXJhbSBvcGVyYXRvciBUaGUgbWF0Y2ggb3BlcmF0b3IgKGRlZmF1bHRzIHRvIENPTlRBSU5TKVxuICAgKiBAcmV0dXJucyBBIFJ1bnRpbWVDdXN0b21DbGFpbSBjb25maWd1cmVkIGZvciBzdHJpbmcgYXJyYXkgdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoU3RyaW5nQXJyYXlWYWx1ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSxcbiAgICBvcGVyYXRvcjogQ3VzdG9tQ2xhaW1PcGVyYXRvciA9IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlMsXG4gICk6IFJ1bnRpbWVDdXN0b21DbGFpbSB7XG4gICAgLy8gVmFsaWRhdGUgb3BlcmF0b3IgaXMgdmFsaWQgZm9yIFNUUklOR19BUlJBWSB0eXBlXG4gICAgaWYgKG9wZXJhdG9yICE9PSBDdXN0b21DbGFpbU9wZXJhdG9yLkNPTlRBSU5TICYmIG9wZXJhdG9yICE9PSBDdXN0b21DbGFpbU9wZXJhdG9yLkNPTlRBSU5TX0FOWSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEN1c3RvbSBjbGFpbSAnJHtuYW1lfSc6IFNUUklOR19BUlJBWSB0eXBlIG9ubHkgc3VwcG9ydHMgQ09OVEFJTlMgb3IgQ09OVEFJTlNfQU5ZIG9wZXJhdG9ycywgZ290ICR7b3BlcmF0b3J9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUnVudGltZUN1c3RvbUNsYWltKG5hbWUsIEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklOR19BUlJBWSwgb3BlcmF0b3IsIHZhbHVlcyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWVUeXBlOiBDdXN0b21DbGFpbVZhbHVlVHlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZXJhdG9yOiBDdXN0b21DbGFpbU9wZXJhdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBWYWxpZGF0ZSB0aGF0IHZhbHVlIG1hdGNoZXMgdGhlIHZhbHVlVHlwZVxuICAgIGlmICh2YWx1ZVR5cGUgPT09IEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklORyAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBDdXN0b20gY2xhaW0gJyR7bmFtZX0nOiBTVFJJTkcgdHlwZSByZXF1aXJlcyBhIHN0cmluZyB2YWx1ZSwgZ290ICR7dHlwZW9mIHZhbHVlfWApO1xuICAgIH1cbiAgICBpZiAodmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkdfQVJSQVkgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBDdXN0b20gY2xhaW0gJyR7bmFtZX0nOiBTVFJJTkdfQVJSQVkgdHlwZSByZXF1aXJlcyBhbiBhcnJheSB2YWx1ZSwgZ290ICR7dHlwZW9mIHZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGN1c3RvbSBjbGFpbSBhcyBhIENsb3VkRm9ybWF0aW9uIHByb3BlcnR5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuUnVudGltZS5DdXN0b21DbGFpbVZhbGlkYXRpb25UeXBlUHJvcGVydHkge1xuICAgIC8vIEJ1aWxkIHRoZSBjbGFpbSBtYXRjaCB2YWx1ZSBiYXNlZCBvbiBvcGVyYXRvciBhbmQgdmFsdWUgdHlwZVxuICAgIGxldCBjbGFpbU1hdGNoVmFsdWU6IENmblJ1bnRpbWUuQ2xhaW1NYXRjaFZhbHVlVHlwZVByb3BlcnR5O1xuICAgIGlmICh0aGlzLnZhbHVlVHlwZSA9PT0gQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUuU1RSSU5HKSB7XG4gICAgICAvLyBTVFJJTkcgdHlwZSBhbHdheXMgdXNlcyBtYXRjaFZhbHVlU3RyaW5nIHdpdGggRVFVQUxTIG9wZXJhdG9yXG4gICAgICBjbGFpbU1hdGNoVmFsdWUgPSB7XG4gICAgICAgIG1hdGNoVmFsdWVTdHJpbmc6IHRoaXMudmFsdWUgYXMgc3RyaW5nLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU1RSSU5HX0FSUkFZIHR5cGU6IENPTlRBSU5TIHVzZXMgbWF0Y2hWYWx1ZVN0cmluZywgQ09OVEFJTlNfQU5ZIHVzZXMgbWF0Y2hWYWx1ZVN0cmluZ0xpc3RcbiAgICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSBDdXN0b21DbGFpbU9wZXJhdG9yLkNPTlRBSU5TKSB7XG4gICAgICAgIC8vIENPTlRBSU5TIHJlcXVpcmVzIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSAoY2hlY2sgaWYgY2xhaW0gYXJyYXkgY29udGFpbnMgdGhpcyBzdHJpbmcpXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWUgYXMgc3RyaW5nW107XG4gICAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlc1swXSkgJiYgdmFsdWVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgQ3VzdG9tIGNsYWltICcke3RoaXMubmFtZX0nOiBDT05UQUlOUyBvcGVyYXRvciByZXF1aXJlcyBleGFjdGx5IG9uZSB2YWx1ZSwgZ290ICR7dmFsdWVzLmxlbmd0aH0gdmFsdWVzYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNsYWltTWF0Y2hWYWx1ZSA9IHtcbiAgICAgICAgICBtYXRjaFZhbHVlU3RyaW5nOiB2YWx1ZXNbMF0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDT05UQUlOU19BTlkgdXNlcyBtYXRjaFZhbHVlU3RyaW5nTGlzdFxuICAgICAgICBjbGFpbU1hdGNoVmFsdWUgPSB7XG4gICAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZ0xpc3Q6IHRoaXMudmFsdWUgYXMgc3RyaW5nW10sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGluYm91bmRUb2tlbkNsYWltTmFtZTogdGhpcy5uYW1lLFxuICAgICAgaW5ib3VuZFRva2VuQ2xhaW1WYWx1ZVR5cGU6IHRoaXMudmFsdWVUeXBlLFxuICAgICAgYXV0aG9yaXppbmdDbGFpbU1hdGNoVmFsdWU6IHtcbiAgICAgICAgY2xhaW1NYXRjaE9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yLFxuICAgICAgICBjbGFpbU1hdGNoVmFsdWU6IGNsYWltTWF0Y2hWYWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { CfnRuntime } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
14
14
|
import { IUserPool, IUserPoolClient } from 'aws-cdk-lib/aws-cognito';
|
|
15
|
+
import { RuntimeCustomClaim } from './custom-claim';
|
|
15
16
|
/**
|
|
16
17
|
* Abstract base class for runtime authorizer configurations.
|
|
17
18
|
* Provides static factory methods to create different authentication types.
|
|
@@ -31,9 +32,11 @@ export declare abstract class RuntimeAuthorizerConfiguration {
|
|
|
31
32
|
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
32
33
|
* @param allowedClients Optional array of allowed client IDs
|
|
33
34
|
* @param allowedAudience Optional array of allowed audiences
|
|
35
|
+
* @param allowedScopes Optional array of allowed scopes
|
|
36
|
+
* @param customClaims Optional array of custom claim validations
|
|
34
37
|
* @returns RuntimeAuthorizerConfiguration for JWT authentication
|
|
35
38
|
*/
|
|
36
|
-
static usingJWT(discoveryUrl: string, allowedClients?: string[], allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
39
|
+
static usingJWT(discoveryUrl: string, allowedClients?: string[], allowedAudience?: string[], allowedScopes?: string[], customClaims?: RuntimeCustomClaim[]): RuntimeAuthorizerConfiguration;
|
|
37
40
|
/**
|
|
38
41
|
* Use AWS Cognito User Pool authentication.
|
|
39
42
|
* Validates Cognito-issued JWT tokens.
|
|
@@ -41,9 +44,11 @@ export declare abstract class RuntimeAuthorizerConfiguration {
|
|
|
41
44
|
* @param userPool The Cognito User Pool
|
|
42
45
|
* @param userPoolClients The Cognito User Pool App Clients
|
|
43
46
|
* @param allowedAudience Optional array of allowed audiences
|
|
47
|
+
* @param allowedScopes Optional array of allowed scopes
|
|
48
|
+
* @param customClaims Optional array of custom claim validations
|
|
44
49
|
* @returns RuntimeAuthorizerConfiguration for Cognito authentication
|
|
45
50
|
*/
|
|
46
|
-
static usingCognito(userPool: IUserPool, userPoolClients: IUserPoolClient[], allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
51
|
+
static usingCognito(userPool: IUserPool, userPoolClients: IUserPoolClient[], allowedAudience?: string[], allowedScopes?: string[], customClaims?: RuntimeCustomClaim[]): RuntimeAuthorizerConfiguration;
|
|
47
52
|
/**
|
|
48
53
|
* Use OAuth 2.0 authentication.
|
|
49
54
|
* Supports various OAuth providers.
|
|
@@ -51,9 +56,11 @@ export declare abstract class RuntimeAuthorizerConfiguration {
|
|
|
51
56
|
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
52
57
|
* @param clientId OAuth client ID
|
|
53
58
|
* @param allowedAudience Optional array of allowed audiences
|
|
59
|
+
* @param allowedScopes Optional array of allowed scopes
|
|
60
|
+
* @param customClaims Optional array of custom claim validations
|
|
54
61
|
* @returns RuntimeAuthorizerConfiguration for OAuth authentication
|
|
55
62
|
*/
|
|
56
|
-
static usingOAuth(discoveryUrl: string, clientId: string, allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
63
|
+
static usingOAuth(discoveryUrl: string, clientId: string, allowedAudience?: string[], allowedScopes?: string[], customClaims?: RuntimeCustomClaim[]): RuntimeAuthorizerConfiguration;
|
|
57
64
|
/**
|
|
58
65
|
* Render the authorizer configuration for CloudFormation
|
|
59
66
|
* @internal
|