@aws-solutions-constructs/core 2.99.0 → 2.100.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +8 -9
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/lib/constructs-feature-flags.d.ts +2 -0
- package/lib/constructs-feature-flags.js +12 -6
- package/lib/validation.d.ts +60 -0
- package/lib/validation.js +594 -0
- package/nohoist.sh +6 -1
- package/package.json +4 -5
- package/test/alb-helper.test.js +14 -14
- package/test/apigateway-helper.test.js +4 -4
- package/test/bedrock-inference-helper.test.js +2 -2
- package/test/cloudfront-distribution-s3-helper.test.js +8 -8
- package/test/constructs-feature-flags.test.js +10 -3
- package/test/dynamo-table.test.js +4 -4
- package/test/elasticsearch-helper.test.js +2 -2
- package/test/eventbridge-helper.test.js +2 -2
- package/test/fargate-helper.test.js +9 -9
- package/test/glue-job-helper.test.js +4 -4
- package/test/kendra-helper.test.js +6 -6
- package/test/kinesis-streams-helper.test.js +2 -2
- package/test/lambda-helper.test.js +5 -5
- package/test/opensearch-helper.test.js +2 -2
- package/test/override-warning-service.test.js +13 -13
- package/test/pipes-helper.test.js +12 -12
- package/test/s3-bucket.test.js +5 -5
- package/test/sagemaker-helper.test.js +7 -7
- package/test/secretsmanager-helper.test.js +2 -2
- package/test/sns-helper.test.js +7 -7
- package/test/sqs-helper.test.js +13 -13
- package/test/step-function-helper.test.js +6 -6
- package/test/test-helper.d.ts +1 -1
- package/test/test-helper.js +1 -1
- package/test/utils.test.js +9 -9
- package/test/validation.test.d.ts +13 -0
- package/test/validation.test.js +218 -0
- package/test/vpc-helper.test.js +6 -6
- package/test/waf-helper.test.js +2 -2
- package/test/websocket-api-helper.test.js +4 -4
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.validCfnWebACLProps = exports.validPrivateHostedZoneProps = exports.validCfnModelProps = exports.validVpcProps = exports.validKeyProps = exports.validCfnDataSourceProps = exports.validCfnIndexProps = exports.validCfnCacheClusterProps = exports.validKinesisEventSourceProps = exports.validCfnJobProps = exports.validStreamProps = exports.validCfnDeliveryStreamProps = exports.validCfnPipeProps = exports.validDynamoEventSourceProps = exports.validUserPoolClientProps = exports.validDistributionProps = exports.validRestApiProps = exports.validLambdaRestApiProps = exports.validFargateServiceProps = exports.validFargateTaskDefinitionProps = exports.validContainerDefinitionProps = exports.validApplicationListenerProps = exports.validApplicationLoadBalancerProps = void 0;
|
|
16
|
+
exports.ValidateProps = ValidateProps;
|
|
17
|
+
exports.ValidateApplicationLoadBalancerProps = ValidateApplicationLoadBalancerProps;
|
|
18
|
+
exports.ValidateApplicationListenerProps = ValidateApplicationListenerProps;
|
|
19
|
+
exports.ValidateContainerDefinitionProps = ValidateContainerDefinitionProps;
|
|
20
|
+
exports.ValidateFargateTaskDefinitionProps = ValidateFargateTaskDefinitionProps;
|
|
21
|
+
exports.ValidateFargateServiceProps = ValidateFargateServiceProps;
|
|
22
|
+
exports.ValidateLambdaRestApiProps = ValidateLambdaRestApiProps;
|
|
23
|
+
exports.ValidateRestApiProps = ValidateRestApiProps;
|
|
24
|
+
exports.ValidateDistributionProps = ValidateDistributionProps;
|
|
25
|
+
exports.ValidateUserPoolClientProps = ValidateUserPoolClientProps;
|
|
26
|
+
exports.ValidateDynamoEventSourceProps = ValidateDynamoEventSourceProps;
|
|
27
|
+
exports.ValidateCfnPipeProps = ValidateCfnPipeProps;
|
|
28
|
+
exports.ValidateCfnDeliveryStreamProps = ValidateCfnDeliveryStreamProps;
|
|
29
|
+
exports.ValidateStreamProps = ValidateStreamProps;
|
|
30
|
+
exports.ValidateCfnJobProps = ValidateCfnJobProps;
|
|
31
|
+
exports.ValidateKinesisEventSourceProps = ValidateKinesisEventSourceProps;
|
|
32
|
+
exports.ValidateCfnCacheClusterProps = ValidateCfnCacheClusterProps;
|
|
33
|
+
exports.ValidateCfnIndexProps = ValidateCfnIndexProps;
|
|
34
|
+
exports.ValidateCfnDataSourceProps = ValidateCfnDataSourceProps;
|
|
35
|
+
exports.ValidateKeyProps = ValidateKeyProps;
|
|
36
|
+
exports.ValidateVpcProps = ValidateVpcProps;
|
|
37
|
+
exports.ValidateCfnModelProps = ValidateCfnModelProps;
|
|
38
|
+
exports.ValidatePrivateHostedZoneProps = ValidatePrivateHostedZoneProps;
|
|
39
|
+
exports.ValidateCfnWebACLProps = ValidateCfnWebACLProps;
|
|
40
|
+
const cdk = require("aws-cdk-lib");
|
|
41
|
+
const constructs_feature_flags_1 = require("./constructs-feature-flags");
|
|
42
|
+
// ApplicationLoadBalancerProps from aws-cdk-lib/aws-elasticloadbalancingv2
|
|
43
|
+
exports.validApplicationLoadBalancerProps = new Set([
|
|
44
|
+
'clientKeepAlive',
|
|
45
|
+
'crossZoneEnabled',
|
|
46
|
+
'deletionProtection',
|
|
47
|
+
'denyAllIgwTraffic',
|
|
48
|
+
'desyncMitigationMode',
|
|
49
|
+
'dropInvalidHeaderFields',
|
|
50
|
+
'http2Enabled',
|
|
51
|
+
'idleTimeout',
|
|
52
|
+
'internetFacing',
|
|
53
|
+
'ipAddressType',
|
|
54
|
+
'loadBalancerName',
|
|
55
|
+
'minimumCapacityUnit',
|
|
56
|
+
'preserveHostHeader',
|
|
57
|
+
'preserveXffClientPort',
|
|
58
|
+
'securityGroup',
|
|
59
|
+
'vpc',
|
|
60
|
+
'vpcSubnets',
|
|
61
|
+
'wafFailOpen',
|
|
62
|
+
'xAmznTlsVersionAndCipherSuiteHeaders',
|
|
63
|
+
'xffHeaderProcessingMode'
|
|
64
|
+
]);
|
|
65
|
+
// ApplicationListenerProps from aws-cdk-lib/aws-elasticloadbalancingv2
|
|
66
|
+
exports.validApplicationListenerProps = new Set([
|
|
67
|
+
'certificates',
|
|
68
|
+
'defaultAction',
|
|
69
|
+
'defaultTargetGroups',
|
|
70
|
+
'loadBalancer',
|
|
71
|
+
'mutualAuthentication',
|
|
72
|
+
'open',
|
|
73
|
+
'port',
|
|
74
|
+
'protocol',
|
|
75
|
+
'sslPolicy'
|
|
76
|
+
]);
|
|
77
|
+
// ContainerDefinitionProps from aws-cdk-lib/aws-ecs
|
|
78
|
+
exports.validContainerDefinitionProps = new Set([
|
|
79
|
+
'command',
|
|
80
|
+
'containerName',
|
|
81
|
+
'cpu',
|
|
82
|
+
'credentialSpecs',
|
|
83
|
+
'disableNetworking',
|
|
84
|
+
'dnsSearchDomains',
|
|
85
|
+
'dnsServers',
|
|
86
|
+
'dockerLabels',
|
|
87
|
+
'dockerSecurityOptions',
|
|
88
|
+
'enableRestartPolicy',
|
|
89
|
+
'entryPoint',
|
|
90
|
+
'environment',
|
|
91
|
+
'environmentFiles',
|
|
92
|
+
'essential',
|
|
93
|
+
'extraHosts',
|
|
94
|
+
'gpuCount',
|
|
95
|
+
'healthCheck',
|
|
96
|
+
'hostname',
|
|
97
|
+
'image',
|
|
98
|
+
'inferenceAcceleratorResources',
|
|
99
|
+
'interactive',
|
|
100
|
+
'linuxParameters',
|
|
101
|
+
'logging',
|
|
102
|
+
'memoryLimitMiB',
|
|
103
|
+
'memoryReservationMiB',
|
|
104
|
+
'portMappings',
|
|
105
|
+
'privileged',
|
|
106
|
+
'pseudoTerminal',
|
|
107
|
+
'readonlyRootFilesystem',
|
|
108
|
+
'restartAttemptPeriod',
|
|
109
|
+
'restartIgnoredExitCodes',
|
|
110
|
+
'secrets',
|
|
111
|
+
'startTimeout',
|
|
112
|
+
'stopTimeout',
|
|
113
|
+
'systemControls',
|
|
114
|
+
'taskDefinition',
|
|
115
|
+
'ulimits',
|
|
116
|
+
'user',
|
|
117
|
+
'versionConsistency',
|
|
118
|
+
'workingDirectory'
|
|
119
|
+
]);
|
|
120
|
+
// FargateTaskDefinitionProps from aws-cdk-lib/aws-ecs
|
|
121
|
+
exports.validFargateTaskDefinitionProps = new Set([
|
|
122
|
+
'cpu',
|
|
123
|
+
'enableFaultInjection',
|
|
124
|
+
'ephemeralStorageGiB',
|
|
125
|
+
'executionRole',
|
|
126
|
+
'family',
|
|
127
|
+
'memoryLimitMiB',
|
|
128
|
+
'pidMode',
|
|
129
|
+
'proxyConfiguration',
|
|
130
|
+
'runtimePlatform',
|
|
131
|
+
'taskRole',
|
|
132
|
+
'volumes'
|
|
133
|
+
]);
|
|
134
|
+
// FargateServiceProps from aws-cdk-lib/aws-ecs
|
|
135
|
+
exports.validFargateServiceProps = new Set([
|
|
136
|
+
'assignPublicIp',
|
|
137
|
+
'availabilityZoneRebalancing',
|
|
138
|
+
'bakeTime',
|
|
139
|
+
'canaryConfiguration',
|
|
140
|
+
'capacityProviderStrategies',
|
|
141
|
+
'circuitBreaker',
|
|
142
|
+
'cloudMapOptions',
|
|
143
|
+
'cluster',
|
|
144
|
+
'deploymentAlarms',
|
|
145
|
+
'deploymentController',
|
|
146
|
+
'deploymentStrategy',
|
|
147
|
+
'desiredCount',
|
|
148
|
+
'enableECSManagedTags',
|
|
149
|
+
'enableExecuteCommand',
|
|
150
|
+
'healthCheckGracePeriod',
|
|
151
|
+
'lifecycleHooks',
|
|
152
|
+
'linearConfiguration',
|
|
153
|
+
'maxHealthyPercent',
|
|
154
|
+
'minHealthyPercent',
|
|
155
|
+
'platformVersion',
|
|
156
|
+
'propagateTags',
|
|
157
|
+
'securityGroups',
|
|
158
|
+
'serviceConnectConfiguration',
|
|
159
|
+
'serviceName',
|
|
160
|
+
'taskDefinition',
|
|
161
|
+
'taskDefinitionRevision',
|
|
162
|
+
'volumeConfigurations',
|
|
163
|
+
'vpcSubnets'
|
|
164
|
+
]);
|
|
165
|
+
// LambdaRestApiProps from aws-cdk-lib/aws-apigateway
|
|
166
|
+
exports.validLambdaRestApiProps = new Set([
|
|
167
|
+
'apiKeySourceType',
|
|
168
|
+
'binaryMediaTypes',
|
|
169
|
+
'cloneFrom',
|
|
170
|
+
'cloudWatchRole',
|
|
171
|
+
'cloudWatchRoleRemovalPolicy',
|
|
172
|
+
'defaultCorsPreflightOptions',
|
|
173
|
+
'defaultIntegration',
|
|
174
|
+
'defaultMethodOptions',
|
|
175
|
+
'deploy',
|
|
176
|
+
'deployOptions',
|
|
177
|
+
'description',
|
|
178
|
+
'disableExecuteApiEndpoint',
|
|
179
|
+
'domainName',
|
|
180
|
+
'endpointConfiguration',
|
|
181
|
+
'endpointExportName',
|
|
182
|
+
'endpointTypes',
|
|
183
|
+
'failOnWarnings',
|
|
184
|
+
'handler',
|
|
185
|
+
'integrationOptions',
|
|
186
|
+
'minCompressionSize',
|
|
187
|
+
'minimumCompressionSize',
|
|
188
|
+
'parameters',
|
|
189
|
+
'policy',
|
|
190
|
+
'proxy',
|
|
191
|
+
'restApiName',
|
|
192
|
+
'retainDeployments'
|
|
193
|
+
]);
|
|
194
|
+
// RestApiProps from aws-cdk-lib/aws-apigateway
|
|
195
|
+
exports.validRestApiProps = new Set([
|
|
196
|
+
'apiKeySourceType',
|
|
197
|
+
'binaryMediaTypes',
|
|
198
|
+
'cloneFrom',
|
|
199
|
+
'cloudWatchRole',
|
|
200
|
+
'cloudWatchRoleRemovalPolicy',
|
|
201
|
+
'defaultCorsPreflightOptions',
|
|
202
|
+
'defaultIntegration',
|
|
203
|
+
'defaultMethodOptions',
|
|
204
|
+
'deploy',
|
|
205
|
+
'deployOptions',
|
|
206
|
+
'description',
|
|
207
|
+
'disableExecuteApiEndpoint',
|
|
208
|
+
'domainName',
|
|
209
|
+
'endpointConfiguration',
|
|
210
|
+
'endpointExportName',
|
|
211
|
+
'endpointTypes',
|
|
212
|
+
'failOnWarnings',
|
|
213
|
+
'minCompressionSize',
|
|
214
|
+
'minimumCompressionSize',
|
|
215
|
+
'parameters',
|
|
216
|
+
'policy',
|
|
217
|
+
'restApiName',
|
|
218
|
+
'retainDeployments'
|
|
219
|
+
]);
|
|
220
|
+
// DistributionProps from aws-cdk-lib/aws-cloudfront
|
|
221
|
+
exports.validDistributionProps = new Set([
|
|
222
|
+
'additionalBehaviors',
|
|
223
|
+
'certificate',
|
|
224
|
+
'comment',
|
|
225
|
+
'defaultBehavior',
|
|
226
|
+
'defaultRootObject',
|
|
227
|
+
'domainNames',
|
|
228
|
+
'enableIpv6',
|
|
229
|
+
'enableLogging',
|
|
230
|
+
'enabled',
|
|
231
|
+
'errorResponses',
|
|
232
|
+
'geoRestriction',
|
|
233
|
+
'httpVersion',
|
|
234
|
+
'logBucket',
|
|
235
|
+
'logFilePrefix',
|
|
236
|
+
'logIncludesCookies',
|
|
237
|
+
'minimumProtocolVersion',
|
|
238
|
+
'priceClass',
|
|
239
|
+
'publishAdditionalMetrics',
|
|
240
|
+
'sslSupportMethod',
|
|
241
|
+
'webAclId'
|
|
242
|
+
]);
|
|
243
|
+
// UserPoolClientProps from aws-cdk-lib/aws-cognito
|
|
244
|
+
exports.validUserPoolClientProps = new Set([
|
|
245
|
+
'accessTokenValidity',
|
|
246
|
+
'analytics',
|
|
247
|
+
'authFlows',
|
|
248
|
+
'authSessionValidity',
|
|
249
|
+
'disableOAuth',
|
|
250
|
+
'enablePropagateAdditionalUserContextData',
|
|
251
|
+
'enableTokenRevocation',
|
|
252
|
+
'generateSecret',
|
|
253
|
+
'idTokenValidity',
|
|
254
|
+
'oAuth',
|
|
255
|
+
'preventUserExistenceErrors',
|
|
256
|
+
'readAttributes',
|
|
257
|
+
'refreshTokenRotationGracePeriod',
|
|
258
|
+
'refreshTokenValidity',
|
|
259
|
+
'supportedIdentityProviders',
|
|
260
|
+
'userPool',
|
|
261
|
+
'userPoolClientName',
|
|
262
|
+
'writeAttributes'
|
|
263
|
+
]);
|
|
264
|
+
// DynamoEventSourceProps from aws-cdk-lib/aws-lambda-event-sources
|
|
265
|
+
exports.validDynamoEventSourceProps = new Set([
|
|
266
|
+
'batchSize',
|
|
267
|
+
'bisectBatchOnError',
|
|
268
|
+
'enabled',
|
|
269
|
+
'filterEncryption',
|
|
270
|
+
'filters',
|
|
271
|
+
'maxBatchingWindow',
|
|
272
|
+
'maxRecordAge',
|
|
273
|
+
'metricsConfig',
|
|
274
|
+
'onFailure',
|
|
275
|
+
'parallelizationFactor',
|
|
276
|
+
'provisionedPollerConfig',
|
|
277
|
+
'reportBatchItemFailures',
|
|
278
|
+
'retryAttempts',
|
|
279
|
+
'startingPosition',
|
|
280
|
+
'tumblingWindow'
|
|
281
|
+
]);
|
|
282
|
+
// CfnPipeProps from aws-cdk-lib/aws-pipes
|
|
283
|
+
exports.validCfnPipeProps = new Set([
|
|
284
|
+
'description',
|
|
285
|
+
'desiredState',
|
|
286
|
+
'enrichment',
|
|
287
|
+
'enrichmentParameters',
|
|
288
|
+
'kmsKeyIdentifier',
|
|
289
|
+
'logConfiguration',
|
|
290
|
+
'name',
|
|
291
|
+
'roleArn',
|
|
292
|
+
'source',
|
|
293
|
+
'sourceParameters',
|
|
294
|
+
'tags',
|
|
295
|
+
'target',
|
|
296
|
+
'targetParameters'
|
|
297
|
+
]);
|
|
298
|
+
// CfnDeliveryStreamProps from aws-cdk-lib/aws-kinesisfirehose
|
|
299
|
+
exports.validCfnDeliveryStreamProps = new Set([
|
|
300
|
+
'amazonOpenSearchServerlessDestinationConfiguration',
|
|
301
|
+
'amazonopensearchserviceDestinationConfiguration',
|
|
302
|
+
'databaseSourceConfiguration',
|
|
303
|
+
'deliveryStreamEncryptionConfigurationInput',
|
|
304
|
+
'deliveryStreamName',
|
|
305
|
+
'deliveryStreamType',
|
|
306
|
+
'directPutSourceConfiguration',
|
|
307
|
+
'elasticsearchDestinationConfiguration',
|
|
308
|
+
'extendedS3DestinationConfiguration',
|
|
309
|
+
'httpEndpointDestinationConfiguration',
|
|
310
|
+
'icebergDestinationConfiguration',
|
|
311
|
+
'kinesisStreamSourceConfiguration',
|
|
312
|
+
'mskSourceConfiguration',
|
|
313
|
+
'redshiftDestinationConfiguration',
|
|
314
|
+
's3DestinationConfiguration',
|
|
315
|
+
'snowflakeDestinationConfiguration',
|
|
316
|
+
'splunkDestinationConfiguration',
|
|
317
|
+
'tags'
|
|
318
|
+
]);
|
|
319
|
+
// StreamProps from aws-cdk-lib/aws-kinesis
|
|
320
|
+
exports.validStreamProps = new Set([
|
|
321
|
+
'encryption',
|
|
322
|
+
'encryptionKey',
|
|
323
|
+
'removalPolicy',
|
|
324
|
+
'retentionPeriod',
|
|
325
|
+
'shardCount',
|
|
326
|
+
'shardLevelMetrics',
|
|
327
|
+
'streamMode',
|
|
328
|
+
'streamName'
|
|
329
|
+
]);
|
|
330
|
+
// CfnJobProps from aws-cdk-lib/aws-glue
|
|
331
|
+
exports.validCfnJobProps = new Set([
|
|
332
|
+
'allocatedCapacity',
|
|
333
|
+
'command',
|
|
334
|
+
'connections',
|
|
335
|
+
'defaultArguments',
|
|
336
|
+
'description',
|
|
337
|
+
'executionClass',
|
|
338
|
+
'executionProperty',
|
|
339
|
+
'glueVersion',
|
|
340
|
+
'jobMode',
|
|
341
|
+
'jobRunQueuingEnabled',
|
|
342
|
+
'logUri',
|
|
343
|
+
'maintenanceWindow',
|
|
344
|
+
'maxCapacity',
|
|
345
|
+
'maxRetries',
|
|
346
|
+
'name',
|
|
347
|
+
'nonOverridableArguments',
|
|
348
|
+
'notificationProperty',
|
|
349
|
+
'numberOfWorkers',
|
|
350
|
+
'role',
|
|
351
|
+
'securityConfiguration',
|
|
352
|
+
'tags',
|
|
353
|
+
'timeout',
|
|
354
|
+
'workerType'
|
|
355
|
+
]);
|
|
356
|
+
// KinesisEventSourceProps from aws-cdk-lib/aws-lambda-event-sources
|
|
357
|
+
exports.validKinesisEventSourceProps = new Set([
|
|
358
|
+
'batchSize',
|
|
359
|
+
'bisectBatchOnError',
|
|
360
|
+
'enabled',
|
|
361
|
+
'filterEncryption',
|
|
362
|
+
'filters',
|
|
363
|
+
'maxBatchingWindow',
|
|
364
|
+
'maxRecordAge',
|
|
365
|
+
'metricsConfig',
|
|
366
|
+
'onFailure',
|
|
367
|
+
'parallelizationFactor',
|
|
368
|
+
'provisionedPollerConfig',
|
|
369
|
+
'reportBatchItemFailures',
|
|
370
|
+
'retryAttempts',
|
|
371
|
+
'startingPosition',
|
|
372
|
+
'startingPositionTimestamp',
|
|
373
|
+
'tumblingWindow'
|
|
374
|
+
]);
|
|
375
|
+
// CfnCacheClusterProps from aws-cdk-lib/aws-elasticache
|
|
376
|
+
exports.validCfnCacheClusterProps = new Set([
|
|
377
|
+
'autoMinorVersionUpgrade',
|
|
378
|
+
'azMode',
|
|
379
|
+
'cacheNodeType',
|
|
380
|
+
'cacheParameterGroupName',
|
|
381
|
+
'cacheSecurityGroupNames',
|
|
382
|
+
'cacheSubnetGroupName',
|
|
383
|
+
'clusterName',
|
|
384
|
+
'engine',
|
|
385
|
+
'engineVersion',
|
|
386
|
+
'ipDiscovery',
|
|
387
|
+
'logDeliveryConfigurations',
|
|
388
|
+
'networkType',
|
|
389
|
+
'notificationTopicArn',
|
|
390
|
+
'numCacheNodes',
|
|
391
|
+
'port',
|
|
392
|
+
'preferredAvailabilityZone',
|
|
393
|
+
'preferredAvailabilityZones',
|
|
394
|
+
'preferredMaintenanceWindow',
|
|
395
|
+
'snapshotArns',
|
|
396
|
+
'snapshotName',
|
|
397
|
+
'snapshotRetentionLimit',
|
|
398
|
+
'snapshotWindow',
|
|
399
|
+
'tags',
|
|
400
|
+
'transitEncryptionEnabled',
|
|
401
|
+
'vpcSecurityGroupIds'
|
|
402
|
+
]);
|
|
403
|
+
// CfnIndexProps from aws-cdk-lib/aws-kendra
|
|
404
|
+
exports.validCfnIndexProps = new Set([
|
|
405
|
+
'capacityUnits',
|
|
406
|
+
'description',
|
|
407
|
+
'documentMetadataConfigurations',
|
|
408
|
+
'edition',
|
|
409
|
+
'name',
|
|
410
|
+
'roleArn',
|
|
411
|
+
'serverSideEncryptionConfiguration',
|
|
412
|
+
'tags',
|
|
413
|
+
'userContextPolicy',
|
|
414
|
+
'userTokenConfigurations'
|
|
415
|
+
]);
|
|
416
|
+
// CfnDataSourceProps from aws-cdk-lib/aws-kendra
|
|
417
|
+
exports.validCfnDataSourceProps = new Set([
|
|
418
|
+
'customDocumentEnrichmentConfiguration',
|
|
419
|
+
'dataSourceConfiguration',
|
|
420
|
+
'description',
|
|
421
|
+
'indexId',
|
|
422
|
+
'languageCode',
|
|
423
|
+
'name',
|
|
424
|
+
'roleArn',
|
|
425
|
+
'schedule',
|
|
426
|
+
'tags',
|
|
427
|
+
'type'
|
|
428
|
+
]);
|
|
429
|
+
// KeyProps from aws-cdk-lib/aws-kms
|
|
430
|
+
exports.validKeyProps = new Set([
|
|
431
|
+
'admins',
|
|
432
|
+
'alias',
|
|
433
|
+
'description',
|
|
434
|
+
'enableKeyRotation',
|
|
435
|
+
'enabled',
|
|
436
|
+
'keySpec',
|
|
437
|
+
'keyUsage',
|
|
438
|
+
'multiRegion',
|
|
439
|
+
'pendingWindow',
|
|
440
|
+
'policy',
|
|
441
|
+
'removalPolicy',
|
|
442
|
+
'rotationPeriod'
|
|
443
|
+
]);
|
|
444
|
+
// VpcProps from aws-cdk-lib/aws-ec2
|
|
445
|
+
exports.validVpcProps = new Set([
|
|
446
|
+
'availabilityZones',
|
|
447
|
+
'cidr',
|
|
448
|
+
'createInternetGateway',
|
|
449
|
+
'defaultInstanceTenancy',
|
|
450
|
+
'enableDnsHostnames',
|
|
451
|
+
'enableDnsSupport',
|
|
452
|
+
'flowLogs',
|
|
453
|
+
'gatewayEndpoints',
|
|
454
|
+
'ipAddresses',
|
|
455
|
+
'ipProtocol',
|
|
456
|
+
'ipv6Addresses',
|
|
457
|
+
'maxAzs',
|
|
458
|
+
'natGatewayProvider',
|
|
459
|
+
'natGatewaySubnets',
|
|
460
|
+
'natGateways',
|
|
461
|
+
'reservedAzs',
|
|
462
|
+
'restrictDefaultSecurityGroup',
|
|
463
|
+
'subnetConfiguration',
|
|
464
|
+
'vpcName',
|
|
465
|
+
'vpnConnections',
|
|
466
|
+
'vpnGateway',
|
|
467
|
+
'vpnGatewayAsn',
|
|
468
|
+
'vpnRoutePropagation'
|
|
469
|
+
]);
|
|
470
|
+
// CfnModelProps from aws-cdk-lib/aws-sagemaker
|
|
471
|
+
exports.validCfnModelProps = new Set([
|
|
472
|
+
'containers',
|
|
473
|
+
'enableNetworkIsolation',
|
|
474
|
+
'executionRoleArn',
|
|
475
|
+
'inferenceExecutionConfig',
|
|
476
|
+
'modelName',
|
|
477
|
+
'primaryContainer',
|
|
478
|
+
'tags',
|
|
479
|
+
'vpcConfig'
|
|
480
|
+
]);
|
|
481
|
+
// PrivateHostedZoneProps from aws-cdk-lib/aws-route53
|
|
482
|
+
exports.validPrivateHostedZoneProps = new Set([
|
|
483
|
+
'addTrailingDot',
|
|
484
|
+
'comment',
|
|
485
|
+
'queryLogsLogGroupArn',
|
|
486
|
+
'vpc',
|
|
487
|
+
'zoneName'
|
|
488
|
+
]);
|
|
489
|
+
// CfnWebACLProps from aws-cdk-lib/aws-wafv2
|
|
490
|
+
exports.validCfnWebACLProps = new Set([
|
|
491
|
+
'applicationConfig',
|
|
492
|
+
'associationConfig',
|
|
493
|
+
'captchaConfig',
|
|
494
|
+
'challengeConfig',
|
|
495
|
+
'customResponseBodies',
|
|
496
|
+
'dataProtectionConfig',
|
|
497
|
+
'defaultAction',
|
|
498
|
+
'description',
|
|
499
|
+
'name',
|
|
500
|
+
'onSourceDDoSProtectionConfig',
|
|
501
|
+
'rules',
|
|
502
|
+
'scope',
|
|
503
|
+
'tags',
|
|
504
|
+
'tokenDomains',
|
|
505
|
+
'visibilityConfig'
|
|
506
|
+
]);
|
|
507
|
+
// Shared validation implementation
|
|
508
|
+
// Scope is required for feature flag checking
|
|
509
|
+
// Target can be undefined - validation is skipped if target is undefined
|
|
510
|
+
function ValidateProps(scope, target, validProps, propsTypeName) {
|
|
511
|
+
// Check if validation is disabled via feature flag
|
|
512
|
+
if (cdk.FeatureFlags.of(scope).isEnabled(constructs_feature_flags_1.DISABLE_PROPERTY_VALIDATION)) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
if (!target) {
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
for (const key in target) {
|
|
519
|
+
if (!validProps.has(key)) {
|
|
520
|
+
throw new Error(`ERROR - ${key} is not a valid property of ${propsTypeName}`);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
// Validation functions
|
|
525
|
+
function ValidateApplicationLoadBalancerProps(scope, target) {
|
|
526
|
+
ValidateProps(scope, target, exports.validApplicationLoadBalancerProps, 'ApplicationLoadBalancerProps');
|
|
527
|
+
}
|
|
528
|
+
function ValidateApplicationListenerProps(scope, target) {
|
|
529
|
+
ValidateProps(scope, target, exports.validApplicationListenerProps, 'ApplicationListenerProps');
|
|
530
|
+
}
|
|
531
|
+
function ValidateContainerDefinitionProps(scope, target) {
|
|
532
|
+
ValidateProps(scope, target, exports.validContainerDefinitionProps, 'ContainerDefinitionProps');
|
|
533
|
+
}
|
|
534
|
+
function ValidateFargateTaskDefinitionProps(scope, target) {
|
|
535
|
+
ValidateProps(scope, target, exports.validFargateTaskDefinitionProps, 'FargateTaskDefinitionProps');
|
|
536
|
+
}
|
|
537
|
+
function ValidateFargateServiceProps(scope, target) {
|
|
538
|
+
ValidateProps(scope, target, exports.validFargateServiceProps, 'FargateServiceProps');
|
|
539
|
+
}
|
|
540
|
+
function ValidateLambdaRestApiProps(scope, target) {
|
|
541
|
+
ValidateProps(scope, target, exports.validLambdaRestApiProps, 'LambdaRestApiProps');
|
|
542
|
+
}
|
|
543
|
+
function ValidateRestApiProps(scope, target) {
|
|
544
|
+
ValidateProps(scope, target, exports.validRestApiProps, 'RestApiProps');
|
|
545
|
+
}
|
|
546
|
+
function ValidateDistributionProps(scope, target) {
|
|
547
|
+
ValidateProps(scope, target, exports.validDistributionProps, 'DistributionProps');
|
|
548
|
+
}
|
|
549
|
+
function ValidateUserPoolClientProps(scope, target) {
|
|
550
|
+
ValidateProps(scope, target, exports.validUserPoolClientProps, 'UserPoolClientProps');
|
|
551
|
+
}
|
|
552
|
+
function ValidateDynamoEventSourceProps(scope, target) {
|
|
553
|
+
ValidateProps(scope, target, exports.validDynamoEventSourceProps, 'DynamoEventSourceProps');
|
|
554
|
+
}
|
|
555
|
+
function ValidateCfnPipeProps(scope, target) {
|
|
556
|
+
ValidateProps(scope, target, exports.validCfnPipeProps, 'CfnPipeProps');
|
|
557
|
+
}
|
|
558
|
+
function ValidateCfnDeliveryStreamProps(scope, target) {
|
|
559
|
+
ValidateProps(scope, target, exports.validCfnDeliveryStreamProps, 'CfnDeliveryStreamProps');
|
|
560
|
+
}
|
|
561
|
+
function ValidateStreamProps(scope, target) {
|
|
562
|
+
ValidateProps(scope, target, exports.validStreamProps, 'StreamProps');
|
|
563
|
+
}
|
|
564
|
+
function ValidateCfnJobProps(scope, target) {
|
|
565
|
+
ValidateProps(scope, target, exports.validCfnJobProps, 'CfnJobProps');
|
|
566
|
+
}
|
|
567
|
+
function ValidateKinesisEventSourceProps(scope, target) {
|
|
568
|
+
ValidateProps(scope, target, exports.validKinesisEventSourceProps, 'KinesisEventSourceProps');
|
|
569
|
+
}
|
|
570
|
+
function ValidateCfnCacheClusterProps(scope, target) {
|
|
571
|
+
ValidateProps(scope, target, exports.validCfnCacheClusterProps, 'CfnCacheClusterProps');
|
|
572
|
+
}
|
|
573
|
+
function ValidateCfnIndexProps(scope, target) {
|
|
574
|
+
ValidateProps(scope, target, exports.validCfnIndexProps, 'CfnIndexProps');
|
|
575
|
+
}
|
|
576
|
+
function ValidateCfnDataSourceProps(scope, target) {
|
|
577
|
+
ValidateProps(scope, target, exports.validCfnDataSourceProps, 'CfnDataSourceProps');
|
|
578
|
+
}
|
|
579
|
+
function ValidateKeyProps(scope, target) {
|
|
580
|
+
ValidateProps(scope, target, exports.validKeyProps, 'KeyProps');
|
|
581
|
+
}
|
|
582
|
+
function ValidateVpcProps(scope, target) {
|
|
583
|
+
ValidateProps(scope, target, exports.validVpcProps, 'VpcProps');
|
|
584
|
+
}
|
|
585
|
+
function ValidateCfnModelProps(scope, target) {
|
|
586
|
+
ValidateProps(scope, target, exports.validCfnModelProps, 'CfnModelProps');
|
|
587
|
+
}
|
|
588
|
+
function ValidatePrivateHostedZoneProps(scope, target) {
|
|
589
|
+
ValidateProps(scope, target, exports.validPrivateHostedZoneProps, 'PrivateHostedZoneProps');
|
|
590
|
+
}
|
|
591
|
+
function ValidateCfnWebACLProps(scope, target) {
|
|
592
|
+
ValidateProps(scope, target, exports.validCfnWebACLProps, 'CfnWebACLProps');
|
|
593
|
+
}
|
|
594
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUEyZkgsc0NBYUM7QUFHRCxvRkFFQztBQUVELDRFQUVDO0FBRUQsNEVBRUM7QUFFRCxnRkFFQztBQUVELGtFQUVDO0FBRUQsZ0VBRUM7QUFFRCxvREFFQztBQUVELDhEQUVDO0FBRUQsa0VBRUM7QUFFRCx3RUFFQztBQUVELG9EQUVDO0FBRUQsd0VBRUM7QUFFRCxrREFFQztBQUVELGtEQUVDO0FBRUQsMEVBRUM7QUFFRCxvRUFFQztBQUVELHNEQUVDO0FBRUQsZ0VBRUM7QUFFRCw0Q0FFQztBQUVELDRDQUVDO0FBRUQsc0RBRUM7QUFFRCx3RUFFQztBQUVELHdEQUVDO0FBeGxCRCxtQ0FBbUM7QUFDbkMseUVBQXlFO0FBRXpFLDJFQUEyRTtBQUM5RCxRQUFBLGlDQUFpQyxHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNwRSxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixLQUFLO0lBQ0wsWUFBWTtJQUNaLGFBQWE7SUFDYixzQ0FBc0M7SUFDdEMseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILHVFQUF1RTtBQUMxRCxRQUFBLDZCQUE2QixHQUFnQixJQUFJLEdBQUcsQ0FBQztJQUNoRSxjQUFjO0lBQ2QsZUFBZTtJQUNmLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVTtJQUNWLFdBQVc7Q0FDWixDQUFDLENBQUM7QUFFSCxvREFBb0Q7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Q3ZFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLCtCQUF1QixFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsTUFBWTtJQUM3RCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxxQkFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLE1BQVk7SUFDN0QsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUscUJBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQ2xFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLDBCQUFrQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFnQiw4QkFBOEIsQ0FBQyxLQUFnQixFQUFFLE1BQVk7SUFDM0UsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsbUNBQTJCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBZ0IsRUFBRSxNQUFZO0lBQ25FLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLDJCQUFtQixFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBzY3JpcHRzL2dlbmVyYXRlLXZhbGlkYXRpb24udHNcbi8vIERvIG5vdCBlZGl0IG1hbnVhbGx5IC0gcnVuICducG0gcnVuIGdlbmVyYXRlOnZhbGlkYXRpb24nIGZyb20gdGhlIHNvdXJjZS9zY3JpcHRzIGZvbGRlciB0byByZWdlbmVyYXRlXG4vL1xuLy8gVGhpcyBmaWxlIGVuY29kZXMgdGhlIENESyBQcm9wcyBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgaW50byBkYXRhIHN0cnVjdHVyZXMgdGhhdFxuLy8gY2FuIGJlIHVzZWQgYXQgcnVudGltZSB0byB2YWxpZGF0ZSB0aGUgYXR0cmlidXRlcyBvZiBpbmNvbWluZyBDREsgUHJvcHMgb2JqZWN0cyxcbi8vIHNpbmNlIHRoZSB1c2Ugb2YgfCBhbnkgaW4gdGhlIGRlZmluaXRpb25zIHByZXZlbnRzIHZhbGlkYXRpb24gYXQgdHJhbnNwaWxhdGlvbiB0aW1lXG4vL1xuLy8gSXQgYWxzbyBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB3aWxsIHBlcmZvcm0gdGhlIHZhbGlkYXRpb24gb24gZWFjaCBQcm9wcyBvYmplY3QgdHlwZVxuLy8gcGFyc2VkXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERJU0FCTEVfUFJPUEVSVFlfVkFMSURBVElPTiB9IGZyb20gJy4vY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzJztcblxuLy8gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXG5leHBvcnQgY29uc3QgdmFsaWRBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY2xpZW50S2VlcEFsaXZlJyxcbiAgJ2Nyb3NzWm9uZUVuYWJsZWQnLFxuICAnZGVsZXRpb25Qcm90ZWN0aW9uJyxcbiAgJ2RlbnlBbGxJZ3dUcmFmZmljJyxcbiAgJ2Rlc3luY01pdGlnYXRpb25Nb2RlJyxcbiAgJ2Ryb3BJbnZhbGlkSGVhZGVyRmllbGRzJyxcbiAgJ2h0dHAyRW5hYmxlZCcsXG4gICdpZGxlVGltZW91dCcsXG4gICdpbnRlcm5ldEZhY2luZycsXG4gICdpcEFkZHJlc3NUeXBlJyxcbiAgJ2xvYWRCYWxhbmNlck5hbWUnLFxuICAnbWluaW11bUNhcGFjaXR5VW5pdCcsXG4gICdwcmVzZXJ2ZUhvc3RIZWFkZXInLFxuICAncHJlc2VydmVYZmZDbGllbnRQb3J0JyxcbiAgJ3NlY3VyaXR5R3JvdXAnLFxuICAndnBjJyxcbiAgJ3ZwY1N1Ym5ldHMnLFxuICAnd2FmRmFpbE9wZW4nLFxuICAneEFtem5UbHNWZXJzaW9uQW5kQ2lwaGVyU3VpdGVIZWFkZXJzJyxcbiAgJ3hmZkhlYWRlclByb2Nlc3NpbmdNb2RlJ1xuXSk7XG5cbi8vIEFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXG5leHBvcnQgY29uc3QgdmFsaWRBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjZXJ0aWZpY2F0ZXMnLFxuICAnZGVmYXVsdEFjdGlvbicsXG4gICdkZWZhdWx0VGFyZ2V0R3JvdXBzJyxcbiAgJ2xvYWRCYWxhbmNlcicsXG4gICdtdXR1YWxBdXRoZW50aWNhdGlvbicsXG4gICdvcGVuJyxcbiAgJ3BvcnQnLFxuICAncHJvdG9jb2wnLFxuICAnc3NsUG9saWN5J1xuXSk7XG5cbi8vIENvbnRhaW5lckRlZmluaXRpb25Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1lY3NcbmV4cG9ydCBjb25zdCB2YWxpZENvbnRhaW5lckRlZmluaXRpb25Qcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NvbW1hbmQnLFxuICAnY29udGFpbmVyTmFtZScsXG4gICdjcHUnLFxuICAnY3JlZGVudGlhbFNwZWNzJyxcbiAgJ2Rpc2FibGVOZXR3b3JraW5nJyxcbiAgJ2Ruc1NlYXJjaERvbWFpbnMnLFxuICAnZG5zU2VydmVycycsXG4gICdkb2NrZXJMYWJlbHMnLFxuICAnZG9ja2VyU2VjdXJpdHlPcHRpb25zJyxcbiAgJ2VuYWJsZVJlc3RhcnRQb2xpY3knLFxuICAnZW50cnlQb2ludCcsXG4gICdlbnZpcm9ubWVudCcsXG4gICdlbnZpcm9ubWVudEZpbGVzJyxcbiAgJ2Vzc2VudGlhbCcsXG4gICdleHRyYUhvc3RzJyxcbiAgJ2dwdUNvdW50JyxcbiAgJ2hlYWx0aENoZWNrJyxcbiAgJ2hvc3RuYW1lJyxcbiAgJ2ltYWdlJyxcbiAgJ2luZmVyZW5jZUFjY2VsZXJhdG9yUmVzb3VyY2VzJyxcbiAgJ2ludGVyYWN0aXZlJyxcbiAgJ2xpbnV4UGFyYW1ldGVycycsXG4gICdsb2dnaW5nJyxcbiAgJ21lbW9yeUxpbWl0TWlCJyxcbiAgJ21lbW9yeVJlc2VydmF0aW9uTWlCJyxcbiAgJ3BvcnRNYXBwaW5ncycsXG4gICdwcml2aWxlZ2VkJyxcbiAgJ3BzZXVkb1Rlcm1pbmFsJyxcbiAgJ3JlYWRvbmx5Um9vdEZpbGVzeXN0ZW0nLFxuICAncmVzdGFydEF0dGVtcHRQZXJpb2QnLFxuICAncmVzdGFydElnbm9yZWRFeGl0Q29kZXMnLFxuICAnc2VjcmV0cycsXG4gICdzdGFydFRpbWVvdXQnLFxuICAnc3RvcFRpbWVvdXQnLFxuICAnc3lzdGVtQ29udHJvbHMnLFxuICAndGFza0RlZmluaXRpb24nLFxuICAndWxpbWl0cycsXG4gICd1c2VyJyxcbiAgJ3ZlcnNpb25Db25zaXN0ZW5jeScsXG4gICd3b3JraW5nRGlyZWN0b3J5J1xuXSk7XG5cbi8vIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjc1xuZXhwb3J0IGNvbnN0IHZhbGlkRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjcHUnLFxuICAnZW5hYmxlRmF1bHRJbmplY3Rpb24nLFxuICAnZXBoZW1lcmFsU3RvcmFnZUdpQicsXG4gICdleGVjdXRpb25Sb2xlJyxcbiAgJ2ZhbWlseScsXG4gICdtZW1vcnlMaW1pdE1pQicsXG4gICdwaWRNb2RlJyxcbiAgJ3Byb3h5Q29uZmlndXJhdGlvbicsXG4gICdydW50aW1lUGxhdGZvcm0nLFxuICAndGFza1JvbGUnLFxuICAndm9sdW1lcydcbl0pO1xuXG4vLyBGYXJnYXRlU2VydmljZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjc1xuZXhwb3J0IGNvbnN0IHZhbGlkRmFyZ2F0ZVNlcnZpY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2Fzc2lnblB1YmxpY0lwJyxcbiAgJ2F2YWlsYWJpbGl0eVpvbmVSZWJhbGFuY2luZycsXG4gICdiYWtlVGltZScsXG4gICdjYW5hcnlDb25maWd1cmF0aW9uJyxcbiAgJ2NhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzJyxcbiAgJ2NpcmN1aXRCcmVha2VyJyxcbiAgJ2Nsb3VkTWFwT3B0aW9ucycsXG4gICdjbHVzdGVyJyxcbiAgJ2RlcGxveW1lbnRBbGFybXMnLFxuICAnZGVwbG95bWVudENvbnRyb2xsZXInLFxuICAnZGVwbG95bWVudFN0cmF0ZWd5JyxcbiAgJ2Rlc2lyZWRDb3VudCcsXG4gICdlbmFibGVFQ1NNYW5hZ2VkVGFncycsXG4gICdlbmFibGVFeGVjdXRlQ29tbWFuZCcsXG4gICdoZWFsdGhDaGVja0dyYWNlUGVyaW9kJyxcbiAgJ2xpZmVjeWNsZUhvb2tzJyxcbiAgJ2xpbmVhckNvbmZpZ3VyYXRpb24nLFxuICAnbWF4SGVhbHRoeVBlcmNlbnQnLFxuICAnbWluSGVhbHRoeVBlcmNlbnQnLFxuICAncGxhdGZvcm1WZXJzaW9uJyxcbiAgJ3Byb3BhZ2F0ZVRhZ3MnLFxuICAnc2VjdXJpdHlHcm91cHMnLFxuICAnc2VydmljZUNvbm5lY3RDb25maWd1cmF0aW9uJyxcbiAgJ3NlcnZpY2VOYW1lJyxcbiAgJ3Rhc2tEZWZpbml0aW9uJyxcbiAgJ3Rhc2tEZWZpbml0aW9uUmV2aXNpb24nLFxuICAndm9sdW1lQ29uZmlndXJhdGlvbnMnLFxuICAndnBjU3VibmV0cydcbl0pO1xuXG4vLyBMYW1iZGFSZXN0QXBpUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVxuZXhwb3J0IGNvbnN0IHZhbGlkTGFtYmRhUmVzdEFwaVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXBpS2V5U291cmNlVHlwZScsXG4gICdiaW5hcnlNZWRpYVR5cGVzJyxcbiAgJ2Nsb25lRnJvbScsXG4gICdjbG91ZFdhdGNoUm9sZScsXG4gICdjbG91ZFdhdGNoUm9sZVJlbW92YWxQb2xpY3knLFxuICAnZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zJyxcbiAgJ2RlZmF1bHRJbnRlZ3JhdGlvbicsXG4gICdkZWZhdWx0TWV0aG9kT3B0aW9ucycsXG4gICdkZXBsb3knLFxuICAnZGVwbG95T3B0aW9ucycsXG4gICdkZXNjcmlwdGlvbicsXG4gICdkaXNhYmxlRXhlY3V0ZUFwaUVuZHBvaW50JyxcbiAgJ2RvbWFpbk5hbWUnLFxuICAnZW5kcG9pbnRDb25maWd1cmF0aW9uJyxcbiAgJ2VuZHBvaW50RXhwb3J0TmFtZScsXG4gICdlbmRwb2ludFR5cGVzJyxcbiAgJ2ZhaWxPbldhcm5pbmdzJyxcbiAgJ2hhbmRsZXInLFxuICAnaW50ZWdyYXRpb25PcHRpb25zJyxcbiAgJ21pbkNvbXByZXNzaW9uU2l6ZScsXG4gICdtaW5pbXVtQ29tcHJlc3Npb25TaXplJyxcbiAgJ3BhcmFtZXRlcnMnLFxuICAncG9saWN5JyxcbiAgJ3Byb3h5JyxcbiAgJ3Jlc3RBcGlOYW1lJyxcbiAgJ3JldGFpbkRlcGxveW1lbnRzJ1xuXSk7XG5cbi8vIFJlc3RBcGlQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XG5leHBvcnQgY29uc3QgdmFsaWRSZXN0QXBpUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhcGlLZXlTb3VyY2VUeXBlJyxcbiAgJ2JpbmFyeU1lZGlhVHlwZXMnLFxuICAnY2xvbmVGcm9tJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlJyxcbiAgJ2Nsb3VkV2F0Y2hSb2xlUmVtb3ZhbFBvbGljeScsXG4gICdkZWZhdWx0Q29yc1ByZWZsaWdodE9wdGlvbnMnLFxuICAnZGVmYXVsdEludGVncmF0aW9uJyxcbiAgJ2RlZmF1bHRNZXRob2RPcHRpb25zJyxcbiAgJ2RlcGxveScsXG4gICdkZXBsb3lPcHRpb25zJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2Rpc2FibGVFeGVjdXRlQXBpRW5kcG9pbnQnLFxuICAnZG9tYWluTmFtZScsXG4gICdlbmRwb2ludENvbmZpZ3VyYXRpb24nLFxuICAnZW5kcG9pbnRFeHBvcnROYW1lJyxcbiAgJ2VuZHBvaW50VHlwZXMnLFxuICAnZmFpbE9uV2FybmluZ3MnLFxuICAnbWluQ29tcHJlc3Npb25TaXplJyxcbiAgJ21pbmltdW1Db21wcmVzc2lvblNpemUnLFxuICAncGFyYW1ldGVycycsXG4gICdwb2xpY3knLFxuICAncmVzdEFwaU5hbWUnLFxuICAncmV0YWluRGVwbG95bWVudHMnXG5dKTtcblxuLy8gRGlzdHJpYnV0aW9uUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFxuZXhwb3J0IGNvbnN0IHZhbGlkRGlzdHJpYnV0aW9uUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhZGRpdGlvbmFsQmVoYXZpb3JzJyxcbiAgJ2NlcnRpZmljYXRlJyxcbiAgJ2NvbW1lbnQnLFxuICAnZGVmYXVsdEJlaGF2aW9yJyxcbiAgJ2RlZmF1bHRSb290T2JqZWN0JyxcbiAgJ2RvbWFpbk5hbWVzJyxcbiAgJ2VuYWJsZUlwdjYnLFxuICAnZW5hYmxlTG9nZ2luZycsXG4gICdlbmFibGVkJyxcbiAgJ2Vycm9yUmVzcG9uc2VzJyxcbiAgJ2dlb1Jlc3RyaWN0aW9uJyxcbiAgJ2h0dHBWZXJzaW9uJyxcbiAgJ2xvZ0J1Y2tldCcsXG4gICdsb2dGaWxlUHJlZml4JyxcbiAgJ2xvZ0luY2x1ZGVzQ29va2llcycsXG4gICdtaW5pbXVtUHJvdG9jb2xWZXJzaW9uJyxcbiAgJ3ByaWNlQ2xhc3MnLFxuICAncHVibGlzaEFkZGl0aW9uYWxNZXRyaWNzJyxcbiAgJ3NzbFN1cHBvcnRNZXRob2QnLFxuICAnd2ViQWNsSWQnXG5dKTtcblxuLy8gVXNlclBvb2xDbGllbnRQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1jb2duaXRvXG5leHBvcnQgY29uc3QgdmFsaWRVc2VyUG9vbENsaWVudFByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWNjZXNzVG9rZW5WYWxpZGl0eScsXG4gICdhbmFseXRpY3MnLFxuICAnYXV0aEZsb3dzJyxcbiAgJ2F1dGhTZXNzaW9uVmFsaWRpdHknLFxuICAnZGlzYWJsZU9BdXRoJyxcbiAgJ2VuYWJsZVByb3BhZ2F0ZUFkZGl0aW9uYWxVc2VyQ29udGV4dERhdGEnLFxuICAnZW5hYmxlVG9rZW5SZXZvY2F0aW9uJyxcbiAgJ2dlbmVyYXRlU2VjcmV0JyxcbiAgJ2lkVG9rZW5WYWxpZGl0eScsXG4gICdvQXV0aCcsXG4gICdwcmV2ZW50VXNlckV4aXN0ZW5jZUVycm9ycycsXG4gICdyZWFkQXR0cmlidXRlcycsXG4gICdyZWZyZXNoVG9rZW5Sb3RhdGlvbkdyYWNlUGVyaW9kJyxcbiAgJ3JlZnJlc2hUb2tlblZhbGlkaXR5JyxcbiAgJ3N1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzJyxcbiAgJ3VzZXJQb29sJyxcbiAgJ3VzZXJQb29sQ2xpZW50TmFtZScsXG4gICd3cml0ZUF0dHJpYnV0ZXMnXG5dKTtcblxuLy8gRHluYW1vRXZlbnRTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlc1xuZXhwb3J0IGNvbnN0IHZhbGlkRHluYW1vRXZlbnRTb3VyY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2JhdGNoU2l6ZScsXG4gICdiaXNlY3RCYXRjaE9uRXJyb3InLFxuICAnZW5hYmxlZCcsXG4gICdmaWx0ZXJFbmNyeXB0aW9uJyxcbiAgJ2ZpbHRlcnMnLFxuICAnbWF4QmF0Y2hpbmdXaW5kb3cnLFxuICAnbWF4UmVjb3JkQWdlJyxcbiAgJ21ldHJpY3NDb25maWcnLFxuICAnb25GYWlsdXJlJyxcbiAgJ3BhcmFsbGVsaXphdGlvbkZhY3RvcicsXG4gICdwcm92aXNpb25lZFBvbGxlckNvbmZpZycsXG4gICdyZXBvcnRCYXRjaEl0ZW1GYWlsdXJlcycsXG4gICdyZXRyeUF0dGVtcHRzJyxcbiAgJ3N0YXJ0aW5nUG9zaXRpb24nLFxuICAndHVtYmxpbmdXaW5kb3cnXG5dKTtcblxuLy8gQ2ZuUGlwZVByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLXBpcGVzXG5leHBvcnQgY29uc3QgdmFsaWRDZm5QaXBlUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdkZXNjcmlwdGlvbicsXG4gICdkZXNpcmVkU3RhdGUnLFxuICAnZW5yaWNobWVudCcsXG4gICdlbnJpY2htZW50UGFyYW1ldGVycycsXG4gICdrbXNLZXlJZGVudGlmaWVyJyxcbiAgJ2xvZ0NvbmZpZ3VyYXRpb24nLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NvdXJjZScsXG4gICdzb3VyY2VQYXJhbWV0ZXJzJyxcbiAgJ3RhZ3MnLFxuICAndGFyZ2V0JyxcbiAgJ3RhcmdldFBhcmFtZXRlcnMnXG5dKTtcblxuLy8gQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1raW5lc2lzZmlyZWhvc2VcbmV4cG9ydCBjb25zdCB2YWxpZENmbkRlbGl2ZXJ5U3RyZWFtUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhbWF6b25PcGVuU2VhcmNoU2VydmVybGVzc0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdhbWF6b25vcGVuc2VhcmNoc2VydmljZURlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdkYXRhYmFzZVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnZGVsaXZlcnlTdHJlYW1FbmNyeXB0aW9uQ29uZmlndXJhdGlvbklucHV0JyxcbiAgJ2RlbGl2ZXJ5U3RyZWFtTmFtZScsXG4gICdkZWxpdmVyeVN0cmVhbVR5cGUnLFxuICAnZGlyZWN0UHV0U291cmNlQ29uZmlndXJhdGlvbicsXG4gICdlbGFzdGljc2VhcmNoRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2V4dGVuZGVkUzNEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnaHR0cEVuZHBvaW50RGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ2ljZWJlcmdEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAna2luZXNpc1N0cmVhbVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnbXNrU291cmNlQ29uZmlndXJhdGlvbicsXG4gICdyZWRzaGlmdERlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdzM0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbicsXG4gICdzbm93Zmxha2VEZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb24nLFxuICAnc3BsdW5rRGVzdGluYXRpb25Db25maWd1cmF0aW9uJyxcbiAgJ3RhZ3MnXG5dKTtcblxuLy8gU3RyZWFtUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3Mta2luZXNpc1xuZXhwb3J0IGNvbnN0IHZhbGlkU3RyZWFtUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdlbmNyeXB0aW9uJyxcbiAgJ2VuY3J5cHRpb25LZXknLFxuICAncmVtb3ZhbFBvbGljeScsXG4gICdyZXRlbnRpb25QZXJpb2QnLFxuICAnc2hhcmRDb3VudCcsXG4gICdzaGFyZExldmVsTWV0cmljcycsXG4gICdzdHJlYW1Nb2RlJyxcbiAgJ3N0cmVhbU5hbWUnXG5dKTtcblxuLy8gQ2ZuSm9iUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZ2x1ZVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuSm9iUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhbGxvY2F0ZWRDYXBhY2l0eScsXG4gICdjb21tYW5kJyxcbiAgJ2Nvbm5lY3Rpb25zJyxcbiAgJ2RlZmF1bHRBcmd1bWVudHMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZXhlY3V0aW9uQ2xhc3MnLFxuICAnZXhlY3V0aW9uUHJvcGVydHknLFxuICAnZ2x1ZVZlcnNpb24nLFxuICAnam9iTW9kZScsXG4gICdqb2JSdW5RdWV1aW5nRW5hYmxlZCcsXG4gICdsb2dVcmknLFxuICAnbWFpbnRlbmFuY2VXaW5kb3cnLFxuICAnbWF4Q2FwYWNpdHknLFxuICAnbWF4UmV0cmllcycsXG4gICduYW1lJyxcbiAgJ25vbk92ZXJyaWRhYmxlQXJndW1lbnRzJyxcbiAgJ25vdGlmaWNhdGlvblByb3BlcnR5JyxcbiAgJ251bWJlck9mV29ya2VycycsXG4gICdyb2xlJyxcbiAgJ3NlY3VyaXR5Q29uZmlndXJhdGlvbicsXG4gICd0YWdzJyxcbiAgJ3RpbWVvdXQnLFxuICAnd29ya2VyVHlwZSdcbl0pO1xuXG4vLyBLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlc1xuZXhwb3J0IGNvbnN0IHZhbGlkS2luZXNpc0V2ZW50U291cmNlUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdiYXRjaFNpemUnLFxuICAnYmlzZWN0QmF0Y2hPbkVycm9yJyxcbiAgJ2VuYWJsZWQnLFxuICAnZmlsdGVyRW5jcnlwdGlvbicsXG4gICdmaWx0ZXJzJyxcbiAgJ21heEJhdGNoaW5nV2luZG93JyxcbiAgJ21heFJlY29yZEFnZScsXG4gICdtZXRyaWNzQ29uZmlnJyxcbiAgJ29uRmFpbHVyZScsXG4gICdwYXJhbGxlbGl6YXRpb25GYWN0b3InLFxuICAncHJvdmlzaW9uZWRQb2xsZXJDb25maWcnLFxuICAncmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMnLFxuICAncmV0cnlBdHRlbXB0cycsXG4gICdzdGFydGluZ1Bvc2l0aW9uJyxcbiAgJ3N0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAnLFxuICAndHVtYmxpbmdXaW5kb3cnXG5dKTtcblxuLy8gQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGVcbmV4cG9ydCBjb25zdCB2YWxpZENmbkNhY2hlQ2x1c3RlclByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUnLFxuICAnYXpNb2RlJyxcbiAgJ2NhY2hlTm9kZVR5cGUnLFxuICAnY2FjaGVQYXJhbWV0ZXJHcm91cE5hbWUnLFxuICAnY2FjaGVTZWN1cml0eUdyb3VwTmFtZXMnLFxuICAnY2FjaGVTdWJuZXRHcm91cE5hbWUnLFxuICAnY2x1c3Rlck5hbWUnLFxuICAnZW5naW5lJyxcbiAgJ2VuZ2luZVZlcnNpb24nLFxuICAnaXBEaXNjb3ZlcnknLFxuICAnbG9nRGVsaXZlcnlDb25maWd1cmF0aW9ucycsXG4gICduZXR3b3JrVHlwZScsXG4gICdub3RpZmljYXRpb25Ub3BpY0FybicsXG4gICdudW1DYWNoZU5vZGVzJyxcbiAgJ3BvcnQnLFxuICAncHJlZmVycmVkQXZhaWxhYmlsaXR5Wm9uZScsXG4gICdwcmVmZXJyZWRBdmFpbGFiaWxpdHlab25lcycsXG4gICdwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdycsXG4gICdzbmFwc2hvdEFybnMnLFxuICAnc25hcHNob3ROYW1lJyxcbiAgJ3NuYXBzaG90UmV0ZW50aW9uTGltaXQnLFxuICAnc25hcHNob3RXaW5kb3cnLFxuICAndGFncycsXG4gICd0cmFuc2l0RW5jcnlwdGlvbkVuYWJsZWQnLFxuICAndnBjU2VjdXJpdHlHcm91cElkcydcbl0pO1xuXG4vLyBDZm5JbmRleFByb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWtlbmRyYVxuZXhwb3J0IGNvbnN0IHZhbGlkQ2ZuSW5kZXhQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NhcGFjaXR5VW5pdHMnLFxuICAnZGVzY3JpcHRpb24nLFxuICAnZG9jdW1lbnRNZXRhZGF0YUNvbmZpZ3VyYXRpb25zJyxcbiAgJ2VkaXRpb24nLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbicsXG4gICd0YWdzJyxcbiAgJ3VzZXJDb250ZXh0UG9saWN5JyxcbiAgJ3VzZXJUb2tlbkNvbmZpZ3VyYXRpb25zJ1xuXSk7XG5cbi8vIENmbkRhdGFTb3VyY2VQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1rZW5kcmFcbmV4cG9ydCBjb25zdCB2YWxpZENmbkRhdGFTb3VyY2VQcm9wczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2N1c3RvbURvY3VtZW50RW5yaWNobWVudENvbmZpZ3VyYXRpb24nLFxuICAnZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24nLFxuICAnZGVzY3JpcHRpb24nLFxuICAnaW5kZXhJZCcsXG4gICdsYW5ndWFnZUNvZGUnLFxuICAnbmFtZScsXG4gICdyb2xlQXJuJyxcbiAgJ3NjaGVkdWxlJyxcbiAgJ3RhZ3MnLFxuICAndHlwZSdcbl0pO1xuXG4vLyBLZXlQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1rbXNcbmV4cG9ydCBjb25zdCB2YWxpZEtleVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWRtaW5zJyxcbiAgJ2FsaWFzJyxcbiAgJ2Rlc2NyaXB0aW9uJyxcbiAgJ2VuYWJsZUtleVJvdGF0aW9uJyxcbiAgJ2VuYWJsZWQnLFxuICAna2V5U3BlYycsXG4gICdrZXlVc2FnZScsXG4gICdtdWx0aVJlZ2lvbicsXG4gICdwZW5kaW5nV2luZG93JyxcbiAgJ3BvbGljeScsXG4gICdyZW1vdmFsUG9saWN5JyxcbiAgJ3JvdGF0aW9uUGVyaW9kJ1xuXSk7XG5cbi8vIFZwY1Byb3BzIGZyb20gYXdzLWNkay1saWIvYXdzLWVjMlxuZXhwb3J0IGNvbnN0IHZhbGlkVnBjUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdhdmFpbGFiaWxpdHlab25lcycsXG4gICdjaWRyJyxcbiAgJ2NyZWF0ZUludGVybmV0R2F0ZXdheScsXG4gICdkZWZhdWx0SW5zdGFuY2VUZW5hbmN5JyxcbiAgJ2VuYWJsZURuc0hvc3RuYW1lcycsXG4gICdlbmFibGVEbnNTdXBwb3J0JyxcbiAgJ2Zsb3dMb2dzJyxcbiAgJ2dhdGV3YXlFbmRwb2ludHMnLFxuICAnaXBBZGRyZXNzZXMnLFxuICAnaXBQcm90b2NvbCcsXG4gICdpcHY2QWRkcmVzc2VzJyxcbiAgJ21heEF6cycsXG4gICduYXRHYXRld2F5UHJvdmlkZXInLFxuICAnbmF0R2F0ZXdheVN1Ym5ldHMnLFxuICAnbmF0R2F0ZXdheXMnLFxuICAncmVzZXJ2ZWRBenMnLFxuICAncmVzdHJpY3REZWZhdWx0U2VjdXJpdHlHcm91cCcsXG4gICdzdWJuZXRDb25maWd1cmF0aW9uJyxcbiAgJ3ZwY05hbWUnLFxuICAndnBuQ29ubmVjdGlvbnMnLFxuICAndnBuR2F0ZXdheScsXG4gICd2cG5HYXRld2F5QXNuJyxcbiAgJ3ZwblJvdXRlUHJvcGFnYXRpb24nXG5dKTtcblxuLy8gQ2ZuTW9kZWxQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1zYWdlbWFrZXJcbmV4cG9ydCBjb25zdCB2YWxpZENmbk1vZGVsUHJvcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdjb250YWluZXJzJyxcbiAgJ2VuYWJsZU5ldHdvcmtJc29sYXRpb24nLFxuICAnZXhlY3V0aW9uUm9sZUFybicsXG4gICdpbmZlcmVuY2VFeGVjdXRpb25Db25maWcnLFxuICAnbW9kZWxOYW1lJyxcbiAgJ3ByaW1hcnlDb250YWluZXInLFxuICAndGFncycsXG4gICd2cGNDb25maWcnXG5dKTtcblxuLy8gUHJpdmF0ZUhvc3RlZFpvbmVQcm9wcyBmcm9tIGF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXG5leHBvcnQgY29uc3QgdmFsaWRQcml2YXRlSG9zdGVkWm9uZVByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYWRkVHJhaWxpbmdEb3QnLFxuICAnY29tbWVudCcsXG4gICdxdWVyeUxvZ3NMb2dHcm91cEFybicsXG4gICd2cGMnLFxuICAnem9uZU5hbWUnXG5dKTtcblxuLy8gQ2ZuV2ViQUNMUHJvcHMgZnJvbSBhd3MtY2RrLWxpYi9hd3Mtd2FmdjJcbmV4cG9ydCBjb25zdCB2YWxpZENmbldlYkFDTFByb3BzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnYXBwbGljYXRpb25Db25maWcnLFxuICAnYXNzb2NpYXRpb25Db25maWcnLFxuICAnY2FwdGNoYUNvbmZpZycsXG4gICdjaGFsbGVuZ2VDb25maWcnLFxuICAnY3VzdG9tUmVzcG9uc2VCb2RpZXMnLFxuICAnZGF0YVByb3RlY3Rpb25Db25maWcnLFxuICAnZGVmYXVsdEFjdGlvbicsXG4gICdkZXNjcmlwdGlvbicsXG4gICduYW1lJyxcbiAgJ29uU291cmNlRERvU1Byb3RlY3Rpb25Db25maWcnLFxuICAncnVsZXMnLFxuICAnc2NvcGUnLFxuICAndGFncycsXG4gICd0b2tlbkRvbWFpbnMnLFxuICAndmlzaWJpbGl0eUNvbmZpZydcbl0pO1xuXG4vLyBTaGFyZWQgdmFsaWRhdGlvbiBpbXBsZW1lbnRhdGlvblxuLy8gU2NvcGUgaXMgcmVxdWlyZWQgZm9yIGZlYXR1cmUgZmxhZyBjaGVja2luZ1xuLy8gVGFyZ2V0IGNhbiBiZSB1bmRlZmluZWQgLSB2YWxpZGF0aW9uIGlzIHNraXBwZWQgaWYgdGFyZ2V0IGlzIHVuZGVmaW5lZFxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0OiBhbnkgfCB1bmRlZmluZWQsIHZhbGlkUHJvcHM6IFNldDxzdHJpbmc+LCBwcm9wc1R5cGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8gQ2hlY2sgaWYgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZCB2aWEgZmVhdHVyZSBmbGFnXG4gIGlmIChjZGsuRmVhdHVyZUZsYWdzLm9mKHNjb3BlKS5pc0VuYWJsZWQoRElTQUJMRV9QUk9QRVJUWV9WQUxJREFUSU9OKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXRhcmdldCkge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiB0YXJnZXQpIHtcbiAgICBpZiAoIXZhbGlkUHJvcHMuaGFzKGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRVJST1IgLSAke2tleX0gaXMgbm90IGEgdmFsaWQgcHJvcGVydHkgb2YgJHtwcm9wc1R5cGVOYW1lfWApO1xuICAgIH1cbiAgfVxufVxuXG4vLyBWYWxpZGF0aW9uIGZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMsICdBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcywgJ0FwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDb250YWluZXJEZWZpbml0aW9uUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDb250YWluZXJEZWZpbml0aW9uUHJvcHMsICdDb250YWluZXJEZWZpbml0aW9uUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcywgJ0ZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUZhcmdhdGVTZXJ2aWNlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRGYXJnYXRlU2VydmljZVByb3BzLCAnRmFyZ2F0ZVNlcnZpY2VQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVMYW1iZGFSZXN0QXBpUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRMYW1iZGFSZXN0QXBpUHJvcHMsICdMYW1iZGFSZXN0QXBpUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUmVzdEFwaVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkUmVzdEFwaVByb3BzLCAnUmVzdEFwaVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZURpc3RyaWJ1dGlvblByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkRGlzdHJpYnV0aW9uUHJvcHMsICdEaXN0cmlidXRpb25Qcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVVc2VyUG9vbENsaWVudFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkVXNlclBvb2xDbGllbnRQcm9wcywgJ1VzZXJQb29sQ2xpZW50UHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlRHluYW1vRXZlbnRTb3VyY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZER5bmFtb0V2ZW50U291cmNlUHJvcHMsICdEeW5hbW9FdmVudFNvdXJjZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmblBpcGVQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZENmblBpcGVQcm9wcywgJ0NmblBpcGVQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5EZWxpdmVyeVN0cmVhbVByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuRGVsaXZlcnlTdHJlYW1Qcm9wcywgJ0NmbkRlbGl2ZXJ5U3RyZWFtUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlU3RyZWFtUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRTdHJlYW1Qcm9wcywgJ1N0cmVhbVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkpvYlByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuSm9iUHJvcHMsICdDZm5Kb2JQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZEtpbmVzaXNFdmVudFNvdXJjZVByb3BzLCAnS2luZXNpc0V2ZW50U291cmNlUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5DYWNoZUNsdXN0ZXJQcm9wcywgJ0NmbkNhY2hlQ2x1c3RlclByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbkluZGV4UHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5JbmRleFByb3BzLCAnQ2ZuSW5kZXhQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5EYXRhU291cmNlUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRDZm5EYXRhU291cmNlUHJvcHMsICdDZm5EYXRhU291cmNlUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlS2V5UHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0PzogYW55KTogdm9pZCB7XG4gIFZhbGlkYXRlUHJvcHMoc2NvcGUsIHRhcmdldCwgdmFsaWRLZXlQcm9wcywgJ0tleVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZVZwY1Byb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkVnBjUHJvcHMsICdWcGNQcm9wcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVDZm5Nb2RlbFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuTW9kZWxQcm9wcywgJ0Nmbk1vZGVsUHJvcHMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlUHJpdmF0ZUhvc3RlZFpvbmVQcm9wcyhzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ/OiBhbnkpOiB2b2lkIHtcbiAgVmFsaWRhdGVQcm9wcyhzY29wZSwgdGFyZ2V0LCB2YWxpZFByaXZhdGVIb3N0ZWRab25lUHJvcHMsICdQcml2YXRlSG9zdGVkWm9uZVByb3BzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZUNmbldlYkFDTFByb3BzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldD86IGFueSk6IHZvaWQge1xuICBWYWxpZGF0ZVByb3BzKHNjb3BlLCB0YXJnZXQsIHZhbGlkQ2ZuV2ViQUNMUHJvcHMsICdDZm5XZWJBQ0xQcm9wcycpO1xufVxuIl19
|
package/nohoist.sh
CHANGED
|
@@ -4,7 +4,12 @@ deepmerge
|
|
|
4
4
|
npmlog
|
|
5
5
|
"
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
if [ ! -d "node_modules" ]; then
|
|
8
|
+
echo "Error: node_modules folder does not exist."
|
|
9
|
+
echo "deployment/v2/bootstrap.sh must be run before this script"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
8
13
|
for package in $packagess; do
|
|
9
14
|
echo "Installing $package"
|
|
10
15
|
cp -r ../../../node_modules/$package ./node_modules/
|