cdktn 0.26.0-pre.2 → 0.26.0-pre.21
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 +1200 -1116
- package/eslint.config.mjs +18 -7
- package/jest.config.js +0 -1
- package/lib/_tokens.d.ts +7 -0
- package/lib/_tokens.js +8 -2
- package/lib/annotations.js +1 -1
- package/lib/app.js +8 -4
- package/lib/aspect.js +1 -1
- package/lib/asset-hash.js +1 -1
- package/lib/asset-staging.js +1 -1
- package/lib/assets.js +4 -4
- package/lib/backends/azurerm-backend.d.ts +6 -0
- package/lib/backends/azurerm-backend.js +9 -5
- package/lib/backends/cloud-backend.js +4 -4
- package/lib/backends/consul-backend.d.ts +6 -0
- package/lib/backends/consul-backend.js +9 -5
- package/lib/backends/cos-backend.d.ts +6 -0
- package/lib/backends/cos-backend.js +9 -5
- package/lib/backends/gcs-backend.d.ts +6 -0
- package/lib/backends/gcs-backend.js +9 -5
- package/lib/backends/http-backend.d.ts +6 -0
- package/lib/backends/http-backend.js +9 -5
- package/lib/backends/local-backend.d.ts +6 -0
- package/lib/backends/local-backend.js +9 -5
- package/lib/backends/oss-backend.d.ts +6 -0
- package/lib/backends/oss-backend.js +9 -5
- package/lib/backends/pg-backend.d.ts +6 -0
- package/lib/backends/pg-backend.js +9 -5
- package/lib/backends/remote-backend.d.ts +12 -0
- package/lib/backends/remote-backend.js +17 -9
- package/lib/backends/s3-backend.d.ts +6 -0
- package/lib/backends/s3-backend.js +9 -5
- package/lib/backends/swift-backend.js +2 -2
- package/lib/complex-computed-list.d.ts +85 -0
- package/lib/complex-computed-list.js +112 -54
- package/lib/functions/helpers.d.ts +72 -0
- package/lib/functions/helpers.js +73 -14
- package/lib/functions/provider-function.js +1 -1
- package/lib/functions/terraform-functions.generated.d.ts +3 -0
- package/lib/functions/terraform-functions.generated.js +5 -3
- package/lib/hcl/quoted-string-key.d.ts +25 -0
- package/lib/hcl/quoted-string-key.js +42 -0
- package/lib/hcl/render.js +41 -7
- package/lib/ignore-strategy.js +1 -1
- package/lib/importable-resource.js +1 -1
- package/lib/manifest.d.ts +4 -0
- package/lib/manifest.js +6 -3
- package/lib/private/unique.js +11 -3
- package/lib/resource.js +1 -1
- package/lib/runtime.d.ts +6 -0
- package/lib/runtime.js +12 -3
- package/lib/synthesize/required-version.d.ts +32 -0
- package/lib/synthesize/required-version.js +205 -0
- package/lib/synthesize/synthesizer.d.ts +13 -0
- package/lib/synthesize/synthesizer.js +42 -8
- package/lib/terraform-asset.d.ts +4 -0
- package/lib/terraform-asset.js +6 -3
- package/lib/terraform-backend.d.ts +3 -0
- package/lib/terraform-backend.js +5 -3
- package/lib/terraform-conditions.js +1 -2
- package/lib/terraform-count.js +1 -1
- package/lib/terraform-data-resource.js +1 -1
- package/lib/terraform-data-source.d.ts +4 -0
- package/lib/terraform-data-source.js +8 -6
- package/lib/terraform-dependable.js +1 -1
- package/lib/terraform-dynamic-block.d.ts +4 -0
- package/lib/terraform-dynamic-block.js +5 -2
- package/lib/terraform-element.d.ts +4 -0
- package/lib/terraform-element.js +6 -3
- package/lib/terraform-ephemeral-resource.d.ts +4 -0
- package/lib/terraform-ephemeral-resource.js +8 -6
- package/lib/terraform-functions.d.ts +4 -0
- package/lib/terraform-functions.js +10 -5
- package/lib/terraform-hcl-module.d.ts +4 -0
- package/lib/terraform-hcl-module.js +6 -3
- package/lib/terraform-iterator.d.ts +19 -0
- package/lib/terraform-iterator.js +25 -11
- package/lib/terraform-local.d.ts +4 -0
- package/lib/terraform-local.js +6 -3
- package/lib/terraform-module.js +1 -1
- package/lib/terraform-operators.js +1 -1
- package/lib/terraform-output.d.ts +5 -0
- package/lib/terraform-output.js +23 -3
- package/lib/terraform-provider.d.ts +4 -0
- package/lib/terraform-provider.js +6 -3
- package/lib/terraform-provisioner.js +1 -1
- package/lib/terraform-remote-state.d.ts +3 -0
- package/lib/terraform-remote-state.js +5 -3
- package/lib/terraform-resource-targets.js +1 -1
- package/lib/terraform-resource.d.ts +5 -1
- package/lib/terraform-resource.js +16 -9
- package/lib/terraform-stack.d.ts +4 -0
- package/lib/terraform-stack.js +28 -9
- package/lib/terraform-variable.d.ts +7 -0
- package/lib/terraform-variable.js +16 -7
- package/lib/testing/adapters/jest.d.ts +3 -0
- package/lib/testing/adapters/jest.js +10 -1
- package/lib/testing/index.js +14 -4
- package/lib/testing/matchers.js +61 -19
- package/lib/tfExpression.d.ts +50 -0
- package/lib/tfExpression.js +114 -33
- package/lib/tokens/lazy.d.ts +4 -0
- package/lib/tokens/lazy.js +21 -8
- package/lib/tokens/private/dependency.js +2 -6
- package/lib/tokens/private/resolve.js +3 -3
- package/lib/tokens/private/stack-trace.d.ts +1 -1
- package/lib/tokens/private/stack-trace.js +1 -2
- package/lib/tokens/resolvable.js +2 -2
- package/lib/tokens/string-fragments.js +4 -4
- package/lib/tokens/token.js +2 -2
- package/lib/upgrade-id-aspect.js +1 -1
- package/lib/util.d.ts +0 -1
- package/lib/util.js +4 -4
- package/lib/validations/target-versions.d.ts +12 -0
- package/lib/validations/target-versions.js +40 -1
- package/package.json +112 -109
|
@@ -5,19 +5,91 @@ type TFValue<T> = {
|
|
|
5
5
|
};
|
|
6
6
|
type TFValueValidator<T> = (value: T) => TFValue<T>;
|
|
7
7
|
type ExecutableTfFunction = (...args: any[]) => IResolvable;
|
|
8
|
+
/**
|
|
9
|
+
* Validator that accepts any value
|
|
10
|
+
* @param value Value to validate
|
|
11
|
+
* @returns The wrapped value
|
|
12
|
+
*/
|
|
8
13
|
export declare function anyValue<T>(value: T): TFValue<T>;
|
|
14
|
+
/**
|
|
15
|
+
* Validator for map values; accepts any value without checking it
|
|
16
|
+
* @param value Value to validate
|
|
17
|
+
* @returns The wrapped value
|
|
18
|
+
*/
|
|
9
19
|
export declare function mapValue<T>(value: T): TFValue<T>;
|
|
20
|
+
/**
|
|
21
|
+
* Validator that accepts a string or a token
|
|
22
|
+
* @param value Value to validate
|
|
23
|
+
* @returns The wrapped value
|
|
24
|
+
* @throws If the value is neither a string nor a token, or is a string containing unescaped double quotes
|
|
25
|
+
*/
|
|
10
26
|
export declare function stringValue<T extends string>(value: T): TFValue<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Validator that accepts a number or a token
|
|
29
|
+
* @param value Value to validate
|
|
30
|
+
* @returns The wrapped value
|
|
31
|
+
* @throws If the value is neither a number nor a token
|
|
32
|
+
*/
|
|
11
33
|
export declare function numericValue<T>(value: T): TFValue<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a validator for lists whose elements are checked with the given element validator. Tokens and non-array
|
|
36
|
+
* values pass through unchanged; `null`/`undefined` elements are dropped, token elements are kept as-is and plain
|
|
37
|
+
* string elements are wrapped in double quotes.
|
|
38
|
+
* @param type Validator applied to each non-token element
|
|
39
|
+
* @returns A list validator that throws if an element fails the element validator
|
|
40
|
+
*/
|
|
12
41
|
export declare function listOf<T>(type: TFValueValidator<T>): TFValueValidator<T[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a validator for a variadic argument: validates the value as a list and marks it to be expanded into
|
|
44
|
+
* separate arguments of the Terraform function call
|
|
45
|
+
* @param type Validator applied to each element
|
|
46
|
+
* @returns A validator for the variadic argument
|
|
47
|
+
*/
|
|
13
48
|
export declare function variadic<T>(type: TFValueValidator<T>): TFValueValidator<T[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Converts a resolvable into a string token
|
|
51
|
+
* @param value Resolvable to convert
|
|
52
|
+
* @returns String token
|
|
53
|
+
*/
|
|
14
54
|
export declare function asString(value: IResolvable): string;
|
|
55
|
+
/**
|
|
56
|
+
* Converts a resolvable into a number token
|
|
57
|
+
* @param value Resolvable to convert
|
|
58
|
+
* @returns Number token
|
|
59
|
+
*/
|
|
15
60
|
export declare function asNumber(value: IResolvable): number;
|
|
61
|
+
/**
|
|
62
|
+
* Converts a resolvable into a string list token
|
|
63
|
+
* @param value Resolvable to convert
|
|
64
|
+
* @returns String list token
|
|
65
|
+
*/
|
|
16
66
|
export declare function asList(value: IResolvable): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Converts a resolvable into a string map token
|
|
69
|
+
* @param value Resolvable to convert
|
|
70
|
+
* @returns String map token
|
|
71
|
+
*/
|
|
17
72
|
export declare function asStringMap(value: IResolvable): {
|
|
18
73
|
[key: string]: string;
|
|
19
74
|
};
|
|
75
|
+
/**
|
|
76
|
+
* Returns the resolvable unchanged, as booleans can not be represented as a token
|
|
77
|
+
* @param value Resolvable to return
|
|
78
|
+
* @returns The same resolvable
|
|
79
|
+
*/
|
|
20
80
|
export declare function asBoolean(value: IResolvable): IResolvable;
|
|
81
|
+
/**
|
|
82
|
+
* Converts a resolvable into a string token typed as `any`
|
|
83
|
+
* @param value Resolvable to convert
|
|
84
|
+
* @returns String token typed as `any`
|
|
85
|
+
*/
|
|
21
86
|
export declare function asAny(value: IResolvable): any;
|
|
87
|
+
/**
|
|
88
|
+
* Creates a function that validates its arguments and returns a Terraform function call expression
|
|
89
|
+
* @param name Name of the Terraform function
|
|
90
|
+
* @param argValidators Validators for each positional argument
|
|
91
|
+
* @returns A function returning the call expression; it throws if the number of arguments does not match the
|
|
92
|
+
* validators or an argument fails validation
|
|
93
|
+
*/
|
|
22
94
|
export declare function terraformFunction(name: string, argValidators: TFValueValidator<any>[]): ExecutableTfFunction;
|
|
23
95
|
export {};
|
package/lib/functions/helpers.js
CHANGED
|
@@ -28,15 +28,28 @@ function hasUnescapedDoubleQuotes(str) {
|
|
|
28
28
|
return /(^|[^\\])([\\]{2})*"/.test(str);
|
|
29
29
|
}
|
|
30
30
|
// Validators
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Validator that accepts any value
|
|
33
|
+
* @param value Value to validate
|
|
34
|
+
* @returns The wrapped value
|
|
35
|
+
*/
|
|
32
36
|
function anyValue(value) {
|
|
33
37
|
return { value };
|
|
34
38
|
}
|
|
35
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Validator for map values; accepts any value without checking it
|
|
41
|
+
* @param value Value to validate
|
|
42
|
+
* @returns The wrapped value
|
|
43
|
+
*/
|
|
36
44
|
function mapValue(value) {
|
|
37
45
|
return { value };
|
|
38
46
|
}
|
|
39
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Validator that accepts a string or a token
|
|
49
|
+
* @param value Value to validate
|
|
50
|
+
* @returns The wrapped value
|
|
51
|
+
* @throws If the value is neither a string nor a token, or is a string containing unescaped double quotes
|
|
52
|
+
*/
|
|
40
53
|
function stringValue(value) {
|
|
41
54
|
if (typeof value !== "string" && !token_1.Tokenization.isResolvable(value)) {
|
|
42
55
|
throw (0, errors_1.valueIsInvalidStringOrToken)(value);
|
|
@@ -46,14 +59,25 @@ function stringValue(value) {
|
|
|
46
59
|
}
|
|
47
60
|
return { value };
|
|
48
61
|
}
|
|
49
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Validator that accepts a number or a token
|
|
64
|
+
* @param value Value to validate
|
|
65
|
+
* @returns The wrapped value
|
|
66
|
+
* @throws If the value is neither a number nor a token
|
|
67
|
+
*/
|
|
50
68
|
function numericValue(value) {
|
|
51
69
|
if (typeof value !== "number" && !token_1.Tokenization.isResolvable(value)) {
|
|
52
70
|
throw (0, errors_1.valueIsInvalidNumberOrToken)(value);
|
|
53
71
|
}
|
|
54
72
|
return { value };
|
|
55
73
|
}
|
|
56
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Creates a validator for lists whose elements are checked with the given element validator. Tokens and non-array
|
|
76
|
+
* values pass through unchanged; `null`/`undefined` elements are dropped, token elements are kept as-is and plain
|
|
77
|
+
* string elements are wrapped in double quotes.
|
|
78
|
+
* @param type Validator applied to each non-token element
|
|
79
|
+
* @returns A list validator that throws if an element fails the element validator
|
|
80
|
+
*/
|
|
57
81
|
function listOf(type) {
|
|
58
82
|
return (value) => {
|
|
59
83
|
if (token_1.Tokenization.isResolvable(value)) {
|
|
@@ -97,7 +121,12 @@ function listOf(type) {
|
|
|
97
121
|
};
|
|
98
122
|
};
|
|
99
123
|
}
|
|
100
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Creates a validator for a variadic argument: validates the value as a list and marks it to be expanded into
|
|
126
|
+
* separate arguments of the Terraform function call
|
|
127
|
+
* @param type Validator applied to each element
|
|
128
|
+
* @returns A validator for the variadic argument
|
|
129
|
+
*/
|
|
101
130
|
function variadic(type) {
|
|
102
131
|
return (value) => {
|
|
103
132
|
// we use the list validator and set variadic to true in order to have it expanded in the args passed to the TF function
|
|
@@ -105,27 +134,51 @@ function variadic(type) {
|
|
|
105
134
|
};
|
|
106
135
|
}
|
|
107
136
|
// Tokenization
|
|
108
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Converts a resolvable into a string token
|
|
139
|
+
* @param value Resolvable to convert
|
|
140
|
+
* @returns String token
|
|
141
|
+
*/
|
|
109
142
|
function asString(value) {
|
|
110
143
|
return token_1.Token.asString(value);
|
|
111
144
|
}
|
|
112
|
-
|
|
145
|
+
/**
|
|
146
|
+
* Converts a resolvable into a number token
|
|
147
|
+
* @param value Resolvable to convert
|
|
148
|
+
* @returns Number token
|
|
149
|
+
*/
|
|
113
150
|
function asNumber(value) {
|
|
114
151
|
return token_1.Token.asNumber(value);
|
|
115
152
|
}
|
|
116
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Converts a resolvable into a string list token
|
|
155
|
+
* @param value Resolvable to convert
|
|
156
|
+
* @returns String list token
|
|
157
|
+
*/
|
|
117
158
|
function asList(value) {
|
|
118
159
|
return token_1.Token.asList(value);
|
|
119
160
|
}
|
|
120
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Converts a resolvable into a string map token
|
|
163
|
+
* @param value Resolvable to convert
|
|
164
|
+
* @returns String map token
|
|
165
|
+
*/
|
|
121
166
|
function asStringMap(value) {
|
|
122
167
|
return token_1.Token.asStringMap(value);
|
|
123
168
|
}
|
|
124
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Returns the resolvable unchanged, as booleans can not be represented as a token
|
|
171
|
+
* @param value Resolvable to return
|
|
172
|
+
* @returns The same resolvable
|
|
173
|
+
*/
|
|
125
174
|
function asBoolean(value) {
|
|
126
175
|
return value; // Booleans can not be represented as a token
|
|
127
176
|
}
|
|
128
|
-
|
|
177
|
+
/**
|
|
178
|
+
* Converts a resolvable into a string token typed as `any`
|
|
179
|
+
* @param value Resolvable to convert
|
|
180
|
+
* @returns String token typed as `any`
|
|
181
|
+
*/
|
|
129
182
|
function asAny(value) {
|
|
130
183
|
// Ordinarily casting to any can cause issues, but
|
|
131
184
|
// in this case it makes using functions a bit easier in TS
|
|
@@ -134,7 +187,13 @@ function asAny(value) {
|
|
|
134
187
|
// so wrap as a string.
|
|
135
188
|
return asString(value);
|
|
136
189
|
}
|
|
137
|
-
|
|
190
|
+
/**
|
|
191
|
+
* Creates a function that validates its arguments and returns a Terraform function call expression
|
|
192
|
+
* @param name Name of the Terraform function
|
|
193
|
+
* @param argValidators Validators for each positional argument
|
|
194
|
+
* @returns A function returning the call expression; it throws if the number of arguments does not match the
|
|
195
|
+
* validators or an argument fails validation
|
|
196
|
+
*/
|
|
138
197
|
function terraformFunction(name, argValidators) {
|
|
139
198
|
return function (...args) {
|
|
140
199
|
if (args.length !== argValidators.length) {
|
|
@@ -157,4 +216,4 @@ function terraformFunction(name, argValidators) {
|
|
|
157
216
|
}, []));
|
|
158
217
|
};
|
|
159
218
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jdGlvbnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStCQSw0QkFFQztBQUdELDRCQUVDO0FBR0Qsa0NBVUM7QUFHRCxvQ0FLQztBQUdELHdCQWlEQztBQUdELDRCQUtDO0FBSUQsNEJBRUM7QUFHRCw0QkFFQztBQUdELHdCQUVDO0FBR0Qsa0NBRUM7QUFHRCw4QkFFQztBQUdELHNCQU9DO0FBR0QsOENBMkJDO0FBekxELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQXNEO0FBQ3RELGtEQUF1QztBQUV2Qyx5REFBNkU7QUFDN0Usc0NBT21CO0FBT25COzs7O0dBSUc7QUFDSCxTQUFTLHdCQUF3QixDQUFDLEdBQVc7SUFDM0MsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELGFBQWE7QUFDYiwrQ0FBK0M7QUFDL0MsU0FBZ0IsUUFBUSxDQUFJLEtBQVE7SUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsUUFBUSxDQUFJLEtBQVE7SUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsV0FBVyxDQUFtQixLQUFRO0lBQ3BELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsb0JBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLElBQUEsb0NBQTJCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakUsTUFBTSxJQUFBLHFDQUE0QixFQUFDLEtBQUssQ0FBQyxDQUFD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LEVBQ0osYUFBYSxDQUFDLE1BQU0sRUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBQSxtQkFBSSxFQUNULElBQUk7UUFDSixnR0FBZ0c7UUFDaEcsMEZBQTBGO1FBQzFGLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksR0FBRyxDQUFDLFFBQVE7b0JBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOztvQkFDN0MsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUEsMENBQWlDLEVBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNQLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFRva2VuaXphdGlvbiwgVG9rZW4gfSBmcm9tIFwiLi4vdG9rZW5zL3Rva2VuXCI7XG5pbXBvcnQgeyBjYWxsIH0gZnJvbSBcIi4uL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUgfSBmcm9tIFwiLi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IFRva2VuU3RyaW5nLCBleHRyYWN0VG9rZW5Eb3VibGUgfSBmcm9tIFwiLi4vdG9rZW5zL3ByaXZhdGUvZW5jb2RpbmdcIjtcbmltcG9ydCB7XG4gIGZ1bmN0aW9uQXJndW1lbnRWYWxpZGF0aW9uRmFpbHVyZSxcbiAgZnVuY3Rpb25SZWNlaXZlZFdyb25nTnVtYmVyT2ZBcmdzLFxuICBsaXN0RWxlbWVudElzT2ZXcm9uZ1R5cGUsXG4gIHZhbHVlQ29udGFpbnNVbmVzY2FwZWRRdW90ZXMsXG4gIHZhbHVlSXNJbnZhbGlkTnVtYmVyT3JUb2tlbixcbiAgdmFsdWVJc0ludmFsaWRTdHJpbmdPclRva2VuLFxufSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbnR5cGUgVEZWYWx1ZTxUPiA9IHsgdmFyaWFkaWM/OiBib29sZWFuOyB2YWx1ZTogVCB9O1xudHlwZSBURlZhbHVlVmFsaWRhdG9yPFQ+ID0gKHZhbHVlOiBUKSA9PiBURlZhbHVlPFQ+O1xuXG50eXBlIEV4ZWN1dGFibGVUZkZ1bmN0aW9uID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBJUmVzb2x2YWJsZTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGdpdmVuIHN0ciBoYXMgdW5lc2NhcGVkIGRvdWJsZSBxdW90ZXNcbiAqIEBwYXJhbSBzdHIgU3RyaW5nIHRvIHRlc3RcbiAqIEByZXR1cm5zIEJvb2xlYW5cbiAqL1xuZnVuY3Rpb24gaGFzVW5lc2NhcGVkRG91YmxlUXVvdGVzKHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiAvKF58W15cXFxcXSkoW1xcXFxdezJ9KSpcIi8udGVzdChzdHIpO1xufVxuXG4vLyBWYWxpZGF0b3JzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIGFueVZhbHVlPFQ+KHZhbHVlOiBUKTogVEZWYWx1ZTxUPiB7XG4gIHJldHVybiB7IHZhbHVlIH07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWU8VD4odmFsdWU6IFQpOiBURlZhbHVlPFQ+IHtcbiAgcmV0dXJuIHsgdmFsdWUgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdWYWx1ZTxUIGV4dGVuZHMgc3RyaW5nPih2YWx1ZTogVCk6IFRGVmFsdWU8VD4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiICYmICFUb2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgIHRocm93IHZhbHVlSXNJbnZhbGlkU3RyaW5nT3JUb2tlbih2YWx1ZSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIGhhc1VuZXNjYXBlZERvdWJsZVF1b3Rlcyh2YWx1ZSkpIHtcbiAgICB0aHJvdyB2YWx1ZUNvbnRhaW5zVW5lc2NhcGVkUXVvdGVzKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB7IHZhbHVlIH07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gbnVtZXJpY1ZhbHVlPFQ+KHZhbHVlOiBUKTogVEZWYWx1ZTxUPiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgJiYgIVRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgdGhyb3cgdmFsdWVJc0ludmFsaWROdW1iZXJPclRva2VuKHZhbHVlIGFzIHN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIHsgdmFsdWUgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBsaXN0T2Y8VD4odHlwZTogVEZWYWx1ZVZhbGlkYXRvcjxUPik6IFRGVmFsdWVWYWxpZGF0b3I8VFtdPiB7XG4gIHJldHVybiAodmFsdWU6IGFueSkgPT4ge1xuICAgIGlmIChUb2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgdmFsdWUgfTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAvLyAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgdmFsaWQgbGlzdGApO1xuICAgICAgcmV0dXJuIHsgdmFsdWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtICE9PSBudWxsKVxuICAgICAgICAubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgaWYgKFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChUb2tlblN0cmluZy5mb3JMaXN0VG9rZW4oaXRlbSkudGVzdCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXh0cmFjdFRva2VuRG91YmxlKGl0ZW0sIHRydWUpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChUb2tlblN0cmluZy5mb3JNYXBUb2tlbihpdGVtKS50ZXN0KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgdG9rZW5MaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBudW1iZXJPZlRva2VucyA9XG4gICAgICAgICAgICAgIHRva2VuTGlzdC50b2tlbnMubGVuZ3RoICsgdG9rZW5MaXN0LmludHJpbnNpYy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbnMgPT09IDEgJiYgdG9rZW5MaXN0LmxpdGVyYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdHlwZShpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIiA/IGBcIiR7aXRlbX1cImAgOiBpdGVtO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsaXN0RWxlbWVudElzT2ZXcm9uZ1R5cGUodmFsdWUsIGksIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgIH07XG4gIH07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFkaWM8VD4odHlwZTogVEZWYWx1ZVZhbGlkYXRvcjxUPik6IFRGVmFsdWVWYWxpZGF0b3I8VFtdPiB7XG4gIHJldHVybiAodmFsdWU6IGFueSkgPT4ge1xuICAgIC8vIHdlIHVzZSB0aGUgbGlzdCB2YWxpZGF0b3IgYW5kIHNldCB2YXJpYWRpYyB0byB0cnVlIGluIG9yZGVyIHRvIGhhdmUgaXQgZXhwYW5kZWQgaW4gdGhlIGFyZ3MgcGFzc2VkIHRvIHRoZSBURiBmdW5jdGlvblxuICAgIHJldHVybiB7IHZhbHVlOiBsaXN0T2YodHlwZSkodmFsdWUpLnZhbHVlLCB2YXJpYWRpYzogdHJ1ZSB9O1xuICB9O1xufVxuXG4vLyBUb2tlbml6YXRpb25cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gYXNTdHJpbmcodmFsdWU6IElSZXNvbHZhYmxlKSB7XG4gIHJldHVybiBUb2tlbi5hc1N0cmluZyh2YWx1ZSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWU6IElSZXNvbHZhYmxlKSB7XG4gIHJldHVybiBUb2tlbi5hc051bWJlcih2YWx1ZSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gYXNMaXN0KHZhbHVlOiBJUmVzb2x2YWJsZSkge1xuICByZXR1cm4gVG9rZW4uYXNMaXN0KHZhbHVlKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBhc1N0cmluZ01hcCh2YWx1ZTogSVJlc29sdmFibGUpIHtcbiAgcmV0dXJuIFRva2VuLmFzU3RyaW5nTWFwKHZhbHVlKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBhc0Jvb2xlYW4odmFsdWU6IElSZXNvbHZhYmxlKSB7XG4gIHJldHVybiB2YWx1ZTsgLy8gQm9vbGVhbnMgY2FuIG5vdCBiZSByZXByZXNlbnRlZCBhcyBhIHRva2VuXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gYXNBbnkodmFsdWU6IElSZXNvbHZhYmxlKSB7XG4gIC8vIE9yZGluYXJpbHkgY2FzdGluZyB0byBhbnkgY2FuIGNhdXNlIGlzc3VlcywgYnV0XG4gIC8vIGluIHRoaXMgY2FzZSBpdCBtYWtlcyB1c2luZyBmdW5jdGlvbnMgYSBiaXQgZWFzaWVyIGluIFRTXG4gIC8vIGFuZCBkb2Vzbid0IHJlYWxseSBoYXJtIG90aGVyIGxhbmd1YWdlcy5cbiAgLy8gSnNpaSBoYXMgaXNzdWVzIHdoZW4gcmV0dXJuaW5nIHRoZSB2YWx1ZSBkaXJlY3RseSxcbiAgLy8gc28gd3JhcCBhcyBhIHN0cmluZy5cbiAgcmV0dXJuIGFzU3RyaW5nKHZhbHVlKSBhcyBhbnk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gdGVycmFmb3JtRnVuY3Rpb24oXG4gIG5hbWU6IHN0cmluZyxcbiAgYXJnVmFsaWRhdG9yczogVEZWYWx1ZVZhbGlkYXRvcjxhbnk+W10sXG4pOiBFeGVjdXRhYmxlVGZGdW5jdGlvbiB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoYXJncy5sZW5ndGggIT09IGFyZ1ZhbGlkYXRvcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBmdW5jdGlvblJlY2VpdmVkV3JvbmdOdW1iZXJPZkFyZ3MoXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGFyZ1ZhbGlkYXRvcnMubGVuZ3RoLFxuICAgICAgICBhcmdzLmxlbmd0aCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjYWxsKFxuICAgICAgbmFtZSxcbiAgICAgIC8vIFdlIHVzZSBmbGF0TWFwIG5vdywgc2luY2UgbGlzdE9mKCkgd3JhcHMgZXZlcnl0aGluZyBpbiBhbiBleHRyYSBhcnJheSBidXQgdmFyaWFkaWMoKSBkb2VzIG5vdFxuICAgICAgLy8gVGhpcyBlbmFibGVzIHVzIHRvIGhhdmUgdmFyaWFkaWMgcGFzcyBtdWx0aXBsZSBhcmdzIGludG8gdGhlIGNhbGwoKSBmcm9tIGEgc2luZ2xlIGFycmF5XG4gICAgICBhcmdzLnJlZHVjZSgoY2FycnksIGFyZywgaSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGFyZ1ZhbGlkYXRvcnNbaV0oYXJnKTtcbiAgICAgICAgICBpZiAodmFsLnZhcmlhZGljKSByZXR1cm4gWy4uLmNhcnJ5LCAuLi52YWwudmFsdWVdO1xuICAgICAgICAgIGVsc2UgcmV0dXJuIFsuLi5jYXJyeSwgdmFsLnZhbHVlXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBmdW5jdGlvbkFyZ3VtZW50VmFsaWRhdGlvbkZhaWx1cmUoaSwgbmFtZSwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9LCBbXSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jdGlvbnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1DQSw0QkFFQztBQU9ELDRCQUVDO0FBUUQsa0NBVUM7QUFRRCxvQ0FLQztBQVNELHdCQWlEQztBQVFELDRCQUtDO0FBUUQsNEJBRUM7QUFPRCw0QkFFQztBQU9ELHdCQUVDO0FBT0Qsa0NBRUM7QUFPRCw4QkFFQztBQU9ELHNCQU9DO0FBU0QsOENBMkJDO0FBcFBELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQXNEO0FBQ3RELGtEQUF1QztBQUV2Qyx5REFBNkU7QUFDN0Usc0NBT21CO0FBT25COzs7O0dBSUc7QUFDSCxTQUFTLHdCQUF3QixDQUFDLEdBQVc7SUFDM0MsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELGFBQWE7QUFDYjs7OztHQUlHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFJLEtBQVE7SUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFJLEtBQVE7SUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVcsQ0FBbUIsS0FBUTtJQUNwRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLG9CQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkUsTUFBTSxJQUFBLG9DQUEyQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sSUFBQSxxQ0FBNEIsRUFBQyxLQUFLLENBQUMsQ0FB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ckMsSUFBSSxFQUNKLGFBQWEsQ0FBQyxNQUFNLEVBQ3BCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUEsbUJBQUksRUFDVCxJQUFJO1FBQ0osZ0dBQWdHO1FBQ2hHLDBGQUEwRjtRQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEdBQUcsQ0FBQyxRQUFRO29CQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7b0JBQzdDLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFBLDBDQUFpQyxFQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDUCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBUb2tlbml6YXRpb24sIFRva2VuIH0gZnJvbSBcIi4uL3Rva2Vucy90b2tlblwiO1xuaW1wb3J0IHsgY2FsbCB9IGZyb20gXCIuLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlIH0gZnJvbSBcIi4uL3Rva2Vucy9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBUb2tlblN0cmluZywgZXh0cmFjdFRva2VuRG91YmxlIH0gZnJvbSBcIi4uL3Rva2Vucy9wcml2YXRlL2VuY29kaW5nXCI7XG5pbXBvcnQge1xuICBmdW5jdGlvbkFyZ3VtZW50VmFsaWRhdGlvbkZhaWx1cmUsXG4gIGZ1bmN0aW9uUmVjZWl2ZWRXcm9uZ051bWJlck9mQXJncyxcbiAgbGlzdEVsZW1lbnRJc09mV3JvbmdUeXBlLFxuICB2YWx1ZUNvbnRhaW5zVW5lc2NhcGVkUXVvdGVzLFxuICB2YWx1ZUlzSW52YWxpZE51bWJlck9yVG9rZW4sXG4gIHZhbHVlSXNJbnZhbGlkU3RyaW5nT3JUb2tlbixcbn0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG50eXBlIFRGVmFsdWU8VD4gPSB7IHZhcmlhZGljPzogYm9vbGVhbjsgdmFsdWU6IFQgfTtcbnR5cGUgVEZWYWx1ZVZhbGlkYXRvcjxUPiA9ICh2YWx1ZTogVCkgPT4gVEZWYWx1ZTxUPjtcblxudHlwZSBFeGVjdXRhYmxlVGZGdW5jdGlvbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gSVJlc29sdmFibGU7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBnaXZlbiBzdHIgaGFzIHVuZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gKiBAcGFyYW0gc3RyIFN0cmluZyB0byB0ZXN0XG4gKiBAcmV0dXJucyBCb29sZWFuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuZXNjYXBlZERvdWJsZVF1b3RlcyhzdHI6IHN0cmluZykge1xuICByZXR1cm4gLyhefFteXFxcXF0pKFtcXFxcXXsyfSkqXCIvLnRlc3Qoc3RyKTtcbn1cblxuLy8gVmFsaWRhdG9yc1xuLyoqXG4gKiBWYWxpZGF0b3IgdGhhdCBhY2NlcHRzIGFueSB2YWx1ZVxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBUaGUgd3JhcHBlZCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYW55VmFsdWU8VD4odmFsdWU6IFQpOiBURlZhbHVlPFQ+IHtcbiAgcmV0dXJuIHsgdmFsdWUgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0b3IgZm9yIG1hcCB2YWx1ZXM7IGFjY2VwdHMgYW55IHZhbHVlIHdpdGhvdXQgY2hlY2tpbmcgaXRcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgVGhlIHdyYXBwZWQgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFZhbHVlPFQ+KHZhbHVlOiBUKTogVEZWYWx1ZTxUPiB7XG4gIHJldHVybiB7IHZhbHVlIH07XG59XG5cbi8qKlxuICogVmFsaWRhdG9yIHRoYXQgYWNjZXB0cyBhIHN0cmluZyBvciBhIHRva2VuXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFRoZSB3cmFwcGVkIHZhbHVlXG4gKiBAdGhyb3dzIElmIHRoZSB2YWx1ZSBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIHRva2VuLCBvciBpcyBhIHN0cmluZyBjb250YWluaW5nIHVuZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdWYWx1ZTxUIGV4dGVuZHMgc3RyaW5nPih2YWx1ZTogVCk6IFRGVmFsdWU8VD4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiICYmICFUb2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgIHRocm93IHZhbHVlSXNJbnZhbGlkU3RyaW5nT3JUb2tlbih2YWx1ZSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIGhhc1VuZXNjYXBlZERvdWJsZVF1b3Rlcyh2YWx1ZSkpIHtcbiAgICB0aHJvdyB2YWx1ZUNvbnRhaW5zVW5lc2NhcGVkUXVvdGVzKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB7IHZhbHVlIH07XG59XG5cbi8qKlxuICogVmFsaWRhdG9yIHRoYXQgYWNjZXB0cyBhIG51bWJlciBvciBhIHRva2VuXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFRoZSB3cmFwcGVkIHZhbHVlXG4gKiBAdGhyb3dzIElmIHRoZSB2YWx1ZSBpcyBuZWl0aGVyIGEgbnVtYmVyIG5vciBhIHRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1lcmljVmFsdWU8VD4odmFsdWU6IFQpOiBURlZhbHVlPFQ+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIiAmJiAhVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh2YWx1ZSkpIHtcbiAgICB0aHJvdyB2YWx1ZUlzSW52YWxpZE51bWJlck9yVG9rZW4odmFsdWUgYXMgc3RyaW5nKTtcbiAgfVxuICByZXR1cm4geyB2YWx1ZSB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB2YWxpZGF0b3IgZm9yIGxpc3RzIHdob3NlIGVsZW1lbnRzIGFyZSBjaGVja2VkIHdpdGggdGhlIGdpdmVuIGVsZW1lbnQgdmFsaWRhdG9yLiBUb2tlbnMgYW5kIG5vbi1hcnJheVxuICogdmFsdWVzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQ7IGBudWxsYC9gdW5kZWZpbmVkYCBlbGVtZW50cyBhcmUgZHJvcHBlZCwgdG9rZW4gZWxlbWVudHMgYXJlIGtlcHQgYXMtaXMgYW5kIHBsYWluXG4gKiBzdHJpbmcgZWxlbWVudHMgYXJlIHdyYXBwZWQgaW4gZG91YmxlIHF1b3Rlcy5cbiAqIEBwYXJhbSB0eXBlIFZhbGlkYXRvciBhcHBsaWVkIHRvIGVhY2ggbm9uLXRva2VuIGVsZW1lbnRcbiAqIEByZXR1cm5zIEEgbGlzdCB2YWxpZGF0b3IgdGhhdCB0aHJvd3MgaWYgYW4gZWxlbWVudCBmYWlscyB0aGUgZWxlbWVudCB2YWxpZGF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RPZjxUPih0eXBlOiBURlZhbHVlVmFsaWRhdG9yPFQ+KTogVEZWYWx1ZVZhbGlkYXRvcjxUW10+IHtcbiAgcmV0dXJuICh2YWx1ZTogYW55KSA9PiB7XG4gICAgaWYgKFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyB2YWx1ZSB9O1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCBsaXN0YCk7XG4gICAgICByZXR1cm4geyB2YWx1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0gIT09IG51bGwpXG4gICAgICAgIC5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICBpZiAoVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShpdGVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFRva2VuU3RyaW5nLmZvckxpc3RUb2tlbihpdGVtKS50ZXN0KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChleHRyYWN0VG9rZW5Eb3VibGUoaXRlbSwgdHJ1ZSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFRva2VuU3RyaW5nLmZvck1hcFRva2VuKGl0ZW0pLnRlc3QoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCB0b2tlbkxpc3QgPSBUb2tlbml6YXRpb24ucmV2ZXJzZVN0cmluZyhpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlck9mVG9rZW5zID1cbiAgICAgICAgICAgICAgdG9rZW5MaXN0LnRva2Vucy5sZW5ndGggKyB0b2tlbkxpc3QuaW50cmluc2ljLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChudW1iZXJPZlRva2VucyA9PT0gMSAmJiB0b2tlbkxpc3QubGl0ZXJhbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0eXBlKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiID8gYFwiJHtpdGVtfVwiYCA6IGl0ZW07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxpc3RFbGVtZW50SXNPZldyb25nVHlwZSh2YWx1ZSwgaSwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdmFsaWRhdG9yIGZvciBhIHZhcmlhZGljIGFyZ3VtZW50OiB2YWxpZGF0ZXMgdGhlIHZhbHVlIGFzIGEgbGlzdCBhbmQgbWFya3MgaXQgdG8gYmUgZXhwYW5kZWQgaW50b1xuICogc2VwYXJhdGUgYXJndW1lbnRzIG9mIHRoZSBUZXJyYWZvcm0gZnVuY3Rpb24gY2FsbFxuICogQHBhcmFtIHR5cGUgVmFsaWRhdG9yIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50XG4gKiBAcmV0dXJucyBBIHZhbGlkYXRvciBmb3IgdGhlIHZhcmlhZGljIGFyZ3VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWRpYzxUPih0eXBlOiBURlZhbHVlVmFsaWRhdG9yPFQ+KTogVEZWYWx1ZVZhbGlkYXRvcjxUW10+IHtcbiAgcmV0dXJuICh2YWx1ZTogYW55KSA9PiB7XG4gICAgLy8gd2UgdXNlIHRoZSBsaXN0IHZhbGlkYXRvciBhbmQgc2V0IHZhcmlhZGljIHRvIHRydWUgaW4gb3JkZXIgdG8gaGF2ZSBpdCBleHBhbmRlZCBpbiB0aGUgYXJncyBwYXNzZWQgdG8gdGhlIFRGIGZ1bmN0aW9uXG4gICAgcmV0dXJuIHsgdmFsdWU6IGxpc3RPZih0eXBlKSh2YWx1ZSkudmFsdWUsIHZhcmlhZGljOiB0cnVlIH07XG4gIH07XG59XG5cbi8vIFRva2VuaXphdGlvblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJlc29sdmFibGUgaW50byBhIHN0cmluZyB0b2tlblxuICogQHBhcmFtIHZhbHVlIFJlc29sdmFibGUgdG8gY29udmVydFxuICogQHJldHVybnMgU3RyaW5nIHRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc1N0cmluZyh2YWx1ZTogSVJlc29sdmFibGUpIHtcbiAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJlc29sdmFibGUgaW50byBhIG51bWJlciB0b2tlblxuICogQHBhcmFtIHZhbHVlIFJlc29sdmFibGUgdG8gY29udmVydFxuICogQHJldHVybnMgTnVtYmVyIHRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc051bWJlcih2YWx1ZTogSVJlc29sdmFibGUpIHtcbiAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJlc29sdmFibGUgaW50byBhIHN0cmluZyBsaXN0IHRva2VuXG4gKiBAcGFyYW0gdmFsdWUgUmVzb2x2YWJsZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyBTdHJpbmcgbGlzdCB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNMaXN0KHZhbHVlOiBJUmVzb2x2YWJsZSkge1xuICByZXR1cm4gVG9rZW4uYXNMaXN0KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHJlc29sdmFibGUgaW50byBhIHN0cmluZyBtYXAgdG9rZW5cbiAqIEBwYXJhbSB2YWx1ZSBSZXNvbHZhYmxlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIFN0cmluZyBtYXAgdG9rZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzU3RyaW5nTWFwKHZhbHVlOiBJUmVzb2x2YWJsZSkge1xuICByZXR1cm4gVG9rZW4uYXNTdHJpbmdNYXAodmFsdWUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlc29sdmFibGUgdW5jaGFuZ2VkLCBhcyBib29sZWFucyBjYW4gbm90IGJlIHJlcHJlc2VudGVkIGFzIGEgdG9rZW5cbiAqIEBwYXJhbSB2YWx1ZSBSZXNvbHZhYmxlIHRvIHJldHVyblxuICogQHJldHVybnMgVGhlIHNhbWUgcmVzb2x2YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNCb29sZWFuKHZhbHVlOiBJUmVzb2x2YWJsZSkge1xuICByZXR1cm4gdmFsdWU7IC8vIEJvb2xlYW5zIGNhbiBub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSB0b2tlblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcmVzb2x2YWJsZSBpbnRvIGEgc3RyaW5nIHRva2VuIHR5cGVkIGFzIGBhbnlgXG4gKiBAcGFyYW0gdmFsdWUgUmVzb2x2YWJsZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyBTdHJpbmcgdG9rZW4gdHlwZWQgYXMgYGFueWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzQW55KHZhbHVlOiBJUmVzb2x2YWJsZSkge1xuICAvLyBPcmRpbmFyaWx5IGNhc3RpbmcgdG8gYW55IGNhbiBjYXVzZSBpc3N1ZXMsIGJ1dFxuICAvLyBpbiB0aGlzIGNhc2UgaXQgbWFrZXMgdXNpbmcgZnVuY3Rpb25zIGEgYml0IGVhc2llciBpbiBUU1xuICAvLyBhbmQgZG9lc24ndCByZWFsbHkgaGFybSBvdGhlciBsYW5ndWFnZXMuXG4gIC8vIEpzaWkgaGFzIGlzc3VlcyB3aGVuIHJldHVybmluZyB0aGUgdmFsdWUgZGlyZWN0bHksXG4gIC8vIHNvIHdyYXAgYXMgYSBzdHJpbmcuXG4gIHJldHVybiBhc1N0cmluZyh2YWx1ZSkgYXMgYW55O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyBpdHMgYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgVGVycmFmb3JtIGZ1bmN0aW9uIGNhbGwgZXhwcmVzc2lvblxuICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgVGVycmFmb3JtIGZ1bmN0aW9uXG4gKiBAcGFyYW0gYXJnVmFsaWRhdG9ycyBWYWxpZGF0b3JzIGZvciBlYWNoIHBvc2l0aW9uYWwgYXJndW1lbnRcbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBjYWxsIGV4cHJlc3Npb247IGl0IHRocm93cyBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBkb2VzIG5vdCBtYXRjaCB0aGVcbiAqIHZhbGlkYXRvcnMgb3IgYW4gYXJndW1lbnQgZmFpbHMgdmFsaWRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVycmFmb3JtRnVuY3Rpb24oXG4gIG5hbWU6IHN0cmluZyxcbiAgYXJnVmFsaWRhdG9yczogVEZWYWx1ZVZhbGlkYXRvcjxhbnk+W10sXG4pOiBFeGVjdXRhYmxlVGZGdW5jdGlvbiB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoYXJncy5sZW5ndGggIT09IGFyZ1ZhbGlkYXRvcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBmdW5jdGlvblJlY2VpdmVkV3JvbmdOdW1iZXJPZkFyZ3MoXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGFyZ1ZhbGlkYXRvcnMubGVuZ3RoLFxuICAgICAgICBhcmdzLmxlbmd0aCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjYWxsKFxuICAgICAgbmFtZSxcbiAgICAgIC8vIFdlIHVzZSBmbGF0TWFwIG5vdywgc2luY2UgbGlzdE9mKCkgd3JhcHMgZXZlcnl0aGluZyBpbiBhbiBleHRyYSBhcnJheSBidXQgdmFyaWFkaWMoKSBkb2VzIG5vdFxuICAgICAgLy8gVGhpcyBlbmFibGVzIHVzIHRvIGhhdmUgdmFyaWFkaWMgcGFzcyBtdWx0aXBsZSBhcmdzIGludG8gdGhlIGNhbGwoKSBmcm9tIGEgc2luZ2xlIGFycmF5XG4gICAgICBhcmdzLnJlZHVjZSgoY2FycnksIGFyZywgaSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGFyZ1ZhbGlkYXRvcnNbaV0oYXJnKTtcbiAgICAgICAgICBpZiAodmFsLnZhcmlhZGljKSByZXR1cm4gWy4uLmNhcnJ5LCAuLi52YWwudmFsdWVdO1xuICAgICAgICAgIGVsc2UgcmV0dXJuIFsuLi5jYXJyeSwgdmFsLnZhbHVlXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBmdW5jdGlvbkFyZ3VtZW50VmFsaWRhdGlvbkZhaWx1cmUoaSwgbmFtZSwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9LCBbXSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ const helpers_1 = require("./helpers");
|
|
|
10
10
|
* through which every provider-defined function call flows.
|
|
11
11
|
*/
|
|
12
12
|
class TerraformProviderFunction {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TerraformProviderFunction", version: "0.26.0-pre.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TerraformProviderFunction", version: "0.26.0-pre.21" };
|
|
14
14
|
/**
|
|
15
15
|
* Invokes a provider-defined function (Terraform's
|
|
16
16
|
* `provider::<providerLocalName>::<functionName>(...)` syntax).
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bindings for the Terraform and OpenTofu built-in functions, generated from the function availability matrix.
|
|
3
|
+
*/
|
|
1
4
|
export declare class FnGenerated {
|
|
2
5
|
/**
|
|
3
6
|
* {@link https://developer.hashicorp.com/terraform/language/functions/abs abs} returns the absolute value of the given number. In other words, if the number is zero or positive then it is returned as-is, but if it is negative then it is multiplied by -1 to make it positive before returning it.
|