aws-cdk 2.1021.0 → 2.1022.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/README.md +60 -20
- package/THIRD_PARTY_LICENSES +38 -38
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/cli/cdk-toolkit.d.ts +1 -0
- package/lib/cli/cdk-toolkit.js +25 -2
- package/lib/cli/cli-config.js +8 -2
- package/lib/cli/cli-type-registry.json +14 -1
- package/lib/cli/cli.js +39 -6
- package/lib/cli/convert-to-user-input.js +5 -1
- package/lib/cli/io-host/cli-io-host.d.ts +10 -5
- package/lib/cli/io-host/cli-io-host.js +70 -11
- package/lib/cli/parse-command-line-arguments.js +14 -2
- package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
- package/lib/cli/telemetry/collect-telemetry.js +15 -0
- package/lib/cli/telemetry/error.d.ts +2 -0
- package/lib/cli/telemetry/error.js +16 -0
- package/lib/cli/telemetry/feature-flags.d.ts +96 -0
- package/lib/cli/telemetry/feature-flags.js +103 -0
- package/lib/cli/telemetry/installation-id.d.ts +5 -0
- package/lib/cli/telemetry/installation-id.js +47 -0
- package/lib/cli/telemetry/library-version.d.ts +2 -0
- package/lib/cli/telemetry/library-version.js +30 -0
- package/lib/cli/telemetry/messages.d.ts +40 -0
- package/lib/cli/telemetry/messages.js +65 -0
- package/lib/cli/telemetry/sanitation.d.ts +100 -0
- package/lib/cli/telemetry/sanitation.js +79 -0
- package/lib/cli/telemetry/schema.d.ts +47 -19
- package/lib/cli/telemetry/schema.js +10 -1
- package/lib/cli/telemetry/session.d.ts +33 -0
- package/lib/cli/telemetry/session.js +130 -0
- package/lib/cli/user-input.d.ts +13 -1
- package/lib/cli/user-input.js +1 -1
- package/lib/cli/util/ci.d.ts +5 -0
- package/lib/cli/util/ci.js +11 -0
- package/lib/cli/util/yargs-helpers.d.ts +1 -1
- package/lib/cli/util/yargs-helpers.js +5 -5
- package/lib/cli/version.js +1 -2
- package/lib/cxapp/cloud-executable.js +41 -26
- package/lib/index.js +3922 -2165
- package/lib/init-templates/.init-version.json +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FeatureFlag = void 0;
|
|
4
|
+
// TODO: implement this by bundling the source of truth with the CDK CLI
|
|
5
|
+
// We are currently hardcoding these values to facilitate a quicker release.
|
|
6
|
+
/**
|
|
7
|
+
* Enum of all valid CDK feature flag names.
|
|
8
|
+
*
|
|
9
|
+
* These flags are used to control behavior changes in the CDK.
|
|
10
|
+
* For more information, see: https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md
|
|
11
|
+
*/
|
|
12
|
+
var FeatureFlag;
|
|
13
|
+
(function (FeatureFlag) {
|
|
14
|
+
FeatureFlag["CORE_NEW_STYLE_STACK_SYNTHESIS"] = "@aws-cdk/core:newStyleStackSynthesis";
|
|
15
|
+
FeatureFlag["CORE_STACK_RELATIVE_EXPORTS"] = "@aws-cdk/core:stackRelativeExports";
|
|
16
|
+
FeatureFlag["RDS_LOWERCASE_DB_IDENTIFIER"] = "@aws-cdk/aws-rds:lowercaseDbIdentifier";
|
|
17
|
+
FeatureFlag["APIGATEWAY_USAGE_PLAN_KEY_ORDER_INSENSITIVE_ID"] = "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId";
|
|
18
|
+
FeatureFlag["LAMBDA_RECOGNIZE_VERSION_PROPS"] = "@aws-cdk/aws-lambda:recognizeVersionProps";
|
|
19
|
+
FeatureFlag["CLOUDFRONT_DEFAULT_SECURITY_POLICY_TLS_V1_2_2021"] = "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021";
|
|
20
|
+
FeatureFlag["CORE_TARGET_PARTITIONS"] = "@aws-cdk/core:target-partitions";
|
|
21
|
+
FeatureFlag["ECS_SERVICE_EXTENSIONS_ENABLE_DEFAULT_LOG_DRIVER"] = "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver";
|
|
22
|
+
FeatureFlag["EC2_UNIQUE_IMDSV2_TEMPLATE_NAME"] = "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName";
|
|
23
|
+
FeatureFlag["IAM_MINIMIZE_POLICIES"] = "@aws-cdk/aws-iam:minimizePolicies";
|
|
24
|
+
FeatureFlag["CORE_CHECK_SECRET_USAGE"] = "@aws-cdk/core:checkSecretUsage";
|
|
25
|
+
FeatureFlag["LAMBDA_RECOGNIZE_LAYER_VERSION"] = "@aws-cdk/aws-lambda:recognizeLayerVersion";
|
|
26
|
+
FeatureFlag["CORE_VALIDATE_SNAPSHOT_REMOVAL_POLICY"] = "@aws-cdk/core:validateSnapshotRemovalPolicy";
|
|
27
|
+
FeatureFlag["CODEPIPELINE_CROSS_ACCOUNT_KEY_ALIAS_STACK_SAFE_RESOURCE_NAME"] = "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName";
|
|
28
|
+
FeatureFlag["S3_CREATE_DEFAULT_LOGGING_POLICY"] = "@aws-cdk/aws-s3:createDefaultLoggingPolicy";
|
|
29
|
+
FeatureFlag["SNS_SUBSCRIPTIONS_RESTRICT_SQS_DECRYPTION"] = "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption";
|
|
30
|
+
FeatureFlag["ECS_ARN_FORMAT_INCLUDES_CLUSTER_NAME"] = "@aws-cdk/aws-ecs:arnFormatIncludesClusterName";
|
|
31
|
+
FeatureFlag["APIGATEWAY_DISABLE_CLOUD_WATCH_ROLE"] = "@aws-cdk/aws-apigateway:disableCloudWatchRole";
|
|
32
|
+
FeatureFlag["CORE_ENABLE_PARTITION_LITERALS"] = "@aws-cdk/core:enablePartitionLiterals";
|
|
33
|
+
FeatureFlag["ECS_DISABLE_EXPLICIT_DEPLOYMENT_CONTROLLER_FOR_CIRCUIT_BREAKER"] = "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker";
|
|
34
|
+
FeatureFlag["EVENTS_EVENTS_TARGET_QUEUE_SAME_ACCOUNT"] = "@aws-cdk/aws-events:eventsTargetQueueSameAccount";
|
|
35
|
+
FeatureFlag["IAM_IMPORTED_ROLE_STACK_SAFE_DEFAULT_POLICY_NAME"] = "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName";
|
|
36
|
+
FeatureFlag["S3_SERVER_ACCESS_LOGS_USE_BUCKET_POLICY"] = "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy";
|
|
37
|
+
FeatureFlag["CUSTOMRESOURCES_INSTALL_LATEST_AWS_SDK_DEFAULT"] = "@aws-cdk/customresources:installLatestAwsSdkDefault";
|
|
38
|
+
FeatureFlag["ROUTE53_PATTERNS_USE_CERTIFICATE"] = "@aws-cdk/aws-route53-patterns:useCertificate";
|
|
39
|
+
FeatureFlag["CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP"] = "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup";
|
|
40
|
+
FeatureFlag["RDS_DATABASE_PROXY_UNIQUE_RESOURCE_NAME"] = "@aws-cdk/aws-rds:databaseProxyUniqueResourceName";
|
|
41
|
+
FeatureFlag["APIGATEWAY_AUTHORIZER_CHANGE_DEPLOYMENT_LOGICAL_ID"] = "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId";
|
|
42
|
+
FeatureFlag["EC2_LAUNCH_TEMPLATE_DEFAULT_USER_DATA"] = "@aws-cdk/aws-ec2:launchTemplateDefaultUserData";
|
|
43
|
+
FeatureFlag["SECRETSMANAGER_USE_ATTACHED_SECRET_RESOURCE_POLICY_FOR_SECRET_TARGET_ATTACHMENTS"] = "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments";
|
|
44
|
+
FeatureFlag["REDSHIFT_COLUMN_ID"] = "@aws-cdk/aws-redshift:columnId";
|
|
45
|
+
FeatureFlag["STEPFUNCTIONS_TASKS_ENABLE_EMR_SERVICE_POLICY_V2"] = "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2";
|
|
46
|
+
FeatureFlag["APIGATEWAY_REQUEST_VALIDATOR_UNIQUE_ID"] = "@aws-cdk/aws-apigateway:requestValidatorUniqueId";
|
|
47
|
+
FeatureFlag["EC2_RESTRICT_DEFAULT_SECURITY_GROUP"] = "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup";
|
|
48
|
+
FeatureFlag["KMS_ALIAS_NAME_REF"] = "@aws-cdk/aws-kms:aliasNameRef";
|
|
49
|
+
FeatureFlag["CORE_INCLUDE_PREFIX_IN_UNIQUE_NAME_GENERATION"] = "@aws-cdk/core:includePrefixInUniqueNameGeneration";
|
|
50
|
+
FeatureFlag["AUTOSCALING_GENERATE_LAUNCH_TEMPLATE_INSTEAD_OF_LAUNCH_CONFIG"] = "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig";
|
|
51
|
+
FeatureFlag["OPENSEARCHSERVICE_ENABLE_OPENSEARCH_MULTI_AZ_WITH_STANDBY"] = "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby";
|
|
52
|
+
FeatureFlag["EFS_DENY_ANONYMOUS_ACCESS"] = "@aws-cdk/aws-efs:denyAnonymousAccess";
|
|
53
|
+
FeatureFlag["EFS_MOUNT_TARGET_ORDER_INSENSITIVE_LOGICAL_ID"] = "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId";
|
|
54
|
+
FeatureFlag["LAMBDA_NODEJS_USE_LATEST_RUNTIME_VERSION"] = "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion";
|
|
55
|
+
FeatureFlag["APPSYNC_USE_ARN_FOR_SOURCE_API_ASSOCIATION_IDENTIFIER"] = "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier";
|
|
56
|
+
FeatureFlag["RDS_AURORA_CLUSTER_CHANGE_SCOPE_OF_INSTANCE_PARAMETER_GROUP_WITH_EACH_PARAMETERS"] = "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters";
|
|
57
|
+
FeatureFlag["RDS_PREVENT_RENDERING_DEPRECATED_CREDENTIALS"] = "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials";
|
|
58
|
+
FeatureFlag["CODEPIPELINE_ACTIONS_USE_NEW_DEFAULT_BRANCH_FOR_CODE_COMMIT_SOURCE"] = "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource";
|
|
59
|
+
FeatureFlag["CLOUDWATCH_ACTIONS_CHANGE_LAMBDA_PERMISSION_LOGICAL_ID_FOR_LAMBDA_ACTION"] = "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction";
|
|
60
|
+
FeatureFlag["CODEPIPELINE_CROSS_ACCOUNT_KEYS_DEFAULT_VALUE_TO_FALSE"] = "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse";
|
|
61
|
+
FeatureFlag["CODEPIPELINE_DEFAULT_PIPELINE_TYPE_TO_V2"] = "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2";
|
|
62
|
+
FeatureFlag["KMS_REDUCE_CROSS_ACCOUNT_REGION_POLICY_SCOPE"] = "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope";
|
|
63
|
+
FeatureFlag["EKS_NODEGROUP_NAME_ATTRIBUTE"] = "@aws-cdk/aws-eks:nodegroupNameAttribute";
|
|
64
|
+
FeatureFlag["EC2_EBS_DEFAULT_GP3_VOLUME"] = "@aws-cdk/aws-ec2:ebsDefaultGp3Volume";
|
|
65
|
+
FeatureFlag["PIPELINES_REDUCE_ASSET_ROLE_TRUST_SCOPE"] = "@aws-cdk/pipelines:reduceAssetRoleTrustScope";
|
|
66
|
+
FeatureFlag["ECS_REMOVE_DEFAULT_DEPLOYMENT_ALARM"] = "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm";
|
|
67
|
+
FeatureFlag["CUSTOM_RESOURCES_LOG_API_RESPONSE_DATA_PROPERTY_TRUE_DEFAULT"] = "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault";
|
|
68
|
+
FeatureFlag["S3_KEEP_NOTIFICATION_IN_IMPORTED_BUCKET"] = "@aws-cdk/aws-s3:keepNotificationInImportedBucket";
|
|
69
|
+
FeatureFlag["STEPFUNCTIONS_TASKS_USE_NEW_S3_URI_PARAMETERS_FOR_BEDROCK_INVOKE_MODEL_TASK"] = "@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask";
|
|
70
|
+
FeatureFlag["ECS_REDUCE_EC2_FARGATE_CLOUD_WATCH_PERMISSIONS"] = "@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions";
|
|
71
|
+
FeatureFlag["EC2_EC2_SUM_TIMEOUT_ENABLED"] = "@aws-cdk/aws-ec2:ec2SumTimeoutEnabled";
|
|
72
|
+
FeatureFlag["APPSYNC_APP_SYNC_GRAPHQL_API_SCOPE_LAMBDA_PERMISSION"] = "@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission";
|
|
73
|
+
FeatureFlag["LAMBDA_NODEJS_SDK_V3_EXCLUDE_SMITHY_PACKAGES"] = "@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages";
|
|
74
|
+
FeatureFlag["RDS_SET_CORRECT_VALUE_FOR_DATABASE_INSTANCE_READ_REPLICA_INSTANCE_RESOURCE_ID"] = "@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId";
|
|
75
|
+
FeatureFlag["CORE_CFN_INCLUDE_REJECT_COMPLEX_RESOURCE_UPDATE_CREATE_POLICY_INTRINSICS"] = "@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics";
|
|
76
|
+
FeatureFlag["STEPFUNCTIONS_TASKS_FIX_RUN_ECS_TASK_POLICY"] = "@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy";
|
|
77
|
+
FeatureFlag["DYNAMODB_RESOURCE_POLICY_PER_REPLICA"] = "@aws-cdk/aws-dynamodb:resourcePolicyPerReplica";
|
|
78
|
+
FeatureFlag["EC2_BASTION_HOST_USE_AMAZON_LINUX_2023_BY_DEFAULT"] = "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault";
|
|
79
|
+
FeatureFlag["CORE_ASPECT_STABILIZATION"] = "@aws-cdk/core:aspectStabilization";
|
|
80
|
+
FeatureFlag["ROUTE53_TARGETS_USER_POOL_DOMAIN_NAME_METHOD_WITHOUT_CUSTOM_RESOURCE"] = "@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource";
|
|
81
|
+
FeatureFlag["ECS_DISABLE_ECS_IMDS_BLOCKING"] = "@aws-cdk/aws-ecs:disableEcsImdsBlocking";
|
|
82
|
+
FeatureFlag["ECS_ENABLE_IMDS_BLOCKING_DEPRECATED_FEATURE"] = "@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature";
|
|
83
|
+
FeatureFlag["ELASTICLOADBALANCINGV2_ALB_DUALSTACK_WITHOUT_PUBLIC_IPV4_SECURITY_GROUP_RULES_DEFAULT"] = "@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault";
|
|
84
|
+
FeatureFlag["IAM_OIDC_REJECT_UNAUTHORIZED_CONNECTIONS"] = "@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections";
|
|
85
|
+
FeatureFlag["CORE_ENABLE_ADDITIONAL_METADATA_COLLECTION"] = "@aws-cdk/core:enableAdditionalMetadataCollection";
|
|
86
|
+
FeatureFlag["LAMBDA_CREATE_NEW_POLICIES_WITH_ADD_TO_ROLE_POLICY"] = "@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy";
|
|
87
|
+
FeatureFlag["S3_SET_UNIQUE_REPLICATION_ROLE_NAME"] = "@aws-cdk/aws-s3:setUniqueReplicationRoleName";
|
|
88
|
+
FeatureFlag["PIPELINES_REDUCE_STAGE_ROLE_TRUST_SCOPE"] = "@aws-cdk/pipelines:reduceStageRoleTrustScope";
|
|
89
|
+
FeatureFlag["EVENTS_REQUIRE_EVENT_BUS_POLICY_SID"] = "@aws-cdk/aws-events:requireEventBusPolicySid";
|
|
90
|
+
FeatureFlag["DYNAMODB_RETAIN_TABLE_REPLICA"] = "@aws-cdk/aws-dynamodb:retainTableReplica";
|
|
91
|
+
FeatureFlag["COGNITO_LOG_USER_POOL_CLIENT_SECRET_VALUE"] = "@aws-cdk/cognito:logUserPoolClientSecretValue";
|
|
92
|
+
FeatureFlag["STEPFUNCTIONS_USE_DISTRIBUTED_MAP_RESULT_WRITER_V2"] = "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2";
|
|
93
|
+
FeatureFlag["PIPELINES_REDUCE_CROSS_ACCOUNT_ACTION_ROLE_TRUST_SCOPE"] = "@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope";
|
|
94
|
+
FeatureFlag["CORE_ASPECT_PRIORITIES_MUTATING"] = "@aws-cdk/core:aspectPrioritiesMutating";
|
|
95
|
+
FeatureFlag["S3_NOTIFICATIONS_ADD_S3_TRUST_KEY_POLICY_FOR_SNS_SUBSCRIPTIONS"] = "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions";
|
|
96
|
+
FeatureFlag["EC2_ALPHA_USE_RESOURCE_ID_FOR_VPC_V2_MIGRATION"] = "@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration";
|
|
97
|
+
FeatureFlag["EC2_REQUIRE_PRIVATE_SUBNETS_FOR_EGRESS_ONLY_INTERNET_GATEWAY"] = "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway";
|
|
98
|
+
FeatureFlag["S3_PUBLIC_ACCESS_BLOCKED_BY_DEFAULT"] = "@aws-cdk/aws-s3:publicAccessBlockedByDefault";
|
|
99
|
+
FeatureFlag["LAMBDA_USE_CDK_MANAGED_LOG_GROUP"] = "@aws-cdk/aws-lambda:useCdkManagedLogGroup";
|
|
100
|
+
FeatureFlag["KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL"] = "@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal";
|
|
101
|
+
FeatureFlag["CORE_EXPLICIT_STACK_TAGS"] = "@aws-cdk/core:explicitStackTags";
|
|
102
|
+
})(FeatureFlag || (exports.FeatureFlag = FeatureFlag = {}));
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZlYXR1cmUtZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQXdFO0FBQ3hFLDRFQUE0RTtBQUM1RTs7Ozs7R0FLRztBQUNILElBQVksV0F5Rlg7QUF6RkQsV0FBWSxXQUFXO0lBQ3JCLHNGQUF1RSxDQUFBO0lBQ3ZFLGlGQUFrRSxDQUFBO0lBQ2xFLHFGQUFzRSxDQUFBO0lBQ3RFLHdIQUF5RyxDQUFBO0lBQ3pHLDJGQUE0RSxDQUFBO0lBQzVFLDZIQUE4RyxDQUFBO0lBQzlHLHlFQUEwRCxDQUFBO0lBQzFELHFJQUFzSCxDQUFBO0lBQ3RILDRGQUE2RSxDQUFBO0lBQzdFLDBFQUEyRCxDQUFBO0lBQzNELHlFQUEwRCxDQUFBO0lBQzFELDJGQUE0RSxDQUFBO0lBQzVFLG9HQUFxRixDQUFBO0lBQ3JGLG9KQUFxSSxDQUFBO0lBQ3JJLDhGQUErRSxDQUFBO0lBQy9FLGtIQUFtRyxDQUFBO0lBQ25HLHFHQUFzRixDQUFBO0lBQ3RGLG9HQUFxRixDQUFBO0lBQ3JGLHVGQUF3RSxDQUFBO0lBQ3hFLHVKQUF3SSxDQUFBO0lBQ3hJLDJHQUE0RixDQUFBO0lBQzVGLDJIQUE0RyxDQUFBO0lBQzVHLDBHQUEyRixDQUFBO0lBQzNGLHFIQUFzRyxDQUFBO0lBQ3RHLGdHQUFpRixDQUFBO0lBQ2pGLHlIQUEwRyxDQUFBO0lBQzFHLDJHQUE0RixDQUFBO0lBQzVGLGlJQUFrSCxDQUFBO0lBQ2xILHVHQUF3RixDQUFBO0lBQ3hGLHlMQUEwSyxDQUFBO0lBQzFLLG9FQUFxRCxDQUFBO0lBQ3JELDZIQUE4RyxDQUFBO0lBQzlHLDBHQUEyRixDQUFBO0lBQzNGLG9HQUFxRixDQUFBO0lBQ3JGLG1FQUFvRCxDQUFBO0lBQ3BELGtIQUFtRyxDQUFBO0lBQ25HLHFKQUFzSSxDQUFBO0lBQ3RJLDhJQUErSCxDQUFBO0lBQy9ILGlGQUFrRSxDQUFBO0lBQ2xFLHNIQUF1RyxDQUFBO0lBQ3ZHLDhHQUErRixDQUFBO0lBQy9GLHFJQUFzSCxDQUFBO0lBQ3RILHVMQUF3SyxDQUFBO0lBQ3hLLHNIQUF1RyxDQUFBO0lBQ3ZHLDhKQUErSSxDQUFBO0lBQy9JLDBLQUEySixDQUFBO0lBQzNKLHVJQUF3SCxDQUFBO0lBQ3hILDZHQUE4RixDQUFBO0lBQzlGLG9IQUFxRyxDQUFBO0lBQ3JHLHVGQUF3RSxDQUFBO0lBQ3hFLGtGQUFtRSxDQUFBO0lBQ25FLHVHQUF3RixDQUFBO0lBQ3hGLG9HQUFxRixDQUFBO0lBQ3JGLCtJQUFnSSxDQUFBO0lBQ2hJLDJHQUE0RixDQUFBO0lBQzVGLDhLQUErSixDQUFBO0lBQy9KLHdIQUF5RyxDQUFBO0lBQ3pHLG9GQUFxRSxDQUFBO0lBQ3JFLG1JQUFvSCxDQUFBO0lBQ3BILHFIQUFzRyxDQUFBO0lBQ3RHLGlMQUFrSyxDQUFBO0lBQ2xLLHFLQUFzSixDQUFBO0lBQ3RKLG1IQUFvRyxDQUFBO0lBQ3BHLHNHQUF1RixDQUFBO0lBQ3ZGLDRIQUE2RyxDQUFBO0lBQzdHLDhFQUErRCxDQUFBO0lBQy9ELGtLQUFtSixDQUFBO0lBQ25KLHdGQUF5RSxDQUFBO0lBQ3pFLG1IQUFvRyxDQUFBO0lBQ3BHLG1NQUFvTCxDQUFBO0lBQ3BMLDhHQUErRixDQUFBO0lBQy9GLDhHQUErRixDQUFBO0lBQy9GLDhIQUErRyxDQUFBO0lBQy9HLG1HQUFvRixDQUFBO0lBQ3BGLHVHQUF3RixDQUFBO0lBQ3hGLG1HQUFvRixDQUFBO0lBQ3BGLHlGQUEwRSxDQUFBO0lBQzFFLDBHQUEyRixDQUFBO0lBQzNGLGdJQUFpSCxDQUFBO0lBQ2pILG1JQUFvSCxDQUFBO0lBQ3BILHlGQUEwRSxDQUFBO0lBQzFFLGtKQUFtSSxDQUFBO0lBQ25JLHVIQUF3RyxDQUFBO0lBQ3hHLGtKQUFtSSxDQUFBO0lBQ25JLG1HQUFvRixDQUFBO0lBQ3BGLDZGQUE4RSxDQUFBO0lBQzlFLDhIQUErRyxDQUFBO0lBQy9HLDJFQUE0RCxDQUFBO0FBQzlELENBQUMsRUF6RlcsV0FBVywyQkFBWCxXQUFXLFFBeUZ0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IGltcGxlbWVudCB0aGlzIGJ5IGJ1bmRsaW5nIHRoZSBzb3VyY2Ugb2YgdHJ1dGggd2l0aCB0aGUgQ0RLIENMSVxuLy8gV2UgYXJlIGN1cnJlbnRseSBoYXJkY29kaW5nIHRoZXNlIHZhbHVlcyB0byBmYWNpbGl0YXRlIGEgcXVpY2tlciByZWxlYXNlLlxuLyoqXG4gKiBFbnVtIG9mIGFsbCB2YWxpZCBDREsgZmVhdHVyZSBmbGFnIG5hbWVzLlxuICpcbiAqIFRoZXNlIGZsYWdzIGFyZSB1c2VkIHRvIGNvbnRyb2wgYmVoYXZpb3IgY2hhbmdlcyBpbiB0aGUgQ0RLLlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvbWFpbi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jeC1hcGkvRkVBVFVSRV9GTEFHUy5tZFxuICovXG5leHBvcnQgZW51bSBGZWF0dXJlRmxhZyB7XG4gIENPUkVfTkVXX1NUWUxFX1NUQUNLX1NZTlRIRVNJUyA9ICdAYXdzLWNkay9jb3JlOm5ld1N0eWxlU3RhY2tTeW50aGVzaXMnLFxuICBDT1JFX1NUQUNLX1JFTEFUSVZFX0VYUE9SVFMgPSAnQGF3cy1jZGsvY29yZTpzdGFja1JlbGF0aXZlRXhwb3J0cycsXG4gIFJEU19MT1dFUkNBU0VfREJfSURFTlRJRklFUiA9ICdAYXdzLWNkay9hd3MtcmRzOmxvd2VyY2FzZURiSWRlbnRpZmllcicsXG4gIEFQSUdBVEVXQVlfVVNBR0VfUExBTl9LRVlfT1JERVJfSU5TRU5TSVRJVkVfSUQgPSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6dXNhZ2VQbGFuS2V5T3JkZXJJbnNlbnNpdGl2ZUlkJyxcbiAgTEFNQkRBX1JFQ09HTklaRV9WRVJTSU9OX1BST1BTID0gJ0Bhd3MtY2RrL2F3cy1sYW1iZGE6cmVjb2duaXplVmVyc2lvblByb3BzJyxcbiAgQ0xPVURGUk9OVF9ERUZBVUxUX1NFQ1VSSVRZX1BPTElDWV9UTFNfVjFfMl8yMDIxID0gJ0Bhd3MtY2RrL2F3cy1jbG91ZGZyb250OmRlZmF1bHRTZWN1cml0eVBvbGljeVRMU3YxLjJfMjAyMScsXG4gIENPUkVfVEFSR0VUX1BBUlRJVElPTlMgPSAnQGF3cy1jZGsvY29yZTp0YXJnZXQtcGFydGl0aW9ucycsXG4gIEVDU19TRVJWSUNFX0VYVEVOU0lPTlNfRU5BQkxFX0RFRkFVTFRfTE9HX0RSSVZFUiA9ICdAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnM6ZW5hYmxlRGVmYXVsdExvZ0RyaXZlcicsXG4gIEVDMl9VTklRVUVfSU1EU1YyX1RFTVBMQVRFX05BTUUgPSAnQGF3cy1jZGsvYXdzLWVjMjp1bmlxdWVJbWRzdjJUZW1wbGF0ZU5hbWUnLFxuICBJQU1fTUlOSU1JWkVfUE9MSUNJRVMgPSAnQGF3cy1jZGsvYXdzLWlhbTptaW5pbWl6ZVBvbGljaWVzJyxcbiAgQ09SRV9DSEVDS19TRUNSRVRfVVNBR0UgPSAnQGF3cy1jZGsvY29yZTpjaGVja1NlY3JldFVzYWdlJyxcbiAgTEFNQkRBX1JFQ09HTklaRV9MQVlFUl9WRVJTSU9OID0gJ0Bhd3MtY2RrL2F3cy1sYW1iZGE6cmVjb2duaXplTGF5ZXJWZXJzaW9uJyxcbiAgQ09SRV9WQUxJREFURV9TTkFQU0hPVF9SRU1PVkFMX1BPTElDWSA9ICdAYXdzLWNkay9jb3JlOnZhbGlkYXRlU25hcHNob3RSZW1vdmFsUG9saWN5JyxcbiAgQ09ERVBJUEVMSU5FX0NST1NTX0FDQ09VTlRfS0VZX0FMSUFTX1NUQUNLX1NBRkVfUkVTT1VSQ0VfTkFNRSA9ICdAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lOmNyb3NzQWNjb3VudEtleUFsaWFzU3RhY2tTYWZlUmVzb3VyY2VOYW1lJyxcbiAgUzNfQ1JFQVRFX0RFRkFVTFRfTE9HR0lOR19QT0xJQ1kgPSAnQGF3cy1jZGsvYXdzLXMzOmNyZWF0ZURlZmF1bHRMb2dnaW5nUG9saWN5JyxcbiAgU05TX1NVQlNDUklQVElPTlNfUkVTVFJJQ1RfU1FTX0RFQ1JZUFRJT04gPSAnQGF3cy1jZGsvYXdzLXNucy1zdWJzY3JpcHRpb25zOnJlc3RyaWN0U3FzRGVzY3J5cHRpb24nLFxuICBFQ1NfQVJOX0ZPUk1BVF9JTkNMVURFU19DTFVTVEVSX05BTUUgPSAnQGF3cy1jZGsvYXdzLWVjczphcm5Gb3JtYXRJbmNsdWRlc0NsdXN0ZXJOYW1lJyxcbiAgQVBJR0FURVdBWV9ESVNBQkxFX0NMT1VEX1dBVENIX1JPTEUgPSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6ZGlzYWJsZUNsb3VkV2F0Y2hSb2xlJyxcbiAgQ09SRV9FTkFCTEVfUEFSVElUSU9OX0xJVEVSQUxTID0gJ0Bhd3MtY2RrL2NvcmU6ZW5hYmxlUGFydGl0aW9uTGl0ZXJhbHMnLFxuICBFQ1NfRElTQUJMRV9FWFBMSUNJVF9ERVBMT1lNRU5UX0NPTlRST0xMRVJfRk9SX0NJUkNVSVRfQlJFQUtFUiA9ICdAYXdzLWNkay9hd3MtZWNzOmRpc2FibGVFeHBsaWNpdERlcGxveW1lbnRDb250cm9sbGVyRm9yQ2lyY3VpdEJyZWFrZXInLFxuICBFVkVOVFNfRVZFTlRTX1RBUkdFVF9RVUVVRV9TQU1FX0FDQ09VTlQgPSAnQGF3cy1jZGsvYXdzLWV2ZW50czpldmVudHNUYXJnZXRRdWV1ZVNhbWVBY2NvdW50JyxcbiAgSUFNX0lNUE9SVEVEX1JPTEVfU1RBQ0tfU0FGRV9ERUZBVUxUX1BPTElDWV9OQU1FID0gJ0Bhd3MtY2RrL2F3cy1pYW06aW1wb3J0ZWRSb2xlU3RhY2tTYWZlRGVmYXVsdFBvbGljeU5hbWUnLFxuICBTM19TRVJWRVJfQUNDRVNTX0xPR1NfVVNFX0JVQ0tFVF9QT0xJQ1kgPSAnQGF3cy1jZGsvYXdzLXMzOnNlcnZlckFjY2Vzc0xvZ3NVc2VCdWNrZXRQb2xpY3knLFxuICBDVVNUT01SRVNPVVJDRVNfSU5TVEFMTF9MQVRFU1RfQVdTX1NES19ERUZBVUxUID0gJ0Bhd3MtY2RrL2N1c3RvbXJlc291cmNlczppbnN0YWxsTGF0ZXN0QXdzU2RrRGVmYXVsdCcsXG4gIFJPVVRFNTNfUEFUVEVSTlNfVVNFX0NFUlRJRklDQVRFID0gJ0Bhd3MtY2RrL2F3cy1yb3V0ZTUzLXBhdHRlcm5zOnVzZUNlcnRpZmljYXRlJyxcbiAgQ09ERURFUExPWV9SRU1PVkVfQUxBUk1TX0ZST01fREVQTE9ZTUVOVF9HUk9VUCA9ICdAYXdzLWNkay9hd3MtY29kZWRlcGxveTpyZW1vdmVBbGFybXNGcm9tRGVwbG95bWVudEdyb3VwJyxcbiAgUkRTX0RBVEFCQVNFX1BST1hZX1VOSVFVRV9SRVNPVVJDRV9OQU1FID0gJ0Bhd3MtY2RrL2F3cy1yZHM6ZGF0YWJhc2VQcm94eVVuaXF1ZVJlc291cmNlTmFtZScsXG4gIEFQSUdBVEVXQVlfQVVUSE9SSVpFUl9DSEFOR0VfREVQTE9ZTUVOVF9MT0dJQ0FMX0lEID0gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5OmF1dGhvcml6ZXJDaGFuZ2VEZXBsb3ltZW50TG9naWNhbElkJyxcbiAgRUMyX0xBVU5DSF9URU1QTEFURV9ERUZBVUxUX1VTRVJfREFUQSA9ICdAYXdzLWNkay9hd3MtZWMyOmxhdW5jaFRlbXBsYXRlRGVmYXVsdFVzZXJEYXRhJyxcbiAgU0VDUkVUU01BTkFHRVJfVVNFX0FUVEFDSEVEX1NFQ1JFVF9SRVNPVVJDRV9QT0xJQ1lfRk9SX1NFQ1JFVF9UQVJHRVRfQVRUQUNITUVOVFMgPSAnQGF3cy1jZGsvYXdzLXNlY3JldHNtYW5hZ2VyOnVzZUF0dGFjaGVkU2VjcmV0UmVzb3VyY2VQb2xpY3lGb3JTZWNyZXRUYXJnZXRBdHRhY2htZW50cycsXG4gIFJFRFNISUZUX0NPTFVNTl9JRCA9ICdAYXdzLWNkay9hd3MtcmVkc2hpZnQ6Y29sdW1uSWQnLFxuICBTVEVQRlVOQ1RJT05TX1RBU0tTX0VOQUJMRV9FTVJfU0VSVklDRV9QT0xJQ1lfVjIgPSAnQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3M6ZW5hYmxlRW1yU2VydmljZVBvbGljeVYyJyxcbiAgQVBJR0FURVdBWV9SRVFVRVNUX1ZBTElEQVRPUl9VTklRVUVfSUQgPSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXk6cmVxdWVzdFZhbGlkYXRvclVuaXF1ZUlkJyxcbiAgRUMyX1JFU1RSSUNUX0RFRkFVTFRfU0VDVVJJVFlfR1JPVVAgPSAnQGF3cy1jZGsvYXdzLWVjMjpyZXN0cmljdERlZmF1bHRTZWN1cml0eUdyb3VwJyxcbiAgS01TX0FMSUFTX05BTUVfUkVGID0gJ0Bhd3MtY2RrL2F3cy1rbXM6YWxpYXNOYW1lUmVmJyxcbiAgQ09SRV9JTkNMVURFX1BSRUZJWF9JTl9VTklRVUVfTkFNRV9HRU5FUkFUSU9OID0gJ0Bhd3MtY2RrL2NvcmU6aW5jbHVkZVByZWZpeEluVW5pcXVlTmFtZUdlbmVyYXRpb24nLFxuICBBVVRPU0NBTElOR19HRU5FUkFURV9MQVVOQ0hfVEVNUExBVEVfSU5TVEVBRF9PRl9MQVVOQ0hfQ09ORklHID0gJ0Bhd3MtY2RrL2F3cy1hdXRvc2NhbGluZzpnZW5lcmF0ZUxhdW5jaFRlbXBsYXRlSW5zdGVhZE9mTGF1bmNoQ29uZmlnJyxcbiAgT1BFTlNFQVJDSFNFUlZJQ0VfRU5BQkxFX09QRU5TRUFSQ0hfTVVMVElfQVpfV0lUSF9TVEFOREJZID0gJ0Bhd3MtY2RrL2F3cy1vcGVuc2VhcmNoc2VydmljZTplbmFibGVPcGVuc2VhcmNoTXVsdGlBeldpdGhTdGFuZGJ5JyxcbiAgRUZTX0RFTllfQU5PTllNT1VTX0FDQ0VTUyA9ICdAYXdzLWNkay9hd3MtZWZzOmRlbnlBbm9ueW1vdXNBY2Nlc3MnLFxuICBFRlNfTU9VTlRfVEFSR0VUX09SREVSX0lOU0VOU0lUSVZFX0xPR0lDQUxfSUQgPSAnQGF3cy1jZGsvYXdzLWVmczptb3VudFRhcmdldE9yZGVySW5zZW5zaXRpdmVMb2dpY2FsSWQnLFxuICBMQU1CREFfTk9ERUpTX1VTRV9MQVRFU1RfUlVOVElNRV9WRVJTSU9OID0gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtbm9kZWpzOnVzZUxhdGVzdFJ1bnRpbWVWZXJzaW9uJyxcbiAgQVBQU1lOQ19VU0VfQVJOX0ZPUl9TT1VSQ0VfQVBJX0FTU09DSUFUSU9OX0lERU5USUZJRVIgPSAnQGF3cy1jZGsvYXdzLWFwcHN5bmM6dXNlQXJuRm9yU291cmNlQXBpQXNzb2NpYXRpb25JZGVudGlmaWVyJyxcbiAgUkRTX0FVUk9SQV9DTFVTVEVSX0NIQU5HRV9TQ09QRV9PRl9JTlNUQU5DRV9QQVJBTUVURVJfR1JPVVBfV0lUSF9FQUNIX1BBUkFNRVRFUlMgPSAnQGF3cy1jZGsvYXdzLXJkczphdXJvcmFDbHVzdGVyQ2hhbmdlU2NvcGVPZkluc3RhbmNlUGFyYW1ldGVyR3JvdXBXaXRoRWFjaFBhcmFtZXRlcnMnLFxuICBSRFNfUFJFVkVOVF9SRU5ERVJJTkdfREVQUkVDQVRFRF9DUkVERU5USUFMUyA9ICdAYXdzLWNkay9hd3MtcmRzOnByZXZlbnRSZW5kZXJpbmdEZXByZWNhdGVkQ3JlZGVudGlhbHMnLFxuICBDT0RFUElQRUxJTkVfQUNUSU9OU19VU0VfTkVXX0RFRkFVTFRfQlJBTkNIX0ZPUl9DT0RFX0NPTU1JVF9TT1VSQ0UgPSAnQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zOnVzZU5ld0RlZmF1bHRCcmFuY2hGb3JDb2RlQ29tbWl0U291cmNlJyxcbiAgQ0xPVURXQVRDSF9BQ1RJT05TX0NIQU5HRV9MQU1CREFfUEVSTUlTU0lPTl9MT0dJQ0FMX0lEX0ZPUl9MQU1CREFfQUNUSU9OID0gJ0Bhd3MtY2RrL2F3cy1jbG91ZHdhdGNoLWFjdGlvbnM6Y2hhbmdlTGFtYmRhUGVybWlzc2lvbkxvZ2ljYWxJZEZvckxhbWJkYUFjdGlvbicsXG4gIENPREVQSVBFTElORV9DUk9TU19BQ0NPVU5UX0tFWVNfREVGQVVMVF9WQUxVRV9UT19GQUxTRSA9ICdAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lOmNyb3NzQWNjb3VudEtleXNEZWZhdWx0VmFsdWVUb0ZhbHNlJyxcbiAgQ09ERVBJUEVMSU5FX0RFRkFVTFRfUElQRUxJTkVfVFlQRV9UT19WMiA9ICdAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lOmRlZmF1bHRQaXBlbGluZVR5cGVUb1YyJyxcbiAgS01TX1JFRFVDRV9DUk9TU19BQ0NPVU5UX1JFR0lPTl9QT0xJQ1lfU0NPUEUgPSAnQGF3cy1jZGsvYXdzLWttczpyZWR1Y2VDcm9zc0FjY291bnRSZWdpb25Qb2xpY3lTY29wZScsXG4gIEVLU19OT0RFR1JPVVBfTkFNRV9BVFRSSUJVVEUgPSAnQGF3cy1jZGsvYXdzLWVrczpub2RlZ3JvdXBOYW1lQXR0cmlidXRlJyxcbiAgRUMyX0VCU19ERUZBVUxUX0dQM19WT0xVTUUgPSAnQGF3cy1jZGsvYXdzLWVjMjplYnNEZWZhdWx0R3AzVm9sdW1lJyxcbiAgUElQRUxJTkVTX1JFRFVDRV9BU1NFVF9ST0xFX1RSVVNUX1NDT1BFID0gJ0Bhd3MtY2RrL3BpcGVsaW5lczpyZWR1Y2VBc3NldFJvbGVUcnVzdFNjb3BlJyxcbiAgRUNTX1JFTU9WRV9ERUZBVUxUX0RFUExPWU1FTlRfQUxBUk0gPSAnQGF3cy1jZGsvYXdzLWVjczpyZW1vdmVEZWZhdWx0RGVwbG95bWVudEFsYXJtJyxcbiAgQ1VTVE9NX1JFU09VUkNFU19MT0dfQVBJX1JFU1BPTlNFX0RBVEFfUFJPUEVSVFlfVFJVRV9ERUZBVUxUID0gJ0Bhd3MtY2RrL2N1c3RvbS1yZXNvdXJjZXM6bG9nQXBpUmVzcG9uc2VEYXRhUHJvcGVydHlUcnVlRGVmYXVsdCcsXG4gIFMzX0tFRVBfTk9USUZJQ0FUSU9OX0lOX0lNUE9SVEVEX0JVQ0tFVCA9ICdAYXdzLWNkay9hd3MtczM6a2VlcE5vdGlmaWNhdGlvbkluSW1wb3J0ZWRCdWNrZXQnLFxuICBTVEVQRlVOQ1RJT05TX1RBU0tTX1VTRV9ORVdfUzNfVVJJX1BBUkFNRVRFUlNfRk9SX0JFRFJPQ0tfSU5WT0tFX01PREVMX1RBU0sgPSAnQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3M6dXNlTmV3UzNVcmlQYXJhbWV0ZXJzRm9yQmVkcm9ja0ludm9rZU1vZGVsVGFzaycsXG4gIEVDU19SRURVQ0VfRUMyX0ZBUkdBVEVfQ0xPVURfV0FUQ0hfUEVSTUlTU0lPTlMgPSAnQGF3cy1jZGsvYXdzLWVjczpyZWR1Y2VFYzJGYXJnYXRlQ2xvdWRXYXRjaFBlcm1pc3Npb25zJyxcbiAgRUMyX0VDMl9TVU1fVElNRU9VVF9FTkFCTEVEID0gJ0Bhd3MtY2RrL2F3cy1lYzI6ZWMyU3VtVGltZW91dEVuYWJsZWQnLFxuICBBUFBTWU5DX0FQUF9TWU5DX0dSQVBIUUxfQVBJX1NDT1BFX0xBTUJEQV9QRVJNSVNTSU9OID0gJ0Bhd3MtY2RrL2F3cy1hcHBzeW5jOmFwcFN5bmNHcmFwaFFMQVBJU2NvcGVMYW1iZGFQZXJtaXNzaW9uJyxcbiAgTEFNQkRBX05PREVKU19TREtfVjNfRVhDTFVERV9TTUlUSFlfUEFDS0FHRVMgPSAnQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6c2RrVjNFeGNsdWRlU21pdGh5UGFja2FnZXMnLFxuICBSRFNfU0VUX0NPUlJFQ1RfVkFMVUVfRk9SX0RBVEFCQVNFX0lOU1RBTkNFX1JFQURfUkVQTElDQV9JTlNUQU5DRV9SRVNPVVJDRV9JRCA9ICdAYXdzLWNkay9hd3MtcmRzOnNldENvcnJlY3RWYWx1ZUZvckRhdGFiYXNlSW5zdGFuY2VSZWFkUmVwbGljYUluc3RhbmNlUmVzb3VyY2VJZCcsXG4gIENPUkVfQ0ZOX0lOQ0xVREVfUkVKRUNUX0NPTVBMRVhfUkVTT1VSQ0VfVVBEQVRFX0NSRUFURV9QT0xJQ1lfSU5UUklOU0lDUyA9ICdAYXdzLWNkay9jb3JlOmNmbkluY2x1ZGVSZWplY3RDb21wbGV4UmVzb3VyY2VVcGRhdGVDcmVhdGVQb2xpY3lJbnRyaW5zaWNzJyxcbiAgU1RFUEZVTkNUSU9OU19UQVNLU19GSVhfUlVOX0VDU19UQVNLX1BPTElDWSA9ICdAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrczpmaXhSdW5FY3NUYXNrUG9saWN5JyxcbiAgRFlOQU1PREJfUkVTT1VSQ0VfUE9MSUNZX1BFUl9SRVBMSUNBID0gJ0Bhd3MtY2RrL2F3cy1keW5hbW9kYjpyZXNvdXJjZVBvbGljeVBlclJlcGxpY2EnLFxuICBFQzJfQkFTVElPTl9IT1NUX1VTRV9BTUFaT05fTElOVVhfMjAyM19CWV9ERUZBVUxUID0gJ0Bhd3MtY2RrL2F3cy1lYzI6YmFzdGlvbkhvc3RVc2VBbWF6b25MaW51eDIwMjNCeURlZmF1bHQnLFxuICBDT1JFX0FTUEVDVF9TVEFCSUxJWkFUSU9OID0gJ0Bhd3MtY2RrL2NvcmU6YXNwZWN0U3RhYmlsaXphdGlvbicsXG4gIFJPVVRFNTNfVEFSR0VUU19VU0VSX1BPT0xfRE9NQUlOX05BTUVfTUVUSE9EX1dJVEhPVVRfQ1VTVE9NX1JFU09VUkNFID0gJ0Bhd3MtY2RrL2F3cy1yb3V0ZTUzLXRhcmdldHM6dXNlclBvb2xEb21haW5OYW1lTWV0aG9kV2l0aG91dEN1c3RvbVJlc291cmNlJyxcbiAgRUNTX0RJU0FCTEVfRUNTX0lNRFNfQkxPQ0tJTkcgPSAnQGF3cy1jZGsvYXdzLWVjczpkaXNhYmxlRWNzSW1kc0Jsb2NraW5nJyxcbiAgRUNTX0VOQUJMRV9JTURTX0JMT0NLSU5HX0RFUFJFQ0FURURfRkVBVFVSRSA9ICdAYXdzLWNkay9hd3MtZWNzOmVuYWJsZUltZHNCbG9ja2luZ0RlcHJlY2F0ZWRGZWF0dXJlJyxcbiAgRUxBU1RJQ0xPQURCQUxBTkNJTkdWMl9BTEJfRFVBTFNUQUNLX1dJVEhPVVRfUFVCTElDX0lQVjRfU0VDVVJJVFlfR1JPVVBfUlVMRVNfREVGQVVMVCA9ICdAYXdzLWNkay9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmdWMjphbGJEdWFsc3RhY2tXaXRob3V0UHVibGljSXB2NFNlY3VyaXR5R3JvdXBSdWxlc0RlZmF1bHQnLFxuICBJQU1fT0lEQ19SRUpFQ1RfVU5BVVRIT1JJWkVEX0NPTk5FQ1RJT05TID0gJ0Bhd3MtY2RrL2F3cy1pYW06b2lkY1JlamVjdFVuYXV0aG9yaXplZENvbm5lY3Rpb25zJyxcbiAgQ09SRV9FTkFCTEVfQURESVRJT05BTF9NRVRBREFUQV9DT0xMRUNUSU9OID0gJ0Bhd3MtY2RrL2NvcmU6ZW5hYmxlQWRkaXRpb25hbE1ldGFkYXRhQ29sbGVjdGlvbicsXG4gIExBTUJEQV9DUkVBVEVfTkVXX1BPTElDSUVTX1dJVEhfQUREX1RPX1JPTEVfUE9MSUNZID0gJ0Bhd3MtY2RrL2F3cy1sYW1iZGE6Y3JlYXRlTmV3UG9saWNpZXNXaXRoQWRkVG9Sb2xlUG9saWN5JyxcbiAgUzNfU0VUX1VOSVFVRV9SRVBMSUNBVElPTl9ST0xFX05BTUUgPSAnQGF3cy1jZGsvYXdzLXMzOnNldFVuaXF1ZVJlcGxpY2F0aW9uUm9sZU5hbWUnLFxuICBQSVBFTElORVNfUkVEVUNFX1NUQUdFX1JPTEVfVFJVU1RfU0NPUEUgPSAnQGF3cy1jZGsvcGlwZWxpbmVzOnJlZHVjZVN0YWdlUm9sZVRydXN0U2NvcGUnLFxuICBFVkVOVFNfUkVRVUlSRV9FVkVOVF9CVVNfUE9MSUNZX1NJRCA9ICdAYXdzLWNkay9hd3MtZXZlbnRzOnJlcXVpcmVFdmVudEJ1c1BvbGljeVNpZCcsXG4gIERZTkFNT0RCX1JFVEFJTl9UQUJMRV9SRVBMSUNBID0gJ0Bhd3MtY2RrL2F3cy1keW5hbW9kYjpyZXRhaW5UYWJsZVJlcGxpY2EnLFxuICBDT0dOSVRPX0xPR19VU0VSX1BPT0xfQ0xJRU5UX1NFQ1JFVF9WQUxVRSA9ICdAYXdzLWNkay9jb2duaXRvOmxvZ1VzZXJQb29sQ2xpZW50U2VjcmV0VmFsdWUnLFxuICBTVEVQRlVOQ1RJT05TX1VTRV9ESVNUUklCVVRFRF9NQVBfUkVTVUxUX1dSSVRFUl9WMiA9ICdAYXdzLWNkay9hd3Mtc3RlcGZ1bmN0aW9uczp1c2VEaXN0cmlidXRlZE1hcFJlc3VsdFdyaXRlclYyJyxcbiAgUElQRUxJTkVTX1JFRFVDRV9DUk9TU19BQ0NPVU5UX0FDVElPTl9ST0xFX1RSVVNUX1NDT1BFID0gJ0Bhd3MtY2RrL3BpcGVsaW5lczpyZWR1Y2VDcm9zc0FjY291bnRBY3Rpb25Sb2xlVHJ1c3RTY29wZScsXG4gIENPUkVfQVNQRUNUX1BSSU9SSVRJRVNfTVVUQVRJTkcgPSAnQGF3cy1jZGsvY29yZTphc3BlY3RQcmlvcml0aWVzTXV0YXRpbmcnLFxuICBTM19OT1RJRklDQVRJT05TX0FERF9TM19UUlVTVF9LRVlfUE9MSUNZX0ZPUl9TTlNfU1VCU0NSSVBUSU9OUyA9ICdAYXdzLWNkay9zMy1ub3RpZmljYXRpb25zOmFkZFMzVHJ1c3RLZXlQb2xpY3lGb3JTbnNTdWJzY3JpcHRpb25zJyxcbiAgRUMyX0FMUEhBX1VTRV9SRVNPVVJDRV9JRF9GT1JfVlBDX1YyX01JR1JBVElPTiA9ICdAYXdzLWNkay9hd3MtZWMyLWFscGhhOnVzZVJlc291cmNlSWRGb3JWcGNWMk1pZ3JhdGlvbicsXG4gIEVDMl9SRVFVSVJFX1BSSVZBVEVfU1VCTkVUU19GT1JfRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWSA9ICdAYXdzLWNkay9hd3MtZWMyOnJlcXVpcmVQcml2YXRlU3VibmV0c0ZvckVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXknLFxuICBTM19QVUJMSUNfQUNDRVNTX0JMT0NLRURfQllfREVGQVVMVCA9ICdAYXdzLWNkay9hd3MtczM6cHVibGljQWNjZXNzQmxvY2tlZEJ5RGVmYXVsdCcsXG4gIExBTUJEQV9VU0VfQ0RLX01BTkFHRURfTE9HX0dST1VQID0gJ0Bhd3MtY2RrL2F3cy1sYW1iZGE6dXNlQ2RrTWFuYWdlZExvZ0dyb3VwJyxcbiAgS01TX0FQUExZX0lNUE9SVEVEX0FMSUFTX1BFUk1JU1NJT05TX1RPX1BSSU5DSVBBTCA9ICdAYXdzLWNkay9hd3Mta21zOmFwcGx5SW1wb3J0ZWRBbGlhc1Blcm1pc3Npb25zVG9QcmluY2lwYWwnLFxuICBDT1JFX0VYUExJQ0lUX1NUQUNLX1RBR1MgPSAnQGF3cy1jZGsvY29yZTpleHBsaWNpdFN0YWNrVGFncycsXG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreateInstallationId = getOrCreateInstallationId;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const util_1 = require("../../util");
|
|
8
|
+
const INSTALLATION_ID_PATH = path.join((0, util_1.cdkCacheDir)(), 'installation-id.json');
|
|
9
|
+
/**
|
|
10
|
+
* Get or create installation id
|
|
11
|
+
*/
|
|
12
|
+
async function getOrCreateInstallationId(ioHelper) {
|
|
13
|
+
try {
|
|
14
|
+
// Create the cache directory if it doesn't exist
|
|
15
|
+
if (!fs.existsSync(path.dirname(INSTALLATION_ID_PATH))) {
|
|
16
|
+
fs.mkdirSync(path.dirname(INSTALLATION_ID_PATH), { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
// Check if the installation ID file exists
|
|
19
|
+
if (fs.existsSync(INSTALLATION_ID_PATH)) {
|
|
20
|
+
const cachedId = fs.readFileSync(INSTALLATION_ID_PATH, 'utf-8').trim();
|
|
21
|
+
// Validate that the cached ID is a valid UUID
|
|
22
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
23
|
+
if (UUID_REGEX.test(cachedId)) {
|
|
24
|
+
return cachedId;
|
|
25
|
+
}
|
|
26
|
+
// If invalid, fall through to create a new one
|
|
27
|
+
}
|
|
28
|
+
// Create a new installation ID
|
|
29
|
+
const newId = (0, crypto_1.randomUUID)();
|
|
30
|
+
try {
|
|
31
|
+
fs.writeFileSync(INSTALLATION_ID_PATH, newId);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
// If we can't write the file, still return the generated ID
|
|
35
|
+
// but log a trace message about the failure
|
|
36
|
+
await ioHelper.defaults.trace(`Failed to write installation ID to ${INSTALLATION_ID_PATH}: ${e}`);
|
|
37
|
+
}
|
|
38
|
+
return newId;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
// If anything goes wrong, generate a temporary ID for this session
|
|
42
|
+
// and log a trace message about the failure
|
|
43
|
+
await ioHelper.defaults.trace(`Error getting installation ID: ${e}`);
|
|
44
|
+
return (0, crypto_1.randomUUID)();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGF0aW9uLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5zdGFsbGF0aW9uLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsOERBbUNDO0FBOUNELG1DQUFvQztBQUNwQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBRTdCLHFDQUF5QztBQUV6QyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSxrQkFBVyxHQUFFLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUU5RTs7R0FFRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxRQUFrQjtJQUNoRSxJQUFJLENBQUM7UUFDSCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXZFLDhDQUE4QztZQUM5QyxNQUFNLFVBQVUsR0FBRyxpRUFBaUUsQ0FBQztZQUNyRixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztZQUNELCtDQUErQztRQUNqRCxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVUsR0FBRSxDQUFDO1FBQzNCLElBQUksQ0FBQztZQUNILEVBQUUsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsNERBQTREO1lBQzVELDRDQUE0QztZQUM1QyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxvQkFBb0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLG1FQUFtRTtRQUNuRSw0Q0FBNEM7UUFDNUMsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUEsbUJBQVUsR0FBRSxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGNka0NhY2hlRGlyIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmNvbnN0IElOU1RBTExBVElPTl9JRF9QQVRIID0gcGF0aC5qb2luKGNka0NhY2hlRGlyKCksICdpbnN0YWxsYXRpb24taWQuanNvbicpO1xuXG4vKipcbiAqIEdldCBvciBjcmVhdGUgaW5zdGFsbGF0aW9uIGlkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUluc3RhbGxhdGlvbklkKGlvSGVscGVyOiBJb0hlbHBlcikge1xuICB0cnkge1xuICAgIC8vIENyZWF0ZSB0aGUgY2FjaGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5kaXJuYW1lKElOU1RBTExBVElPTl9JRF9QQVRIKSkpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhwYXRoLmRpcm5hbWUoSU5TVEFMTEFUSU9OX0lEX1BBVEgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgaW5zdGFsbGF0aW9uIElEIGZpbGUgZXhpc3RzXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoSU5TVEFMTEFUSU9OX0lEX1BBVEgpKSB7XG4gICAgICBjb25zdCBjYWNoZWRJZCA9IGZzLnJlYWRGaWxlU3luYyhJTlNUQUxMQVRJT05fSURfUEFUSCwgJ3V0Zi04JykudHJpbSgpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBjYWNoZWQgSUQgaXMgYSB2YWxpZCBVVUlEXG4gICAgICBjb25zdCBVVUlEX1JFR0VYID0gL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2k7XG4gICAgICBpZiAoVVVJRF9SRUdFWC50ZXN0KGNhY2hlZElkKSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkSWQ7XG4gICAgICB9XG4gICAgICAvLyBJZiBpbnZhbGlkLCBmYWxsIHRocm91Z2ggdG8gY3JlYXRlIGEgbmV3IG9uZVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIG5ldyBpbnN0YWxsYXRpb24gSURcbiAgICBjb25zdCBuZXdJZCA9IHJhbmRvbVVVSUQoKTtcbiAgICB0cnkge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhJTlNUQUxMQVRJT05fSURfUEFUSCwgbmV3SWQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gSWYgd2UgY2FuJ3Qgd3JpdGUgdGhlIGZpbGUsIHN0aWxsIHJldHVybiB0aGUgZ2VuZXJhdGVkIElEXG4gICAgICAvLyBidXQgbG9nIGEgdHJhY2UgbWVzc2FnZSBhYm91dCB0aGUgZmFpbHVyZVxuICAgICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoYEZhaWxlZCB0byB3cml0ZSBpbnN0YWxsYXRpb24gSUQgdG8gJHtJTlNUQUxMQVRJT05fSURfUEFUSH06ICR7ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0lkO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAvLyBJZiBhbnl0aGluZyBnb2VzIHdyb25nLCBnZW5lcmF0ZSBhIHRlbXBvcmFyeSBJRCBmb3IgdGhpcyBzZXNzaW9uXG4gICAgLy8gYW5kIGxvZyBhIHRyYWNlIG1lc3NhZ2UgYWJvdXQgdGhlIGZhaWx1cmVcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy50cmFjZShgRXJyb3IgZ2V0dGluZyBpbnN0YWxsYXRpb24gSUQ6ICR7ZX1gKTtcbiAgICByZXR1cm4gcmFuZG9tVVVJRCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLibraryVersion = getLibraryVersion;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const util_1 = require("util");
|
|
7
|
+
const fs = require("fs-extra");
|
|
8
|
+
async function getLibraryVersion(ioHelper) {
|
|
9
|
+
try {
|
|
10
|
+
const command = "node -e 'process.stdout.write(require.resolve(\"aws-cdk-lib\"))'";
|
|
11
|
+
const { stdout } = await (0, util_1.promisify)(child_process_1.exec)(command);
|
|
12
|
+
// stdout should be a file path but lets double check
|
|
13
|
+
if (!fs.existsSync(stdout)) {
|
|
14
|
+
await ioHelper.defaults.trace('Could not get CDK Library Version: require.resolve("aws-cdk-lib") did not return a file path');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const pathToPackageJson = path.join(path.dirname(stdout), 'package.json');
|
|
18
|
+
const packageJson = fs.readJSONSync(pathToPackageJson);
|
|
19
|
+
if (!packageJson.version) {
|
|
20
|
+
await ioHelper.defaults.trace('Could not get CDK Library Version: package.json does not have version field');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
return packageJson.version;
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
await ioHelper.defaults.trace(`Could not get CDK Library Version: ${e}`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGlicmFyeS12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsOENBdUJDO0FBN0JELGlEQUFxQztBQUNyQyw2QkFBNkI7QUFDN0IsK0JBQWlDO0FBQ2pDLCtCQUErQjtBQUd4QixLQUFLLFVBQVUsaUJBQWlCLENBQUMsUUFBa0I7SUFDeEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsa0VBQWtFLENBQUM7UUFDbkYsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLG9CQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDhGQUE4RixDQUFDLENBQUM7WUFDOUgsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMxRSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7WUFDN0csT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RSxPQUFPO0lBQ1QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vYXBpLXByaXZhdGUnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlicmFyeVZlcnNpb24oaW9IZWxwZXI6IElvSGVscGVyKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb21tYW5kID0gXCJub2RlIC1lICdwcm9jZXNzLnN0ZG91dC53cml0ZShyZXF1aXJlLnJlc29sdmUoXFxcImF3cy1jZGstbGliXFxcIikpJ1wiO1xuICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBwcm9taXNpZnkoZXhlYykoY29tbWFuZCk7XG5cbiAgICAvLyBzdGRvdXQgc2hvdWxkIGJlIGEgZmlsZSBwYXRoIGJ1dCBsZXRzIGRvdWJsZSBjaGVja1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhzdGRvdXQpKSB7XG4gICAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy50cmFjZSgnQ291bGQgbm90IGdldCBDREsgTGlicmFyeSBWZXJzaW9uOiByZXF1aXJlLnJlc29sdmUoXCJhd3MtY2RrLWxpYlwiKSBkaWQgbm90IHJldHVybiBhIGZpbGUgcGF0aCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGhUb1BhY2thZ2VKc29uID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShzdGRvdXQpLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBmcy5yZWFkSlNPTlN5bmMocGF0aFRvUGFja2FnZUpzb24pO1xuICAgIGlmICghcGFja2FnZUpzb24udmVyc2lvbikge1xuICAgICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoJ0NvdWxkIG5vdCBnZXQgQ0RLIExpYnJhcnkgVmVyc2lvbjogcGFja2FnZS5qc29uIGRvZXMgbm90IGhhdmUgdmVyc2lvbiBmaWVsZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlSnNvbi52ZXJzaW9uO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy50cmFjZShgQ291bGQgbm90IGdldCBDREsgTGlicmFyeSBWZXJzaW9uOiAke2V9YCk7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Duration } from '@aws-cdk/toolkit-lib';
|
|
2
|
+
import type { ErrorDetails } from './schema';
|
|
3
|
+
import * as make from '../../api-private';
|
|
4
|
+
export interface EventResult extends Duration {
|
|
5
|
+
error?: ErrorDetails;
|
|
6
|
+
}
|
|
7
|
+
export interface EventStart {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Private message types specific to the CLI
|
|
11
|
+
*/
|
|
12
|
+
export declare const CLI_PRIVATE_IO: {
|
|
13
|
+
CDK_CLI_I1000: make.IoMessageMaker<EventStart>;
|
|
14
|
+
CDK_CLI_I1001: make.IoMessageMaker<EventResult>;
|
|
15
|
+
CDK_CLI_I2000: make.IoMessageMaker<EventStart>;
|
|
16
|
+
CDK_CLI_I2001: make.IoMessageMaker<EventResult>;
|
|
17
|
+
CDK_CLI_I3000: make.IoMessageMaker<EventStart>;
|
|
18
|
+
CDK_CLI_I3001: make.IoMessageMaker<EventResult>;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Payload type of the end message must extend Duration
|
|
22
|
+
*/
|
|
23
|
+
export declare const CLI_PRIVATE_SPAN: {
|
|
24
|
+
SYNTH_ASSEMBLY: {
|
|
25
|
+
name: string;
|
|
26
|
+
start: make.IoMessageMaker<EventStart>;
|
|
27
|
+
end: make.IoMessageMaker<EventResult>;
|
|
28
|
+
};
|
|
29
|
+
COMMAND: {
|
|
30
|
+
name: string;
|
|
31
|
+
start: make.IoMessageMaker<EventStart>;
|
|
32
|
+
end: make.IoMessageMaker<EventResult>;
|
|
33
|
+
};
|
|
34
|
+
DEPLOY: {
|
|
35
|
+
name: string;
|
|
36
|
+
start: make.IoMessageMaker<EventStart>;
|
|
37
|
+
end: make.IoMessageMaker<EventResult>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export declare const CLI_TELEMETRY_CODES: make.IoMessageMaker<EventResult>[];
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLI_TELEMETRY_CODES = exports.CLI_PRIVATE_SPAN = exports.CLI_PRIVATE_IO = void 0;
|
|
4
|
+
const make = require("../../api-private");
|
|
5
|
+
/**
|
|
6
|
+
* Private message types specific to the CLI
|
|
7
|
+
*/
|
|
8
|
+
exports.CLI_PRIVATE_IO = {
|
|
9
|
+
CDK_CLI_I1000: make.trace({
|
|
10
|
+
code: 'CDK_CLI_I1000',
|
|
11
|
+
description: 'Cloud Execution is starting',
|
|
12
|
+
interface: 'EventStart',
|
|
13
|
+
}),
|
|
14
|
+
CDK_CLI_I1001: make.trace({
|
|
15
|
+
code: 'CDK_CLI_I1001',
|
|
16
|
+
description: 'Cloud Executable Result',
|
|
17
|
+
interface: 'EventResult',
|
|
18
|
+
}),
|
|
19
|
+
CDK_CLI_I2000: make.trace({
|
|
20
|
+
code: 'CDK_CLI_I2000',
|
|
21
|
+
description: 'Command has started',
|
|
22
|
+
interface: 'EventStart',
|
|
23
|
+
}),
|
|
24
|
+
CDK_CLI_I2001: make.trace({
|
|
25
|
+
code: 'CDK_CLI_I2001',
|
|
26
|
+
description: 'Command has finished executing',
|
|
27
|
+
interface: 'EventResult',
|
|
28
|
+
}),
|
|
29
|
+
CDK_CLI_I3000: make.trace({
|
|
30
|
+
code: 'CDK_CLI_I3000',
|
|
31
|
+
description: 'Deploy has started',
|
|
32
|
+
interface: 'EventStart',
|
|
33
|
+
}),
|
|
34
|
+
CDK_CLI_I3001: make.trace({
|
|
35
|
+
code: 'CDK_CLI_I3001',
|
|
36
|
+
description: 'Deploy has finished',
|
|
37
|
+
interface: 'EventResult',
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Payload type of the end message must extend Duration
|
|
42
|
+
*/
|
|
43
|
+
exports.CLI_PRIVATE_SPAN = {
|
|
44
|
+
SYNTH_ASSEMBLY: {
|
|
45
|
+
name: 'Synthesis',
|
|
46
|
+
start: exports.CLI_PRIVATE_IO.CDK_CLI_I1000,
|
|
47
|
+
end: exports.CLI_PRIVATE_IO.CDK_CLI_I1001,
|
|
48
|
+
},
|
|
49
|
+
COMMAND: {
|
|
50
|
+
name: 'Command',
|
|
51
|
+
start: exports.CLI_PRIVATE_IO.CDK_CLI_I2000,
|
|
52
|
+
end: exports.CLI_PRIVATE_IO.CDK_CLI_I2001,
|
|
53
|
+
},
|
|
54
|
+
DEPLOY: {
|
|
55
|
+
name: 'Deploy',
|
|
56
|
+
start: exports.CLI_PRIVATE_IO.CDK_CLI_I3000,
|
|
57
|
+
end: exports.CLI_PRIVATE_IO.CDK_CLI_I3001,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
exports.CLI_TELEMETRY_CODES = [
|
|
61
|
+
exports.CLI_PRIVATE_IO.CDK_CLI_I1001,
|
|
62
|
+
exports.CLI_PRIVATE_IO.CDK_CLI_I2001,
|
|
63
|
+
exports.CLI_PRIVATE_IO.CDK_CLI_I3001,
|
|
64
|
+
];
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FBMEM7QUFVMUM7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBRztJQUM1QixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7Q0FDSCxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxzQkFBYyxDQUFDLGFBQWE7UUFDbkMsR0FBRyxFQUFFLHNCQUFjLENBQUMsYUFBYTtLQUNsQztJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLHNCQUFjLENBQUMsYUFBYTtRQUNuQyxHQUFHLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO0tBQ2xDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO1FBQ25DLEdBQUcsRUFBRSxzQkFBYyxDQUFDLGFBQWE7S0FDbEM7Q0FDaUQsQ0FBQztBQUV4QyxRQUFBLG1CQUFtQixHQUFHO0lBQ2pDLHNCQUFjLENBQUMsYUFBYTtJQUM1QixzQkFBYyxDQUFDLGFBQWE7SUFDNUIsc0JBQWMsQ0FBQyxhQUFhO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IER1cmF0aW9uIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHR5cGUgeyBFcnJvckRldGFpbHMgfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgKiBhcyBtYWtlIGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgU3BhbkRlZmluaXRpb24gfSBmcm9tICcuLi8uLi9hcGktcHJpdmF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRSZXN1bHQgZXh0ZW5kcyBEdXJhdGlvbiB7XG4gIGVycm9yPzogRXJyb3JEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U3RhcnQge1xufVxuXG4vKipcbiAqIFByaXZhdGUgbWVzc2FnZSB0eXBlcyBzcGVjaWZpYyB0byB0aGUgQ0xJXG4gKi9cbmV4cG9ydCBjb25zdCBDTElfUFJJVkFURV9JTyA9IHtcbiAgQ0RLX0NMSV9JMTAwMDogbWFrZS50cmFjZTxFdmVudFN0YXJ0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTEwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgRXhlY3V0aW9uIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFN0YXJ0JyxcbiAgfSksXG4gIENES19DTElfSTEwMDE6IG1ha2UudHJhY2U8RXZlbnRSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBFeGVjdXRhYmxlIFJlc3VsdCcsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX0NMSV9JMjAwMDogbWFrZS50cmFjZTxFdmVudFN0YXJ0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTIwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29tbWFuZCBoYXMgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRTdGFydCcsXG4gIH0pLFxuICBDREtfQ0xJX0kyMDAxOiBtYWtlLnRyYWNlPEV2ZW50UmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTIwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29tbWFuZCBoYXMgZmluaXNoZWQgZXhlY3V0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFJlc3VsdCcsXG4gIH0pLFxuICBDREtfQ0xJX0kzMDAwOiBtYWtlLnRyYWNlPEV2ZW50U3RhcnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMzAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdEZXBsb3kgaGFzIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50U3RhcnQnLFxuICB9KSxcbiAgQ0RLX0NMSV9JMzAwMTogbWFrZS50cmFjZTxFdmVudFJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kzMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlcGxveSBoYXMgZmluaXNoZWQnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50UmVzdWx0JyxcbiAgfSksXG59O1xuXG4vKipcbiAqIFBheWxvYWQgdHlwZSBvZiB0aGUgZW5kIG1lc3NhZ2UgbXVzdCBleHRlbmQgRHVyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IENMSV9QUklWQVRFX1NQQU4gPSB7XG4gIFNZTlRIX0FTU0VNQkxZOiB7XG4gICAgbmFtZTogJ1N5bnRoZXNpcycsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTEwMDAsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kxMDAxLFxuICB9LFxuICBDT01NQU5EOiB7XG4gICAgbmFtZTogJ0NvbW1hbmQnLFxuICAgIHN0YXJ0OiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kyMDAwLFxuICAgIGVuZDogQ0xJX1BSSVZBVEVfSU8uQ0RLX0NMSV9JMjAwMSxcbiAgfSxcbiAgREVQTE9ZOiB7XG4gICAgbmFtZTogJ0RlcGxveScsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTMwMDAsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kzMDAxLFxuICB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgU3BhbkRlZmluaXRpb248YW55LCBhbnk+PjtcblxuZXhwb3J0IGNvbnN0IENMSV9URUxFTUVUUllfQ09ERVMgPSBbXG4gIENMSV9QUklWQVRFX0lPLkNES19DTElfSTEwMDEsXG4gIENMSV9QUklWQVRFX0lPLkNES19DTElfSTIwMDEsXG4gIENMSV9QUklWQVRFX0lPLkNES19DTElfSTMwMDEsXG5dO1xuIl19
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Context } from '../../api/context';
|
|
2
|
+
/**
|
|
3
|
+
* argv is the output of yargs
|
|
4
|
+
*/
|
|
5
|
+
export declare function sanitizeCommandLineArguments(argv: any): {
|
|
6
|
+
path: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare function sanitizeContext(context: Context): {
|
|
12
|
+
"@aws-cdk/core:newStyleStackSynthesis": boolean;
|
|
13
|
+
"@aws-cdk/core:stackRelativeExports": boolean;
|
|
14
|
+
"@aws-cdk/aws-rds:lowercaseDbIdentifier": boolean;
|
|
15
|
+
"@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": boolean;
|
|
16
|
+
"@aws-cdk/aws-lambda:recognizeVersionProps": boolean;
|
|
17
|
+
"@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": boolean;
|
|
18
|
+
"@aws-cdk/core:target-partitions": boolean;
|
|
19
|
+
"@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": boolean;
|
|
20
|
+
"@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": boolean;
|
|
21
|
+
"@aws-cdk/aws-iam:minimizePolicies": boolean;
|
|
22
|
+
"@aws-cdk/core:checkSecretUsage": boolean;
|
|
23
|
+
"@aws-cdk/aws-lambda:recognizeLayerVersion": boolean;
|
|
24
|
+
"@aws-cdk/core:validateSnapshotRemovalPolicy": boolean;
|
|
25
|
+
"@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": boolean;
|
|
26
|
+
"@aws-cdk/aws-s3:createDefaultLoggingPolicy": boolean;
|
|
27
|
+
"@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": boolean;
|
|
28
|
+
"@aws-cdk/aws-ecs:arnFormatIncludesClusterName": boolean;
|
|
29
|
+
"@aws-cdk/aws-apigateway:disableCloudWatchRole": boolean;
|
|
30
|
+
"@aws-cdk/core:enablePartitionLiterals": boolean;
|
|
31
|
+
"@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": boolean;
|
|
32
|
+
"@aws-cdk/aws-events:eventsTargetQueueSameAccount": boolean;
|
|
33
|
+
"@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": boolean;
|
|
34
|
+
"@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": boolean;
|
|
35
|
+
"@aws-cdk/customresources:installLatestAwsSdkDefault": boolean;
|
|
36
|
+
"@aws-cdk/aws-route53-patterns:useCertificate": boolean;
|
|
37
|
+
"@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": boolean;
|
|
38
|
+
"@aws-cdk/aws-rds:databaseProxyUniqueResourceName": boolean;
|
|
39
|
+
"@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": boolean;
|
|
40
|
+
"@aws-cdk/aws-ec2:launchTemplateDefaultUserData": boolean;
|
|
41
|
+
"@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": boolean;
|
|
42
|
+
"@aws-cdk/aws-redshift:columnId": boolean;
|
|
43
|
+
"@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": boolean;
|
|
44
|
+
"@aws-cdk/aws-apigateway:requestValidatorUniqueId": boolean;
|
|
45
|
+
"@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": boolean;
|
|
46
|
+
"@aws-cdk/aws-kms:aliasNameRef": boolean;
|
|
47
|
+
"@aws-cdk/core:includePrefixInUniqueNameGeneration": boolean;
|
|
48
|
+
"@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": boolean;
|
|
49
|
+
"@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": boolean;
|
|
50
|
+
"@aws-cdk/aws-efs:denyAnonymousAccess": boolean;
|
|
51
|
+
"@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": boolean;
|
|
52
|
+
"@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": boolean;
|
|
53
|
+
"@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": boolean;
|
|
54
|
+
"@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": boolean;
|
|
55
|
+
"@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": boolean;
|
|
56
|
+
"@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": boolean;
|
|
57
|
+
"@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": boolean;
|
|
58
|
+
"@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": boolean;
|
|
59
|
+
"@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": boolean;
|
|
60
|
+
"@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": boolean;
|
|
61
|
+
"@aws-cdk/aws-eks:nodegroupNameAttribute": boolean;
|
|
62
|
+
"@aws-cdk/aws-ec2:ebsDefaultGp3Volume": boolean;
|
|
63
|
+
"@aws-cdk/pipelines:reduceAssetRoleTrustScope": boolean;
|
|
64
|
+
"@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": boolean;
|
|
65
|
+
"@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": boolean;
|
|
66
|
+
"@aws-cdk/aws-s3:keepNotificationInImportedBucket": boolean;
|
|
67
|
+
"@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask": boolean;
|
|
68
|
+
"@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions": boolean;
|
|
69
|
+
"@aws-cdk/aws-ec2:ec2SumTimeoutEnabled": boolean;
|
|
70
|
+
"@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission": boolean;
|
|
71
|
+
"@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages": boolean;
|
|
72
|
+
"@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId": boolean;
|
|
73
|
+
"@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics": boolean;
|
|
74
|
+
"@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy": boolean;
|
|
75
|
+
"@aws-cdk/aws-dynamodb:resourcePolicyPerReplica": boolean;
|
|
76
|
+
"@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": boolean;
|
|
77
|
+
"@aws-cdk/core:aspectStabilization": boolean;
|
|
78
|
+
"@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource": boolean;
|
|
79
|
+
"@aws-cdk/aws-ecs:disableEcsImdsBlocking": boolean;
|
|
80
|
+
"@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature": boolean;
|
|
81
|
+
"@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault": boolean;
|
|
82
|
+
"@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections": boolean;
|
|
83
|
+
"@aws-cdk/core:enableAdditionalMetadataCollection": boolean;
|
|
84
|
+
"@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy": boolean;
|
|
85
|
+
"@aws-cdk/aws-s3:setUniqueReplicationRoleName": boolean;
|
|
86
|
+
"@aws-cdk/pipelines:reduceStageRoleTrustScope": boolean;
|
|
87
|
+
"@aws-cdk/aws-events:requireEventBusPolicySid": boolean;
|
|
88
|
+
"@aws-cdk/aws-dynamodb:retainTableReplica": boolean;
|
|
89
|
+
"@aws-cdk/cognito:logUserPoolClientSecretValue": boolean;
|
|
90
|
+
"@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": boolean;
|
|
91
|
+
"@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope": boolean;
|
|
92
|
+
"@aws-cdk/core:aspectPrioritiesMutating": boolean;
|
|
93
|
+
"@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": boolean;
|
|
94
|
+
"@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration": boolean;
|
|
95
|
+
"@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": boolean;
|
|
96
|
+
"@aws-cdk/aws-s3:publicAccessBlockedByDefault": boolean;
|
|
97
|
+
"@aws-cdk/aws-lambda:useCdkManagedLogGroup": boolean;
|
|
98
|
+
"@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": boolean;
|
|
99
|
+
"@aws-cdk/core:explicitStackTags": boolean;
|
|
100
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitizeCommandLineArguments = sanitizeCommandLineArguments;
|
|
4
|
+
exports.sanitizeContext = sanitizeContext;
|
|
5
|
+
const feature_flags_1 = require("./feature-flags");
|
|
6
|
+
/**
|
|
7
|
+
* argv is the output of yargs
|
|
8
|
+
*/
|
|
9
|
+
function sanitizeCommandLineArguments(argv) {
|
|
10
|
+
// Get the configuration of the arguments
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
12
|
+
const config = require('../cli-type-registry.json');
|
|
13
|
+
const command = argv._[0];
|
|
14
|
+
const path = [command];
|
|
15
|
+
const parameters = {};
|
|
16
|
+
const globalOptions = Object.keys(config.globalOptions);
|
|
17
|
+
const commandOptions = Object.keys(config.commands[command]?.options ?? {});
|
|
18
|
+
const commandArg = config.commands[command]?.arg;
|
|
19
|
+
for (const argName of Object.keys(argv)) {
|
|
20
|
+
if (argName === commandArg?.name) {
|
|
21
|
+
if (commandArg.variadic) {
|
|
22
|
+
for (let i = 0; i < argv[argName].length; i++) {
|
|
23
|
+
path.push(`$${argName}_${i + 1}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
path.push(`$${argName}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Continue if the arg name is not a global option or command option
|
|
31
|
+
// arg name comes from yargs and could be an alias; we trust that the "normal"
|
|
32
|
+
// name has the same information and that is what we want to record
|
|
33
|
+
if (argv[argName] === undefined || (!globalOptions.includes(argName) && !commandOptions.includes(argName))) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (isNumberOrBoolean(argv[argName]) || isKnownEnumValue(argName, argv[argName], command, config)) {
|
|
37
|
+
parameters[argName] = argv[argName];
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
parameters[argName] = '<redacted>';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
path,
|
|
45
|
+
parameters,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function sanitizeContext(context) {
|
|
49
|
+
const sanitizedContext = {};
|
|
50
|
+
for (const [flag, value] of Object.entries(context.all)) {
|
|
51
|
+
// Skip if flag is not in the FeatureFlags enum
|
|
52
|
+
if (!isFeatureFlag(flag)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// Falsy options include boolean false, string 'false'
|
|
56
|
+
// All other inputs evaluate to true
|
|
57
|
+
const sanitizedValue = isBoolean(value) ? value : (value !== 'false');
|
|
58
|
+
sanitizedContext[flag] = sanitizedValue;
|
|
59
|
+
}
|
|
60
|
+
return sanitizedContext;
|
|
61
|
+
}
|
|
62
|
+
function isBoolean(value) {
|
|
63
|
+
return typeof value === 'boolean';
|
|
64
|
+
}
|
|
65
|
+
function isNumberOrBoolean(value) {
|
|
66
|
+
return typeof value === 'number' || isBoolean(value);
|
|
67
|
+
}
|
|
68
|
+
function isKnownEnumValue(name, value, command, config) {
|
|
69
|
+
const propertyDefiniton = config.globalOptions[name] ?? config.commands[command]?.options[name];
|
|
70
|
+
if (propertyDefiniton.type === 'string') {
|
|
71
|
+
// Even if the property has choices, only record if the value is a valid choice
|
|
72
|
+
return propertyDefiniton.choices?.includes(value);
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
function isFeatureFlag(flag) {
|
|
77
|
+
return Object.values(feature_flags_1.FeatureFlag).includes(flag);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhbml0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxvRUF5Q0M7QUFFRCwwQ0FjQztBQS9ERCxtREFBOEM7QUFHOUM7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxJQUFTO0lBQ3BELHlDQUF5QztJQUV6QyxpRUFBaUU7SUFDakUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sVUFBVSxHQUE4QixFQUFFLENBQUM7SUFFakQsTUFBTSxhQUFhLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsTUFBTSxjQUFjLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixNQUFNLFVBQVUsR0FBbUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUM7SUFFakcsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLDhFQUE4RTtRQUM5RSxtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0csU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbEcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxPQUFnQjtJQUM5QyxNQUFNLGdCQUFnQixHQUFvQyxFQUFxQyxDQUFDO0lBQ2hHLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hELCtDQUErQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsU0FBUztRQUNYLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsb0NBQW9DO1FBQ3BDLE1BQU0sY0FBYyxHQUFZLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztRQUMvRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDMUMsQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQVU7SUFDM0IsT0FBTyxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNuQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxPQUFlLEVBQUUsTUFBVztJQUM5RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEMsK0VBQStFO1FBQy9FLE9BQU8saUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBWTtJQUNqQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsMkJBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFtQixDQUFDLENBQUM7QUFDbEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZlYXR1cmVGbGFnIH0gZnJvbSAnLi9mZWF0dXJlLWZsYWdzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJy4uLy4uL2FwaS9jb250ZXh0JztcblxuLyoqXG4gKiBhcmd2IGlzIHRoZSBvdXRwdXQgb2YgeWFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHMoYXJndjogYW55KTogeyBwYXRoOiBzdHJpbmdbXTsgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9IHtcbiAgLy8gR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBhcmd1bWVudHNcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBjb25maWcgPSByZXF1aXJlKCcuLi9jbGktdHlwZS1yZWdpc3RyeS5qc29uJyk7XG4gIGNvbnN0IGNvbW1hbmQgPSBhcmd2Ll9bMF07XG4gIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gW2NvbW1hbmRdO1xuICBjb25zdCBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgY29uc3QgZ2xvYmFsT3B0aW9uczogYW55W10gPSBPYmplY3Qua2V5cyhjb25maWcuZ2xvYmFsT3B0aW9ucyk7XG4gIGNvbnN0IGNvbW1hbmRPcHRpb25zOiBhbnlbXSA9IE9iamVjdC5rZXlzKGNvbmZpZy5jb21tYW5kc1tjb21tYW5kXT8ub3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IGNvbW1hbmRBcmc6IHsgbmFtZTogc3RyaW5nOyB2YXJpYWRpYzogc3RyaW5nIH0gfCB1bmRlZmluZWQgPSBjb25maWcuY29tbWFuZHNbY29tbWFuZF0/LmFyZztcblxuICBmb3IgKGNvbnN0IGFyZ05hbWUgb2YgT2JqZWN0LmtleXMoYXJndikpIHtcbiAgICBpZiAoYXJnTmFtZSA9PT0gY29tbWFuZEFyZz8ubmFtZSkge1xuICAgICAgaWYgKGNvbW1hbmRBcmcudmFyaWFkaWMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd2W2FyZ05hbWVdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfV8ke2krMX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbnRpbnVlIGlmIHRoZSBhcmcgbmFtZSBpcyBub3QgYSBnbG9iYWwgb3B0aW9uIG9yIGNvbW1hbmQgb3B0aW9uXG4gICAgLy8gYXJnIG5hbWUgY29tZXMgZnJvbSB5YXJncyBhbmQgY291bGQgYmUgYW4gYWxpYXM7IHdlIHRydXN0IHRoYXQgdGhlIFwibm9ybWFsXCJcbiAgICAvLyBuYW1lIGhhcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhbmQgdGhhdCBpcyB3aGF0IHdlIHdhbnQgdG8gcmVjb3JkXG4gICAgaWYgKGFyZ3ZbYXJnTmFtZV0gPT09IHVuZGVmaW5lZCB8fCAoIWdsb2JhbE9wdGlvbnMuaW5jbHVkZXMoYXJnTmFtZSkgJiYgIWNvbW1hbmRPcHRpb25zLmluY2x1ZGVzKGFyZ05hbWUpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc051bWJlck9yQm9vbGVhbihhcmd2W2FyZ05hbWVdKSB8fCBpc0tub3duRW51bVZhbHVlKGFyZ05hbWUsIGFyZ3ZbYXJnTmFtZV0sIGNvbW1hbmQsIGNvbmZpZykpIHtcbiAgICAgIHBhcmFtZXRlcnNbYXJnTmFtZV0gPSBhcmd2W2FyZ05hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbWV0ZXJzW2FyZ05hbWVdID0gJzxyZWRhY3RlZD4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVDb250ZXh0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc3Qgc2FuaXRpemVkQ29udGV4dDogeyBbSyBpbiBGZWF0dXJlRmxhZ106IGJvb2xlYW4gfSA9IHt9IGFzIHsgW0sgaW4gRmVhdHVyZUZsYWddOiBib29sZWFuIH07XG4gIGZvciAoY29uc3QgW2ZsYWcsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0LmFsbCkpIHtcbiAgICAvLyBTa2lwIGlmIGZsYWcgaXMgbm90IGluIHRoZSBGZWF0dXJlRmxhZ3MgZW51bVxuICAgIGlmICghaXNGZWF0dXJlRmxhZyhmbGFnKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gRmFsc3kgb3B0aW9ucyBpbmNsdWRlIGJvb2xlYW4gZmFsc2UsIHN0cmluZyAnZmFsc2UnXG4gICAgLy8gQWxsIG90aGVyIGlucHV0cyBldmFsdWF0ZSB0byB0cnVlXG4gICAgY29uc3Qgc2FuaXRpemVkVmFsdWU6IGJvb2xlYW4gPSBpc0Jvb2xlYW4odmFsdWUpID8gdmFsdWUgOiAodmFsdWUgIT09ICdmYWxzZScpO1xuICAgIHNhbml0aXplZENvbnRleHRbZmxhZ10gPSBzYW5pdGl6ZWRWYWx1ZTtcbiAgfVxuICByZXR1cm4gc2FuaXRpemVkQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlck9yQm9vbGVhbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IGlzQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzS25vd25FbnVtVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBjb21tYW5kOiBzdHJpbmcsIGNvbmZpZzogYW55KTogYm9vbGVhbiB7XG4gIGNvbnN0IHByb3BlcnR5RGVmaW5pdG9uID0gY29uZmlnLmdsb2JhbE9wdGlvbnNbbmFtZV0gPz8gY29uZmlnLmNvbW1hbmRzW2NvbW1hbmRdPy5vcHRpb25zW25hbWVdO1xuICBpZiAocHJvcGVydHlEZWZpbml0b24udHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBFdmVuIGlmIHRoZSBwcm9wZXJ0eSBoYXMgY2hvaWNlcywgb25seSByZWNvcmQgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgY2hvaWNlXG4gICAgcmV0dXJuIHByb3BlcnR5RGVmaW5pdG9uLmNob2ljZXM/LmluY2x1ZGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZUZsYWcoZmxhZzogc3RyaW5nKTogZmxhZyBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKEZlYXR1cmVGbGFnKS5pbmNsdWRlcyhmbGFnIGFzIEZlYXR1cmVGbGFnKTtcbn1cbiJdfQ==
|