diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts index 803ce4ae8f9a2..404b8b8f44821 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/app.ts @@ -7,6 +7,7 @@ import { BasicAuth } from './basic-auth'; import { Branch, BranchOptions } from './branch'; import { Domain, DomainOptions } from './domain'; import { renderEnvironmentVariables } from './utils'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * An Amplify Console application @@ -224,6 +225,8 @@ export class App extends Resource implements IApp, iam.IGrantable { constructor(scope: Construct, id: string, props: AppProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.customRules = props.customRules || []; this.environmentVariables = props.environmentVariables || {}; diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts index 8ab9906b29530..b4800770bdf27 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/branch.ts @@ -17,6 +17,7 @@ import { IApp } from './app'; import { BasicAuth } from './basic-auth'; import { renderEnvironmentVariables } from './utils'; import { AssetDeploymentIsCompleteFunction, AssetDeploymentOnEventFunction } from '../custom-resource-handlers/dist/aws-amplify-alpha/asset-deployment-provider.generated'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A branch @@ -162,6 +163,8 @@ export class Branch extends Resource implements IBranch { constructor(scope: Construct, id: string, props: BranchProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.environmentVariables = props.environmentVariables || {}; diff --git a/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts b/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts index 762566ea97e63..2bfafe6fca93b 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify-alpha/lib/domain.ts @@ -5,6 +5,7 @@ import { Construct } from 'constructs'; import { CfnDomain } from 'aws-cdk-lib/aws-amplify'; import { IApp } from './app'; import { IBranch } from './branch'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Options to add a domain to an application @@ -127,6 +128,8 @@ export class Domain extends Resource { constructor(scope: Construct, id: string, props: DomainProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.subDomains = props.subDomains || []; diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/auto-scaling-configuration.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/auto-scaling-configuration.ts index 16ae92f7e144b..dcddb7654c68d 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/auto-scaling-configuration.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/auto-scaling-configuration.ts @@ -1,6 +1,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnAutoScalingConfiguration } from 'aws-cdk-lib/aws-apprunner'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties of the App Runner Auto Scaling Configuration. @@ -154,6 +155,8 @@ export class AutoScalingConfiguration extends cdk.Resource implements IAutoScali super(scope, id, { physicalName: props.autoScalingConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateAutoScalingConfiguration(props); diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/observability-configuration.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/observability-configuration.ts index 4b7fddee0786b..5bc70ac00c67a 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/observability-configuration.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/observability-configuration.ts @@ -1,6 +1,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnObservabilityConfiguration } from 'aws-cdk-lib/aws-apprunner'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The implementation provider chosen for tracing App Runner services @@ -140,6 +141,8 @@ export class ObservabilityConfiguration extends cdk.Resource implements IObserva super(scope, id, { physicalName: props.observabilityConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.observabilityConfigurationName !== undefined && !cdk.Token.isUnresolved(props.observabilityConfigurationName)) { diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts index 3f25b1ed1b681..462994abea2ad 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts @@ -11,6 +11,7 @@ import { CfnService } from 'aws-cdk-lib/aws-apprunner'; import { IVpcConnector } from './vpc-connector'; import { IAutoScalingConfiguration } from './auto-scaling-configuration'; import { IObservabilityConfiguration } from './observability-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The image repository types @@ -1267,6 +1268,8 @@ export class Service extends cdk.Resource implements IService, iam.IGrantable { public constructor(scope: Construct, id: string, props: ServiceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const source = props.source.bind(this); this.source = source; diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-connector.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-connector.ts index a7e798ec5df16..912c85152ecb6 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-connector.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-connector.ts @@ -3,6 +3,7 @@ import { Connections } from 'aws-cdk-lib/aws-ec2'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnVpcConnector } from 'aws-cdk-lib/aws-apprunner'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties of the AppRunner VPC Connector @@ -135,6 +136,8 @@ export class VpcConnector extends cdk.Resource implements IVpcConnector { super(scope, id, { physicalName: props.vpcConnectorName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.vpcConnectorName !== undefined && !cdk.Token.isUnresolved(props.vpcConnectorName)) { diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-ingress-connection.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-ingress-connection.ts index df47330c29693..9d388ffaf4837 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-ingress-connection.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/vpc-ingress-connection.ts @@ -3,6 +3,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { IService } from './service'; import { CfnVpcIngressConnection } from 'aws-cdk-lib/aws-apprunner'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties of the AppRunner VPC Ingress Connection @@ -142,6 +143,8 @@ export class VpcIngressConnection extends cdk.Resource implements IVpcIngressCon super(scope, id, { physicalName: props.vpcIngressConnectionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.vpcIngressConnectionName !== undefined && !cdk.Token.isUnresolved(props.vpcIngressConnectionName)) { diff --git a/packages/@aws-cdk/aws-cloud9-alpha/lib/environment.ts b/packages/@aws-cdk/aws-cloud9-alpha/lib/environment.ts index 5fab01baf1f9f..b20a264c54ef5 100644 --- a/packages/@aws-cdk/aws-cloud9-alpha/lib/environment.ts +++ b/packages/@aws-cdk/aws-cloud9-alpha/lib/environment.ts @@ -4,6 +4,7 @@ import { IUser } from 'aws-cdk-lib/aws-iam'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnEnvironmentEC2 } from 'aws-cdk-lib/aws-cloud9'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Cloud9 Environment @@ -197,6 +198,8 @@ export class Ec2Environment extends cdk.Resource implements IEc2Environment { constructor(scope: Construct, id: string, props: Ec2EnvironmentProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; if (!props.subnetSelection && this.vpc.publicSubnets.length === 0) { diff --git a/packages/@aws-cdk/aws-codestar-alpha/lib/github-repository.ts b/packages/@aws-cdk/aws-codestar-alpha/lib/github-repository.ts index 8e988da37e5d0..78a1e000b8988 100644 --- a/packages/@aws-cdk/aws-codestar-alpha/lib/github-repository.ts +++ b/packages/@aws-cdk/aws-codestar-alpha/lib/github-repository.ts @@ -2,6 +2,7 @@ import * as s3 from 'aws-cdk-lib/aws-s3'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import * as codestar from 'aws-cdk-lib/aws-codestar'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * GitHubRepository resource interface @@ -90,6 +91,8 @@ export class GitHubRepository extends cdk.Resource implements IGitHubRepository constructor(scope: Construct, id: string, props: GitHubRepositoryProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new codestar.CfnGitHubRepository(this, 'Resource', { repositoryOwner: props.owner, diff --git a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool-role-attachment.ts b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool-role-attachment.ts index 06643535abc19..9a409a35cddae 100644 --- a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool-role-attachment.ts +++ b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool-role-attachment.ts @@ -3,6 +3,7 @@ import { IRole } from 'aws-cdk-lib/aws-iam'; import { Resource, IResource, Token } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { IIdentityPool, IdentityPoolProviderUrl } from './identitypool'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an Identity Pool Role Attachment @@ -144,6 +145,8 @@ export class IdentityPoolRoleAttachment extends Resource implements IIdentityPoo constructor(scope: Construct, id: string, props: IdentityPoolRoleAttachmentProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.identityPoolId = props.identityPool.identityPoolId; const mappings = props.roleMappings || []; let roles: any = undefined, roleMappings: any = undefined; diff --git a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts index 135419ae3cc1c..e8b007d00d523 100644 --- a/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts +++ b/packages/@aws-cdk/aws-cognito-identitypool-alpha/lib/identitypool.ts @@ -4,6 +4,7 @@ import { Resource, IResource, Stack, ArnFormat, Lazy, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { IdentityPoolRoleAttachment, IdentityPoolRoleMapping } from './identitypool-role-attachment'; import { IUserPoolAuthenticationProvider } from './identitypool-user-pool-authentication-provider'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Cognito Identity Pool @@ -362,6 +363,8 @@ export class IdentityPool extends Resource implements IIdentityPool { super(scope, id, { physicalName: props.identityPoolName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const authProviders: IdentityPoolAuthenticationProviders = props.authenticationProviders || {}; const providers = authProviders.userPools ? authProviders.userPools.map(userPool => userPool.bind(this, this)) : undefined; if (providers && providers.length) this.cognitoIdentityProviders = providers; diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts index 378e9f9726291..5d088bfd33274 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/ipam.ts @@ -1,6 +1,7 @@ import { CfnIPAM, CfnIPAMPool, CfnIPAMPoolCidr, CfnIPAMScope } from 'aws-cdk-lib/aws-ec2'; import { Construct } from 'constructs'; import { Lazy, Names, Resource, Stack, Tags } from 'aws-cdk-lib'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents the address family for IP addresses in an IPAM pool. @@ -340,6 +341,8 @@ class IpamPool extends Resource implements IIpamPool { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.addressFamily === AddressFamily.IP_V6 && !props.awsService) { throw new Error('awsService is required when addressFamily is set to ipv6'); diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts index 3d2dc4a7c22ee..99f4dd87f57de 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/route.ts @@ -4,6 +4,7 @@ import { Annotations, Duration, IResource, Resource, Tags } from 'aws-cdk-lib/co import { IVpcV2, VPNGatewayV2Options } from './vpc-v2-base'; import { NetworkUtils, allRouteTableIds, CidrBlock } from './util'; import { ISubnetV2 } from './subnet-v2'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Indicates whether the NAT gateway supports public or private connectivity. @@ -236,6 +237,8 @@ export class EgressOnlyInternetGateway extends Resource implements IRouteTarget constructor(scope: Construct, id: string, props: EgressOnlyInternetGatewayProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.egressOnlyInternetGatewayName) { Tags.of(this).add(NAME_TAG, props.egressOnlyInternetGatewayName); diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts index ad144439ce2c3..fba8f47722ecf 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/subnet-v2.ts @@ -4,6 +4,7 @@ import { Construct, DependencyGroup, IDependable } from 'constructs'; import { IVpcV2 } from './vpc-v2-base'; import { CidrBlock, CidrBlockIpv6 } from './util'; import { RouteTable } from './route'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface to define subnet CIDR @@ -249,6 +250,8 @@ export class SubnetV2 extends Resource implements ISubnetV2 { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const ipv4CidrBlock = props.ipv4CidrBlock.cidr; const ipv6CidrBlock = props.ipv6CidrBlock?.cidr; diff --git a/packages/@aws-cdk/aws-ec2-alpha/lib/vpc-v2.ts b/packages/@aws-cdk/aws-ec2-alpha/lib/vpc-v2.ts index ea493343f8802..b270c88a5e166 100644 --- a/packages/@aws-cdk/aws-ec2-alpha/lib/vpc-v2.ts +++ b/packages/@aws-cdk/aws-ec2-alpha/lib/vpc-v2.ts @@ -5,6 +5,7 @@ import { IpamOptions, IIpamPool } from './ipam'; import { IVpcV2, VpcV2Base } from './vpc-v2-base'; import { ISubnetV2, SubnetV2, SubnetV2Attributes } from './subnet-v2'; import { region_info } from 'aws-cdk-lib'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Additional props needed for secondary Address @@ -457,6 +458,8 @@ export class VpcV2 extends VpcV2Base { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpcName = props.vpcName; this.ipAddresses = props.primaryAddressBlock ?? IpAddresses.ipv4('10.0.0.0/16'); const vpcOptions = this.ipAddresses.allocateVpcCidr(); diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/alias.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/alias.ts index 1b0e359791f1f..391a3d95630c7 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/alias.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/alias.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { IFleet } from './fleet-base'; import { IGameSessionQueueDestination } from './game-session-queue'; import { CfnAlias } from 'aws-cdk-lib/aws-gamelift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Gamelift Alias for a Gamelift fleet destination. @@ -199,6 +200,8 @@ export class Alias extends AliasBase { super(scope, id, { physicalName: props.aliasName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!cdk.Token.isUnresolved(props.aliasName)) { if (props.aliasName.length > 1024) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts index ae9e24a32222f..cf758a2433e92 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/build-fleet.ts @@ -5,6 +5,7 @@ import { IBuild } from './build'; import { FleetBase, FleetProps, IFleet } from './fleet-base'; import { CfnFleet } from 'aws-cdk-lib/aws-gamelift'; import { Port, IPeer, IngressRule } from './ingress-rule'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a GameLift Fleet used to run a custom game build. @@ -90,6 +91,8 @@ export class BuildFleet extends FleetBase implements IBuildFleet { super(scope, id, { physicalName: props.fleetName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!cdk.Token.isUnresolved(props.fleetName)) { if (props.fleetName.length > 1024) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/build.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/build.ts index edb8ac74ee883..769dc9c29e488 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/build.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/build.ts @@ -5,6 +5,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { Content } from './content'; import { CfnBuild } from 'aws-cdk-lib/aws-gamelift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Your custom-built game server software that runs on GameLift and hosts game sessions for your players. @@ -273,6 +274,8 @@ export class Build extends BuildBase { super(scope, id, { physicalName: props.buildName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.buildName && !cdk.Token.isUnresolved(props.buildName)) { if (props.buildName.length > 1024) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-server-group.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-server-group.ts index 4411552d3a6f1..42d71443f6826 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-server-group.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-server-group.ts @@ -4,6 +4,7 @@ import * as iam from 'aws-cdk-lib/aws-iam'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnGameServerGroup } from 'aws-cdk-lib/aws-gamelift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Configuration settings for intelligent automatic scaling that uses target tracking. @@ -424,6 +425,8 @@ export class GameServerGroup extends GameServerGroupBase { super(scope, id, { physicalName: props.gameServerGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!cdk.Token.isUnresolved(props.gameServerGroupName)) { if (props.gameServerGroupName.length > 128) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts index d5e0cefe9f7c1..3d36a57308233 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/game-session-queue.ts @@ -3,6 +3,7 @@ import * as sns from 'aws-cdk-lib/aws-sns'; import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnGameSessionQueue } from 'aws-cdk-lib/aws-gamelift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a game session queue destination @@ -363,6 +364,8 @@ export class GameSessionQueue extends GameSessionQueueBase { super(scope, id, { physicalName: props.gameSessionQueueName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!cdk.Token.isUnresolved(props.gameSessionQueueName)) { if (props.gameSessionQueueName.length > 128) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/matchmaking-ruleset.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/matchmaking-ruleset.ts index 64323b5e4a7dd..e57cbfcc6ad68 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/matchmaking-ruleset.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/matchmaking-ruleset.ts @@ -3,6 +3,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnMatchmakingRuleSet } from 'aws-cdk-lib/aws-gamelift'; import { RuleSetContent } from './matchmaking-ruleset-body'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a Gamelift matchmaking ruleset @@ -195,6 +196,8 @@ export class MatchmakingRuleSet extends MatchmakingRuleSetBase { super(scope, id, { physicalName: props.matchmakingRuleSetName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!cdk.Token.isUnresolved(props.matchmakingRuleSetName)) { if (props.matchmakingRuleSetName.length > 128) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts index 991aecdff82fc..819f5c6d9a4dc 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/queued-matchmaking-configuration.ts @@ -5,6 +5,7 @@ import { Construct } from 'constructs'; import { IGameSessionQueue } from './game-session-queue'; import * as gamelift from 'aws-cdk-lib/aws-gamelift'; import { MatchmakingConfigurationProps, GameProperty, MatchmakingConfigurationBase, IMatchmakingConfiguration } from './matchmaking-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a new queued matchmaking configuration @@ -105,6 +106,8 @@ export class QueuedMatchmakingConfiguration extends MatchmakingConfigurationBase super(scope, id, { physicalName: props.matchmakingConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.matchmakingConfigurationName && !cdk.Token.isUnresolved(props.matchmakingConfigurationName)) { if (props.matchmakingConfigurationName.length > 128) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/script.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/script.ts index e0cc161cc62bb..0b34c35d48a49 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/script.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/script.ts @@ -5,6 +5,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { Content } from './content'; import { CfnScript } from 'aws-cdk-lib/aws-gamelift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Your configuration and custom game logic for use with Realtime Servers. @@ -191,6 +192,8 @@ export class Script extends ScriptBase { super(scope, id, { physicalName: props.scriptName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.scriptName && !cdk.Token.isUnresolved(props.scriptName)) { if (props.scriptName.length > 1024) { diff --git a/packages/@aws-cdk/aws-gamelift-alpha/lib/standalone-matchmaking-configuration.ts b/packages/@aws-cdk/aws-gamelift-alpha/lib/standalone-matchmaking-configuration.ts index 7f7df76116168..bf4c476b04d68 100644 --- a/packages/@aws-cdk/aws-gamelift-alpha/lib/standalone-matchmaking-configuration.ts +++ b/packages/@aws-cdk/aws-gamelift-alpha/lib/standalone-matchmaking-configuration.ts @@ -4,6 +4,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import * as gamelift from 'aws-cdk-lib/aws-gamelift'; import { MatchmakingConfigurationProps, MatchmakingConfigurationBase, IMatchmakingConfiguration } from './matchmaking-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a new standalone matchmaking configuration @@ -53,6 +54,8 @@ export class StandaloneMatchmakingConfiguration extends MatchmakingConfiguration super(scope, id, { physicalName: props.matchmakingConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.matchmakingConfigurationName && !cdk.Token.isUnresolved(props.matchmakingConfigurationName)) { if (props.matchmakingConfigurationName.length > 128) { diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index 61981720abd0a..3b3338c9d01e0 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -2,6 +2,7 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2'; import * as cdk from 'aws-cdk-lib/core'; import * as constructs from 'constructs'; import { CfnConnection } from 'aws-cdk-lib/aws-glue'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The type of the glue connection @@ -303,6 +304,8 @@ export class Connection extends cdk.Resource implements IConnection { super(scope, id, { physicalName: props.connectionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.properties = props.properties || {}; diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/data-quality-ruleset.ts b/packages/@aws-cdk/aws-glue-alpha/lib/data-quality-ruleset.ts index aeb477652fa94..c9d259cf9726c 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/data-quality-ruleset.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/data-quality-ruleset.ts @@ -2,6 +2,7 @@ import * as cdk from 'aws-cdk-lib'; import * as constructs from 'constructs'; import { IResource, Resource } from 'aws-cdk-lib/core'; import { CfnDataQualityRuleset } from 'aws-cdk-lib/aws-glue'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties of a DataQualityTargetTable. @@ -122,6 +123,8 @@ export class DataQualityRuleset extends Resource implements IDataQualityRuleset super(scope, id, { physicalName: props.rulesetName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const rulesetResource = new CfnDataQualityRuleset(this, 'Resource', { clientToken: props.clientToken, diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/database.ts b/packages/@aws-cdk/aws-glue-alpha/lib/database.ts index 6b208b3fdfecd..3dcd51befd42c 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/database.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/database.ts @@ -1,6 +1,7 @@ import { ArnFormat, IResource, Lazy, Names, Resource, Stack } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnDatabase } from 'aws-cdk-lib/aws-glue'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; export interface IDatabase extends IResource { /** @@ -102,6 +103,8 @@ export class Database extends Resource implements IDatabase { produce: () => Names.uniqueResourceName(this, {}).toLowerCase(), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.description !== undefined) { validateDescription(props.description); diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts b/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts index 38bb5b28e5919..f564fba804d50 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/external-table.ts @@ -4,6 +4,7 @@ import { Construct } from 'constructs'; import { IConnection } from './connection'; import { Column } from './schema'; import { PartitionIndex, TableBase, TableBaseProps } from './table-base'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; export interface ExternalTableProps extends TableBaseProps { /** @@ -52,6 +53,8 @@ export class ExternalTable extends TableBase { constructor(scope: Construct, id: string, props: ExternalTableProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.connection = props.connection; this.tableResource = new CfnTable(this, 'Table', { catalogId: props.database.catalogId, diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts index d6f9a954861cd..324e1c5836069 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/job.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/job.ts @@ -10,6 +10,7 @@ import { Code, GlueVersion, JobExecutable, JobExecutableConfig, JobType } from ' import { IConnection } from './connection'; import { CfnJob } from 'aws-cdk-lib/aws-glue'; import { ISecurityConfiguration } from './security-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The type of predefined worker that is allocated when a job runs. @@ -701,6 +702,8 @@ export class Job extends JobBase { super(scope, id, { physicalName: props.jobName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const executable = props.executable.bind(); diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts b/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts index b8ca20aded84b..cd4debe8ae822 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/s3-table.ts @@ -5,6 +5,7 @@ import * as s3 from 'aws-cdk-lib/aws-s3'; import { Construct } from 'constructs'; import { Column } from './schema'; import { PartitionIndex, TableBase, TableBaseProps } from './table-base'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Encryption options for a Table. @@ -120,6 +121,8 @@ export class S3Table extends TableBase { constructor(scope: Construct, id: string, props: S3TableProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.s3Prefix = props.s3Prefix ?? ''; const { bucket, encryption, encryptionKey } = createBucket(this, props); this.bucket = bucket; diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/security-configuration.ts b/packages/@aws-cdk/aws-glue-alpha/lib/security-configuration.ts index 6af34e41d6728..76f726115f8c3 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/security-configuration.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/security-configuration.ts @@ -3,6 +3,7 @@ import * as cdk from 'aws-cdk-lib/core'; import { Lazy, Names } from 'aws-cdk-lib/core'; import * as constructs from 'constructs'; import { CfnSecurityConfiguration } from 'aws-cdk-lib/aws-glue'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface representing a created or an imported `SecurityConfiguration`. @@ -194,6 +195,8 @@ export class SecurityConfiguration extends cdk.Resource implements ISecurityConf produce: () => Names.uniqueResourceName(this, {}), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!props.s3Encryption && !props.cloudWatchEncryption && !props.jobBookmarksEncryption) { throw new Error('One of cloudWatchEncryption, jobBookmarksEncryption or s3Encryption must be defined'); diff --git a/packages/@aws-cdk/aws-iot-alpha/lib/audit-configuration.ts b/packages/@aws-cdk/aws-iot-alpha/lib/audit-configuration.ts index 8fa046a78ab0b..45a2016ee0291 100644 --- a/packages/@aws-cdk/aws-iot-alpha/lib/audit-configuration.ts +++ b/packages/@aws-cdk/aws-iot-alpha/lib/audit-configuration.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import * as iot from 'aws-cdk-lib/aws-iot'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as sns from 'aws-cdk-lib/aws-sns'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents AWS IoT Audit Configuration @@ -197,6 +198,8 @@ export class AccountAuditConfiguration extends Resource implements IAccountAudit constructor(scope: Construct, id: string, props?: AccountAuditConfigurationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.accountId = Stack.of(this).account; diff --git a/packages/@aws-cdk/aws-iot-alpha/lib/logging.ts b/packages/@aws-cdk/aws-iot-alpha/lib/logging.ts index 5df5afff1276c..50198de9328d6 100644 --- a/packages/@aws-cdk/aws-iot-alpha/lib/logging.ts +++ b/packages/@aws-cdk/aws-iot-alpha/lib/logging.ts @@ -2,6 +2,7 @@ import { Resource, Stack, IResource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import * as iot from 'aws-cdk-lib/aws-iot'; import * as iam from 'aws-cdk-lib/aws-iam'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents AWS IoT Logging @@ -90,6 +91,8 @@ export class Logging extends Resource implements ILogging { constructor(scope: Construct, id: string, props?: LoggingProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const accountId = Stack.of(this).account; diff --git a/packages/@aws-cdk/aws-iot-alpha/lib/scheduled-audit.ts b/packages/@aws-cdk/aws-iot-alpha/lib/scheduled-audit.ts index 7b69887cae327..14cde5b10befe 100644 --- a/packages/@aws-cdk/aws-iot-alpha/lib/scheduled-audit.ts +++ b/packages/@aws-cdk/aws-iot-alpha/lib/scheduled-audit.ts @@ -2,6 +2,7 @@ import { Resource, Stack, IResource, Token, ArnFormat } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import * as iot from 'aws-cdk-lib/aws-iot'; import { IAccountAuditConfiguration } from './audit-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents AWS IoT Scheduled Audit @@ -317,6 +318,8 @@ export class ScheduledAudit extends Resource implements IScheduledAudit { constructor(scope: Construct, id: string, props: ScheduledAuditProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.auditChecks.length === 0) { throw new Error('At least one \'auditChecks\' must be specified.'); diff --git a/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts b/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts index 91f707189fc66..780127eb8b32c 100644 --- a/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts +++ b/packages/@aws-cdk/aws-iot-alpha/lib/topic-rule.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { IAction } from './action'; import { IotSql } from './iot-sql'; import { CfnTopicRule } from 'aws-cdk-lib/aws-iot'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an AWS IoT Rule @@ -115,6 +116,8 @@ export class TopicRule extends Resource implements ITopicRule { super(scope, id, { physicalName: props.topicRuleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const sqlConfig = props.sql.bind(this); diff --git a/packages/@aws-cdk/aws-iotevents-alpha/lib/detector-model.ts b/packages/@aws-cdk/aws-iotevents-alpha/lib/detector-model.ts index 4eb4e6d216d0e..3453e117aaeae 100644 --- a/packages/@aws-cdk/aws-iotevents-alpha/lib/detector-model.ts +++ b/packages/@aws-cdk/aws-iotevents-alpha/lib/detector-model.ts @@ -3,6 +3,7 @@ import { Resource, IResource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnDetectorModel } from 'aws-cdk-lib/aws-iotevents'; import { State } from './state'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an AWS IoT Events detector model. @@ -108,6 +109,8 @@ export class DetectorModel extends Resource implements IDetectorModel { super(scope, id, { physicalName: props.detectorModelName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!props.initialState._onEnterEventsHaveAtLeastOneCondition()) { throw new Error('Detector Model must have at least one Input with a condition'); diff --git a/packages/@aws-cdk/aws-iotevents-alpha/lib/input.ts b/packages/@aws-cdk/aws-iotevents-alpha/lib/input.ts index 400bdac3f9d79..d9f8596ff4b18 100644 --- a/packages/@aws-cdk/aws-iotevents-alpha/lib/input.ts +++ b/packages/@aws-cdk/aws-iotevents-alpha/lib/input.ts @@ -2,6 +2,7 @@ import * as iam from 'aws-cdk-lib/aws-iam'; import { Resource, IResource, Aws } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnInput } from 'aws-cdk-lib/aws-iotevents'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an AWS IoT Events input. @@ -102,6 +103,8 @@ export class Input extends InputBase { super(scope, id, { physicalName: props.inputName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.attributeJsonPaths.length === 0) { throw new Error('attributeJsonPaths property cannot be empty'); diff --git a/packages/@aws-cdk/aws-ivs-alpha/lib/channel.ts b/packages/@aws-cdk/aws-ivs-alpha/lib/channel.ts index 8bb48712a7375..5ef3e330c27eb 100644 --- a/packages/@aws-cdk/aws-ivs-alpha/lib/channel.ts +++ b/packages/@aws-cdk/aws-ivs-alpha/lib/channel.ts @@ -4,6 +4,7 @@ import { Construct } from 'constructs'; import { CfnChannel } from 'aws-cdk-lib/aws-ivs'; import { StreamKey } from './stream-key'; import { IRecordingConfiguration } from './recording-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an IVS Channel @@ -211,6 +212,8 @@ export class Channel extends ChannelBase { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '-_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (this.physicalName && !core.Token.isUnresolved(this.physicalName) && !/^[a-zA-Z0-9-_]*$/.test(this.physicalName)) { throw new Error(`channelName must contain only numbers, letters, hyphens and underscores, got: '${this.physicalName}'`); diff --git a/packages/@aws-cdk/aws-ivs-alpha/lib/playback-key-pair.ts b/packages/@aws-cdk/aws-ivs-alpha/lib/playback-key-pair.ts index 7359ca843f42b..55de361f5988e 100644 --- a/packages/@aws-cdk/aws-ivs-alpha/lib/playback-key-pair.ts +++ b/packages/@aws-cdk/aws-ivs-alpha/lib/playback-key-pair.ts @@ -2,6 +2,7 @@ import * as core from 'aws-cdk-lib/core'; import { Lazy, Names } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnPlaybackKeyPair } from 'aws-cdk-lib/aws-ivs'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an IVS Playback Key Pair @@ -60,6 +61,8 @@ export class PlaybackKeyPair extends PlaybackKeyPairBase { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '-_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.playbackKeyPairName && !core.Token.isUnresolved(props.playbackKeyPairName) && !/^[a-zA-Z0-9-_]*$/.test(props.playbackKeyPairName)) { throw new Error(`playbackKeyPairName must contain only numbers, letters, hyphens and underscores, got: '${props.playbackKeyPairName}'`); diff --git a/packages/@aws-cdk/aws-ivs-alpha/lib/recording-configuration.ts b/packages/@aws-cdk/aws-ivs-alpha/lib/recording-configuration.ts index 8864e958233b0..8970b203a6153 100644 --- a/packages/@aws-cdk/aws-ivs-alpha/lib/recording-configuration.ts +++ b/packages/@aws-cdk/aws-ivs-alpha/lib/recording-configuration.ts @@ -4,6 +4,7 @@ import { Duration, Fn, IResource, Resource, Stack, Token } from 'aws-cdk-lib/cor import { Construct } from 'constructs'; import { RenditionConfiguration } from './rendition-configuration'; import { ThumbnailConfiguration } from './thumbnail-configuration'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties of the IVS Recording configuration @@ -130,6 +131,8 @@ export class RecordingConfiguration extends Resource implements IRecordingConfig super(scope, id, { physicalName: props.recordingConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.props = props; diff --git a/packages/@aws-cdk/aws-ivs-alpha/lib/stream-key.ts b/packages/@aws-cdk/aws-ivs-alpha/lib/stream-key.ts index 1532ad924c11b..fb30f700fd306 100644 --- a/packages/@aws-cdk/aws-ivs-alpha/lib/stream-key.ts +++ b/packages/@aws-cdk/aws-ivs-alpha/lib/stream-key.ts @@ -2,6 +2,7 @@ import * as core from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { IChannel } from './channel'; import { CfnStreamKey } from 'aws-cdk-lib/aws-ivs'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents an IVS Stream Key @@ -40,6 +41,8 @@ export class StreamKey extends core.Resource implements IStreamKey { constructor(scope: Construct, id: string, props: StreamKeyProps) { super(scope, id, {}); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnStreamKey(this, 'Resource', { channelArn: props.channel.channelArn, diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/application.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/application.ts index df744b6f36faa..71cca5907a958 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/application.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/application.ts @@ -10,6 +10,7 @@ import { environmentProperties } from './private/environment-properties'; import { flinkApplicationConfiguration } from './private/flink-application-configuration'; import { validateFlinkApplicationProps as validateApplicationProps } from './private/validation'; import { LogLevel, MetricsLevel, Runtime } from './types'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * An interface expressing the public properties on both an imported and @@ -907,6 +908,8 @@ class Import extends ApplicationBase { constructor(scope: Construct, id: string, attrs: { applicationArn: string; securityGroups?: ec2.ISecurityGroup[] }) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, attrs); // Imported applications have no associated role or grantPrincipal this.grantPrincipal = new iam.UnknownPrincipal({ resource: this }); diff --git a/packages/@aws-cdk/aws-kinesisfirehose-alpha/lib/delivery-stream.ts b/packages/@aws-cdk/aws-kinesisfirehose-alpha/lib/delivery-stream.ts index e00fd1f25b72f..7a15894b566bb 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose-alpha/lib/delivery-stream.ts +++ b/packages/@aws-cdk/aws-kinesisfirehose-alpha/lib/delivery-stream.ts @@ -10,6 +10,7 @@ import { FirehoseMetrics } from 'aws-cdk-lib/aws-kinesisfirehose/lib/kinesisfire import { CfnDeliveryStream } from 'aws-cdk-lib/aws-kinesisfirehose'; import { StreamEncryption } from './encryption'; import { ISource } from './source'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; const PUT_RECORD_ACTIONS = [ 'firehose:PutRecord', @@ -319,6 +320,8 @@ export class DeliveryStream extends DeliveryStreamBase { super(scope, id, { physicalName: props.deliveryStreamName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._role = props.role; diff --git a/packages/@aws-cdk/aws-lambda-go-alpha/lib/function.ts b/packages/@aws-cdk/aws-lambda-go-alpha/lib/function.ts index eea8ac5670d13..ad019d4ae6d78 100644 --- a/packages/@aws-cdk/aws-lambda-go-alpha/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-go-alpha/lib/function.ts @@ -5,6 +5,7 @@ import { Construct } from 'constructs'; import { Bundling } from './bundling'; import { BundlingOptions } from './types'; import { findUp } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a GolangFunction @@ -120,6 +121,9 @@ export class GoFunction extends lambda.Function { }), handler: 'bootstrap', // setting name to bootstrap so that the 'provided' runtime can also be used }); + + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts b/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts index 510725c028af2..de30d5bd77990 100644 --- a/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts @@ -5,6 +5,7 @@ import { Stack } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { Bundling } from './bundling'; import { BundlingOptions } from './types'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for a PythonFunction @@ -80,5 +81,8 @@ export class PythonFunction extends Function { }), handler: resolvedHandler, }); + + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/@aws-cdk/aws-lambda-python-alpha/lib/layer.ts b/packages/@aws-cdk/aws-lambda-python-alpha/lib/layer.ts index 7b7820acf8d2e..57a2fd572b0ac 100644 --- a/packages/@aws-cdk/aws-lambda-python-alpha/lib/layer.ts +++ b/packages/@aws-cdk/aws-lambda-python-alpha/lib/layer.ts @@ -4,6 +4,7 @@ import { Stack } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { Bundling } from './bundling'; import { BundlingOptions } from './types'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Properties for PythonLayerVersion @@ -69,5 +70,8 @@ export class PythonLayerVersion extends lambda.LayerVersion { ...props.bundling, }), }); + + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts b/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts index 20a70aa754d8a..80ba5a84e8b7e 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/geofence-collection.ts @@ -4,6 +4,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnGeofenceCollection } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Geofence Collection @@ -131,6 +132,8 @@ export class GeofenceCollection extends Resource implements IGeofenceCollection super(scope, id, { physicalName: props.geofenceCollectionName ?? Lazy.string({ produce: () => generateUniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const geofenceCollection = new CfnGeofenceCollection(this, 'Resource', { collectionName: this.physicalName, diff --git a/packages/@aws-cdk/aws-location-alpha/lib/map.ts b/packages/@aws-cdk/aws-location-alpha/lib/map.ts index 3f9a9078163b7..bfeea426692f2 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/map.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/map.ts @@ -3,6 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnMap } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents the Amazon Location Service Map @@ -290,6 +291,8 @@ export class Map extends Resource implements IMap { super(scope, id, { physicalName: props.mapName ?? Lazy.string({ produce: () => generateUniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const map = new CfnMap(this, 'Resource', { configuration: { diff --git a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts index a13cd7f7607fc..41a4e66301a24 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts @@ -3,6 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnPlaceIndex } from 'aws-cdk-lib/aws-location'; import { DataSource, generateUniqueId } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Place Index @@ -150,6 +151,8 @@ export class PlaceIndex extends Resource implements IPlaceIndex { super(scope, id, { physicalName: props.placeIndexName ?? Lazy.string({ produce: () => generateUniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const placeIndex = new CfnPlaceIndex(this, 'Resource', { indexName: this.physicalName, diff --git a/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts b/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts index 63d83ee373ec3..f843a797780c0 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/route-calculator.ts @@ -3,6 +3,7 @@ import { ArnFormat, IResource, Lazy, Resource, Stack, Token } from 'aws-cdk-lib/ import { Construct } from 'constructs'; import { CfnRouteCalculator } from 'aws-cdk-lib/aws-location'; import { generateUniqueId, DataSource } from './util'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Route Calculator @@ -127,6 +128,8 @@ export class RouteCalculator extends Resource implements IRouteCalculator { super(scope, id, { physicalName: props.routeCalculatorName ?? Lazy.string({ produce: () => generateUniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const routeCalculator = new CfnRouteCalculator(this, 'Resource', { calculatorName: this.physicalName, diff --git a/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts b/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts index 8f3049f4e240d..abd934b5f62df 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/tracker.ts @@ -5,6 +5,7 @@ import { Construct } from 'constructs'; import { CfnTracker, CfnTrackerConsumer } from 'aws-cdk-lib/aws-location'; import { generateUniqueId } from './util'; import { IGeofenceCollection } from './geofence-collection'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Tracker @@ -197,6 +198,8 @@ export class Tracker extends Resource implements ITracker { super(scope, id, { physicalName: props.trackerName ?? Lazy.string({ produce: () => generateUniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const tracker = new CfnTracker(this, 'Resource', { trackerName: this.physicalName, diff --git a/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts index f83da19627a0e..8005ad797a50b 100644 --- a/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-msk-alpha/lib/cluster.ts @@ -13,6 +13,7 @@ import * as constructs from 'constructs'; import { addressOf } from 'constructs/lib/private/uniqueid'; import { KafkaVersion } from './'; import { CfnCluster } from 'aws-cdk-lib/aws-msk'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Represents a MSK Cluster @@ -467,6 +468,8 @@ export class Cluster extends ClusterBase { super(scope, id, { physicalName: props.clusterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const subnetSelection = props.vpc.selectSubnets(props.vpcSubnets); diff --git a/packages/@aws-cdk/aws-neptune-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-neptune-alpha/lib/cluster.ts index 252ba0f923f40..03a2fd6fb9f15 100644 --- a/packages/@aws-cdk/aws-neptune-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-neptune-alpha/lib/cluster.ts @@ -10,6 +10,7 @@ import { InstanceType } from './instance'; import { CfnDBCluster, CfnDBInstance } from 'aws-cdk-lib/aws-neptune'; import { IClusterParameterGroup, IParameterGroup } from './parameter-group'; import { ISubnetGroup, SubnetGroup } from './subnet-group'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Possible Instances Types to use in Neptune cluster @@ -594,6 +595,8 @@ export class DatabaseCluster extends DatabaseClusterBase implements IDatabaseClu constructor(scope: Construct, id: string, props: DatabaseClusterProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; this.vpcSubnets = props.vpcSubnets ?? { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }; diff --git a/packages/@aws-cdk/aws-neptune-alpha/lib/instance.ts b/packages/@aws-cdk/aws-neptune-alpha/lib/instance.ts index a8012df9e9bf0..6215642fdd1c3 100644 --- a/packages/@aws-cdk/aws-neptune-alpha/lib/instance.ts +++ b/packages/@aws-cdk/aws-neptune-alpha/lib/instance.ts @@ -6,6 +6,7 @@ import { IDatabaseCluster } from './cluster'; import { Endpoint } from './endpoint'; import { CfnDBInstance } from 'aws-cdk-lib/aws-neptune'; import { IParameterGroup } from './parameter-group'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Possible Instances Types to use in Neptune cluster @@ -499,6 +500,8 @@ export class DatabaseInstance extends DatabaseInstanceBase implements IDatabaseI constructor(scope: Construct, id: string, props: DatabaseInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const instance = new CfnDBInstance(this, 'Resource', { autoMinorVersionUpgrade: props.autoMinorVersionUpgrade, diff --git a/packages/@aws-cdk/aws-neptune-alpha/lib/parameter-group.ts b/packages/@aws-cdk/aws-neptune-alpha/lib/parameter-group.ts index 94ce5d5cbe7c2..b4c00fce0bd19 100644 --- a/packages/@aws-cdk/aws-neptune-alpha/lib/parameter-group.ts +++ b/packages/@aws-cdk/aws-neptune-alpha/lib/parameter-group.ts @@ -1,6 +1,7 @@ import { IResource, Resource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnDBClusterParameterGroup, CfnDBParameterGroup } from 'aws-cdk-lib/aws-neptune'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The DB parameter group family that a DB parameter group is compatible with @@ -108,6 +109,8 @@ export class ClusterParameterGroup extends Resource implements IClusterParameter constructor(scope: Construct, id: string, props: ClusterParameterGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnDBClusterParameterGroup(this, 'Resource', { name: props.clusterParameterGroupName, diff --git a/packages/@aws-cdk/aws-neptune-alpha/lib/subnet-group.ts b/packages/@aws-cdk/aws-neptune-alpha/lib/subnet-group.ts index 9e2528db70573..fd7bdb816208f 100644 --- a/packages/@aws-cdk/aws-neptune-alpha/lib/subnet-group.ts +++ b/packages/@aws-cdk/aws-neptune-alpha/lib/subnet-group.ts @@ -2,6 +2,7 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2'; import { IResource, RemovalPolicy, Resource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnDBSubnetGroup } from 'aws-cdk-lib/aws-neptune'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface for a subnet group. @@ -73,6 +74,8 @@ export class SubnetGroup extends Resource implements ISubnetGroup { constructor(scope: Construct, id: string, props: SubnetGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const { subnetIds } = props.vpc.selectSubnets(props.vpcSubnets ?? { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }); diff --git a/packages/@aws-cdk/aws-pipes-alpha/lib/pipe.ts b/packages/@aws-cdk/aws-pipes-alpha/lib/pipe.ts index 6056bcc3d79ac..1faaaf58d2660 100644 --- a/packages/@aws-cdk/aws-pipes-alpha/lib/pipe.ts +++ b/packages/@aws-cdk/aws-pipes-alpha/lib/pipe.ts @@ -1,6 +1,7 @@ import { IResource, Resource, Stack } from 'aws-cdk-lib'; import { IRole, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; import { CfnPipe } from 'aws-cdk-lib/aws-pipes'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; import { Construct } from 'constructs'; import { IEnrichment } from './enrichment'; import { IFilter } from './filter'; @@ -183,6 +184,8 @@ class ImportedPipe extends PipeBase { constructor(scope: Construct, id: string, pipeName: string) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, { pipeName: pipeName }); this.pipeName = pipeName; this.pipeArn = Stack.of(this).formatArn({ service: 'pipes', diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts index 19d3ac3fb590a..4b184de512213 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/cluster.ts @@ -13,6 +13,7 @@ import { Endpoint } from './endpoint'; import { ClusterParameterGroup, IClusterParameterGroup } from './parameter-group'; import { CfnCluster } from 'aws-cdk-lib/aws-redshift'; import { ClusterSubnetGroup, IClusterSubnetGroup } from './subnet-group'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Possible Node Types to use in the cluster @@ -548,6 +549,8 @@ export class Cluster extends ClusterBase { constructor(scope: Construct, id: string, props: ClusterProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; this.vpcSubnets = props.vpcSubnets ?? { diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/database-secret.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/database-secret.ts index f6c2f40d8a321..e3573473f90ab 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/database-secret.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/database-secret.ts @@ -1,6 +1,7 @@ import * as kms from 'aws-cdk-lib/aws-kms'; import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager'; import { Construct } from 'constructs'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Construction properties for a DatabaseSecret. @@ -42,5 +43,7 @@ export class DatabaseSecret extends secretsmanager.Secret { excludeCharacters: props.excludeCharacters ?? '"@/\\\ \'', }, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts index 5b2125df029c2..e67b96e8e79ac 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/parameter-group.ts @@ -1,6 +1,7 @@ import { IResource, Resource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnClusterParameterGroup } from 'aws-cdk-lib/aws-redshift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A parameter group @@ -75,6 +76,8 @@ export class ClusterParameterGroup extends ClusterParameterGroupBase { constructor(scope: Construct, id: string, props: ClusterParameterGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.parameters = props.parameters; this.resource = new CfnClusterParameterGroup(this, 'Resource', { description: props.description || 'Cluster parameter group for family redshift-1.0', diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/subnet-group.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/subnet-group.ts index 5075f1019d9a5..5fd21b362d6c0 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/subnet-group.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/subnet-group.ts @@ -2,6 +2,7 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2'; import { IResource, RemovalPolicy, Resource } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnClusterSubnetGroup } from 'aws-cdk-lib/aws-redshift'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface for a cluster subnet group. @@ -64,6 +65,8 @@ export class ClusterSubnetGroup extends Resource implements IClusterSubnetGroup constructor(scope: Construct, id: string, props: ClusterSubnetGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const { subnetIds } = props.vpc.selectSubnets(props.vpcSubnets ?? { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }); diff --git a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-domain-list.ts b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-domain-list.ts index 162588ea0327a..fdd62dd35caa0 100644 --- a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-domain-list.ts +++ b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-domain-list.ts @@ -4,6 +4,7 @@ import { Asset } from 'aws-cdk-lib/aws-s3-assets'; import { IResource, Resource, Token } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnFirewallDomainList } from 'aws-cdk-lib/aws-route53resolver'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Firewall Domain List @@ -209,6 +210,8 @@ export class FirewallDomainList extends Resource implements IFirewallDomainList constructor(scope: Construct, id: string, props: FirewallDomainListProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.name && !Token.isUnresolved(props.name) && !/^[\w-.]{1,128}$/.test(props.name)) { throw new Error(`Invalid domain list name: ${props.name}. The name must have 1-128 characters. Valid characters: A-Z, a-z, 0-9, _, -, .`); diff --git a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group-association.ts b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group-association.ts index f7091e2eca2ef..e3b8c1770c137 100644 --- a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group-association.ts +++ b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group-association.ts @@ -3,6 +3,7 @@ import { Resource, Token } from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { IFirewallRuleGroup } from './firewall-rule-group'; import { CfnFirewallRuleGroupAssociation } from 'aws-cdk-lib/aws-route53resolver'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Options for a Firewall Rule Group Association @@ -106,6 +107,8 @@ export class FirewallRuleGroupAssociation extends Resource { constructor(scope: Construct, id: string, props: FirewallRuleGroupAssociationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!Token.isUnresolved(props.priority) && (props.priority <= 100 || props.priority >= 9000)) { throw new Error(`Priority must be greater than 100 and less than 9000, got ${props.priority}`); diff --git a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts index 6d9e7869b0015..90f5df083bcc4 100644 --- a/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts +++ b/packages/@aws-cdk/aws-route53resolver-alpha/lib/firewall-rule-group.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { IFirewallDomainList } from './firewall-domain-list'; import { FirewallRuleGroupAssociation, FirewallRuleGroupAssociationOptions } from './firewall-rule-group-association'; import { CfnFirewallRuleGroup } from 'aws-cdk-lib/aws-route53resolver'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * A Firewall Rule Group @@ -225,6 +226,8 @@ export class FirewallRuleGroup extends Resource implements IFirewallRuleGroup { constructor(scope: Construct, id: string, props: FirewallRuleGroupProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.rules = props.rules ?? []; diff --git a/packages/@aws-cdk/aws-s3objectlambda-alpha/lib/access-point.ts b/packages/@aws-cdk/aws-s3objectlambda-alpha/lib/access-point.ts index 6917c4f3f5130..2df01a084a3b0 100644 --- a/packages/@aws-cdk/aws-s3objectlambda-alpha/lib/access-point.ts +++ b/packages/@aws-cdk/aws-s3objectlambda-alpha/lib/access-point.ts @@ -4,6 +4,7 @@ import * as s3 from 'aws-cdk-lib/aws-s3'; import * as core from 'aws-cdk-lib/core'; import { Construct } from 'constructs'; import { CfnAccessPoint } from 'aws-cdk-lib/aws-s3objectlambda'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The interface that represents the AccessPoint resource. @@ -210,6 +211,8 @@ export class AccessPoint extends AccessPointBase { super(scope, id, { physicalName: props.accessPointName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.accessPointName) { validateAccessPointName(props.accessPointName); diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts index 4cdeb6d07850f..5402b178b7ab6 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint-config.ts @@ -7,6 +7,7 @@ import { InstanceType } from './instance-type'; import { IModel } from './model'; import { sameEnv } from './private/util'; import { CfnEndpointConfig } from 'aws-cdk-lib/aws-sagemaker'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The interface for a SageMaker EndpointConfig resource. @@ -206,6 +207,8 @@ export class EndpointConfig extends cdk.Resource implements IEndpointConfig { super(scope, id, { physicalName: props.endpointConfigName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); (props.instanceProductionVariants || []).map(p => this.addInstanceProductionVariant(p)); diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts index 2fcb1d79651a3..ba3646345f755 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/endpoint.ts @@ -11,6 +11,7 @@ import { InstanceType } from './instance-type'; import { sameEnv } from './private/util'; import { CfnEndpoint } from 'aws-cdk-lib/aws-sagemaker'; import { ScalableInstanceCount } from './scalable-instance-count'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /* * Amazon SageMaker automatic scaling doesn't support automatic scaling for burstable instances such @@ -408,6 +409,8 @@ export class Endpoint extends EndpointBase { super(scope, id, { physicalName: props.endpointName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateEnvironmentCompatibility(props.endpointConfig); this.endpointConfig = props.endpointConfig; diff --git a/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts b/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts index 28f88d4934b1d..b6a9064ba31ce 100644 --- a/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts +++ b/packages/@aws-cdk/aws-sagemaker-alpha/lib/model.ts @@ -5,6 +5,7 @@ import { Construct } from 'constructs'; import { ContainerImage } from './container-image'; import { ModelData } from './model-data'; import { CfnModel } from 'aws-cdk-lib/aws-sagemaker'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * Interface that defines a Model resource. @@ -307,6 +308,8 @@ export class Model extends ModelBase { super(scope, id, { physicalName: props.modelName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._connections = this.configureNetworking(props); this.subnets = (props.vpc) ? props.vpc.selectSubnets(props.vpcSubnets) : undefined; diff --git a/packages/@aws-cdk/aws-scheduler-alpha/lib/group.ts b/packages/@aws-cdk/aws-scheduler-alpha/lib/group.ts index 7f737a91eca2e..3cad4f2dc987d 100644 --- a/packages/@aws-cdk/aws-scheduler-alpha/lib/group.ts +++ b/packages/@aws-cdk/aws-scheduler-alpha/lib/group.ts @@ -2,6 +2,7 @@ import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as iam from 'aws-cdk-lib/aws-iam'; import { CfnScheduleGroup } from 'aws-cdk-lib/aws-scheduler'; import { Arn, ArnFormat, Aws, IResource, Names, RemovalPolicy, Resource, Stack } from 'aws-cdk-lib/core'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; import { Construct } from 'constructs'; export interface GroupProps { @@ -339,6 +340,8 @@ export class Group extends GroupBase { public constructor(scope: Construct, id: string, props: GroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.groupName = props.groupName ?? Names.uniqueResourceName(this, { maxLength: 64, diff --git a/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts b/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts index 1fe1859fa690d..56388aad71734 100644 --- a/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts +++ b/packages/@aws-cdk/aws-scheduler-alpha/lib/schedule.ts @@ -2,6 +2,7 @@ import { Duration, IResource, Resource, Token } from 'aws-cdk-lib'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as kms from 'aws-cdk-lib/aws-kms'; import { CfnSchedule } from 'aws-cdk-lib/aws-scheduler'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; import { Construct } from 'constructs'; import { IGroup } from './group'; import { ScheduleExpression } from './schedule-expression'; @@ -272,6 +273,8 @@ export class Schedule extends Resource implements ISchedule { super(scope, id, { physicalName: props.scheduleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.group = props.group; diff --git a/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/application.ts b/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/application.ts index 549c4ba80fe98..8f628c4fe4d65 100644 --- a/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/application.ts +++ b/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/application.ts @@ -7,6 +7,7 @@ import { getPrincipalsforSharing, hashValues, ShareOptions, SharePermission } fr import { isAccountUnresolved } from './private/utils'; import { InputValidator } from './private/validation'; import { CfnApplication, CfnAttributeGroupAssociation, CfnResourceAssociation } from 'aws-cdk-lib/aws-servicecatalogappregistry'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; const APPLICATION_READ_ONLY_RAM_PERMISSION_ARN = `arn:${cdk.Aws.PARTITION}:ram::aws:permission/AWSRAMPermissionServiceCatalogAppRegistryApplicationReadOnly`; const APPLICATION_ALLOW_ACCESS_RAM_PERMISSION_ARN = `arn:${cdk.Aws.PARTITION}:ram::aws:permission/AWSRAMPermissionServiceCatalogAppRegistryApplicationAllowAssociation`; @@ -314,6 +315,8 @@ export class Application extends ApplicationBase { constructor(scope: Construct, id: string, props: ApplicationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateApplicationProps(props); diff --git a/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/attribute-group.ts b/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/attribute-group.ts index f71c6cce8c365..960856ced58b7 100644 --- a/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/attribute-group.ts +++ b/packages/@aws-cdk/aws-servicecatalogappregistry-alpha/lib/attribute-group.ts @@ -5,6 +5,7 @@ import { IApplication } from './application'; import { getPrincipalsforSharing, hashValues, ShareOptions, SharePermission } from './common'; import { InputValidator } from './private/validation'; import { CfnAttributeGroup, CfnAttributeGroupAssociation } from 'aws-cdk-lib/aws-servicecatalogappregistry'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; const ATTRIBUTE_GROUP_READ_ONLY_RAM_PERMISSION_ARN = `arn:${cdk.Aws.PARTITION}:ram::aws:permission/AWSRAMPermissionServiceCatalogAppRegistryAttributeGroupReadOnly`; const ATTRIBUTE_GROUP_ALLOW_ACCESS_RAM_PERMISSION_ARN = `arn:${cdk.Aws.PARTITION}:ram::aws:permission/AWSRAMPermissionServiceCatalogAppRegistryAttributeGroupAllowAssociation`; @@ -150,6 +151,8 @@ export class AttributeGroup extends AttributeGroupBase implements IAttributeGrou constructor(scope: Construct, id: string, props: AttributeGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateAttributeGroupProps(props); diff --git a/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES b/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES index 83df0b8ecbb3d..98d1cf54ada22 100644 --- a/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES +++ b/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES @@ -1442,7 +1442,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cognito-identity@3.685.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.685.0 | Apache-2.0 +** @aws-sdk/client-cognito-identity@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1648,7 +1648,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cognito-identity@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-cognito-identity@3.716.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2060,7 +2060,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ecr@3.682.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.682.0 | Apache-2.0 +** @aws-sdk/client-ecr@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2266,7 +2266,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ecr@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-ecr@3.720.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.720.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3708,7 +3708,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-s3@3.685.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.685.0 | Apache-2.0 +** @aws-sdk/client-s3@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3914,7 +3914,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-s3@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-s3@3.717.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.717.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4120,7 +4120,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-secrets-manager@3.682.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.682.0 | Apache-2.0 +** @aws-sdk/client-secrets-manager@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4326,7 +4326,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-secrets-manager@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-secrets-manager@3.716.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4944,7 +4944,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sso-oidc@3.682.0 - https://www.npmjs.com/package/@aws-sdk/client-sso-oidc/v/3.682.0 | Apache-2.0 +** @aws-sdk/client-sso-oidc@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-sso-oidc/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5150,7 +5150,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sso-oidc@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-sso-oidc/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-sso-oidc@3.716.0 - https://www.npmjs.com/package/@aws-sdk/client-sso-oidc/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5356,7 +5356,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sso@3.682.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.682.0 | Apache-2.0 +** @aws-sdk/client-sso@3.696.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5562,7 +5562,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sso@3.696.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.696.0 | Apache-2.0 +** @aws-sdk/client-sso@3.716.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5768,7 +5768,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sts@3.682.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.682.0 | Apache-2.0 +** @aws-sdk/client-sts@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5974,7 +5974,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sts@3.699.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.699.0 | Apache-2.0 +** @aws-sdk/client-sts@3.716.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6180,15 +6180,15 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/core@3.679.0 - https://www.npmjs.com/package/@aws-sdk/core/v/3.679.0 | Apache-2.0 +** @aws-sdk/core@3.696.0 - https://www.npmjs.com/package/@aws-sdk/core/v/3.696.0 | Apache-2.0 ---------------- -** @aws-sdk/core@3.696.0 - https://www.npmjs.com/package/@aws-sdk/core/v/3.696.0 | Apache-2.0 +** @aws-sdk/core@3.716.0 - https://www.npmjs.com/package/@aws-sdk/core/v/3.716.0 | Apache-2.0 ---------------- -** @aws-sdk/credential-provider-cognito-identity@3.685.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.685.0 | Apache-2.0 +** @aws-sdk/credential-provider-cognito-identity@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6394,7 +6394,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/credential-provider-cognito-identity@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.699.0 | Apache-2.0 +** @aws-sdk/credential-provider-cognito-identity@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6600,7 +6600,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/credential-provider-env@3.679.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-env/v/3.679.0 | Apache-2.0 +** @aws-sdk/credential-provider-env@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-env/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6805,7 +6805,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-env@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-env/v/3.696.0 | Apache-2.0 +** @aws-sdk/credential-provider-env@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-env/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -7010,15 +7010,15 @@ Apache License ---------------- -** @aws-sdk/credential-provider-http@3.679.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-http/v/3.679.0 | Apache-2.0 +** @aws-sdk/credential-provider-http@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-http/v/3.696.0 | Apache-2.0 ---------------- -** @aws-sdk/credential-provider-http@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-http/v/3.696.0 | Apache-2.0 +** @aws-sdk/credential-provider-http@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-http/v/3.716.0 | Apache-2.0 ---------------- -** @aws-sdk/credential-provider-ini@3.682.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.682.0 | Apache-2.0 +** @aws-sdk/credential-provider-ini@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -7223,7 +7223,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-ini@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.699.0 | Apache-2.0 +** @aws-sdk/credential-provider-ini@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -7428,7 +7428,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-node@3.682.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.682.0 | Apache-2.0 +** @aws-sdk/credential-provider-node@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -7633,7 +7633,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-node@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.699.0 | Apache-2.0 +** @aws-sdk/credential-provider-node@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -7838,7 +7838,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-process@3.679.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-process/v/3.679.0 | Apache-2.0 +** @aws-sdk/credential-provider-process@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-process/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8043,7 +8043,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-process@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-process/v/3.696.0 | Apache-2.0 +** @aws-sdk/credential-provider-process@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-process/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8248,7 +8248,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-sso@3.682.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.682.0 | Apache-2.0 +** @aws-sdk/credential-provider-sso@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8453,7 +8453,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-sso@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.699.0 | Apache-2.0 +** @aws-sdk/credential-provider-sso@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8658,7 +8658,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-web-identity@3.679.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.679.0 | Apache-2.0 +** @aws-sdk/credential-provider-web-identity@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -8863,7 +8863,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-web-identity@3.696.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.696.0 | Apache-2.0 +** @aws-sdk/credential-provider-web-identity@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9068,7 +9068,7 @@ Apache License ---------------- -** @aws-sdk/credential-providers@3.685.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.685.0 | Apache-2.0 +** @aws-sdk/credential-providers@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9273,7 +9273,7 @@ Apache License ---------------- -** @aws-sdk/credential-providers@3.699.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.699.0 | Apache-2.0 +** @aws-sdk/credential-providers@3.716.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9683,7 +9683,7 @@ Apache License ---------------- -** @aws-sdk/lib-storage@3.685.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.685.0 | Apache-2.0 +** @aws-sdk/lib-storage@3.699.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.699.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9888,7 +9888,7 @@ Apache License ---------------- -** @aws-sdk/lib-storage@3.699.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.699.0 | Apache-2.0 +** @aws-sdk/lib-storage@3.717.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.717.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10093,7 +10093,7 @@ Apache License ---------------- -** @aws-sdk/middleware-bucket-endpoint@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-bucket-endpoint@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10299,7 +10299,7 @@ Apache License ---------------- -** @aws-sdk/middleware-bucket-endpoint@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-bucket-endpoint@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10505,7 +10505,7 @@ Apache License ---------------- -** @aws-sdk/middleware-expect-continue@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-expect-continue@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10711,7 +10711,7 @@ Apache License ---------------- -** @aws-sdk/middleware-expect-continue@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-expect-continue@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10917,7 +10917,7 @@ Apache License ---------------- -** @aws-sdk/middleware-flexible-checksums@3.682.0 - https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums/v/3.682.0 | Apache-2.0 +** @aws-sdk/middleware-flexible-checksums@3.697.0 - https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums/v/3.697.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -11123,7 +11123,7 @@ Apache License ---------------- -** @aws-sdk/middleware-flexible-checksums@3.697.0 - https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums/v/3.697.0 | Apache-2.0 +** @aws-sdk/middleware-flexible-checksums@3.717.0 - https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums/v/3.717.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -11329,7 +11329,7 @@ Apache License ---------------- -** @aws-sdk/middleware-host-header@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-host-header/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-host-header@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-host-header/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -11535,7 +11535,7 @@ Apache License ---------------- -** @aws-sdk/middleware-host-header@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-host-header/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-host-header@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-host-header/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -11741,7 +11741,7 @@ Apache License ---------------- -** @aws-sdk/middleware-location-constraint@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-location-constraint@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -11947,7 +11947,7 @@ Apache License ---------------- -** @aws-sdk/middleware-location-constraint@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-location-constraint@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -12153,7 +12153,7 @@ Apache License ---------------- -** @aws-sdk/middleware-logger@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-logger/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-logger@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-logger/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -12358,7 +12358,7 @@ Apache License ---------------- -** @aws-sdk/middleware-logger@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-logger/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-logger@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-logger/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -12563,7 +12563,7 @@ Apache License ---------------- -** @aws-sdk/middleware-recursion-detection@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-recursion-detection@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -12769,7 +12769,7 @@ Apache License ---------------- -** @aws-sdk/middleware-recursion-detection@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection/v/3.696.0 | Apache-2.0 +** @aws-sdk/middleware-recursion-detection@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -13384,212 +13384,6 @@ Apache License limitations under the License. ----------------- - -** @aws-sdk/middleware-sdk-s3@3.685.0 - https://www.npmjs.com/package/@aws-sdk/middleware-sdk-s3/v/3.685.0 | Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ---------------- ** @aws-sdk/middleware-sdk-s3@3.696.0 - https://www.npmjs.com/package/@aws-sdk/middleware-sdk-s3/v/3.696.0 | Apache-2.0 @@ -13798,7 +13592,7 @@ Apache License ---------------- -** @aws-sdk/middleware-ssec@3.679.0 - https://www.npmjs.com/package/@aws-sdk/middleware-ssec/v/3.679.0 | Apache-2.0 +** @aws-sdk/middleware-sdk-s3@3.716.0 - https://www.npmjs.com/package/@aws-sdk/middleware-sdk-s3/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -13987,7 +13781,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14210,7 +14004,7 @@ Apache License ---------------- -** @aws-sdk/middleware-user-agent@3.682.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.682.0 | Apache-2.0 +** @aws-sdk/middleware-ssec@3.714.0 - https://www.npmjs.com/package/@aws-sdk/middleware-ssec/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -14399,7 +14193,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14622,8 +14416,8 @@ Apache License ---------------- -** @aws-sdk/region-config-resolver@3.679.0 - https://www.npmjs.com/package/@aws-sdk/region-config-resolver/v/3.679.0 | Apache-2.0 -Apache License +** @aws-sdk/middleware-user-agent@3.716.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.716.0 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -14811,7 +14605,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14825,6 +14619,7 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- ** @aws-sdk/region-config-resolver@3.696.0 - https://www.npmjs.com/package/@aws-sdk/region-config-resolver/v/3.696.0 | Apache-2.0 @@ -15032,8 +14827,8 @@ Apache License ---------------- -** @aws-sdk/signature-v4-multi-region@3.685.0 - https://www.npmjs.com/package/@aws-sdk/signature-v4-multi-region/v/3.685.0 | Apache-2.0 - Apache License +** @aws-sdk/region-config-resolver@3.714.0 - https://www.npmjs.com/package/@aws-sdk/region-config-resolver/v/3.714.0 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -15221,7 +15016,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15235,7 +15030,6 @@ Apache License See the License for the specific language governing permissions and limitations under the License. - ---------------- ** @aws-sdk/signature-v4-multi-region@3.696.0 - https://www.npmjs.com/package/@aws-sdk/signature-v4-multi-region/v/3.696.0 | Apache-2.0 @@ -15444,8 +15238,8 @@ Apache License ---------------- -** @aws-sdk/token-providers@3.679.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.679.0 | Apache-2.0 -Apache License +** @aws-sdk/signature-v4-multi-region@3.716.0 - https://www.npmjs.com/package/@aws-sdk/signature-v4-multi-region/v/3.716.0 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -15633,7 +15427,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15647,6 +15441,7 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- ** @aws-sdk/token-providers@3.699.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.699.0 | Apache-2.0 @@ -15854,7 +15649,7 @@ Apache License ---------------- -** @aws-sdk/util-arn-parser@3.679.0 - https://www.npmjs.com/package/@aws-sdk/util-arn-parser/v/3.679.0 | Apache-2.0 +** @aws-sdk/token-providers@3.714.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -16264,7 +16059,7 @@ Apache License ---------------- -** @aws-sdk/util-endpoints@3.679.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.679.0 | Apache-2.0 +** @aws-sdk/util-endpoints@3.696.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -16469,7 +16264,7 @@ Apache License ---------------- -** @aws-sdk/util-endpoints@3.696.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.696.0 | Apache-2.0 +** @aws-sdk/util-endpoints@3.714.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.714.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -16879,7 +16674,7 @@ Apache License ---------------- -** @aws-sdk/util-user-agent-node@3.682.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.682.0 | Apache-2.0 +** @aws-sdk/util-user-agent-node@3.696.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -17085,7 +16880,7 @@ Apache License ---------------- -** @aws-sdk/util-user-agent-node@3.696.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.696.0 | Apache-2.0 +** @aws-sdk/util-user-agent-node@3.716.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.716.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -17291,7 +17086,7 @@ Apache License ---------------- -** @aws-sdk/xml-builder@3.679.0 - https://www.npmjs.com/package/@aws-sdk/xml-builder/v/3.679.0 | Apache-2.0 +** @aws-sdk/xml-builder@3.696.0 - https://www.npmjs.com/package/@aws-sdk/xml-builder/v/3.696.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -17496,7 +17291,7 @@ Apache License ---------------- -** @aws-sdk/xml-builder@3.696.0 - https://www.npmjs.com/package/@aws-sdk/xml-builder/v/3.696.0 | Apache-2.0 +** @aws-sdk/xml-builder@3.709.0 - https://www.npmjs.com/package/@aws-sdk/xml-builder/v/3.709.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -17915,7 +17710,7 @@ Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. ---------------- -** @smithy/abort-controller@3.1.6 - https://www.npmjs.com/package/@smithy/abort-controller/v/3.1.6 | Apache-2.0 +** @smithy/abort-controller@3.1.8 - https://www.npmjs.com/package/@smithy/abort-controller/v/3.1.8 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -18120,7 +17915,7 @@ Apache License ---------------- -** @smithy/abort-controller@3.1.8 - https://www.npmjs.com/package/@smithy/abort-controller/v/3.1.8 | Apache-2.0 +** @smithy/abort-controller@3.1.9 - https://www.npmjs.com/package/@smithy/abort-controller/v/3.1.9 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -18325,7 +18120,7 @@ Apache License ---------------- -** @smithy/config-resolver@3.0.10 - https://www.npmjs.com/package/@smithy/config-resolver/v/3.0.10 | Apache-2.0 +** @smithy/config-resolver@3.0.12 - https://www.npmjs.com/package/@smithy/config-resolver/v/3.0.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -18530,7 +18325,7 @@ Apache License ---------------- -** @smithy/config-resolver@3.0.12 - https://www.npmjs.com/package/@smithy/config-resolver/v/3.0.12 | Apache-2.0 +** @smithy/config-resolver@3.0.13 - https://www.npmjs.com/package/@smithy/config-resolver/v/3.0.13 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -18735,7 +18530,7 @@ Apache License ---------------- -** @smithy/core@2.5.1 - https://www.npmjs.com/package/@smithy/core/v/2.5.1 | Apache-2.0 +** @smithy/core@2.5.3 - https://www.npmjs.com/package/@smithy/core/v/2.5.3 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -18941,7 +18736,7 @@ Apache License ---------------- -** @smithy/core@2.5.3 - https://www.npmjs.com/package/@smithy/core/v/2.5.3 | Apache-2.0 +** @smithy/core@2.5.6 - https://www.npmjs.com/package/@smithy/core/v/2.5.6 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -19147,7 +18942,7 @@ Apache License ---------------- -** @smithy/credential-provider-imds@3.2.5 - https://www.npmjs.com/package/@smithy/credential-provider-imds/v/3.2.5 | Apache-2.0 +** @smithy/credential-provider-imds@3.2.7 - https://www.npmjs.com/package/@smithy/credential-provider-imds/v/3.2.7 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -19352,7 +19147,7 @@ Apache License ---------------- -** @smithy/credential-provider-imds@3.2.7 - https://www.npmjs.com/package/@smithy/credential-provider-imds/v/3.2.7 | Apache-2.0 +** @smithy/credential-provider-imds@3.2.8 - https://www.npmjs.com/package/@smithy/credential-provider-imds/v/3.2.8 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -19557,7 +19352,7 @@ Apache License ---------------- -** @smithy/eventstream-codec@3.1.7 - https://www.npmjs.com/package/@smithy/eventstream-codec/v/3.1.7 | Apache-2.0 +** @smithy/eventstream-codec@3.1.10 - https://www.npmjs.com/package/@smithy/eventstream-codec/v/3.1.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20175,7 +19970,7 @@ Apache License ---------------- -** @smithy/eventstream-serde-config-resolver@3.0.8 - https://www.npmjs.com/package/@smithy/eventstream-serde-config-resolver/v/3.0.8 | Apache-2.0 +** @smithy/eventstream-serde-config-resolver@3.0.11 - https://www.npmjs.com/package/@smithy/eventstream-serde-config-resolver/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20381,7 +20176,7 @@ Apache License ---------------- -** @smithy/eventstream-serde-node@3.0.10 - https://www.npmjs.com/package/@smithy/eventstream-serde-node/v/3.0.10 | Apache-2.0 +** @smithy/eventstream-serde-node@3.0.12 - https://www.npmjs.com/package/@smithy/eventstream-serde-node/v/3.0.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20587,7 +20382,7 @@ Apache License ---------------- -** @smithy/eventstream-serde-node@3.0.12 - https://www.npmjs.com/package/@smithy/eventstream-serde-node/v/3.0.12 | Apache-2.0 +** @smithy/eventstream-serde-node@3.0.13 - https://www.npmjs.com/package/@smithy/eventstream-serde-node/v/3.0.13 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20793,7 +20588,7 @@ Apache License ---------------- -** @smithy/eventstream-serde-universal@3.0.10 - https://www.npmjs.com/package/@smithy/eventstream-serde-universal/v/3.0.10 | Apache-2.0 +** @smithy/eventstream-serde-universal@3.0.12 - https://www.npmjs.com/package/@smithy/eventstream-serde-universal/v/3.0.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20999,7 +20794,7 @@ Apache License ---------------- -** @smithy/eventstream-serde-universal@3.0.12 - https://www.npmjs.com/package/@smithy/eventstream-serde-universal/v/3.0.12 | Apache-2.0 +** @smithy/eventstream-serde-universal@3.0.13 - https://www.npmjs.com/package/@smithy/eventstream-serde-universal/v/3.0.13 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -21205,7 +21000,7 @@ Apache License ---------------- -** @smithy/fetch-http-handler@4.0.0 - https://www.npmjs.com/package/@smithy/fetch-http-handler/v/4.0.0 | Apache-2.0 +** @smithy/fetch-http-handler@4.1.1 - https://www.npmjs.com/package/@smithy/fetch-http-handler/v/4.1.1 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -21410,7 +21205,7 @@ Apache License ---------------- -** @smithy/fetch-http-handler@4.1.1 - https://www.npmjs.com/package/@smithy/fetch-http-handler/v/4.1.1 | Apache-2.0 +** @smithy/fetch-http-handler@4.1.2 - https://www.npmjs.com/package/@smithy/fetch-http-handler/v/4.1.2 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -21820,7 +21615,7 @@ Apache License ---------------- -** @smithy/hash-node@3.0.8 - https://www.npmjs.com/package/@smithy/hash-node/v/3.0.8 | Apache-2.0 +** @smithy/hash-node@3.0.11 - https://www.npmjs.com/package/@smithy/hash-node/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -22025,7 +21820,7 @@ Apache License ---------------- -** @smithy/hash-stream-node@3.1.7 - https://www.npmjs.com/package/@smithy/hash-stream-node/v/3.1.7 | Apache-2.0 +** @smithy/hash-stream-node@3.1.10 - https://www.npmjs.com/package/@smithy/hash-stream-node/v/3.1.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -22845,7 +22640,7 @@ Apache License ---------------- -** @smithy/middleware-content-length@3.0.10 - https://www.npmjs.com/package/@smithy/middleware-content-length/v/3.0.10 | Apache-2.0 +** @smithy/middleware-content-length@3.0.12 - https://www.npmjs.com/package/@smithy/middleware-content-length/v/3.0.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -23050,7 +22845,7 @@ Apache License ---------------- -** @smithy/middleware-content-length@3.0.12 - https://www.npmjs.com/package/@smithy/middleware-content-length/v/3.0.12 | Apache-2.0 +** @smithy/middleware-content-length@3.0.13 - https://www.npmjs.com/package/@smithy/middleware-content-length/v/3.0.13 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -23460,7 +23255,7 @@ Apache License ---------------- -** @smithy/middleware-endpoint@3.2.1 - https://www.npmjs.com/package/@smithy/middleware-endpoint/v/3.2.1 | Apache-2.0 +** @smithy/middleware-endpoint@3.2.3 - https://www.npmjs.com/package/@smithy/middleware-endpoint/v/3.2.3 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -23665,7 +23460,7 @@ Apache License ---------------- -** @smithy/middleware-endpoint@3.2.3 - https://www.npmjs.com/package/@smithy/middleware-endpoint/v/3.2.3 | Apache-2.0 +** @smithy/middleware-endpoint@3.2.7 - https://www.npmjs.com/package/@smithy/middleware-endpoint/v/3.2.7 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -23870,7 +23665,7 @@ Apache License ---------------- -** @smithy/middleware-retry@3.0.25 - https://www.npmjs.com/package/@smithy/middleware-retry/v/3.0.25 | Apache-2.0 +** @smithy/middleware-retry@3.0.27 - https://www.npmjs.com/package/@smithy/middleware-retry/v/3.0.27 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -24076,7 +23871,7 @@ Apache License ---------------- -** @smithy/middleware-retry@3.0.27 - https://www.npmjs.com/package/@smithy/middleware-retry/v/3.0.27 | Apache-2.0 +** @smithy/middleware-retry@3.0.32 - https://www.npmjs.com/package/@smithy/middleware-retry/v/3.0.32 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -24486,6 +24281,212 @@ Apache License limitations under the License. +---------------- + +** @smithy/middleware-serde@3.0.11 - https://www.npmjs.com/package/@smithy/middleware-serde/v/3.0.11 | Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ---------------- ** @smithy/middleware-serde@3.0.8 - https://www.npmjs.com/package/@smithy/middleware-serde/v/3.0.8 | Apache-2.0 @@ -24899,7 +24900,7 @@ Apache License ---------------- -** @smithy/middleware-stack@3.0.8 - https://www.npmjs.com/package/@smithy/middleware-stack/v/3.0.8 | Apache-2.0 +** @smithy/middleware-stack@3.0.11 - https://www.npmjs.com/package/@smithy/middleware-stack/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -25309,7 +25310,7 @@ Apache License ---------------- -** @smithy/node-config-provider@3.1.9 - https://www.npmjs.com/package/@smithy/node-config-provider/v/3.1.9 | Apache-2.0 +** @smithy/node-config-provider@3.1.12 - https://www.npmjs.com/package/@smithy/node-config-provider/v/3.1.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -25514,7 +25515,7 @@ Apache License ---------------- -** @smithy/node-http-handler@3.2.5 - https://www.npmjs.com/package/@smithy/node-http-handler/v/3.2.5 | Apache-2.0 +** @smithy/node-config-provider@3.1.9 - https://www.npmjs.com/package/@smithy/node-config-provider/v/3.1.9 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -25703,7 +25704,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -25924,7 +25925,7 @@ Apache License ---------------- -** @smithy/property-provider@3.1.10 - https://www.npmjs.com/package/@smithy/property-provider/v/3.1.10 | Apache-2.0 +** @smithy/node-http-handler@3.3.3 - https://www.npmjs.com/package/@smithy/node-http-handler/v/3.3.3 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -26129,7 +26130,7 @@ Apache License ---------------- -** @smithy/property-provider@3.1.8 - https://www.npmjs.com/package/@smithy/property-provider/v/3.1.8 | Apache-2.0 +** @smithy/property-provider@3.1.10 - https://www.npmjs.com/package/@smithy/property-provider/v/3.1.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -26334,8 +26335,8 @@ Apache License ---------------- -** @smithy/protocol-http@4.1.5 - https://www.npmjs.com/package/@smithy/protocol-http/v/4.1.5 | Apache-2.0 - Apache License +** @smithy/property-provider@3.1.11 - https://www.npmjs.com/package/@smithy/property-provider/v/3.1.11 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -26523,7 +26524,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26537,6 +26538,210 @@ Apache License See the License for the specific language governing permissions and limitations under the License. +---------------- + +** @smithy/property-provider@3.1.8 - https://www.npmjs.com/package/@smithy/property-provider/v/3.1.8 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ---------------- @@ -26746,7 +26951,7 @@ Apache License ---------------- -** @smithy/querystring-builder@3.0.10 - https://www.npmjs.com/package/@smithy/querystring-builder/v/3.0.10 | Apache-2.0 +** @smithy/protocol-http@4.1.8 - https://www.npmjs.com/package/@smithy/protocol-http/v/4.1.8 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -26935,7 +27140,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26952,7 +27157,7 @@ Apache License ---------------- -** @smithy/querystring-builder@3.0.8 - https://www.npmjs.com/package/@smithy/querystring-builder/v/3.0.8 | Apache-2.0 +** @smithy/querystring-builder@3.0.10 - https://www.npmjs.com/package/@smithy/querystring-builder/v/3.0.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -27158,7 +27363,7 @@ Apache License ---------------- -** @smithy/querystring-parser@3.0.10 - https://www.npmjs.com/package/@smithy/querystring-parser/v/3.0.10 | Apache-2.0 +** @smithy/querystring-builder@3.0.11 - https://www.npmjs.com/package/@smithy/querystring-builder/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -27364,7 +27569,7 @@ Apache License ---------------- -** @smithy/querystring-parser@3.0.8 - https://www.npmjs.com/package/@smithy/querystring-parser/v/3.0.8 | Apache-2.0 +** @smithy/querystring-parser@3.0.10 - https://www.npmjs.com/package/@smithy/querystring-parser/v/3.0.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -27570,7 +27775,7 @@ Apache License ---------------- -** @smithy/service-error-classification@3.0.10 - https://www.npmjs.com/package/@smithy/service-error-classification/v/3.0.10 | Apache-2.0 +** @smithy/querystring-parser@3.0.11 - https://www.npmjs.com/package/@smithy/querystring-parser/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -27776,7 +27981,7 @@ Apache License ---------------- -** @smithy/service-error-classification@3.0.8 - https://www.npmjs.com/package/@smithy/service-error-classification/v/3.0.8 | Apache-2.0 +** @smithy/querystring-parser@3.0.8 - https://www.npmjs.com/package/@smithy/querystring-parser/v/3.0.8 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -27982,8 +28187,8 @@ Apache License ---------------- -** @smithy/shared-ini-file-loader@3.1.11 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.11 | Apache-2.0 -Apache License +** @smithy/service-error-classification@3.0.10 - https://www.npmjs.com/package/@smithy/service-error-classification/v/3.0.10 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -28185,10 +28390,11 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/shared-ini-file-loader@3.1.8 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.8 | Apache-2.0 -Apache License +** @smithy/service-error-classification@3.0.11 - https://www.npmjs.com/package/@smithy/service-error-classification/v/3.0.11 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -28390,10 +28596,11 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/shared-ini-file-loader@3.1.9 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.9 | Apache-2.0 -Apache License +** @smithy/service-error-classification@3.0.8 - https://www.npmjs.com/package/@smithy/service-error-classification/v/3.0.8 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -28595,9 +28802,10 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/signature-v4@4.2.1 - https://www.npmjs.com/package/@smithy/signature-v4/v/4.2.1 | Apache-2.0 +** @smithy/shared-ini-file-loader@3.1.11 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -28802,7 +29010,7 @@ Apache License ---------------- -** @smithy/signature-v4@4.2.3 - https://www.npmjs.com/package/@smithy/signature-v4/v/4.2.3 | Apache-2.0 +** @smithy/shared-ini-file-loader@3.1.12 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.12 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -29007,8 +29215,8 @@ Apache License ---------------- -** @smithy/smithy-client@3.4.2 - https://www.npmjs.com/package/@smithy/smithy-client/v/3.4.2 | Apache-2.0 - Apache License +** @smithy/shared-ini-file-loader@3.1.8 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.8 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -29196,7 +29404,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -29210,11 +29418,10 @@ Apache License See the License for the specific language governing permissions and limitations under the License. - ---------------- -** @smithy/smithy-client@3.4.4 - https://www.npmjs.com/package/@smithy/smithy-client/v/3.4.4 | Apache-2.0 - Apache License +** @smithy/shared-ini-file-loader@3.1.9 - https://www.npmjs.com/package/@smithy/shared-ini-file-loader/v/3.1.9 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -29402,7 +29609,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -29416,11 +29623,10 @@ Apache License See the License for the specific language governing permissions and limitations under the License. - ---------------- -** @smithy/types@3.5.0 - https://www.npmjs.com/package/@smithy/types/v/3.5.0 | Apache-2.0 - Apache License +** @smithy/signature-v4@4.2.3 - https://www.npmjs.com/package/@smithy/signature-v4/v/4.2.3 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -29608,7 +29814,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -29622,11 +29828,10 @@ Apache License See the License for the specific language governing permissions and limitations under the License. - ---------------- -** @smithy/url-parser@3.0.10 - https://www.npmjs.com/package/@smithy/url-parser/v/3.0.10 | Apache-2.0 - Apache License +** @smithy/signature-v4@4.2.4 - https://www.npmjs.com/package/@smithy/signature-v4/v/4.2.4 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -29828,10 +30033,9 @@ Apache License See the License for the specific language governing permissions and limitations under the License. - ---------------- -** @smithy/url-parser@3.0.8 - https://www.npmjs.com/package/@smithy/url-parser/v/3.0.8 | Apache-2.0 +** @smithy/smithy-client@3.4.4 - https://www.npmjs.com/package/@smithy/smithy-client/v/3.4.4 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -30020,7 +30224,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -30037,8 +30241,8 @@ Apache License ---------------- -** @smithy/util-base64@3.0.0 - https://www.npmjs.com/package/@smithy/util-base64/v/3.0.0 | Apache-2.0 -Apache License +** @smithy/smithy-client@3.5.2 - https://www.npmjs.com/package/@smithy/smithy-client/v/3.5.2 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -30226,7 +30430,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -30240,10 +30444,11 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/util-body-length-node@3.0.0 - https://www.npmjs.com/package/@smithy/util-body-length-node/v/3.0.0 | Apache-2.0 -Apache License +** @smithy/types@3.5.0 - https://www.npmjs.com/package/@smithy/types/v/3.5.0 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -30431,7 +30636,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -30445,10 +30650,11 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/util-buffer-from@2.2.0 - https://www.npmjs.com/package/@smithy/util-buffer-from/v/2.2.0 | Apache-2.0 -Apache License +** @smithy/types@3.7.2 - https://www.npmjs.com/package/@smithy/types/v/3.7.2 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -30636,7 +30842,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -30650,10 +30856,11 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/util-buffer-from@3.0.0 - https://www.npmjs.com/package/@smithy/util-buffer-from/v/3.0.0 | Apache-2.0 -Apache License +** @smithy/url-parser@3.0.10 - https://www.npmjs.com/package/@smithy/url-parser/v/3.0.10 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -30855,214 +31062,10 @@ Apache License See the License for the specific language governing permissions and limitations under the License. ----------------- - -** @smithy/util-config-provider@3.0.0 - https://www.npmjs.com/package/@smithy/util-config-provider/v/3.0.0 | Apache-2.0 -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---------------- -** @smithy/util-defaults-mode-node@3.0.25 - https://www.npmjs.com/package/@smithy/util-defaults-mode-node/v/3.0.25 | Apache-2.0 +** @smithy/url-parser@3.0.11 - https://www.npmjs.com/package/@smithy/url-parser/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -31268,7 +31271,7 @@ Apache License ---------------- -** @smithy/util-defaults-mode-node@3.0.27 - https://www.npmjs.com/package/@smithy/util-defaults-mode-node/v/3.0.27 | Apache-2.0 +** @smithy/url-parser@3.0.8 - https://www.npmjs.com/package/@smithy/url-parser/v/3.0.8 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -31474,7 +31477,7 @@ Apache License ---------------- -** @smithy/util-endpoints@2.1.4 - https://www.npmjs.com/package/@smithy/util-endpoints/v/2.1.4 | Apache-2.0 +** @smithy/util-base64@3.0.0 - https://www.npmjs.com/package/@smithy/util-base64/v/3.0.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -31663,7 +31666,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -31679,7 +31682,7 @@ Apache License ---------------- -** @smithy/util-endpoints@2.1.6 - https://www.npmjs.com/package/@smithy/util-endpoints/v/2.1.6 | Apache-2.0 +** @smithy/util-body-length-node@3.0.0 - https://www.npmjs.com/package/@smithy/util-body-length-node/v/3.0.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -31868,7 +31871,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -31884,7 +31887,7 @@ Apache License ---------------- -** @smithy/util-hex-encoding@3.0.0 - https://www.npmjs.com/package/@smithy/util-hex-encoding/v/3.0.0 | Apache-2.0 +** @smithy/util-buffer-from@2.2.0 - https://www.npmjs.com/package/@smithy/util-buffer-from/v/2.2.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -32089,7 +32092,7 @@ Apache License ---------------- -** @smithy/util-middleware@3.0.10 - https://www.npmjs.com/package/@smithy/util-middleware/v/3.0.10 | Apache-2.0 +** @smithy/util-buffer-from@3.0.0 - https://www.npmjs.com/package/@smithy/util-buffer-from/v/3.0.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -32278,7 +32281,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32294,7 +32297,7 @@ Apache License ---------------- -** @smithy/util-middleware@3.0.8 - https://www.npmjs.com/package/@smithy/util-middleware/v/3.0.8 | Apache-2.0 +** @smithy/util-config-provider@3.0.0 - https://www.npmjs.com/package/@smithy/util-config-provider/v/3.0.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -32483,7 +32486,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32499,8 +32502,8 @@ Apache License ---------------- -** @smithy/util-retry@3.0.10 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.10 | Apache-2.0 -Apache License +** @smithy/util-defaults-mode-node@3.0.27 - https://www.npmjs.com/package/@smithy/util-defaults-mode-node/v/3.0.27 | Apache-2.0 + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -32688,7 +32691,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32702,10 +32705,1242 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + ---------------- -** @smithy/util-retry@3.0.7 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.7 | Apache-2.0 -Apache License +** @smithy/util-defaults-mode-node@3.0.32 - https://www.npmjs.com/package/@smithy/util-defaults-mode-node/v/3.0.32 | Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---------------- + +** @smithy/util-endpoints@2.1.6 - https://www.npmjs.com/package/@smithy/util-endpoints/v/2.1.6 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-endpoints@2.1.7 - https://www.npmjs.com/package/@smithy/util-endpoints/v/2.1.7 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-hex-encoding@3.0.0 - https://www.npmjs.com/package/@smithy/util-hex-encoding/v/3.0.0 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-middleware@3.0.10 - https://www.npmjs.com/package/@smithy/util-middleware/v/3.0.10 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-middleware@3.0.11 - https://www.npmjs.com/package/@smithy/util-middleware/v/3.0.11 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-middleware@3.0.8 - https://www.npmjs.com/package/@smithy/util-middleware/v/3.0.8 | Apache-2.0 +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -32909,7 +34144,7 @@ Apache License ---------------- -** @smithy/util-retry@3.0.8 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.8 | Apache-2.0 +** @smithy/util-retry@3.0.10 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.10 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -33114,7 +34349,7 @@ Apache License ---------------- -** @smithy/util-stream@3.2.1 - https://www.npmjs.com/package/@smithy/util-stream/v/3.2.1 | Apache-2.0 +** @smithy/util-retry@3.0.11 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.11 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -33303,7 +34538,212 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + +** @smithy/util-retry@3.0.7 - https://www.npmjs.com/package/@smithy/util-retry/v/3.0.7 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -33524,6 +34964,211 @@ Apache License ---------------- +** @smithy/util-stream@3.3.3 - https://www.npmjs.com/package/@smithy/util-stream/v/3.3.3 | Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---------------- + ** @smithy/util-uri-escape@3.0.0 - https://www.npmjs.com/package/@smithy/util-uri-escape/v/3.0.0 | Apache-2.0 Apache License Version 2.0, January 2004 @@ -34139,7 +35784,7 @@ Apache License ---------------- -** @smithy/util-waiter@3.1.7 - https://www.npmjs.com/package/@smithy/util-waiter/v/3.1.7 | Apache-2.0 +** @smithy/util-waiter@3.1.9 - https://www.npmjs.com/package/@smithy/util-waiter/v/3.1.9 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -34344,7 +35989,7 @@ Apache License ---------------- -** @smithy/util-waiter@3.1.9 - https://www.npmjs.com/package/@smithy/util-waiter/v/3.1.9 | Apache-2.0 +** @smithy/util-waiter@3.2.0 - https://www.npmjs.com/package/@smithy/util-waiter/v/3.2.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/packages/@aws-cdk/example-construct-library/lib/example-resource.ts b/packages/@aws-cdk/example-construct-library/lib/example-resource.ts index 9715ef09581e9..f4a3f28e3f379 100644 --- a/packages/@aws-cdk/example-construct-library/lib/example-resource.ts +++ b/packages/@aws-cdk/example-construct-library/lib/example-resource.ts @@ -15,6 +15,7 @@ import { Construct } from 'constructs'; // for files that are part of this package or part of core, we do import individual classes or functions import { CfnWaitCondition, CfnWaitConditionHandle, Fn, IResource, RemovalPolicy, Resource, Stack, Token } from 'aws-cdk-lib/core'; import { exampleResourceArnComponents } from './private/example-resource-common'; +import { addConstructMetadata } from 'aws-cdk-lib/core/lib/metadata-resource'; /** * The interface that represents the ExampleResource resource. @@ -391,6 +392,7 @@ export class ExampleResource extends ExampleResourceBase { */ constructor(scope: Construct, id: string, props: ExampleResourceProps = {}) { // Call the constructor from Resource superclass, + // which attaches this construct to the construct tree. super(scope, id, { // You need to let the Resource superclass know which of your properties @@ -402,6 +404,9 @@ export class ExampleResource extends ExampleResourceBase { physicalName: props.waitConditionHandleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); + // We often add validations for properties, // so that customers receive feedback about incorrect properties // sooner than a CloudFormation deployment. diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/api-key.ts b/packages/aws-cdk-lib/aws-apigateway/lib/api-key.ts index d4b42fc6d3b0e..fc9f52c4650a6 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/api-key.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/api-key.ts @@ -6,6 +6,7 @@ import { IStage } from './stage'; import { QuotaSettings, ThrottleSettings, UsagePlan, UsagePlanPerApiStage } from './usage-plan'; import * as iam from '../../aws-iam'; import { ArnFormat, IResource as IResourceBase, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * API keys are alphanumeric string values that you distribute to @@ -170,6 +171,8 @@ export class ApiKey extends ApiKeyBase { super(scope, id, { physicalName: props.apiKeyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnApiKey(this, 'Resource', { customerId: props.customerId, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/cognito.ts b/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/cognito.ts index 46b4348dcddb2..e8d7de76aea98 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/cognito.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/cognito.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IdentitySource } from './identity-source'; import * as cognito from '../../../aws-cognito'; import { Duration, FeatureFlags, Lazy, Names, Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { APIGATEWAY_AUTHORIZER_CHANGE_DEPLOYMENT_LOGICAL_ID } from '../../../cx-api'; import { CfnAuthorizer, CfnAuthorizerProps } from '../apigateway.generated'; import { Authorizer, IAuthorizer } from '../authorizer'; @@ -71,6 +72,8 @@ export class CognitoUserPoolsAuthorizer extends Authorizer implements IAuthorize constructor(scope: Construct, id: string, props: CognitoUserPoolsAuthorizerProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const restApiId = this.lazyRestApiId(); diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/lambda.ts b/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/lambda.ts index df124eb306291..48c26d916f9fd 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/lambda.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/authorizers/lambda.ts @@ -3,6 +3,7 @@ import { IdentitySource } from './identity-source'; import * as iam from '../../../aws-iam'; import * as lambda from '../../../aws-lambda'; import { Arn, ArnFormat, Duration, FeatureFlags, Lazy, Names, Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { APIGATEWAY_AUTHORIZER_CHANGE_DEPLOYMENT_LOGICAL_ID } from '../../../cx-api'; import { CfnAuthorizer, CfnAuthorizerProps } from '../apigateway.generated'; import { Authorizer, IAuthorizer } from '../authorizer'; @@ -208,6 +209,8 @@ export class TokenAuthorizer extends LambdaAuthorizer { constructor(scope: Construct, id: string, props: TokenAuthorizerProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const restApiId = this.lazyRestApiId(); diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/base-path-mapping.ts b/packages/aws-cdk-lib/aws-apigateway/lib/base-path-mapping.ts index 005acd07c24a8..73b7354a838a9 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/base-path-mapping.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/base-path-mapping.ts @@ -4,6 +4,7 @@ import { IDomainName } from './domain-name'; import { IRestApi, RestApiBase } from './restapi'; import { Stage } from './stage'; import { Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface BasePathMappingOptions { /** @@ -54,6 +55,8 @@ export interface BasePathMappingProps extends BasePathMappingOptions { export class BasePathMapping extends Resource { constructor(scope: Construct, id: string, props: BasePathMappingProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.basePath && !Token.isUnresolved(props.basePath)) { if (props.basePath.startsWith('/') || props.basePath.endsWith('/')) { diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts b/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts index c245f82769110..b6d81ee1e229d 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/deployment.ts @@ -4,6 +4,7 @@ import { Method } from './method'; import { IRestApi, RestApi, SpecRestApi, RestApiBase } from './restapi'; import { Lazy, RemovalPolicy, Resource, CfnResource } from '../../core'; import { md5hash } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface DeploymentProps { /** @@ -80,6 +81,8 @@ export class Deployment extends Resource { constructor(scope: Construct, id: string, props: DeploymentProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.resource = new LatestDeploymentResource(this, 'Resource', { description: props.description, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts b/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts index 4f4ae930983b1..a761ee19cb4b9 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts @@ -7,6 +7,7 @@ import * as apigwv2 from '../../aws-apigatewayv2'; import * as acm from '../../aws-certificatemanager'; import { IBucket } from '../../aws-s3'; import { IResource, Names, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for creating an api mapping @@ -138,6 +139,8 @@ export class DomainName extends Resource implements IDomainName { constructor(scope: Construct, id: string, props: DomainNameProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.endpointType = props.endpointType || EndpointType.REGIONAL; const edge = this.endpointType === EndpointType.EDGE; diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/gateway-response.ts b/packages/aws-cdk-lib/aws-apigateway/lib/gateway-response.ts index 60d5604b08f73..e9fc233dcf9a9 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/gateway-response.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/gateway-response.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnGatewayResponse, CfnGatewayResponseProps } from './apigateway.generated'; import { IRestApi } from './restapi'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents gateway response resource. @@ -57,6 +58,8 @@ export interface GatewayResponseOptions { export class GatewayResponse extends Resource implements IGatewayResponse { constructor(scope: Construct, id: string, props: GatewayResponseProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const gatewayResponseProps: CfnGatewayResponseProps = { restApiId: props.restApi.restApiId, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/lambda-api.ts b/packages/aws-cdk-lib/aws-apigateway/lib/lambda-api.ts index 6dbea4c17a12f..68d0f1ce23590 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/lambda-api.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/lambda-api.ts @@ -5,6 +5,7 @@ import { Method } from './method'; import { ProxyResource, Resource } from './resource'; import { RestApi, RestApiProps } from './restapi'; import * as lambda from '../../aws-lambda'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface LambdaRestApiProps extends RestApiProps { /** @@ -60,6 +61,8 @@ export class LambdaRestApi extends RestApi { ...props.options, // deprecated, but we still support ...props, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.proxy !== false) { this.root.addProxy(); diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts index 8f282d253dbcc..b64b6c1b893ce 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts @@ -14,6 +14,7 @@ import { validateHttpMethod } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { Annotations, ArnFormat, FeatureFlags, Lazy, Names, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_REQUEST_VALIDATOR_UNIQUE_ID } from '../../cx-api'; export interface MethodOptions { @@ -177,6 +178,8 @@ export class Method extends Resource { constructor(scope: Construct, id: string, props: MethodProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.resource = props.resource; this.api = props.resource.api; diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/model.ts b/packages/aws-cdk-lib/aws-apigateway/lib/model.ts index 23da756a5bafd..3a994ddb2059d 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/model.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/model.ts @@ -4,6 +4,7 @@ import * as jsonSchema from './json-schema'; import { IRestApi, RestApi } from './restapi'; import * as util from './util'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IModel { /** @@ -164,6 +165,8 @@ export class Model extends Resource implements IModel { super(scope, id, { physicalName: props.modelName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const modelProps: CfnModelProps = { name: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/requestvalidator.ts b/packages/aws-cdk-lib/aws-apigateway/lib/requestvalidator.ts index 79a07eb1cc1f3..074644ef05bc7 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/requestvalidator.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/requestvalidator.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnRequestValidator, CfnRequestValidatorProps } from './apigateway.generated'; import { IRestApi, RestApi } from './restapi'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IRequestValidator extends IResource { /** @@ -68,6 +69,8 @@ export class RequestValidator extends Resource implements IRequestValidator { super(scope, id, { physicalName: props.requestValidatorName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const validatorProps: CfnRequestValidatorProps = { name: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts b/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts index 16f6af41840ba..a64ee9ed6d76b 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/resource.ts @@ -6,6 +6,7 @@ import { MockIntegration } from './integrations'; import { Method, MethodOptions, AuthorizationType } from './method'; import { IRestApi, RestApi } from './restapi'; import { IResource as IResourceBase, Resource as ResourceConstruct } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IResource extends IResourceBase { /** @@ -438,6 +439,8 @@ export class Resource extends ResourceBase { constructor(scope: Construct, id: string, props: ResourceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); validateResourcePathPart(props.pathPart); diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts b/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts index 32dca38262529..29ed72d285b28 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/restapi.ts @@ -18,6 +18,7 @@ import * as cloudwatch from '../../aws-cloudwatch'; import { IVpcEndpoint } from '../../aws-ec2'; import * as iam from '../../aws-iam'; import { ArnFormat, CfnOutput, IResource as IResourceBase, Resource, Stack, Token, FeatureFlags, RemovalPolicy, Size } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_DISABLE_CLOUDWATCH_ROLE } from '../../cx-api'; const RESTAPI_SYMBOL = Symbol.for('@aws-cdk/aws-apigateway.RestApiBase'); @@ -700,6 +701,8 @@ export class SpecRestApi extends RestApiBase { constructor(scope: Construct, id: string, props: SpecRestApiProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const apiDefConfig = props.apiDefinition.bind(this); const resource = new CfnRestApi(this, 'Resource', { name: this.restApiName, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/stage.ts b/packages/aws-cdk-lib/aws-apigateway/lib/stage.ts index 266ea23df121d..d48c7ecb340de 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/stage.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/stage.ts @@ -8,6 +8,7 @@ import { IRestApi, RestApiBase } from './restapi'; import { parseMethodOptionsPath } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import { ArnFormat, Duration, IResource, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an APIGateway Stage. @@ -375,6 +376,8 @@ export class Stage extends StageBase { constructor(scope: Construct, id: string, props: StageProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.enableCacheCluster = props.cacheClusterEnabled; diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/stepfunctions-api.ts b/packages/aws-cdk-lib/aws-apigateway/lib/stepfunctions-api.ts index 3175d852920d8..63b407bc5b353 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/stepfunctions-api.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/stepfunctions-api.ts @@ -4,6 +4,7 @@ import { RequestContext } from './integrations'; import { StepFunctionsIntegration } from './integrations/stepfunctions'; import * as iam from '../../aws-iam'; import * as sfn from '../../aws-stepfunctions'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for StepFunctionsRestApi @@ -129,6 +130,8 @@ export class StepFunctionsRestApi extends RestApi { }); super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.root.addMethod('ANY', stepfunctionsIntegration); } diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts b/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts index 5a0ef81f4ab6b..bedf6fa4c5c4f 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/usage-plan.ts @@ -6,6 +6,7 @@ import { IRestApi } from './restapi'; import { Stage } from './stage'; import { validateDouble, validateInteger } from './util'; import { FeatureFlags, IResource, Lazy, Names, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { APIGATEWAY_USAGEPLANKEY_ORDERINSENSITIVE_ID } from '../../cx-api'; /** @@ -241,6 +242,8 @@ export class UsagePlan extends UsagePlanBase { constructor(scope: Construct, id: string, props: UsagePlanProps = { }) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let resource: CfnUsagePlan; resource = new CfnUsagePlan(this, 'Resource', { diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts b/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts index f9af63078f011..d89f57bf36d45 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/vpc-link.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnVpcLink } from './apigateway.generated'; import * as elbv2 from '../../aws-elasticloadbalancingv2'; import { IResource, Lazy, Names, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an API Gateway VpcLink @@ -68,6 +69,8 @@ export class VpcLink extends Resource implements IVpcLink { physicalName: props.vpcLinkName || Lazy.string({ produce: () => Names.nodeUniqueId(this.node) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const cfnResource = new CfnVpcLink(this, 'Resource', { name: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/api-mapping.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/api-mapping.ts index 05d9cca6c4bc8..a4f69b5cfea06 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/api-mapping.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/api-mapping.ts @@ -4,6 +4,7 @@ import { IDomainName } from './domain-name'; import { IStage } from './stage'; import { CfnApiMapping, CfnApiMappingProps } from '.././index'; import { IResource, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Represents an ApiGatewayV2 ApiMapping resource @@ -88,6 +89,8 @@ export class ApiMapping extends Resource implements IApiMapping { constructor(scope: Construct, id: string, props: ApiMappingProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // defaultStage is present in IHttpStage. // However, importing "http" or "websocket" must import "common", but creating dependencies diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts index bdc0bc7d0d549..2b99f4d7d7709 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/common/domain-name.ts @@ -3,6 +3,7 @@ import { CfnDomainName, CfnDomainNameProps } from '.././index'; import { ICertificate } from '../../../aws-certificatemanager'; import { IBucket } from '../../../aws-s3'; import { IResource, Lazy, Resource, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * The minimum version of the SSL protocol that you want API Gateway to use for HTTPS connections. @@ -170,6 +171,8 @@ export class DomainName extends Resource implements IDomainName { constructor(scope: Construct, id: string, props: DomainNameProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.domainName === '') { throw new Error('empty string for domainName not allowed'); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts index 7a7dde32667fc..f5d209ff51032 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/api.ts @@ -7,6 +7,7 @@ import { VpcLink, VpcLinkProps } from './vpc-link'; import { CfnApi, CfnApiProps } from '.././index'; import { Metric, MetricOptions } from '../../../aws-cloudwatch'; import { ArnFormat, Duration, Stack, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IApi } from '../common/api'; import { ApiBase } from '../common/base'; import { DomainMappingOptions } from '../common/stage'; @@ -409,6 +410,8 @@ export class HttpApi extends HttpApiBase { constructor(scope: Construct, id: string, props?: HttpApiProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.httpApiName = props?.apiName ?? id; this.disableExecuteApiEndpoint = props?.disableExecuteApiEndpoint; diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/authorizer.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/authorizer.ts index 0221a11c1dfea..44430a37356e5 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/authorizer.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/authorizer.ts @@ -4,6 +4,7 @@ import { IHttpRoute } from './route'; import { CfnAuthorizer } from '.././index'; import { Duration, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IAuthorizer } from '../common'; /** @@ -157,6 +158,8 @@ export class HttpAuthorizer extends Resource implements IHttpAuthorizer { constructor(scope: Construct, id: string, props: HttpAuthorizerProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let authorizerPayloadFormatVersion = props.payloadFormatVersion; diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/integration.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/integration.ts index c7b592c6dd8ca..8c6ececee4ed8 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/integration.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/integration.ts @@ -4,6 +4,7 @@ import { HttpMethod, IHttpRoute } from './route'; import { CfnIntegration } from '.././index'; import { IRole } from '../../../aws-iam'; import { Aws, Duration, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IIntegration } from '../common'; import { ParameterMapping } from '../parameter-mapping'; @@ -252,6 +253,8 @@ export class HttpIntegration extends Resource implements IHttpIntegration { constructor(scope: Construct, id: string, props: HttpIntegrationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!props.integrationSubtype && !props.integrationUri) { throw new Error('Either `integrationSubtype` or `integrationUri` must be specified.'); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts index 0c82e6597f1e3..7bf76258c20dd 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/route.ts @@ -5,6 +5,7 @@ import { HttpRouteIntegration } from './integration'; import { CfnRoute, CfnRouteProps } from '.././index'; import * as iam from '../../../aws-iam'; import { Aws, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IRoute } from '../common'; /** @@ -182,6 +183,8 @@ export class HttpRoute extends Resource implements IHttpRoute { constructor(scope: Construct, id: string, props: HttpRouteProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.httpApi = props.httpApi; this.path = props.routeKey.path; diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/stage.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/stage.ts index 0ec38b893af56..0fa818133ffe1 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/stage.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/stage.ts @@ -3,6 +3,7 @@ import { IHttpApi } from './api'; import { CfnStage } from '.././index'; import { Metric, MetricOptions } from '../../../aws-cloudwatch'; import { Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { StageOptions, IStage, StageAttributes } from '../common'; import { IApi } from '../common/api'; import { StageBase } from '../common/base'; @@ -162,6 +163,8 @@ export class HttpStage extends HttpStageBase { super(scope, id, { physicalName: props.stageName ? props.stageName : DEFAULT_STAGE_NAME, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnStage(this, 'Resource', { apiId: props.httpApi.apiId, diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts index 3938920ddedc8..4bf6a8b5e7ffb 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/http/vpc-link.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnVpcLink } from '.././index'; import * as ec2 from '../../../aws-ec2'; import { IResource, Lazy, Names, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Represents an API Gateway VpcLink @@ -88,6 +89,8 @@ export class VpcLink extends Resource implements IVpcLink { constructor(scope: Construct, id: string, props: VpcLinkProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; const cfnResource = new CfnVpcLink(this, 'Resource', { diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts index 195c46812db2a..aca97327f54e3 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/api.ts @@ -3,6 +3,7 @@ import { WebSocketRoute, WebSocketRouteOptions } from './route'; import { CfnApi } from '.././index'; import { Grant, IGrantable } from '../../../aws-iam'; import { ArnFormat, Stack, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IApi } from '../common/api'; import { ApiBase } from '../common/base'; @@ -135,6 +136,8 @@ export class WebSocketApi extends ApiBase implements IWebSocketApi { constructor(scope: Construct, id: string, props?: WebSocketApiProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.webSocketApiName = props?.apiName ?? id; diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/authorizer.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/authorizer.ts index 52fc6f6ff0cab..f5761f4c6fb8e 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/authorizer.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/authorizer.ts @@ -4,6 +4,7 @@ import { IWebSocketRoute } from './route'; import { CfnAuthorizer } from '.././index'; import { Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IAuthorizer } from '../common'; /** @@ -104,6 +105,8 @@ export class WebSocketAuthorizer extends Resource implements IWebSocketAuthorize constructor(scope: Construct, id: string, props: WebSocketAuthorizerProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.type === WebSocketAuthorizerType.LAMBDA && !props.authorizerUri) { throw new Error('authorizerUri is mandatory for Lambda authorizers'); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/integration.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/integration.ts index ab2ed9d55817c..ce49530826c67 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/integration.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/integration.ts @@ -4,6 +4,7 @@ import { IWebSocketRoute } from './route'; import { CfnIntegration } from '.././index'; import { IRole } from '../../../aws-iam'; import { Duration, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IIntegration } from '../common'; /** @@ -170,6 +171,8 @@ export class WebSocketIntegration extends Resource implements IWebSocketIntegrat constructor(scope: Construct, id: string, props: WebSocketIntegrationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.timeout && !props.timeout.isUnresolved() && (props.timeout.toMilliseconds() < 50 || props.timeout.toMilliseconds() > 29000)) { throw new Error('Integration timeout must be between 50 milliseconds and 29 seconds.'); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/route.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/route.ts index 0114e13c50e0d..1b2a7d065468a 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/route.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/route.ts @@ -4,6 +4,7 @@ import { IWebSocketRouteAuthorizer, WebSocketNoneAuthorizer } from './authorizer import { WebSocketRouteIntegration } from './integration'; import { CfnRoute, CfnRouteResponse } from '.././index'; import { Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IRoute } from '../common'; /** @@ -83,6 +84,8 @@ export class WebSocketRoute extends Resource implements IWebSocketRoute { constructor(scope: Construct, id: string, props: WebSocketRouteProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.routeKey != '$connect' && props.authorizer) { throw new Error('You can only set a WebSocket authorizer to a $connect route.'); diff --git a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts index 6332b7532fd17..009219fb9b32a 100644 --- a/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts +++ b/packages/aws-cdk-lib/aws-apigatewayv2/lib/websocket/stage.ts @@ -3,6 +3,7 @@ import { IWebSocketApi } from './api'; import { CfnStage } from '.././index'; import { Grant, IGrantable } from '../../../aws-iam'; import { Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { StageOptions, IApi, IStage, StageAttributes } from '../common'; import { StageBase } from '../common/base'; @@ -82,6 +83,8 @@ export class WebSocketStage extends StageBase implements IWebSocketStage { super(scope, id, { physicalName: props.stageName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.baseApi = props.webSocketApi; this.api = props.webSocketApi; diff --git a/packages/aws-cdk-lib/aws-appconfig/lib/application.ts b/packages/aws-cdk-lib/aws-appconfig/lib/application.ts index b84ef3e131803..bf2c599e46b67 100644 --- a/packages/aws-cdk-lib/aws-appconfig/lib/application.ts +++ b/packages/aws-cdk-lib/aws-appconfig/lib/application.ts @@ -6,6 +6,7 @@ import { Environment, EnvironmentOptions, IEnvironment } from './environment'; import { ActionPoint, IEventDestination, ExtensionOptions, IExtension, IExtensible, ExtensibleBase } from './extension'; import * as ecs from '../../aws-ecs'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Defines the platform for the AWS AppConfig Lambda extension. @@ -433,6 +434,8 @@ export class Application extends ApplicationBase { constructor(scope: Construct, id: string, props: ApplicationProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.description = props.description; this.name = props.applicationName || cdk.Names.uniqueResourceName(this, { diff --git a/packages/aws-cdk-lib/aws-appconfig/lib/deployment-strategy.ts b/packages/aws-cdk-lib/aws-appconfig/lib/deployment-strategy.ts index bcbe715e14e15..2c5e46f7a3c14 100644 --- a/packages/aws-cdk-lib/aws-appconfig/lib/deployment-strategy.ts +++ b/packages/aws-cdk-lib/aws-appconfig/lib/deployment-strategy.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnDeploymentStrategy } from './appconfig.generated'; import { Resource, IResource, Stack, ArnFormat, Names, Duration } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for DeploymentStrategy. @@ -132,6 +133,8 @@ export class DeploymentStrategy extends Resource implements IDeploymentStrategy super(scope, id, { physicalName: props.deploymentStrategyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.deploymentDurationInMinutes = props.rolloutStrategy.deploymentDuration.toMinutes(); this.growthFactor = props.rolloutStrategy.growthFactor; diff --git a/packages/aws-cdk-lib/aws-appconfig/lib/environment.ts b/packages/aws-cdk-lib/aws-appconfig/lib/environment.ts index 9c3c4318f33ca..e6b19ed22ced1 100644 --- a/packages/aws-cdk-lib/aws-appconfig/lib/environment.ts +++ b/packages/aws-cdk-lib/aws-appconfig/lib/environment.ts @@ -8,6 +8,7 @@ import { DeletionProtectionCheck } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { Resource, IResource, Stack, ArnFormat, PhysicalName, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Attributes of an existing AWS AppConfig environment to import it. @@ -303,6 +304,8 @@ export class Environment extends EnvironmentBase { super(scope, id, { physicalName: props.environmentName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.name = props.environmentName || Names.uniqueResourceName(this, { maxLength: 64, diff --git a/packages/aws-cdk-lib/aws-appconfig/lib/extension.ts b/packages/aws-cdk-lib/aws-appconfig/lib/extension.ts index f0b63a17527dc..032f32e4ea914 100644 --- a/packages/aws-cdk-lib/aws-appconfig/lib/extension.ts +++ b/packages/aws-cdk-lib/aws-appconfig/lib/extension.ts @@ -7,6 +7,7 @@ import * as lambda from '../../aws-lambda'; import * as sns from '../../aws-sns'; import * as sqs from '../../aws-sqs'; import { ArnFormat, IResource, Names, PhysicalName, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Defines Extension action points. @@ -496,6 +497,8 @@ export class Extension extends Resource implements IExtension { super(scope, id, { physicalName: props.extensionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.actions = props.actions; this.name = props.extensionName || Names.uniqueResourceName(this, { diff --git a/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts b/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts index fe6fe8f31443e..3f890f7078bce 100644 --- a/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts +++ b/packages/aws-cdk-lib/aws-applicationautoscaling/lib/scalable-target.ts @@ -5,6 +5,7 @@ import { BasicStepScalingPolicyProps, StepScalingPolicy } from './step-scaling-p import { BasicTargetTrackingScalingPolicyProps, TargetTrackingScalingPolicy } from './target-tracking-scaling-policy'; import * as iam from '../../aws-iam'; import { IResource, Lazy, Resource, TimeZone, withResolved } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IScalableTarget extends IResource { /** @@ -98,6 +99,8 @@ export class ScalableTarget extends Resource implements IScalableTarget { constructor(scope: Construct, id: string, props: ScalableTargetProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); withResolved(props.maxCapacity, max => { if (max < 0) { diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/gateway-route.ts b/packages/aws-cdk-lib/aws-appmesh/lib/gateway-route.ts index 30d7c9a8457c0..cfc6ffa159bb0 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/gateway-route.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/gateway-route.ts @@ -4,6 +4,7 @@ import { GatewayRouteSpec } from './gateway-route-spec'; import { renderMeshOwner } from './private/utils'; import { IVirtualGateway, VirtualGateway } from './virtual-gateway'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface for which all GatewayRoute based classes MUST implement @@ -107,6 +108,8 @@ export class GatewayRoute extends cdk.Resource implements IGatewayRoute { super(scope, id, { physicalName: props.gatewayRouteName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.virtualGateway = props.virtualGateway; const routeSpecConfig = props.routeSpec.bind(this); diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/mesh.ts b/packages/aws-cdk-lib/aws-appmesh/lib/mesh.ts index 04a3f699bc98e..11f3802f929a8 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/mesh.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/mesh.ts @@ -5,6 +5,7 @@ import { VirtualGateway, VirtualGatewayBaseProps } from './virtual-gateway'; import { VirtualNode, VirtualNodeBaseProps } from './virtual-node'; import { VirtualRouter, VirtualRouterBaseProps } from './virtual-router'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A utility enum defined for the egressFilter type property, the default of DROP_ALL, @@ -188,6 +189,8 @@ export class Mesh extends MeshBase { super(scope, id, { physicalName: props.meshName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const mesh = new CfnMesh(this, 'Resource', { meshName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/route.ts b/packages/aws-cdk-lib/aws-appmesh/lib/route.ts index 0b42cb9715fd7..84774db8fead7 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/route.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/route.ts @@ -5,6 +5,7 @@ import { renderMeshOwner } from './private/utils'; import { RouteSpec } from './route-spec'; import { IVirtualRouter, VirtualRouter } from './virtual-router'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface for which all Route based classes MUST implement @@ -113,6 +114,8 @@ export class Route extends cdk.Resource implements IRoute { super(scope, id, { physicalName: props.routeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.virtualRouter = props.virtualRouter; diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-gateway.ts b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-gateway.ts index cc81da8e73dfa..837a141ebf51b 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-gateway.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-gateway.ts @@ -7,6 +7,7 @@ import { AccessLog, BackendDefaults } from './shared-interfaces'; import { VirtualGatewayListener, VirtualGatewayListenerConfig } from './virtual-gateway-listener'; import * as iam from '../../aws-iam'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all Virtual Gateway based classes must implement @@ -177,6 +178,8 @@ export class VirtualGateway extends VirtualGatewayBase { super(scope, id, { physicalName: props.virtualGatewayName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.mesh = props.mesh; diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts index 0e6b6f6ddb3d0..1b78e4066a81f 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-node.ts @@ -7,6 +7,7 @@ import { AccessLog, BackendDefaults, Backend } from './shared-interfaces'; import { VirtualNodeListener, VirtualNodeListenerConfig } from './virtual-node-listener'; import * as iam from '../../aws-iam'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all VirtualNode based classes must implement @@ -184,6 +185,8 @@ export class VirtualNode extends VirtualNodeBase { super(scope, id, { physicalName: props.virtualNodeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.mesh = props.mesh; this.serviceDiscoveryConfig = props.serviceDiscovery?.bind(this); diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-router.ts b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-router.ts index 1888276184b41..89b4d854dbe67 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-router.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-router.ts @@ -5,6 +5,7 @@ import { renderMeshOwner } from './private/utils'; import { Route, RouteBaseProps } from './route'; import { VirtualRouterListener } from './virtual-router-listener'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all VirtualRouter based classes MUST implement @@ -144,6 +145,8 @@ export class VirtualRouter extends VirtualRouterBase { super(scope, id, { physicalName: props.virtualRouterName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.mesh = props.mesh; if (props.listeners && props.listeners.length) { diff --git a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-service.ts b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-service.ts index 1c5d3138f96cc..c04e82da1c096 100644 --- a/packages/aws-cdk-lib/aws-appmesh/lib/virtual-service.ts +++ b/packages/aws-cdk-lib/aws-appmesh/lib/virtual-service.ts @@ -5,6 +5,7 @@ import { renderMeshOwner } from './private/utils'; import { IVirtualNode } from './virtual-node'; import { IVirtualRouter } from './virtual-router'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents the interface which all VirtualService based classes MUST implement @@ -105,6 +106,8 @@ export class VirtualService extends cdk.Resource implements IVirtualService { super(scope, id, { physicalName: props.virtualServiceName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const providerConfig = props.virtualServiceProvider.bind(this); this.mesh = providerConfig.mesh; diff --git a/packages/aws-cdk-lib/aws-appsync/lib/appsync-function.ts b/packages/aws-cdk-lib/aws-appsync/lib/appsync-function.ts index c4378622eb142..1cfbd6409424b 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/appsync-function.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/appsync-function.ts @@ -6,6 +6,7 @@ import { IGraphqlApi } from './graphqlapi-base'; import { MappingTemplate } from './mapping-template'; import { FunctionRuntime } from './runtime'; import { Resource, IResource, Lazy, Fn } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * the base properties for AppSync Functions @@ -157,6 +158,8 @@ export class AppsyncFunction extends Resource implements IAppsyncFunction { public constructor(scope: Construct, id: string, props: AppsyncFunctionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // If runtime is specified, code must also be if (props.runtime && !props.code) { diff --git a/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts b/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts index 824240274a687..8e1ac88d61b43 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/graphqlapi.ts @@ -9,6 +9,7 @@ import { ManagedPolicy, Role, IRole, ServicePrincipal } from '../../aws-iam'; import { IFunction } from '../../aws-lambda'; import { ILogGroup, LogGroup, LogRetention, RetentionDays } from '../../aws-logs'; import { CfnResource, Duration, Expiration, FeatureFlags, IResolvable, Lazy, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -608,6 +609,8 @@ export class GraphqlApi extends GraphqlApiBase { constructor(scope: Construct, id: string, props: GraphqlApiProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const defaultMode = props.authorizationConfig?.defaultAuthorization ?? { authorizationType: AuthorizationType.API_KEY }; diff --git a/packages/aws-cdk-lib/aws-appsync/lib/source-api-association.ts b/packages/aws-cdk-lib/aws-appsync/lib/source-api-association.ts index 0ea7e64998801..ac17f6ee6b495 100644 --- a/packages/aws-cdk-lib/aws-appsync/lib/source-api-association.ts +++ b/packages/aws-cdk-lib/aws-appsync/lib/source-api-association.ts @@ -3,6 +3,7 @@ import { CfnSourceApiAssociation } from './appsync.generated'; import { IGraphqlApi } from './graphqlapi-base'; import { Effect, IRole, PolicyStatement } from '../../aws-iam'; import { Fn, IResource, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Merge type used to associate the source API @@ -162,6 +163,8 @@ export class SourceApiAssociation extends Resource implements ISourceApiAssociat constructor(scope: Construct, id: string, props: SourceApiAssociationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.mergeType = props.mergeType ?? MergeType.AUTO_MERGE; this.mergedApiExecutionRole = props.mergedApiExecutionRole; diff --git a/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts b/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts index a0886cc441cf1..59279324e04a0 100644 --- a/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts +++ b/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts @@ -25,6 +25,7 @@ import { Token, Tokenization, withResolved, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AUTOSCALING_GENERATE_LAUNCH_TEMPLATE } from '../../cx-api'; /** @@ -1337,6 +1338,8 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements super(scope, id, { physicalName: props.autoScalingGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.newInstancesProtectedFromScaleIn = props.newInstancesProtectedFromScaleIn; diff --git a/packages/aws-cdk-lib/aws-autoscaling/lib/lifecycle-hook.ts b/packages/aws-cdk-lib/aws-autoscaling/lib/lifecycle-hook.ts index d2ecb1316fcfd..ecabfe16c0ea6 100644 --- a/packages/aws-cdk-lib/aws-autoscaling/lib/lifecycle-hook.ts +++ b/packages/aws-cdk-lib/aws-autoscaling/lib/lifecycle-hook.ts @@ -4,6 +4,7 @@ import { CfnLifecycleHook } from './autoscaling.generated'; import { ILifecycleHookTarget } from './lifecycle-hook-target'; import * as iam from '../../aws-iam'; import { Duration, IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Basic properties for a lifecycle hook @@ -112,6 +113,8 @@ export class LifecycleHook extends Resource implements ILifecycleHook { super(scope, id, { physicalName: props.lifecycleHookName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const targetProps = props.notificationTarget ? props.notificationTarget.bind(this, { lifecycleHook: this, role: props.role }) : undefined; diff --git a/packages/aws-cdk-lib/aws-autoscaling/lib/scheduled-action.ts b/packages/aws-cdk-lib/aws-autoscaling/lib/scheduled-action.ts index bbbff662c6c33..e3b456c323752 100644 --- a/packages/aws-cdk-lib/aws-autoscaling/lib/scheduled-action.ts +++ b/packages/aws-cdk-lib/aws-autoscaling/lib/scheduled-action.ts @@ -3,6 +3,7 @@ import { IAutoScalingGroup } from './auto-scaling-group'; import { CfnScheduledAction } from './autoscaling.generated'; import { Schedule } from './schedule'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a scheduled scaling action @@ -99,6 +100,8 @@ export class ScheduledAction extends Resource { constructor(scope: Construct, id: string, props: ScheduledActionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.minCapacity === undefined && props.maxCapacity === undefined && props.desiredCapacity === undefined) { throw new Error('At least one of minCapacity, maxCapacity, or desiredCapacity is required'); diff --git a/packages/aws-cdk-lib/aws-autoscaling/lib/warm-pool.ts b/packages/aws-cdk-lib/aws-autoscaling/lib/warm-pool.ts index 6803f2fc5bf8c..d6815cf692afb 100644 --- a/packages/aws-cdk-lib/aws-autoscaling/lib/warm-pool.ts +++ b/packages/aws-cdk-lib/aws-autoscaling/lib/warm-pool.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IAutoScalingGroup } from './auto-scaling-group'; import { CfnWarmPool } from './autoscaling.generated'; import { Lazy, Names, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for a warm pool @@ -59,6 +60,8 @@ export class WarmPool extends Resource { super(scope, id, { physicalName: Lazy.string({ produce: () => Names.uniqueId(this) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.maxGroupPreparedCapacity && props.maxGroupPreparedCapacity < -1) { throw new Error('\'maxGroupPreparedCapacity\' parameter should be greater than or equal to -1'); diff --git a/packages/aws-cdk-lib/aws-backup/lib/plan.ts b/packages/aws-cdk-lib/aws-backup/lib/plan.ts index a7ce167ac92ea..e469f3464cd7a 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/plan.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/plan.ts @@ -4,6 +4,7 @@ import { BackupPlanCopyActionProps, BackupPlanRule } from './rule'; import { BackupSelection, BackupSelectionOptions } from './selection'; import { BackupVault, IBackupVault } from './vault'; import { IResource, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A backup plan @@ -130,6 +131,8 @@ export class BackupPlan extends Resource implements IBackupPlan { constructor(scope: Construct, id: string, props: BackupPlanProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const plan = new CfnBackupPlan(this, 'Resource', { backupPlan: { diff --git a/packages/aws-cdk-lib/aws-backup/lib/selection.ts b/packages/aws-cdk-lib/aws-backup/lib/selection.ts index 3c1324335efa5..5235c5e44a4c3 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/selection.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/selection.ts @@ -5,6 +5,7 @@ import { IBackupPlan } from './plan'; import { BackupResource, TagOperation } from './resource'; import * as iam from '../../aws-iam'; import { Lazy, Resource, Aspects, AspectPriority } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for a BackupSelection @@ -92,6 +93,8 @@ export class BackupSelection extends Resource implements iam.IGrantable { constructor(scope: Construct, id: string, props: BackupSelectionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const role = props.role || new iam.Role(this, 'Role', { assumedBy: new iam.ServicePrincipal('backup.amazonaws.com'), diff --git a/packages/aws-cdk-lib/aws-backup/lib/vault.ts b/packages/aws-cdk-lib/aws-backup/lib/vault.ts index 3375318d9c7e8..9c69174fcbd75 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/vault.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/vault.ts @@ -4,6 +4,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sns from '../../aws-sns'; import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A backup vault @@ -269,6 +270,8 @@ export class BackupVault extends BackupVaultBase { constructor(scope: Construct, id: string, props: BackupVaultProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.backupVaultName && !Token.isUnresolved(props.backupVaultName) && !/^[a-zA-Z0-9\-_]{2,50}$/.test(props.backupVaultName)) { throw new Error('Expected vault name to match pattern `^[a-zA-Z0-9\-_]{2,50}$`'); diff --git a/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts b/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts index f43aafbef86fb..375c751ae96db 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/ecs-job-definition.ts @@ -5,6 +5,7 @@ import { baseJobDefinitionProperties, IJobDefinition, JobDefinitionBase, JobDefi import { IJobQueue } from './job-queue'; import * as iam from '../../aws-iam'; import { ArnFormat, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A JobDefinition that uses ECS orchestration @@ -83,6 +84,8 @@ export class EcsJobDefinition extends JobDefinitionBase implements IEcsJobDefini constructor(scope: Construct, id: string, props: EcsJobDefinitionProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.container = props.container; this.propagateTags = props?.propagateTags; diff --git a/packages/aws-cdk-lib/aws-batch/lib/eks-job-definition.ts b/packages/aws-cdk-lib/aws-batch/lib/eks-job-definition.ts index 480490f96d547..145ae0cffd03c 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/eks-job-definition.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/eks-job-definition.ts @@ -3,6 +3,7 @@ import { CfnJobDefinition } from './batch.generated'; import { EksContainerDefinition, EmptyDirVolume, HostPathVolume, SecretPathVolume } from './eks-container-definition'; import { baseJobDefinitionProperties, IJobDefinition, JobDefinitionBase, JobDefinitionProps } from './job-definition-base'; import { ArnFormat, Lazy, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A JobDefinition that uses Eks orchestration @@ -150,6 +151,8 @@ export class EksJobDefinition extends JobDefinitionBase implements IEksJobDefini constructor(scope: Construct, id: string, props: EksJobDefinitionProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.container = props.container; this.dnsPolicy = props.dnsPolicy; diff --git a/packages/aws-cdk-lib/aws-batch/lib/job-queue.ts b/packages/aws-cdk-lib/aws-batch/lib/job-queue.ts index dd1c0e9265d08..69ee4aa51e99d 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/job-queue.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/job-queue.ts @@ -3,6 +3,7 @@ import { CfnJobQueue } from './batch.generated'; import { IComputeEnvironment } from './compute-environment-base'; import { ISchedulingPolicy } from './scheduling-policy'; import { ArnFormat, Duration, IResource, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a JobQueue @@ -259,6 +260,8 @@ export class JobQueue extends Resource implements IJobQueue { super(scope, id, { physicalName: props?.jobQueueName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.computeEnvironments = props?.computeEnvironments ?? []; this.priority = props?.priority ?? 1; diff --git a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts index c9f03e9f0dd73..c5492c75e6518 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts @@ -6,6 +6,7 @@ import * as eks from '../../aws-eks'; import * as iam from '../../aws-iam'; import { IRole } from '../../aws-iam'; import { ArnFormat, Duration, ITaggable, Lazy, Resource, Stack, TagManager, TagType } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Managed ComputeEnvironment. Batch will provision EC2 Instances to @@ -645,6 +646,8 @@ export class ManagedEc2EcsComputeEnvironment extends ManagedComputeEnvironmentBa constructor(scope: Construct, id: string, props: ManagedEc2EcsComputeEnvironmentProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.images = props.images; this.allocationStrategy = determineAllocationStrategy(id, props.allocationStrategy, this.spot); diff --git a/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts b/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts index a103c8819f1fd..4b04706e18260 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/multinode-job-definition.ts @@ -5,6 +5,7 @@ import { Compatibility } from './ecs-job-definition'; import { baseJobDefinitionProperties, IJobDefinition, JobDefinitionBase, JobDefinitionProps } from './job-definition-base'; import * as ec2 from '../../aws-ec2'; import { ArnFormat, Lazy, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Not a real instance type! Indicates that Batch will choose one it determines to be optimal @@ -150,6 +151,8 @@ export class MultiNodeJobDefinition extends JobDefinitionBase implements IMultiN constructor(scope: Construct, id: string, props?: MultiNodeJobDefinitionProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.containers = props?.containers ?? []; this.mainNode = props?.mainNode; diff --git a/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts b/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts index 930cc1f3b7f97..2d34a7945acb8 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/scheduling-policy.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnSchedulingPolicy } from './batch.generated'; import { ArnFormat, Duration, IResource, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Scheduling Policy. Scheduling Policies tell the Batch @@ -211,6 +212,8 @@ export class FairshareSchedulingPolicy extends SchedulingPolicyBase implements I constructor(scope: Construct, id: string, props?: FairshareSchedulingPolicyProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.computeReservation = props?.computeReservation; this.shareDecay = props?.shareDecay; this.shares = props?.shares ?? []; diff --git a/packages/aws-cdk-lib/aws-batch/lib/unmanaged-compute-environment.ts b/packages/aws-cdk-lib/aws-batch/lib/unmanaged-compute-environment.ts index 126ab14852dff..4c9aa6bd17d9d 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/unmanaged-compute-environment.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/unmanaged-compute-environment.ts @@ -3,6 +3,7 @@ import { CfnComputeEnvironment } from './batch.generated'; import { IComputeEnvironment, ComputeEnvironmentBase, ComputeEnvironmentProps } from './compute-environment-base'; import { ManagedPolicy, Role, ServicePrincipal } from '../../aws-iam'; import { ArnFormat, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an UnmanagedComputeEnvironment. Batch will not provision instances on your behalf @@ -67,6 +68,8 @@ export class UnmanagedComputeEnvironment extends ComputeEnvironmentBase implemen constructor(scope: Construct, id: string, props?: UnmanagedComputeEnvironmentProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.unmanagedvCPUs = props?.unmanagedvCpus; const resource = new CfnComputeEnvironment(this, 'Resource', { diff --git a/packages/aws-cdk-lib/aws-certificatemanager/lib/certificate.ts b/packages/aws-cdk-lib/aws-certificatemanager/lib/certificate.ts index caaf9fd3717a0..34bc35d1a4951 100644 --- a/packages/aws-cdk-lib/aws-certificatemanager/lib/certificate.ts +++ b/packages/aws-cdk-lib/aws-certificatemanager/lib/certificate.ts @@ -5,6 +5,7 @@ import { apexDomain } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import * as route53 from '../../aws-route53'; import { IResource, Token, Tags } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Name tag constant @@ -270,6 +271,8 @@ export class Certificate extends CertificateBase implements ICertificate { constructor(scope: Construct, id: string, props: CertificateProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let validation: CertificateValidation; if (props.validation) { diff --git a/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts b/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts index 49e0c5b8e7b91..7a52563a6e0b2 100644 --- a/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts +++ b/packages/aws-cdk-lib/aws-certificatemanager/lib/dns-validated-certificate.ts @@ -5,6 +5,7 @@ import * as iam from '../../aws-iam'; import * as route53 from '../../aws-route53'; import * as cdk from '../../core'; import { Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { CertificateRequestCertificateRequestFunction } from '../../custom-resource-handlers/dist/aws-certificatemanager/certificate-request-provider.generated'; /** @@ -84,6 +85,8 @@ export class DnsValidatedCertificate extends CertificateBase implements ICertifi constructor(scope: Construct, id: string, props: DnsValidatedCertificateProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.keyAlgorithm) { cdk.Annotations.of(this) diff --git a/packages/aws-cdk-lib/aws-certificatemanager/lib/private-certificate.ts b/packages/aws-cdk-lib/aws-certificatemanager/lib/private-certificate.ts index dd5696102c791..c4641e826ac93 100644 --- a/packages/aws-cdk-lib/aws-certificatemanager/lib/private-certificate.ts +++ b/packages/aws-cdk-lib/aws-certificatemanager/lib/private-certificate.ts @@ -3,6 +3,7 @@ import { ICertificate, KeyAlgorithm } from './certificate'; import { CertificateBase } from './certificate-base'; import { CfnCertificate } from './certificatemanager.generated'; import * as acmpca from '../../aws-acmpca'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for your private certificate @@ -66,6 +67,8 @@ export class PrivateCertificate extends CertificateBase implements ICertificate constructor(scope: Construct, id: string, props: PrivateCertificateProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const cert = new CfnCertificate(this, 'Resource', { domainName: props.domainName, diff --git a/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts b/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts index dadf4600cda45..13b69d310bf1b 100644 --- a/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts +++ b/packages/aws-cdk-lib/aws-chatbot/lib/slack-channel-configuration.ts @@ -6,6 +6,7 @@ import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as sns from '../../aws-sns'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a new Slack channel configuration @@ -290,6 +291,8 @@ export class SlackChannelConfiguration extends SlackChannelConfigurationBase { super(scope, id, { physicalName: props.slackChannelConfigurationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.role = props.role || new iam.Role(this, 'ConfigurationRole', { assumedBy: new iam.ServicePrincipal('chatbot.amazonaws.com'), diff --git a/packages/aws-cdk-lib/aws-cloudformation/lib/custom-resource.ts b/packages/aws-cdk-lib/aws-cloudformation/lib/custom-resource.ts index 51c2424d1c602..12712117326a1 100644 --- a/packages/aws-cdk-lib/aws-cloudformation/lib/custom-resource.ts +++ b/packages/aws-cdk-lib/aws-cloudformation/lib/custom-resource.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import * as lambda from '../../aws-lambda'; import * as sns from '../../aws-sns'; import * as core from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Collection of arbitrary properties @@ -180,5 +181,7 @@ export class CustomResource extends core.CustomResource { resourceType: props.resourceType, serviceToken: core.Lazy.string({ produce: () => props.provider.bind(this).serviceToken }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/cache-policy.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/cache-policy.ts index c9e1e94af0a00..d63b72a786ea6 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/cache-policy.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/cache-policy.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnCachePolicy } from './cloudfront.generated'; import { Duration, Names, Resource, Stack, Token, withResolved } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Cache Policy @@ -141,6 +142,8 @@ export class CachePolicy extends Resource implements ICachePolicy { super(scope, id, { physicalName: props.cachePolicyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const cachePolicyName = props.cachePolicyName ?? `${Names.uniqueId(this).slice(0, 110)}-${Stack.of(this).region}`; diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts index 9bed65f41f48e..84ff536f66ae5 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts @@ -16,6 +16,7 @@ import * as iam from '../../aws-iam'; import * as lambda from '../../aws-lambda'; import * as s3 from '../../aws-s3'; import { ArnFormat, IResource, Lazy, Resource, Stack, Token, Duration, Names, FeatureFlags, Annotations } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { CLOUDFRONT_DEFAULT_SECURITY_POLICY_TLS_V1_2_2021 } from '../../cx-api'; /** @@ -326,6 +327,8 @@ export class Distribution extends Resource implements IDistribution { constructor(scope: Construct, id: string, props: DistributionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.certificate) { const certificateRegion = Stack.of(this).splitArn(props.certificate.certificateArn, ArnFormat.SLASH_RESOURCE_NAME).region; diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts index 86861e8a1ca10..b34650964bf4c 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/experimental/edge-function.ts @@ -13,6 +13,7 @@ import { Stage, Token, } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CrossRegionStringParamReaderProvider } from '../../../custom-resource-handlers/dist/aws-cloudfront/cross-region-string-param-reader-provider.generated'; /** @@ -57,6 +58,8 @@ export class EdgeFunction extends Resource implements lambda.IVersion { constructor(scope: Construct, id: string, props: EdgeFunctionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Create a simple Function if we're already in us-east-1; otherwise create a cross-region stack. const regionIsUsEast1 = !Token.isUnresolved(this.env.region) && this.env.region === 'us-east-1'; diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/function.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/function.ts index 666802dd8e232..7be98ba280bb2 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/function.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/function.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { CfnFunction } from './cloudfront.generated'; import { IKeyValueStore } from './key-value-store'; import { IResource, Lazy, Names, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents the function's source code @@ -194,6 +195,8 @@ export class Function extends Resource implements IFunction { constructor(scope: Construct, id: string, props: FunctionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.functionName = props.functionName ?? this.generateName(); diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/key-group.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/key-group.ts index c78cf3cde2e5f..8f3d7075bf300 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/key-group.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/key-group.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnKeyGroup } from './cloudfront.generated'; import { IPublicKey } from './public-key'; import { IResource, Names, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Key Group @@ -53,6 +54,8 @@ export class KeyGroup extends Resource implements IKeyGroup { constructor(scope: Construct, id: string, props: KeyGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnKeyGroup(this, 'Resource', { keyGroupConfig: { diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/key-value-store.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/key-value-store.ts index ab83f24602174..4183176908f73 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/key-value-store.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/key-value-store.ts @@ -6,6 +6,7 @@ import { CfnKeyValueStore } from './cloudfront.generated'; import * as s3 from '../../aws-s3'; import * as s3_assets from '../../aws-s3-assets'; import { Resource, IResource, Lazy, Names, Stack, Arn, ArnFormat, FileSystem } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The data to be imported to the key value store. @@ -250,6 +251,8 @@ export class KeyValueStore extends Resource implements IKeyValueStore { produce: () => Names.uniqueResourceName(this, { maxLength: 64 }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnKeyValueStore(this, 'Resource', { name: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-control.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-control.ts index a467afd0a56bf..9ef0cacd3bd48 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-control.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-control.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnOriginAccessControl } from './cloudfront.generated'; import { IResource, Resource, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a CloudFront Origin Access Control @@ -195,6 +196,8 @@ export class S3OriginAccessControl extends OriginAccessControlBase { constructor(scope: Construct, id: string, props: S3OriginAccessControlProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnOriginAccessControl(this, 'Resource', { originAccessControlConfig: { diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-identity.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-identity.ts index 172f65d51dbe4..f4803f954f817 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-identity.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-access-identity.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnCloudFrontOriginAccessIdentity } from './cloudfront.generated'; import * as iam from '../../aws-iam'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties of CloudFront OriginAccessIdentity @@ -151,6 +152,8 @@ export class OriginAccessIdentity extends OriginAccessIdentityBase implements IO constructor(scope: Construct, id: string, props?: OriginAccessIdentityProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Comment has a max length of 128. const comment = (props?.comment ?? 'Allows CloudFront to reach the bucket').slice(0, 128); diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-request-policy.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-request-policy.ts index 93878d28a368b..75ae65ecb1418 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/origin-request-policy.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/origin-request-policy.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnOriginRequestPolicy } from './cloudfront.generated'; import { Names, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Origin Request Policy @@ -91,6 +92,8 @@ export class OriginRequestPolicy extends Resource implements IOriginRequestPolic super(scope, id, { physicalName: props.originRequestPolicyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const originRequestPolicyName = props.originRequestPolicyName ?? Names.uniqueId(this); if (!Token.isUnresolved(originRequestPolicyName) && !originRequestPolicyName.match(/^[\w-]+$/i)) { diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/public-key.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/public-key.ts index ad1281653ed2c..34c34a169d48f 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/public-key.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/public-key.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnPublicKey } from './cloudfront.generated'; import { IResource, Names, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Public Key @@ -56,6 +57,8 @@ export class PublicKey extends Resource implements IPublicKey { constructor(scope: Construct, id: string, props: PublicKeyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!Token.isUnresolved(props.encodedKey) && !/^-----BEGIN PUBLIC KEY-----/.test(props.encodedKey)) { throw new Error(`Public key must be in PEM format (with the BEGIN/END PUBLIC KEY lines); got ${props.encodedKey}`); diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/realtime-log-config.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/realtime-log-config.ts index d30f3668c8891..a279bdc8a37bf 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/realtime-log-config.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/realtime-log-config.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnRealtimeLogConfig } from './cloudfront.generated'; import { Endpoint } from '../'; import { IResource, Lazy, Names, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents Realtime Log Configuration @@ -58,6 +59,8 @@ export class RealtimeLogConfig extends Resource implements IRealtimeLogConfig { super(scope, id, { physicalName: props.realtimeLogConfigName ?? Lazy.string({ produce: () => Names.uniqueResourceName(this, {}) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if ((props.samplingRate < 1 || props.samplingRate > 100)) { throw new Error(`Sampling rate must be between 1 and 100 (inclusive), received ${props.samplingRate}`); diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/response-headers-policy.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/response-headers-policy.ts index 3c4e561fd463c..6b14cbac63664 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/response-headers-policy.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/response-headers-policy.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnResponseHeadersPolicy } from './cloudfront.generated'; import { Duration, Names, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a response headers policy. @@ -109,6 +110,8 @@ export class ResponseHeadersPolicy extends Resource implements IResponseHeadersP super(scope, id, { physicalName: props.responseHeadersPolicyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const responseHeadersPolicyName = props.responseHeadersPolicyName ?? Names.uniqueResourceName(this, { maxLength: 128, diff --git a/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts b/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts index fccd2fa9e6020..48b97e2b109a2 100644 --- a/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts +++ b/packages/aws-cdk-lib/aws-cloudfront/lib/web-distribution.ts @@ -11,6 +11,7 @@ import * as iam from '../../aws-iam'; import * as lambda from '../../aws-lambda'; import * as s3 from '../../aws-s3'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * HTTP status code to failover to second origin @@ -823,6 +824,8 @@ export class CloudFrontWebDistribution extends cdk.Resource implements IDistribu constructor(scope: Construct, id: string, props: CloudFrontWebDistributionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Comments have an undocumented limit of 128 characters const trimmedComment = diff --git a/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts b/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts index 24703069788f0..906d17aeb0fe0 100644 --- a/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts +++ b/packages/aws-cdk-lib/aws-cloudtrail/lib/cloudtrail.ts @@ -8,6 +8,7 @@ import * as logs from '../../aws-logs'; import * as s3 from '../../aws-s3'; import * as sns from '../../aws-sns'; import { Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for an AWS CloudTrail trail @@ -248,6 +249,8 @@ export class Trail extends Resource { super(scope, id, { physicalName: props.trailName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const cloudTrailPrincipal = new iam.ServicePrincipal('cloudtrail.amazonaws.com'); diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts index d00d5eb13ccdf..b0897327337f1 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm.ts @@ -10,6 +10,7 @@ import { dropUndefined } from './private/object'; import { MetricSet } from './private/rendering'; import { normalizeStatistic, parseStatistic } from './private/statistic'; import { ArnFormat, Lazy, Stack, Token, Annotations } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for Alarms @@ -165,6 +166,8 @@ export class Alarm extends AlarmBase { super(scope, id, { physicalName: props.alarmName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const comparisonOperator = props.comparisonOperator || ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD; diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/composite-alarm.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/composite-alarm.ts index 3343cdcdecdff..d4990fa97be04 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/composite-alarm.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/composite-alarm.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { AlarmBase, IAlarm, IAlarmRule } from './alarm-base'; import { CfnCompositeAlarm } from './cloudwatch.generated'; import { ArnFormat, Lazy, Names, Stack, Duration } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for creating a Composite Alarm @@ -116,6 +117,8 @@ export class CompositeAlarm extends AlarmBase { super(scope, id, { physicalName: props.compositeAlarmName ?? Lazy.string({ produce: () => this.generateUniqueId() }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.alarmRule.renderAlarmRule().length > 10240) { throw new Error('Alarm Rule expression cannot be greater than 10240 characters, please reduce the conditions in the Alarm Rule'); diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts index 384b819b898c9..49d163a41a5dd 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts @@ -4,6 +4,7 @@ import { Column, Row } from './layout'; import { IVariable } from './variable'; import { IWidget } from './widget'; import { Lazy, Resource, Stack, Token, Annotations, Duration } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Specify the period for graphs when the CloudWatch dashboard loads @@ -121,6 +122,8 @@ export class Dashboard extends Resource { super(scope, id, { physicalName: props.dashboardName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); { const { dashboardName } = props; diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/fleet.ts b/packages/aws-cdk-lib/aws-codebuild/lib/fleet.ts index 8020a86988c6b..b90f75bf8cae3 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/fleet.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/fleet.ts @@ -3,6 +3,7 @@ import { CfnFleet } from './codebuild.generated'; import { ComputeType } from './compute-type'; import { EnvironmentType } from './environment-type'; import { Arn, ArnFormat, IResource, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties of a CodeBuild {@link Fleet}. @@ -139,6 +140,8 @@ export class Fleet extends Resource implements IFleet { } super(scope, id, { physicalName: props.fleetName }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnFleet(this, 'Resource', { name: props.fleetName, diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/pipeline-project.ts b/packages/aws-cdk-lib/aws-codebuild/lib/pipeline-project.ts index 7ab7c900b6a4e..a4878a9584275 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/pipeline-project.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/pipeline-project.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CodePipelineArtifacts } from './codepipeline-artifacts'; import { CodePipelineSource } from './codepipeline-source'; import { CommonProjectProps, Project } from './project'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface PipelineProjectProps extends CommonProjectProps { } @@ -16,5 +17,7 @@ export class PipelineProject extends Project { artifacts: new CodePipelineArtifacts(), ...props, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts index 8b3ebd330e5c3..371466a10a0b4 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts @@ -1061,6 +1061,8 @@ export class Project extends ProjectBase { super(scope, id, { physicalName: props.projectName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.role = props.role || new iam.Role(this, 'Role', { roleName: PhysicalName.GENERATE_IF_NEEDED, @@ -1793,6 +1795,7 @@ interface LinuxBuildImageProps { // Keep around to resolve a circular dependency until removing deprecated ARM image constants from LinuxBuildImage // eslint-disable-next-line import/order import { LinuxArmBuildImage } from './linux-arm-build-image'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A CodeBuild image running x86-64 Linux. diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/report-group.ts b/packages/aws-cdk-lib/aws-codebuild/lib/report-group.ts index 234cf8e5d6c22..6efd8692e0c20 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/report-group.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/report-group.ts @@ -4,6 +4,7 @@ import { renderReportGroupArn, reportGroupArnComponents } from './report-group-u import * as iam from '../../aws-iam'; import * as s3 from '../../aws-s3'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The interface representing the ReportGroup resource - @@ -157,6 +158,8 @@ export class ReportGroup extends ReportGroupBase { super(scope, id, { physicalName: props.reportGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.type = props.type ? props.type : ReportGroupType.TEST; const resource = new CfnReportGroup(this, 'Resource', { type: this.type, diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/source-credentials.ts b/packages/aws-cdk-lib/aws-codebuild/lib/source-credentials.ts index 80cea1f0f18e1..22e6900760083 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/source-credentials.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/source-credentials.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnSourceCredential } from './codebuild.generated'; import { Resource, SecretValue } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Creation properties for `GitHubSourceCredentials`. @@ -24,6 +25,8 @@ export interface GitHubSourceCredentialsProps { export class GitHubSourceCredentials extends Resource { constructor(scope: Construct, id: string, props: GitHubSourceCredentialsProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnSourceCredential(this, 'Resource', { serverType: 'GITHUB', diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/untrusted-code-boundary-policy.ts b/packages/aws-cdk-lib/aws-codebuild/lib/untrusted-code-boundary-policy.ts index 64ced16123214..babade8af553c 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/untrusted-code-boundary-policy.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/untrusted-code-boundary-policy.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import * as iam from '../../aws-iam'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for UntrustedCodeBoundaryPolicy @@ -91,5 +92,7 @@ export class UntrustedCodeBoundaryPolicy extends iam.ManagedPolicy { ...props.additionalStatements ?? [], ], }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts b/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts index a8518c2662e6d..19c956e7dbe74 100644 --- a/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts +++ b/packages/aws-cdk-lib/aws-codecommit/lib/repository.ts @@ -6,6 +6,7 @@ import * as events from '../../aws-events'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, IResource, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Additional options to pass to the notification rule. @@ -563,6 +564,8 @@ export class Repository extends RepositoryBase { super(scope, id, { physicalName: props.repositoryName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const repository = new CfnRepository(this, 'Resource', { repositoryName: props.repositoryName, diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/application.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/application.ts index 9bd670cea8444..89646f69c4735 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/application.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/application.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { ArnFormat, IResource, Resource, Stack, Arn } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnApplication } from '../codedeploy.generated'; import { arnForApplication, validateName } from '../private/utils'; @@ -81,6 +82,8 @@ export class EcsApplication extends Resource implements IEcsApplication { super(scope, id, { physicalName: props.applicationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnApplication(this, 'Resource', { applicationName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-config.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-config.ts index c77fa5731bc02..30d4b2a68ce8d 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-config.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-config.ts @@ -1,4 +1,5 @@ import { Construct } from 'constructs'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseDeploymentConfig, BaseDeploymentConfigOptions, ComputePlatform, IBaseDeploymentConfig } from '../base-deployment-config'; import { deploymentConfig } from '../private/utils'; import { TrafficRouting } from '../traffic-routing-config'; @@ -70,5 +71,7 @@ export class EcsDeploymentConfig extends BaseDeploymentConfig implements IEcsDep computePlatform: ComputePlatform.ECS, trafficRouting: props?.trafficRouting ?? TrafficRouting.allAtOnce(), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts index 1acee55f5889b..3ff7345bcd1ef 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/ecs/deployment-group.ts @@ -6,6 +6,7 @@ import * as ecs from '../../../aws-ecs'; import * as elbv2 from '../../../aws-elasticloadbalancingv2'; import * as iam from '../../../aws-iam'; import * as cdk from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -224,6 +225,8 @@ export class EcsDeploymentGroup extends DeploymentGroupBase implements IEcsDeplo role: props.role, roleConstructId: 'ServiceRole', }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.role = this._role; this.application = props.application || new EcsApplication(this, 'Application'); diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/application.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/application.ts index 8b2e39077efd1..9af04410c35ce 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/application.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/application.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { ArnFormat, IResource, Resource, Stack, Arn } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnApplication } from '../codedeploy.generated'; import { arnForApplication, validateName } from '../private/utils'; @@ -81,6 +82,8 @@ export class LambdaApplication extends Resource implements ILambdaApplication { super(scope, id, { physicalName: props.applicationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnApplication(this, 'Resource', { applicationName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/custom-deployment-config.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/custom-deployment-config.ts index 5e695c4a70ec7..17cbb68b2c725 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/custom-deployment-config.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/custom-deployment-config.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { ILambdaDeploymentConfig } from './deployment-config'; import { Duration, Names, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from '../../../custom-resources'; import { arnForDeploymentConfig, validateName } from '../private/utils'; @@ -82,6 +83,8 @@ export class CustomLambdaDeploymentConfig extends Resource implements ILambdaDep public constructor(scope: Construct, id: string, props: CustomLambdaDeploymentConfigProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateParameters(props); // In this section we make the argument for the AWS API call diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-config.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-config.ts index f0b2c20654eda..02e3f1ecda703 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-config.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-config.ts @@ -1,4 +1,5 @@ import { Construct } from 'constructs'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseDeploymentConfig, BaseDeploymentConfigOptions, ComputePlatform, IBaseDeploymentConfig } from '../base-deployment-config'; import { deploymentConfig } from '../private/utils'; import { TrafficRouting } from '../traffic-routing-config'; @@ -103,5 +104,7 @@ export class LambdaDeploymentConfig extends BaseDeploymentConfig implements ILam computePlatform: ComputePlatform.LAMBDA, trafficRouting: props?.trafficRouting ?? TrafficRouting.allAtOnce(), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts index 86f6134e62151..727046d69b546 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/lambda/deployment-group.ts @@ -5,6 +5,7 @@ import * as cloudwatch from '../../../aws-cloudwatch'; import * as iam from '../../../aws-iam'; import * as lambda from '../../../aws-lambda'; import * as cdk from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -164,6 +165,8 @@ export class LambdaDeploymentGroup extends DeploymentGroupBase implements ILambd role: props.role, roleConstructId: 'ServiceRole', }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.role = this._role; this.application = props.application || new LambdaApplication(this, 'Application'); diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/private/base-deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/private/base-deployment-group.ts index c9d39741e8a65..70de1c9eb18f3 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/private/base-deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/private/base-deployment-group.ts @@ -3,6 +3,7 @@ import { isPredefinedDeploymentConfig } from './predefined-deployment-config'; import { validateName } from './utils'; import * as iam from '../../../aws-iam'; import { Resource, IResource, ArnFormat, Arn, Aws } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IBaseDeploymentConfig } from '../base-deployment-config'; import { CfnDeploymentGroup } from '../codedeploy.generated'; @@ -51,6 +52,8 @@ export class ImportedDeploymentGroupBase extends Resource { }); super(scope, id, { environmentFromArn: deploymentGroupArn }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.deploymentGroupName = deploymentGroupName; this.deploymentGroupArn = deploymentGroupArn; } diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/server/application.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/server/application.ts index 725cb2521a235..80cc0c82b268e 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/server/application.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/server/application.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { ArnFormat, IResource, Resource, Stack, Arn } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnApplication } from '../codedeploy.generated'; import { arnForApplication, validateName } from '../private/utils'; @@ -81,6 +82,8 @@ export class ServerApplication extends Resource implements IServerApplication { super(scope, id, { physicalName: props.applicationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnApplication(this, 'Resource', { applicationName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-config.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-config.ts index 95fd694f324b9..2ebe2af5cd9da 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-config.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-config.ts @@ -1,4 +1,5 @@ import { Construct } from 'constructs'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseDeploymentConfig, BaseDeploymentConfigOptions, IBaseDeploymentConfig, ZonalConfig } from '../base-deployment-config'; import { MinimumHealthyHosts } from '../host-health-config'; import { deploymentConfig } from '../private/utils'; @@ -77,5 +78,7 @@ export class ServerDeploymentConfig extends BaseDeploymentConfig implements ISer constructor(scope: Construct, id: string, props: ServerDeploymentConfigProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts index de6d24a04f4a8..f2572b0c54b94 100644 --- a/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts +++ b/packages/aws-cdk-lib/aws-codedeploy/lib/server/deployment-group.ts @@ -8,6 +8,7 @@ import * as ec2 from '../../../aws-ec2'; import * as iam from '../../../aws-iam'; import * as s3 from '../../../aws-s3'; import * as cdk from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CODEDEPLOY_REMOVE_ALARMS_FROM_DEPLOYMENT_GROUP } from '../../../cx-api'; import { CfnDeploymentGroup } from '../codedeploy.generated'; import { ImportedDeploymentGroupBase, DeploymentGroupBase } from '../private/base-deployment-group'; @@ -67,6 +68,8 @@ class ImportedServerDeploymentGroup extends ImportedDeploymentGroupBase implemen application: props.application, deploymentGroupName: props.deploymentGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.application = props.application; this.deploymentConfig = this._bindDeploymentConfig(props.deploymentConfig || ServerDeploymentConfig.ONE_AT_A_TIME); diff --git a/packages/aws-cdk-lib/aws-codeguruprofiler/lib/profiling-group.ts b/packages/aws-cdk-lib/aws-codeguruprofiler/lib/profiling-group.ts index 6e412ac9be6b9..6f53c05e56434 100644 --- a/packages/aws-cdk-lib/aws-codeguruprofiler/lib/profiling-group.ts +++ b/packages/aws-cdk-lib/aws-codeguruprofiler/lib/profiling-group.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnProfilingGroup } from './codeguruprofiler.generated'; import { Grant, IGrantable } from '../../aws-iam'; import { ArnFormat, IResource, Lazy, Names, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The compute platform of the profiling group. @@ -188,6 +189,8 @@ export class ProfilingGroup extends ProfilingGroupBase { super(scope, id, { physicalName: props.profilingGroupName ?? Lazy.string({ produce: () => this.generateUniqueId() }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const profilingGroup = new CfnProfilingGroup(this, 'ProfilingGroup', { profilingGroupName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts b/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts index 3a94a026a7f41..424d3e53a4842 100644 --- a/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts +++ b/packages/aws-cdk-lib/aws-codepipeline/lib/pipeline.ts @@ -36,6 +36,7 @@ import { Stage as CdkStage, Token, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -472,6 +473,8 @@ export class Pipeline extends PipelineBase { super(scope, id, { physicalName: props.pipelineName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); validateName('Pipeline', this.physicalName); diff --git a/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts b/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts index 32adb3b0d9fa2..47abc79be353f 100644 --- a/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts +++ b/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts @@ -3,6 +3,7 @@ import { CfnNotificationRule } from './codestarnotifications.generated'; import { INotificationRuleSource } from './notification-rule-source'; import { INotificationRuleTarget, NotificationRuleTargetConfig } from './notification-rule-target'; import { IResource, Resource, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The level of detail to include in the notifications for this resource. @@ -141,6 +142,8 @@ export class NotificationRule extends Resource implements INotificationRule { constructor(scope: constructs.Construct, id: string, props: NotificationRuleProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const source = props.source.bindAsNotificationRuleSource(this); diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-client.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-client.ts index d92109c73b7a8..6b9e5908c7a9f 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-client.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-client.ts @@ -4,6 +4,7 @@ import { IUserPool } from './user-pool'; import { ClientAttributes } from './user-pool-attr'; import { IUserPoolResourceServer, ResourceServerScope } from './user-pool-resource-server'; import { IResource, Resource, Duration, Stack, SecretValue, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from '../../custom-resources'; /** @@ -413,6 +414,8 @@ export class UserPoolClient extends Resource implements IUserPoolClient { constructor(scope: Construct, id: string, props: UserPoolClientProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.disableOAuth && props.oAuth) { throw new Error('OAuth settings cannot be specified when disableOAuth is set.'); diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts index 889ee5782b258..bda2a2344ed29 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-domain.ts @@ -4,6 +4,7 @@ import { IUserPool } from './user-pool'; import { UserPoolClient } from './user-pool-client'; import { ICertificate } from '../../aws-certificatemanager'; import { IResource, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AwsCustomResource, AwsCustomResourcePolicy, AwsSdkCall, PhysicalResourceId } from '../../custom-resources'; /** @@ -100,6 +101,8 @@ export class UserPoolDomain extends Resource implements IUserPoolDomain { constructor(scope: Construct, id: string, props: UserPoolDomainProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!!props.customDomain === !!props.cognitoDomain) { throw new Error('One of, and only one of, cognitoDomain or customDomain must be specified'); diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-group.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-group.ts index 52b55a12e83e5..ff6b92b65e2d4 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-group.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-group.ts @@ -3,6 +3,7 @@ import { CfnUserPoolGroup } from './cognito.generated'; import { IUserPool } from './user-pool'; import { IRole } from '../../aws-iam'; import { IResource, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a user pool group. @@ -86,6 +87,8 @@ export class UserPoolGroup extends Resource implements IUserPoolGroup { constructor(scope: Construct, id: string, props: UserPoolGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.description !== undefined && !Token.isUnresolved(props.description) && diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/amazon.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/amazon.ts index bca2dfb6758cf..dc9832b9c4c51 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/amazon.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/amazon.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { UserPoolIdentityProviderProps } from './base'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Properties to initialize UserPoolAmazonIdentityProvider @@ -34,6 +35,8 @@ export class UserPoolIdentityProviderAmazon extends UserPoolIdentityProviderBase constructor(scope: Construct, id: string, props: UserPoolIdentityProviderAmazonProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const scopes = props.scopes ?? ['profile']; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/apple.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/apple.ts index 1b3c23c54e04b..5940be0106c80 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/apple.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/apple.ts @@ -3,6 +3,7 @@ import { UserPoolIdentityProviderProps } from './base'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; import { SecretValue } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Properties to initialize UserPoolAppleIdentityProvider @@ -50,6 +51,8 @@ export class UserPoolIdentityProviderApple extends UserPoolIdentityProviderBase constructor(scope: Construct, id: string, props: UserPoolIdentityProviderAppleProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const scopes = props.scopes ?? ['name']; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/facebook.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/facebook.ts index 1331c4145f874..ffb0f6a993895 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/facebook.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/facebook.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { UserPoolIdentityProviderProps } from './base'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Properties to initialize UserPoolFacebookIdentityProvider @@ -38,6 +39,8 @@ export class UserPoolIdentityProviderFacebook extends UserPoolIdentityProviderBa constructor(scope: Construct, id: string, props: UserPoolIdentityProviderFacebookProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const scopes = props.scopes ?? ['public_profile']; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/google.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/google.ts index 391573acfcf93..e1630177bf870 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/google.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/google.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { UserPoolIdentityProviderProps } from './base'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; import { SecretValue } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; /** @@ -43,6 +44,8 @@ export class UserPoolIdentityProviderGoogle extends UserPoolIdentityProviderBase constructor(scope: Construct, id: string, props: UserPoolIdentityProviderGoogleProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const scopes = props.scopes ?? ['profile']; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/oidc.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/oidc.ts index 72e6e92c5ed4e..eabebf39f4158 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/oidc.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/oidc.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { UserPoolIdentityProviderProps } from './base'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; import { Names, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; /** @@ -106,6 +107,8 @@ export class UserPoolIdentityProviderOidc extends UserPoolIdentityProviderBase { constructor(scope: Construct, id: string, props: UserPoolIdentityProviderOidcProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const scopes = props.scopes ?? ['openid']; diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/saml.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/saml.ts index bb0e1d938eb38..6eab7542374b8 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/saml.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-idps/saml.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { UserPoolIdentityProviderProps } from './base'; import { UserPoolIdentityProviderBase } from './private/user-pool-idp-base'; import { Names, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnUserPoolIdentityProvider } from '../cognito.generated'; /** @@ -121,6 +122,8 @@ export class UserPoolIdentityProviderSaml extends UserPoolIdentityProviderBase { constructor(scope: Construct, id: string, props: UserPoolIdentityProviderSamlProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateName(props.name); diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-resource-server.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-resource-server.ts index 8ec01eb4a6597..5288b1af6f538 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool-resource-server.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool-resource-server.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnUserPoolResourceServer } from './cognito.generated'; import { IUserPool } from './user-pool'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents a Cognito user pool resource server @@ -102,6 +103,8 @@ export class UserPoolResourceServer extends Resource implements IUserPoolResourc super(scope, id, { physicalName: props.identifier, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnUserPoolResourceServer(this, 'Resource', { identifier: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts b/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts index 03f3c3ff15f10..88d86a50a1680 100644 --- a/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts +++ b/packages/aws-cdk-lib/aws-cognito/lib/user-pool.ts @@ -13,6 +13,7 @@ import { Grant, IGrantable, IRole, PolicyDocument, PolicyStatement, Role, Servic import { IKey } from '../../aws-kms'; import * as lambda from '../../aws-lambda'; import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The different ways in which users of this pool can sign up or sign in. @@ -972,6 +973,8 @@ export class UserPool extends UserPoolBase { constructor(scope: Construct, id: string, props: UserPoolProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const signIn = this.signInConfiguration(props); diff --git a/packages/aws-cdk-lib/aws-config/lib/managed-rules.ts b/packages/aws-cdk-lib/aws-config/lib/managed-rules.ts index d937ef37017bd..c97ae0d56c13f 100644 --- a/packages/aws-cdk-lib/aws-config/lib/managed-rules.ts +++ b/packages/aws-cdk-lib/aws-config/lib/managed-rules.ts @@ -3,6 +3,7 @@ import { ManagedRule, ManagedRuleIdentifiers, ResourceType, RuleProps, RuleScope import * as iam from '../../aws-iam'; import * as sns from '../../aws-sns'; import { Duration, Lazy, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a AccessKeysRotated @@ -37,6 +38,8 @@ export class AccessKeysRotated extends ManagedRule { : {}, }, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-config/lib/rule.ts b/packages/aws-cdk-lib/aws-config/lib/rule.ts index 9cf824a809138..29f3f0f1fae79 100644 --- a/packages/aws-cdk-lib/aws-config/lib/rule.ts +++ b/packages/aws-cdk-lib/aws-config/lib/rule.ts @@ -5,6 +5,7 @@ import * as events from '../../aws-events'; import * as iam from '../../aws-iam'; import * as lambda from '../../aws-lambda'; import { IResource, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface representing an AWS Config rule @@ -288,6 +289,8 @@ export class ManagedRule extends RuleNew { super(scope, id, { physicalName: props.configRuleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.ruleScope = props.ruleScope; diff --git a/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts b/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts index 91e99ec8eeef5..826d2b3a31b90 100644 --- a/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-docdb/lib/cluster.ts @@ -12,6 +12,7 @@ import * as logs from '../../aws-logs'; import { CaCertificate } from '../../aws-rds'; import * as secretsmanager from '../../aws-secretsmanager'; import { CfnResource, Duration, RemovalPolicy, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; const MIN_ENGINE_VERSION_FOR_IO_OPTIMIZED_STORAGE = 5; @@ -466,6 +467,8 @@ export class DatabaseCluster extends DatabaseClusterBase { constructor(scope: Construct, id: string, props: DatabaseClusterProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; this.vpcSubnets = props.vpcSubnets; diff --git a/packages/aws-cdk-lib/aws-docdb/lib/database-secret.ts b/packages/aws-cdk-lib/aws-docdb/lib/database-secret.ts index 7da183748e90a..d5c4336c9413f 100644 --- a/packages/aws-cdk-lib/aws-docdb/lib/database-secret.ts +++ b/packages/aws-cdk-lib/aws-docdb/lib/database-secret.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IKey } from '../../aws-kms'; import { ISecret, Secret } from '../../aws-secretsmanager'; import { Aws } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a DatabaseSecret. @@ -80,6 +81,8 @@ export class DatabaseSecret extends Secret { excludeCharacters: excludedCharacters, }, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._excludedCharacters = excludedCharacters; } diff --git a/packages/aws-cdk-lib/aws-docdb/lib/instance.ts b/packages/aws-cdk-lib/aws-docdb/lib/instance.ts index d81d7a574863e..573df298cf915 100644 --- a/packages/aws-cdk-lib/aws-docdb/lib/instance.ts +++ b/packages/aws-cdk-lib/aws-docdb/lib/instance.ts @@ -6,6 +6,7 @@ import * as ec2 from '../../aws-ec2'; import { CaCertificate } from '../../aws-rds'; import { ArnFormat } from '../../core'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A database instance @@ -219,6 +220,8 @@ export class DatabaseInstance extends DatabaseInstanceBase implements IDatabaseI constructor(scope: Construct, id: string, props: DatabaseInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const instance = new CfnDBInstance(this, 'Resource', { dbClusterIdentifier: props.cluster.clusterIdentifier, diff --git a/packages/aws-cdk-lib/aws-docdb/lib/parameter-group.ts b/packages/aws-cdk-lib/aws-docdb/lib/parameter-group.ts index 346214a6dc187..f6615ee5c6a4f 100644 --- a/packages/aws-cdk-lib/aws-docdb/lib/parameter-group.ts +++ b/packages/aws-cdk-lib/aws-docdb/lib/parameter-group.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnDBClusterParameterGroup } from './docdb.generated'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A parameter group @@ -74,6 +75,8 @@ export class ClusterParameterGroup extends ClusterParameterGroupBase implements constructor(scope: Construct, id: string, props: ClusterParameterGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnDBClusterParameterGroup(this, 'Resource', { name: props.dbClusterParameterGroupName, diff --git a/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts b/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts index 66fd85e68cbb8..171f6e4b16e77 100644 --- a/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts +++ b/packages/aws-cdk-lib/aws-dynamodb/lib/table-v2.ts @@ -29,6 +29,7 @@ import { TagType, Token, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const HASH_KEY_TYPE = 'HASH'; @@ -543,6 +544,8 @@ export class TableV2 extends TableBaseV2 { public constructor(scope: Construct, id: string, props: TablePropsV2) { super(scope, id, { physicalName: props.tableName ?? PhysicalName.GENERATE_IF_NEEDED }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.tableOptions = props; this.partitionKey = props.partitionKey; diff --git a/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts b/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts index b10e5ab5a6442..52b410a336617 100644 --- a/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts +++ b/packages/aws-cdk-lib/aws-dynamodb/lib/table.ts @@ -21,6 +21,7 @@ import { Aws, CfnCondition, CfnCustomResource, CfnResource, Duration, Fn, Lazy, Names, RemovalPolicy, Stack, Token, CustomResource, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; const HASH_KEY_TYPE = 'HASH'; const RANGE_KEY_TYPE = 'RANGE'; @@ -1177,6 +1178,8 @@ export class Table extends TableBase { super(scope, id, { physicalName: props.tableName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const { sseSpecification, encryptionKey } = this.parseEncryption(props); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts b/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts index 40136feb88c95..e2a8ce527fc92 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/bastion-host.ts @@ -11,6 +11,7 @@ import { BlockDevice } from './volume'; import { IVpc, SubnetSelection } from './vpc'; import { IPrincipal, IRole, PolicyStatement } from '../../aws-iam'; import { CfnOutput, FeatureFlags, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { BASTION_HOST_USE_AMAZON_LINUX_2023_BY_DEFAULT } from '../../cx-api'; /** @@ -192,6 +193,8 @@ export class BastionHostLinux extends Resource implements IInstance { constructor(scope: Construct, id: string, props: BastionHostLinuxProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.stack = Stack.of(scope); const instanceType = props.instanceType ?? InstanceType.of(InstanceClass.T3, InstanceSize.NANO); this.instance = new Instance(this, 'Resource', { diff --git a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-authorization-rule.ts b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-authorization-rule.ts index 1eca7b1aa9b9b..72a37cb593bf9 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-authorization-rule.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-authorization-rule.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IClientVpnEndpoint } from './client-vpn-endpoint-types'; import { CfnClientVpnAuthorizationRule } from './ec2.generated'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for a ClientVpnAuthorizationRule @@ -65,6 +66,8 @@ export class ClientVpnAuthorizationRule extends Resource { } const clientVpnEndpoint = props.clientVpnEndoint || props.clientVpnEndpoint; super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnClientVpnAuthorizationRule(this, 'Resource', { clientVpnEndpointId: clientVpnEndpoint!.endpointId, targetNetworkCidr: props.cidr, diff --git a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts index a64e3ed68b61b..9aa753c846d69 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-endpoint.ts @@ -10,6 +10,7 @@ import { IVpc, SubnetSelection } from './vpc'; import { ISamlProvider } from '../../aws-iam'; import * as logs from '../../aws-logs'; import { CfnOutput, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for a client VPN endpoint @@ -292,6 +293,8 @@ export class ClientVpnEndpoint extends Resource implements IClientVpnEndpoint { constructor(scope: Construct, id: string, props: ClientVpnEndpointProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (!Token.isUnresolved(props.vpc.vpcCidrBlock)) { const clientCidr = new CidrBlock(props.cidr); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-route.ts b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-route.ts index c5d3b960720ec..26bfbe3e32516 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-route.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/client-vpn-route.ts @@ -3,6 +3,7 @@ import { IClientVpnEndpoint } from './client-vpn-endpoint-types'; import { CfnClientVpnRoute } from './ec2.generated'; import { ISubnet } from './vpc'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for a ClientVpnRoute @@ -95,6 +96,8 @@ export class ClientVpnRoute extends Resource { } const clientVpnEndpoint = props.clientVpnEndoint || props.clientVpnEndpoint; super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const route = new CfnClientVpnRoute(this, 'Resource', { clientVpnEndpointId: clientVpnEndpoint!.endpointId, description: props.description, diff --git a/packages/aws-cdk-lib/aws-ec2/lib/instance.ts b/packages/aws-cdk-lib/aws-ec2/lib/instance.ts index 6e5c7258dac4e..8b29922cdac50 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/instance.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/instance.ts @@ -17,6 +17,7 @@ import { IVpc, Subnet, SubnetSelection } from './vpc'; import * as iam from '../../aws-iam'; import { Annotations, AspectPriority, Aspects, Duration, FeatureFlags, Fn, IResource, Lazy, Resource, Stack, Tags, Token } from '../../core'; import { md5hash } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -462,6 +463,8 @@ export class Instance extends Resource implements IInstance { constructor(scope: Construct, id: string, props: InstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.initOptions && !props.init) { throw new Error('Setting \'initOptions\' requires that \'init\' is also set'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/key-pair.ts b/packages/aws-cdk-lib/aws-ec2/lib/key-pair.ts index e597a53dfb7a6..569587decc3cd 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/key-pair.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/key-pair.ts @@ -3,6 +3,7 @@ import { CfnKeyPair } from './ec2.generated'; import { OperatingSystemType } from './machine-image'; import { StringParameter, IStringParameter } from '../../aws-ssm'; import { Resource, ResourceProps, Names, Lazy, IResource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The format of the Key Pair @@ -202,6 +203,8 @@ export class KeyPair extends Resource implements IKeyPair { produce: () => Names.uniqueResourceName(this, { maxLength: 255 }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props?.publicKeyMaterial && props?.type) { throw new Error('Cannot specify \'type\' for keys with imported material'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts b/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts index eea0bfe06dd65..95083fd236f60 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/launch-template.ts @@ -23,6 +23,7 @@ import { Token, FeatureFlags, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -597,6 +598,8 @@ export class LaunchTemplate extends Resource implements ILaunchTemplate, iam.IGr constructor(scope: Construct, id: string, props: LaunchTemplateProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Basic validation of the provided spot block duration const spotDuration = props?.spotOptions?.blockDuration?.toHours({ integral: true }); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts b/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts index d243ddcbb8d9d..f1b292077cf6c 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/network-acl.ts @@ -3,6 +3,7 @@ import { CfnNetworkAcl, CfnNetworkAclEntry, CfnSubnetNetworkAclAssociation } fro import { AclCidr, AclTraffic } from './network-acl-types'; import { ISubnet, IVpc, SubnetSelection } from './vpc'; import { IResource, Resource, Tags } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Name tag constant @@ -117,6 +118,8 @@ export class NetworkAcl extends NetworkAclBase { constructor(scope: Construct, id: string, props: NetworkAclProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; diff --git a/packages/aws-cdk-lib/aws-ec2/lib/placement-group.ts b/packages/aws-cdk-lib/aws-ec2/lib/placement-group.ts index 8500ec609e9b6..238432e7905e4 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/placement-group.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/placement-group.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnPlacementGroup } from './ec2.generated'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Determines where your instances are placed on the underlying hardware according to the specified PlacementGroupStrategy @@ -169,6 +170,8 @@ export class PlacementGroup extends Resource implements IPlacementGroup { super(scope, id, { physicalName: undefined, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.partitions = props?.partitions; this.spreadLevel = props?.spreadLevel; diff --git a/packages/aws-cdk-lib/aws-ec2/lib/prefix-list.ts b/packages/aws-cdk-lib/aws-ec2/lib/prefix-list.ts index 1f0ae1efbd77a..7009bd19401d2 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/prefix-list.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/prefix-list.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnPrefixList } from './ec2.generated'; import { IResource, Lazy, Resource, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A prefix list @@ -135,6 +136,8 @@ export class PrefixList extends PrefixListBase { produce: () => Names.uniqueResourceName(this, { maxLength: 255, allowedSpecialCharacters: '.-_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props?.prefixListName) { if ( props.prefixListName.startsWith('com.amazonaws')) { diff --git a/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts b/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts index e774c1f9de3af..ce1c27cc1c4b9 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/security-group.ts @@ -6,6 +6,7 @@ import { Port } from './port'; import { IVpc } from './vpc'; import * as cxschema from '../../cloud-assembly-schema'; import { Annotations, ContextProvider, IResource, Lazy, Names, Resource, ResourceProps, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const SECURITY_GROUP_SYMBOL = Symbol.for('@aws-cdk/iam.SecurityGroup'); @@ -502,6 +503,8 @@ export class SecurityGroup extends SecurityGroupBase { super(scope, id, { physicalName: props.securityGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const groupDescription = props.description || this.node.path; diff --git a/packages/aws-cdk-lib/aws-ec2/lib/volume.ts b/packages/aws-cdk-lib/aws-ec2/lib/volume.ts index d284e8ef81dbb..5fb559e271e18 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/volume.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/volume.ts @@ -5,6 +5,7 @@ import { AccountRootPrincipal, Grant, IGrantable } from '../../aws-iam'; import { IKey, ViaServicePrincipal } from '../../aws-kms'; import { IResource, Resource, Size, SizeRoundingBehavior, Stack, Token, Tags, Names, RemovalPolicy, FeatureFlags } from '../../core'; import { md5hash } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -624,6 +625,8 @@ export class Volume extends VolumeBase { super(scope, id, { physicalName: props.volumeName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateProps(props); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint-service.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint-service.ts index 0e611adc996cc..7c543f469d8e4 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint-service.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint-service.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnVPCEndpointService, CfnVPCEndpointServicePermissions } from './ec2.generated'; import { ArnPrincipal } from '../../aws-iam'; import { Aws, Fn, IResource, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { RegionInfo } from '../../region-info'; /** @@ -101,6 +102,8 @@ export class VpcEndpointService extends Resource implements IVpcEndpointService constructor(scope: Construct, id: string, props: VpcEndpointServiceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.vpcEndpointServiceLoadBalancers === undefined || props.vpcEndpointServiceLoadBalancers.length === 0) { throw new Error('VPC Endpoint Service must have at least one load balancer specified.'); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint.ts index 8f6c0b3666671..105c70fd663ac 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpc-endpoint.ts @@ -9,6 +9,7 @@ import { ISubnet, IVpc, SubnetSelection } from './vpc'; import * as iam from '../../aws-iam'; import * as cxschema from '../../cloud-assembly-schema'; import { Aws, ContextProvider, IResource, Lazy, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A VPC endpoint. @@ -184,6 +185,8 @@ export class GatewayVpcEndpoint extends VpcEndpoint implements IGatewayVpcEndpoi constructor(scope: Construct, id: string, props: GatewayVpcEndpointProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const subnets: ISubnet[] = props.subnets ? flatten(props.subnets.map(s => props.vpc.selectSubnets(s).subnets)) diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpc-flow-logs.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpc-flow-logs.ts index 351b9832c7dd9..f3f6a8d924658 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpc-flow-logs.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpc-flow-logs.ts @@ -5,6 +5,7 @@ import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as s3 from '../../aws-s3'; import { IResource, PhysicalName, RemovalPolicy, Resource, FeatureFlags, Stack, Tags, CfnResource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { S3_CREATE_DEFAULT_LOGGING_POLICY } from '../../cx-api'; /** @@ -854,6 +855,8 @@ export class FlowLog extends FlowLogBase { constructor(scope: Construct, id: string, props: FlowLogProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const destination = props.destination || FlowLogDestination.toCloudWatchLogs(); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts index f466af74ce9d0..6a048e9a44550 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts @@ -18,6 +18,7 @@ import { Arn, Annotations, ContextProvider, IResource, Fn, Lazy, Resource, Stack, Token, Tags, Names, CustomResource, FeatureFlags, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { RestrictDefaultSgProvider } from '../../custom-resource-handlers/dist/aws-ec2/restrict-default-sg-provider.generated'; import * as cxapi from '../../cx-api'; import { EC2_RESTRICT_DEFAULT_SECURITY_GROUP } from '../../cx-api'; @@ -1498,6 +1499,8 @@ export class Vpc extends VpcBase { */ constructor(scope: Construct, id: string, props: VpcProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const stack = Stack.of(this); diff --git a/packages/aws-cdk-lib/aws-ec2/lib/vpn.ts b/packages/aws-cdk-lib/aws-ec2/lib/vpn.ts index b9df1e2176af0..543913e52c019 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/vpn.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/vpn.ts @@ -9,6 +9,7 @@ import { import { IVpc, SubnetSelection } from './vpc'; import * as cloudwatch from '../../aws-cloudwatch'; import { IResource, Resource, SecretValue, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IVpnConnection extends IResource { /** @@ -170,6 +171,8 @@ export class VpnGateway extends Resource implements IVpnGateway { constructor(scope: Construct, id: string, props: VpnGatewayProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // This is 'Default' instead of 'Resource', because using 'Default' will generate // a logical ID for a VpnGateway which is exactly the same as the logical ID that used diff --git a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts index 9416905ef17bc..ccf9a6c862836 100644 --- a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts +++ b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts @@ -19,6 +19,7 @@ import { CustomResource, Aws, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AutoDeleteImagesProvider } from '../../custom-resource-handlers/dist/aws-ecr/auto-delete-images-provider.generated'; const AUTO_DELETE_IMAGES_RESOURCE_TYPE = 'Custom::ECRAutoDeleteImages'; @@ -723,6 +724,8 @@ export class Repository extends RepositoryBase { super(scope, id, { physicalName: props.repositoryName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); Repository.validateRepositoryName(this.physicalName); diff --git a/packages/aws-cdk-lib/aws-ecs/lib/base/_imported-task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/base/_imported-task-definition.ts index 03ad4e47ce7bb..6e01519c6f48a 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/base/_imported-task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/base/_imported-task-definition.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { Compatibility, NetworkMode, isEc2Compatible, isFargateCompatible, isExternalCompatible } from './task-definition'; import { IRole } from '../../../aws-iam'; import { Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IEc2TaskDefinition } from '../ec2/ec2-task-definition'; import { IFargateTaskDefinition } from '../fargate/fargate-task-definition'; @@ -76,6 +77,8 @@ export class ImportedTaskDefinition extends Resource implements IEc2TaskDefiniti constructor(scope: Construct, id: string, props: ImportedTaskDefinitionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.compatibility = props.compatibility ?? Compatibility.EC2_AND_FARGATE; this.taskDefinitionArn = props.taskDefinitionArn; diff --git a/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts index c15e9ebdce9d5..903d0e71d805c 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/base/task-definition.ts @@ -3,6 +3,7 @@ import { ImportedTaskDefinition } from './_imported-task-definition'; import * as ec2 from '../../../aws-ec2'; import * as iam from '../../../aws-iam'; import { IResource, Lazy, Names, PhysicalName, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { ContainerDefinition, ContainerDefinitionOptions, PortMapping, Protocol } from '../container-definition'; import { CfnTaskDefinition } from '../ecs.generated'; import { FirelensLogRouter, FirelensLogRouterDefinitionOptions, FirelensLogRouterType, obtainDefaultFluentBitECRImage } from '../firelens-log-router'; @@ -432,6 +433,8 @@ export class TaskDefinition extends TaskDefinitionBase { */ constructor(scope: Construct, id: string, props: TaskDefinitionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.family = props.family || Names.uniqueId(this); this.compatibility = props.compatibility; diff --git a/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts b/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts index c9808bfb34173..66815fc7e985f 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/cluster.ts @@ -27,6 +27,7 @@ import { AspectPriority, FeatureFlags, Annotations, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { Disable_ECS_IMDS_Blocking, Enable_IMDS_Blocking_Deprecated_Feature } from '../../cx-api'; const CLUSTER_SYMBOL = Symbol.for('@aws-cdk/aws-ecs/lib/cluster.Cluster'); @@ -261,6 +262,8 @@ export class Cluster extends Resource implements ICluster { super(scope, id, { physicalName: props.clusterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if ((props.containerInsights !== undefined) && props.containerInsightsV2) { throw new Error('You cannot set both containerInsights and containerInsightsV2'); diff --git a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts index 0b5eeae081948..a26981af1d390 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-service.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import * as ec2 from '../../../aws-ec2'; import { Lazy, Resource, Stack, Annotations } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseService, BaseServiceOptions, DeploymentControllerType, IBaseService, IService, LaunchType } from '../base/base-service'; import { fromServiceAttributes, extractServiceNameFromArn } from '../base/from-service-attributes'; import { NetworkMode, TaskDefinition } from '../base/task-definition'; @@ -183,6 +184,8 @@ export class Ec2Service extends BaseService implements IEc2Service { placementStrategies: Lazy.any({ produce: () => this.strategies }, { omitEmptyArray: true }), schedulingStrategy: props.daemon ? 'DAEMON' : 'REPLICA', }, props.taskDefinition); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.constraints = undefined; this.strategies = []; diff --git a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-task-definition.ts index a75284934598b..f7bbc29dfe5d7 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/ec2/ec2-task-definition.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { ImportedTaskDefinition } from '../base/_imported-task-definition'; import { CommonTaskDefinitionAttributes, @@ -143,6 +144,8 @@ export class Ec2TaskDefinition extends TaskDefinition implements IEc2TaskDefinit pidMode: props.pidMode, inferenceAccelerators: props.inferenceAccelerators, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Validate the placement constraints Ec2TaskDefinition.validatePlacementConstraints(props.placementConstraints ?? []); diff --git a/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts index 4c79f5b917e03..31ec13f0f5fbf 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/external/external-service.ts @@ -4,11 +4,13 @@ import * as ec2 from '../../../aws-ec2'; import * as elbv2 from '../../../aws-elasticloadbalancingv2'; import * as cloudmap from '../../../aws-servicediscovery'; import { ArnFormat, Resource, Stack, Annotations } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { AssociateCloudMapServiceOptions, BaseService, BaseServiceOptions, CloudMapOptions, DeploymentControllerType, EcsTarget, IBaseService, IEcsLoadBalancerTarget, IService, LaunchType, PropagatedTagSource } from '../base/base-service'; import { fromServiceAttributes } from '../base/from-service-attributes'; import { ScalableTaskCount } from '../base/scalable-task-count'; import { Compatibility, LoadBalancerTargetOptions, TaskDefinition } from '../base/task-definition'; import { ICluster } from '../cluster'; + /** * The properties for defining a service using the External launch type. */ @@ -124,6 +126,8 @@ export class ExternalService extends BaseService implements IExternalService { cluster: props.cluster.clusterName, taskDefinition: props.deploymentController?.type === DeploymentControllerType.EXTERNAL ? undefined : props.taskDefinition.taskDefinitionArn, }, props.taskDefinition); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.node.addValidation({ validate: () => !this.taskDefinition.defaultContainer ? ['A TaskDefinition must have at least one essential container'] : [], diff --git a/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts index 16af3a90b94b3..3ca2a8909315a 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/external/external-task-definition.ts @@ -1,4 +1,5 @@ import { Construct } from 'constructs'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { ImportedTaskDefinition } from '../../lib/base/_imported-task-definition'; import { CommonTaskDefinitionAttributes, @@ -79,6 +80,8 @@ export class ExternalTaskDefinition extends TaskDefinition implements IExternalT compatibility: Compatibility.EXTERNAL, networkMode: props.networkMode ?? NetworkMode.BRIDGE, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } /** diff --git a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts index b4d1324e18947..23f5ce3130e3c 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-service.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import * as ec2 from '../../../aws-ec2'; import * as cdk from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseService, BaseServiceOptions, DeploymentControllerType, IBaseService, IService, LaunchType } from '../base/base-service'; import { fromServiceAttributes, extractServiceNameFromArn } from '../base/from-service-attributes'; import { TaskDefinition } from '../base/task-definition'; @@ -157,6 +158,9 @@ export class FargateService extends BaseService implements IFargateService { platformVersion: props.platformVersion, }, props.taskDefinition); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); + let securityGroups; if (props.securityGroup !== undefined) { securityGroups = [props.securityGroup]; diff --git a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-task-definition.ts b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-task-definition.ts index e6bc7876daa04..ac7e61b59c51a 100644 --- a/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-task-definition.ts +++ b/packages/aws-cdk-lib/aws-ecs/lib/fargate/fargate-task-definition.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { Tokenization, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { ImportedTaskDefinition } from '../base/_imported-task-definition'; import { CommonTaskDefinitionAttributes, @@ -164,6 +165,8 @@ export class FargateTaskDefinition extends TaskDefinition implements IFargateTas networkMode: NetworkMode.AWS_VPC, pidMode: props.pidMode, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // eslint-disable-next-line max-len if (props.ephemeralStorageGiB && !Token.isUnresolved(props.ephemeralStorageGiB) && (props.ephemeralStorageGiB < 21 || props.ephemeralStorageGiB > 200)) { diff --git a/packages/aws-cdk-lib/aws-ecs/test/external/external-service.test.ts b/packages/aws-cdk-lib/aws-ecs/test/external/external-service.test.ts index 9eeb40aafee2e..e3bec06efaa1a 100644 --- a/packages/aws-cdk-lib/aws-ecs/test/external/external-service.test.ts +++ b/packages/aws-cdk-lib/aws-ecs/test/external/external-service.test.ts @@ -589,6 +589,7 @@ describe('external service', () => { expect(service.node.metadata.map((m) => m.data)).toEqual([ 'taskDefinition and launchType are blanked out when using external deployment controller. [ack: @aws-cdk/aws-ecs:externalDeploymentController]', 'Deployment circuit breaker requires the ECS deployment controller.', + expect.anything(), ]); }); diff --git a/packages/aws-cdk-lib/aws-efs/lib/access-point.ts b/packages/aws-cdk-lib/aws-efs/lib/access-point.ts index d6bb8a59d5f5a..1ef98a5fbb780 100644 --- a/packages/aws-cdk-lib/aws-efs/lib/access-point.ts +++ b/packages/aws-cdk-lib/aws-efs/lib/access-point.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IFileSystem } from './efs-file-system'; import { CfnAccessPoint } from './efs.generated'; import { ArnFormat, IResource, Resource, Stack, Tags, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an EFS AccessPoint @@ -209,6 +210,8 @@ export class AccessPoint extends AccessPointBase { constructor(scope: Construct, id: string, props: AccessPointProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const clientToken = props.clientToken; if ((clientToken?.length === 0 || (clientToken && clientToken.length > 64)) && !Token.isUnresolved(clientToken)) { diff --git a/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts b/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts index 4a14ee5870df0..0d1b9fee7a642 100644 --- a/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts +++ b/packages/aws-cdk-lib/aws-efs/lib/efs-file-system.ts @@ -5,6 +5,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, FeatureFlags, Lazy, RemovalPolicy, Resource, Size, Stack, Tags, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -728,6 +729,8 @@ export class FileSystem extends FileSystemBase { */ constructor(scope: Construct, id: string, props: FileSystemProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.props = props; diff --git a/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts b/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts index 30f20ed0dee00..f44318d8909a5 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/access-entry.ts @@ -4,6 +4,7 @@ import { CfnAccessEntry } from './eks.generated'; import { Resource, IResource, Aws, Lazy, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an access entry in an Amazon EKS cluster. @@ -326,6 +327,8 @@ export class AccessEntry extends Resource implements IAccessEntry { constructor(scope: Construct, id: string, props: AccessEntryProps ) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.cluster = props.cluster; this.principal = props.principal; diff --git a/packages/aws-cdk-lib/aws-eks/lib/addon.ts b/packages/aws-cdk-lib/aws-eks/lib/addon.ts index 755c098289be8..7d3d51009ad15 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/addon.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/addon.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { CfnAddon } from './eks.generated'; import { ArnFormat, IResource, Resource, Stack, Fn } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an Amazon EKS Add-On. @@ -126,6 +127,8 @@ export class Addon extends Resource implements IAddon { super(scope, id, { physicalName: props.addonName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.clusterName = props.cluster.clusterName; this.addonName = props.addonName; diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster.ts index 8f66f4efa8b3a..7abbf26b7f982 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster.ts @@ -26,6 +26,7 @@ import * as kms from '../../aws-kms'; import * as lambda from '../../aws-lambda'; import * as ssm from '../../aws-ssm'; import { Annotations, CfnOutput, CfnResource, IResource, Resource, Stack, Tags, Token, Duration, Size } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; // defaults are based on https://eksctl.io const DEFAULT_CAPACITY_COUNT = 2; @@ -1572,6 +1573,8 @@ export class Cluster extends ClusterBase { super(scope, id, { physicalName: props.clusterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const stack = Stack.of(this); diff --git a/packages/aws-cdk-lib/aws-eks/lib/fargate-cluster.ts b/packages/aws-cdk-lib/aws-eks/lib/fargate-cluster.ts index 022d6bc6ecdbf..3fabced2b3f7b 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/fargate-cluster.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/fargate-cluster.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { Cluster, ClusterOptions, CoreDnsComputeType } from './cluster'; import { FargateProfile, FargateProfileOptions } from './fargate-profile'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Configuration props for EKS Fargate. @@ -35,6 +36,8 @@ export class FargateCluster extends Cluster { coreDnsComputeType: props.coreDnsComputeType ?? CoreDnsComputeType.FARGATE, version: props.version, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.defaultProfile = this.addFargateProfile( props.defaultProfile?.fargateProfileName ?? (props.defaultProfile ? 'custom' : 'default'), diff --git a/packages/aws-cdk-lib/aws-eks/lib/managed-nodegroup.ts b/packages/aws-cdk-lib/aws-eks/lib/managed-nodegroup.ts index 9b5b7b489b3e4..94df442d1e46a 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/managed-nodegroup.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/managed-nodegroup.ts @@ -6,6 +6,7 @@ import { IRole, ManagedPolicy, PolicyStatement, Role, ServicePrincipal } from '. import { IResource, Resource, Annotations, withResolved, FeatureFlags } from '../../core'; import * as cxapi from '../../cx-api'; import { isGpuInstanceType } from './private/nodegroup'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * NodeGroup interface @@ -390,6 +391,8 @@ export class Nodegroup extends Resource implements INodegroup { super(scope, id, { physicalName: props.nodegroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.cluster = props.cluster; diff --git a/packages/aws-cdk-lib/aws-eks/lib/oidc-provider.ts b/packages/aws-cdk-lib/aws-eks/lib/oidc-provider.ts index d11b7fdff1eb8..82cafd6750f01 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/oidc-provider.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/oidc-provider.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import * as iam from '../../aws-iam'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Initialization properties for `OpenIdConnectProvider`. @@ -48,5 +49,7 @@ export class OpenIdConnectProvider extends iam.OpenIdConnectProvider { url: props.url, clientIds, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts index cf9ee681a7ffd..df1f6048a3278 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancing/lib/load-balancer.ts @@ -5,6 +5,7 @@ import { SecurityGroup, SelectedSubnets, SubnetSelection, SubnetType, } from '../../aws-ec2'; import { Duration, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a LoadBalancer @@ -255,6 +256,8 @@ export class LoadBalancer extends Resource implements IConnectable { constructor(scope: Construct, id: string, props: LoadBalancerProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.securityGroup = new SecurityGroup(this, 'SecurityGroup', { vpc: props.vpc, allowAllOutbound: false }); this.connections = new Connections({ securityGroups: [this.securityGroup] }); diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts index d55466374bdd5..04b2fba0e8bc7 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-listener.ts @@ -9,6 +9,7 @@ import { ITrustStore } from './trust-store'; import * as ec2 from '../../../aws-ec2'; import * as cxschema from '../../../cloud-assembly-schema'; import { Duration, FeatureFlags, Lazy, Resource, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { BaseListener, BaseListenerLookupOptions, IListener } from '../shared/base-listener'; import { HealthCheck } from '../shared/base-target-group'; @@ -268,6 +269,8 @@ export class ApplicationListener extends BaseListener implements IApplicationLis trustStoreArn: props.mutualAuthentication?.trustStore?.trustStoreArn, } : undefined, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.loadBalancer = props.loadBalancer; this.protocol = protocol; diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index 89594b0654250..11c14a29e1a18 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -8,6 +8,7 @@ import { ServicePrincipal } from '../../../aws-iam/lib/principals'; import * as s3 from '../../../aws-s3'; import * as cxschema from '../../../cloud-assembly-schema'; import { CfnResource, Duration, Lazy, Names, Resource, Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { ApplicationELBMetrics } from '../elasticloadbalancingv2-canned-metrics.generated'; import { BaseLoadBalancer, BaseLoadBalancerLookupOptions, BaseLoadBalancerProps, ILoadBalancerV2 } from '../shared/base-load-balancer'; @@ -184,6 +185,8 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic securityGroups: Lazy.list({ produce: () => this.connections.securityGroups.map(sg => sg.securityGroupId) }), ipAddressType: props.ipAddressType, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.ipAddressType = props.ipAddressType ?? IpAddressType.IPV4; diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store-revocation.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store-revocation.ts index 67cd5f7eda79d..a82e25ea06b49 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store-revocation.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store-revocation.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { ITrustStore } from './trust-store'; import { IBucket } from '../../../aws-s3'; import { Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnTrustStoreRevocation } from '../elasticloadbalancingv2.generated'; /** @@ -66,6 +67,8 @@ export class TrustStoreRevocation extends Resource { constructor(scope: Construct, id: string, props: TrustStoreRevocationProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnTrustStoreRevocation(this, 'Resource', { trustStoreArn: props.trustStore.trustStoreArn, diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store.ts index 75a0841f1b45e..692e535b363e4 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/trust-store.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { IBucket } from '../../../aws-s3'; import { IResource, Resource, Fn, Names, Lazy, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { CfnTrustStore } from '../elasticloadbalancingv2.generated'; /** @@ -104,6 +105,8 @@ export class TrustStore extends Resource implements ITrustStore { produce: () => Names.uniqueResourceName(this, { maxLength: 32 }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.trustStoreName !== undefined && !Token.isUnresolved(props.trustStoreName)) { diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts index 6b97718474c21..d2b64771e21cc 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-listener.ts @@ -5,6 +5,7 @@ import { INetworkLoadBalancer } from './network-load-balancer'; import { INetworkLoadBalancerTarget, INetworkTargetGroup, NetworkTargetGroup } from './network-target-group'; import * as cxschema from '../../../cloud-assembly-schema'; import { Duration, Resource, Lazy, Token } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { BaseListener, BaseListenerLookupOptions, IListener } from '../shared/base-listener'; import { HealthCheck } from '../shared/base-target-group'; import { AlpnPolicy, Protocol, SslPolicy } from '../shared/enums'; @@ -203,6 +204,8 @@ export class NetworkListener extends BaseListener implements INetworkListener { certificates: Lazy.any({ produce: () => this.certificateArns.map(certificateArn => ({ certificateArn })) }, { omitEmptyArray: true }), alpnPolicy: props.alpnPolicy ? [props.alpnPolicy] : undefined, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.certificateArns = []; this.loadBalancer = props.loadBalancer; diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts index 7a485b102155e..63a6d219d77ff 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/nlb/network-load-balancer.ts @@ -4,6 +4,7 @@ import * as cloudwatch from '../../../aws-cloudwatch'; import * as ec2 from '../../../aws-ec2'; import * as cxschema from '../../../cloud-assembly-schema'; import { Lazy, Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import * as cxapi from '../../../cx-api'; import { NetworkELBMetrics } from '../elasticloadbalancingv2-canned-metrics.generated'; import { BaseLoadBalancer, BaseLoadBalancerLookupOptions, BaseLoadBalancerProps, ILoadBalancerV2 } from '../shared/base-load-balancer'; @@ -274,6 +275,8 @@ export class NetworkLoadBalancer extends BaseLoadBalancer implements INetworkLoa }), enablePrefixForIpv6SourceNat: props.enablePrefixForIpv6SourceNat === true ? 'on': props.enablePrefixForIpv6SourceNat === false ? 'off' : undefined, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.enablePrefixForIpv6SourceNat = props.enablePrefixForIpv6SourceNat; this.metrics = new NetworkLoadBalancerMetrics(this, this.loadBalancerFullName); diff --git a/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts b/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts index 50d411a8f7463..b42cdbd0e9211 100644 --- a/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts +++ b/packages/aws-cdk-lib/aws-elasticsearch/lib/domain.ts @@ -14,6 +14,7 @@ import * as logs from '../../aws-logs'; import * as route53 from '../../aws-route53'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Elasticsearch version @@ -1466,6 +1467,8 @@ export class Domain extends DomainBase implements IDomain, ec2.IConnectable { super(scope, id, { physicalName: props.domainName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const defaultInstanceType = 'r5.large.elasticsearch'; const warmDefaultInstanceType = 'ultrawarm1.medium.elasticsearch'; diff --git a/packages/aws-cdk-lib/aws-events/lib/api-destination.ts b/packages/aws-cdk-lib/aws-events/lib/api-destination.ts index 3824c70762bbe..733f3e6943ec8 100644 --- a/packages/aws-cdk-lib/aws-events/lib/api-destination.ts +++ b/packages/aws-cdk-lib/aws-events/lib/api-destination.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { HttpMethod, IConnection } from './connection'; import { CfnApiDestination } from './events.generated'; import { ArnFormat, IResource, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The event API Destination properties @@ -131,6 +132,8 @@ export class ApiDestination extends Resource implements IApiDestination { super(scope, id, { physicalName: props.apiDestinationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.connection = props.connection; diff --git a/packages/aws-cdk-lib/aws-events/lib/archive.ts b/packages/aws-cdk-lib/aws-events/lib/archive.ts index bbdababa38f87..fd368b5412893 100644 --- a/packages/aws-cdk-lib/aws-events/lib/archive.ts +++ b/packages/aws-cdk-lib/aws-events/lib/archive.ts @@ -4,6 +4,7 @@ import { EventPattern } from './event-pattern'; import { CfnArchive } from './events.generated'; import { renderEventPattern } from './util'; import { Duration, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The event archive base properties @@ -62,6 +63,8 @@ export class Archive extends Resource { constructor(scope: Construct, id: string, props: ArchiveProps) { super(scope, id, { physicalName: props.archiveName }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let archive = new CfnArchive(this, 'Archive', { sourceArn: props.sourceEventBus.eventBusArn, diff --git a/packages/aws-cdk-lib/aws-events/lib/connection.ts b/packages/aws-cdk-lib/aws-events/lib/connection.ts index 08f4a2e21d950..bcc18ad82a92d 100644 --- a/packages/aws-cdk-lib/aws-events/lib/connection.ts +++ b/packages/aws-cdk-lib/aws-events/lib/connection.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnConnection } from './events.generated'; import { IResource, Resource, Stack, SecretValue } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * An API Destination Connection @@ -342,6 +343,8 @@ export class Connection extends Resource implements IConnection { super(scope, id, { physicalName: props.connectionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const authBind = props.authorization._bind(); diff --git a/packages/aws-cdk-lib/aws-events/lib/event-bus.ts b/packages/aws-cdk-lib/aws-events/lib/event-bus.ts index 9af6134018d18..6a71418440cd0 100644 --- a/packages/aws-cdk-lib/aws-events/lib/event-bus.ts +++ b/packages/aws-cdk-lib/aws-events/lib/event-bus.ts @@ -5,6 +5,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sqs from '../../aws-sqs'; import { ArnFormat, IResource, Lazy, Names, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface which all EventBus based classes MUST implement @@ -345,6 +346,8 @@ export class EventBus extends EventBusBase { ); super(scope, id, { physicalName: eventBusName }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props?.description && !Token.isUnresolved(props.description) && props.description.length > 512) { throw new Error(`description must be less than or equal to 512 characters, got ${props.description.length}`); diff --git a/packages/aws-cdk-lib/aws-events/lib/rule.ts b/packages/aws-cdk-lib/aws-events/lib/rule.ts index 67b26279e0322..39f012d2ecba2 100644 --- a/packages/aws-cdk-lib/aws-events/lib/rule.ts +++ b/packages/aws-cdk-lib/aws-events/lib/rule.ts @@ -9,6 +9,7 @@ import { IRuleTarget } from './target'; import { mergeEventPattern, renderEventPattern } from './util'; import { IRole, PolicyStatement, Role, ServicePrincipal } from '../../aws-iam'; import { App, IResource, Lazy, Names, Resource, Stack, Token, TokenComparison, PhysicalName, ArnFormat, Annotations } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for defining an EventBridge Rule @@ -95,6 +96,8 @@ export class Rule extends Resource implements IRule { super(determineRuleScope(scope, props), id, { physicalName: props.ruleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.eventBus && props.schedule) { throw new Error('Cannot associate rule with \'eventBus\' when using \'schedule\''); diff --git a/packages/aws-cdk-lib/aws-fsx/lib/lustre-file-system.ts b/packages/aws-cdk-lib/aws-fsx/lib/lustre-file-system.ts index 98aea5cde3d56..82ce7ed12bf62 100644 --- a/packages/aws-cdk-lib/aws-fsx/lib/lustre-file-system.ts +++ b/packages/aws-cdk-lib/aws-fsx/lib/lustre-file-system.ts @@ -5,6 +5,7 @@ import { CfnFileSystem } from './fsx.generated'; import { LustreMaintenanceTime } from './maintenance-time'; import { Connections, ISecurityGroup, ISubnet, Port, SecurityGroup } from '../../aws-ec2'; import { Aws, Duration, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The Lustre version for the file system. @@ -316,6 +317,8 @@ export class LustreFileSystem extends FileSystemBase { constructor(scope: Construct, id: string, props: LustreFileSystemProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateProps(props); diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts index ecf2c587bfed1..f9bf6d59608d7 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/accelerator.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import * as ga from './globalaccelerator.generated'; import { Listener, ListenerOptions } from './listener'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The interface of the Accelerator @@ -188,6 +189,8 @@ export class Accelerator extends cdk.Resource implements IAccelerator { constructor(scope: Construct, id: string, props: AcceleratorProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateAcceleratorName(props.acceleratorName); this.validateIpAddresses(props.ipAddresses); diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts index 4ac721b035ce5..b47f95c4d74f8 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/endpoint-group.ts @@ -5,6 +5,7 @@ import * as ga from './globalaccelerator.generated'; import { IListener } from './listener'; import * as ec2 from '../../aws-ec2'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The interface of the EndpointGroup @@ -178,6 +179,8 @@ export class EndpointGroup extends cdk.Resource implements IEndpointGroup { constructor(scope: Construct, id: string, props: EndpointGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new ga.CfnEndpointGroup(this, 'Resource', { listenerArn: props.listener.listenerArn, diff --git a/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts b/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts index fd8be5d28bc0a..9b98e5a351ae5 100644 --- a/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts +++ b/packages/aws-cdk-lib/aws-globalaccelerator/lib/listener.ts @@ -3,6 +3,7 @@ import { IAccelerator } from './accelerator'; import { EndpointGroup, EndpointGroupOptions } from './endpoint-group'; import * as ga from './globalaccelerator.generated'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface of the Listener @@ -138,6 +139,8 @@ export class Listener extends cdk.Resource implements IListener { constructor(scope: Construct, id: string, props: ListenerProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new ga.CfnListener(this, 'Resource', { acceleratorArn: props.accelerator.acceleratorArn, diff --git a/packages/aws-cdk-lib/aws-iam/lib/access-key.ts b/packages/aws-cdk-lib/aws-iam/lib/access-key.ts index a02237b947d97..ec6889b75eedc 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/access-key.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/access-key.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnAccessKey } from './iam.generated'; import { IUser } from './user'; import { IResource, Resource, SecretValue } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Valid statuses for an IAM Access Key. @@ -79,6 +80,8 @@ export class AccessKey extends Resource implements IAccessKey { constructor(scope: Construct, id: string, props: AccessKeyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const accessKey = new CfnAccessKey(this, 'Resource', { userName: props.user.userName, serial: props.serial, diff --git a/packages/aws-cdk-lib/aws-iam/lib/group.ts b/packages/aws-cdk-lib/aws-iam/lib/group.ts index 985746176b252..4d61aba8f8483 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/group.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/group.ts @@ -8,6 +8,7 @@ import { AddToPrincipalPolicyResult, ArnPrincipal, IPrincipal, PrincipalPolicyFr import { AttachedPolicies } from './private/util'; import { IUser } from './user'; import { Annotations, ArnFormat, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM Group. @@ -183,6 +184,8 @@ export class Group extends GroupBase { super(scope, id, { physicalName: props.groupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.managedPolicies.push(...props.managedPolicies || []); diff --git a/packages/aws-cdk-lib/aws-iam/lib/instance-profile.ts b/packages/aws-cdk-lib/aws-iam/lib/instance-profile.ts index 6a4d979c7241c..a0af61b82dd24 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/instance-profile.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/instance-profile.ts @@ -3,6 +3,7 @@ import { CfnInstanceProfile } from './iam.generated'; import { ServicePrincipal } from './principals'; import { IRole, Role } from './role'; import { Resource, Arn, Stack, IResource, PhysicalName } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM Instance Profile @@ -169,6 +170,8 @@ export class InstanceProfile extends InstanceProfileBase { constructor(scope: Construct, id: string, props: InstanceProfileProps = {}) { super(scope, id, { physicalName: props.instanceProfileName }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._role = props.role || new Role(this, 'InstanceRole', { roleName: PhysicalName.GENERATE_IF_NEEDED, diff --git a/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts b/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts index 771bc0a41e92a..4ddedf184b687 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/lazy-role.ts @@ -6,6 +6,7 @@ import { PolicyStatement } from './policy-statement'; import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from './principals'; import { IRole, Role, RoleProps } from './role'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for defining a LazyRole @@ -37,6 +38,8 @@ export class LazyRole extends cdk.Resource implements IRole { constructor(scope: Construct, id: string, private readonly props: LazyRoleProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } /** diff --git a/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts b/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts index 4c335cf38b489..ac7b2be848382 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/managed-policy.ts @@ -9,6 +9,7 @@ import { IRole } from './role'; import { IUser } from './user'; import { ArnFormat, Resource, Stack, Arn, Aws } from '../../core'; import { getCustomizeRolesConfig, PolicySynthesizer } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A managed policy @@ -214,6 +215,8 @@ export class ManagedPolicy extends Resource implements IManagedPolicy, IGrantabl super(scope, id, { physicalName: props.managedPolicyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.description = props.description || ''; this.path = props.path || '/'; diff --git a/packages/aws-cdk-lib/aws-iam/lib/oidc-provider.ts b/packages/aws-cdk-lib/aws-iam/lib/oidc-provider.ts index b8c5494038a24..1cef94ff193b4 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/oidc-provider.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/oidc-provider.ts @@ -6,6 +6,7 @@ import { Resource, Token, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { OidcProvider } from '../../custom-resource-handlers/dist/aws-iam/oidc-provider.generated'; const RESOURCE_TYPE = 'Custom::AWSCDKOpenIdConnectProvider'; @@ -137,6 +138,8 @@ export class OpenIdConnectProvider extends Resource implements IOpenIdConnectPro */ public constructor(scope: Construct, id: string, props: OpenIdConnectProviderProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const provider = this.getOrCreateProvider(); const resource = new CustomResource(this, 'Resource', { diff --git a/packages/aws-cdk-lib/aws-iam/lib/policy.ts b/packages/aws-cdk-lib/aws-iam/lib/policy.ts index a8dd67f5fecbf..20c6b49f04eb5 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/policy.ts @@ -8,6 +8,7 @@ import { generatePolicyName, undefinedIfEmpty } from './private/util'; import { IRole } from './role'; import { IUser } from './user'; import { IResource, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM Policy @@ -137,6 +138,8 @@ export class Policy extends Resource implements IPolicy, IGrantable { // that shouod be sufficient to ensure uniqueness within a principal. Lazy.string({ produce: () => generatePolicyName(scope, resource.logicalId) }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const self = this; diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts index 1528e83485c0c..fe03bffb60577 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/immutable-role.ts @@ -1,5 +1,6 @@ import { Construct, Dependable, DependencyGroup } from 'constructs'; import { Resource } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { Grant } from '../grant'; import { IManagedPolicy } from '../managed-policy'; import { Policy } from '../policy'; @@ -34,6 +35,8 @@ export class ImmutableRole extends Resource implements IRole { account: role.env.account, region: role.env.region, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, role); // implement IDependable privately Dependable.implement(this, { diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts index 52cd4d332a140..b3f26f068d2e1 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/imported-role.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { MAX_POLICY_NAME_LEN } from './util'; import { FeatureFlags, Names, Resource, Token, TokenComparison, Annotations } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { IAM_IMPORTED_ROLE_STACK_SAFE_DEFAULT_POLICY_NAME } from '../../../cx-api'; import { Grant } from '../grant'; import { IManagedPolicy, ManagedPolicy } from '../managed-policy'; @@ -31,6 +32,8 @@ export class ImportedRole extends Resource implements IRole, IComparablePrincipa super(scope, id, { account: props.account, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.roleArn = props.roleArn; this.roleName = props.roleName; diff --git a/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts b/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts index 3fa24cffbf1d7..18bfbd7cd78cb 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/private/precreated-role.ts @@ -1,6 +1,7 @@ import { Construct, Dependable, DependencyGroup } from 'constructs'; import { Resource, Stack } from '../../../core'; import { PolicySynthesizer } from '../../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; import { Grant } from '../grant'; import { IManagedPolicy } from '../managed-policy'; import { Policy } from '../policy'; @@ -74,6 +75,8 @@ export class PrecreatedRole extends Resource implements IRole { account: props.role.env.account, region: props.role.env.region, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.role = props.role; this.assumeRoleAction = this.role.assumeRoleAction; this.policyFragment = this.role.policyFragment; diff --git a/packages/aws-cdk-lib/aws-iam/lib/role.ts b/packages/aws-cdk-lib/aws-iam/lib/role.ts index 94a0f8af47723..510ec7a1e6060 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/role.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/role.ts @@ -15,6 +15,7 @@ import { PrecreatedRole } from './private/precreated-role'; import { AttachedPolicies, UniqueStringSet } from './private/util'; import { ArnFormat, Duration, Resource, Stack, Token, TokenComparison, Aspects, Annotations, RemovalPolicy, AspectPriority } from '../../core'; import { getCustomizeRolesConfig, getPrecreatedRoleConfig, CUSTOMIZE_ROLES_CONTEXT_KEY, CustomizeRoleConfig } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; const MAX_INLINE_SIZE = 10000; const MAX_MANAGEDPOL_SIZE = 6000; @@ -412,6 +413,8 @@ export class Role extends Resource implements IRole { super(scope, id, { physicalName: props.roleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.roleName && !Token.isUnresolved(props.roleName) && !/^[\w+=,.@-]{1,64}$/.test(props.roleName)) { throw new Error('Invalid roleName. The name must be a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. Length must be between 1 and 64 characters.'); diff --git a/packages/aws-cdk-lib/aws-iam/lib/saml-provider.ts b/packages/aws-cdk-lib/aws-iam/lib/saml-provider.ts index a3826b7ed7087..ad711b11cba3f 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/saml-provider.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/saml-provider.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import { Construct } from 'constructs'; import { CfnSAMLProvider } from './iam.generated'; import { IResource, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A SAML provider @@ -85,6 +86,8 @@ export class SamlProvider extends Resource implements ISamlProvider { constructor(scope: Construct, id: string, props: SamlProviderProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.name && !Token.isUnresolved(props.name) && !/^[\w+=,.@-]{1,128}$/.test(props.name)) { throw new Error('Invalid SAML provider name. The name must be a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. Length must be between 1 and 128 characters.'); diff --git a/packages/aws-cdk-lib/aws-iam/lib/user.ts b/packages/aws-cdk-lib/aws-iam/lib/user.ts index edbd0f59a4f25..c0a8ad4ea5b23 100644 --- a/packages/aws-cdk-lib/aws-iam/lib/user.ts +++ b/packages/aws-cdk-lib/aws-iam/lib/user.ts @@ -8,6 +8,7 @@ import { PolicyStatement } from './policy-statement'; import { AddToPrincipalPolicyResult, ArnPrincipal, IPrincipal, PrincipalPolicyFragment } from './principals'; import { AttachedPolicies, undefinedIfEmpty } from './private/util'; import { Arn, ArnFormat, Lazy, Resource, SecretValue, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Represents an IAM user @@ -258,6 +259,8 @@ export class User extends Resource implements IIdentity, IUser { super(scope, id, { physicalName: props.userName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.managedPolicies.push(...props.managedPolicies || []); this.permissionsBoundary = props.permissionsBoundary; diff --git a/packages/aws-cdk-lib/aws-kinesis/lib/resource-policy.ts b/packages/aws-cdk-lib/aws-kinesis/lib/resource-policy.ts index 3987268f52bfe..cc678bf21103b 100644 --- a/packages/aws-cdk-lib/aws-kinesis/lib/resource-policy.ts +++ b/packages/aws-cdk-lib/aws-kinesis/lib/resource-policy.ts @@ -3,6 +3,7 @@ import { CfnResourcePolicy } from './kinesis.generated'; import { IStream } from './stream'; import { PolicyDocument } from '../../aws-iam'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties to associate a data stream with a policy @@ -43,6 +44,8 @@ export class ResourcePolicy extends Resource { constructor(scope: Construct, id: string, props: ResourcePolicyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.document = props.policyDocument ?? this.document; diff --git a/packages/aws-cdk-lib/aws-kinesis/lib/stream.ts b/packages/aws-cdk-lib/aws-kinesis/lib/stream.ts index 0fb74df769f50..39eeb8609f5c8 100644 --- a/packages/aws-cdk-lib/aws-kinesis/lib/stream.ts +++ b/packages/aws-cdk-lib/aws-kinesis/lib/stream.ts @@ -6,6 +6,7 @@ import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, Aws, CfnCondition, Duration, Fn, IResolvable, IResource, RemovalPolicy, Resource, ResourceProps, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; const READ_OPERATIONS = [ 'kinesis:DescribeStreamSummary', @@ -813,6 +814,8 @@ export class Stream extends StreamBase { super(scope, id, { physicalName: props.streamName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let shardCount = props.shardCount; const streamMode = props.streamMode; diff --git a/packages/aws-cdk-lib/aws-kms/lib/alias.ts b/packages/aws-cdk-lib/aws-kms/lib/alias.ts index 1c98b4ebfadd0..a9d81f084e733 100644 --- a/packages/aws-cdk-lib/aws-kms/lib/alias.ts +++ b/packages/aws-cdk-lib/aws-kms/lib/alias.ts @@ -3,6 +3,7 @@ import { IKey } from './key'; import { CfnAlias } from './kms.generated'; import * as iam from '../../aws-iam'; import { FeatureFlags, RemovalPolicy, Resource, Stack, Token, Tokenization } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { KMS_ALIAS_NAME_REF } from '../../cx-api'; const REQUIRED_ALIAS_PREFIX = 'alias/'; @@ -251,6 +252,8 @@ export class Alias extends AliasBase { super(scope, id, { physicalName: aliasName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.aliasTargetKey = props.targetKey; diff --git a/packages/aws-cdk-lib/aws-kms/lib/key.ts b/packages/aws-cdk-lib/aws-kms/lib/key.ts index 68c5a102f0e47..91821b6a48451 100644 --- a/packages/aws-cdk-lib/aws-kms/lib/key.ts +++ b/packages/aws-cdk-lib/aws-kms/lib/key.ts @@ -19,6 +19,7 @@ import { Stack, Token, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -766,6 +767,8 @@ export class Key extends KeyBase { constructor(scope: Construct, id: string, props: KeyProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const denyLists = { [KeyUsage.ENCRYPT_DECRYPT]: [ diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts index 8faf919bd2d3e..aaae836515032 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts @@ -8,6 +8,7 @@ import { callsites, findUpMultiple, isSdkV2Runtime } from './util'; import { Architecture } from '../../aws-lambda'; import * as lambda from '../../aws-lambda'; import { Annotations, FeatureFlags } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { LAMBDA_NODEJS_USE_LATEST_RUNTIME } from '../../cx-api'; /** @@ -154,6 +155,8 @@ export class NodejsFunction extends lambda.Function { handler: handler.indexOf('.') !== -1 ? `${handler}` : `index.${handler}`, }); } + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Enable connection reuse for aws-sdk v2, do not set for sdk v3 if (isSdkV2Runtime(runtime)) { diff --git a/packages/aws-cdk-lib/aws-lambda/lib/alias.ts b/packages/aws-cdk-lib/aws-lambda/lib/alias.ts index fbfa249286c99..096885d51ebd4 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/alias.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/alias.ts @@ -10,6 +10,7 @@ import * as appscaling from '../../aws-applicationautoscaling'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { ArnFormat } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IAlias extends IFunction { /** @@ -145,6 +146,8 @@ export class Alias extends QualifiedFunctionBase implements IAlias { super(scope, id, { physicalName: props.aliasName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.lambda = props.version.lambda; this.aliasName = this.physicalName; diff --git a/packages/aws-cdk-lib/aws-lambda/lib/code-signing-config.ts b/packages/aws-cdk-lib/aws-lambda/lib/code-signing-config.ts index 573a198f16955..2455a7433e0ed 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/code-signing-config.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/code-signing-config.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnCodeSigningConfig } from './lambda.generated'; import { ISigningProfile } from '../../aws-signer'; import { ArnFormat, IResource, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Code signing configuration policy for deployment validation failure. @@ -100,6 +101,8 @@ export class CodeSigningConfig extends Resource implements ICodeSigningConfig { constructor(scope: Construct, id: string, props: CodeSigningConfigProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const signingProfileVersionArns = props.signingProfiles.map(signingProfile => { return signingProfile.signingProfileVersionArn; diff --git a/packages/aws-cdk-lib/aws-lambda/lib/event-invoke-config.ts b/packages/aws-cdk-lib/aws-lambda/lib/event-invoke-config.ts index 1393ce6328b1e..473c9958ff6df 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/event-invoke-config.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/event-invoke-config.ts @@ -3,6 +3,7 @@ import { DestinationType, IDestination } from './destination'; import { IFunction } from './function-base'; import { CfnEventInvokeConfig } from './lambda.generated'; import { Duration, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options to add an EventInvokeConfig to a function. @@ -72,6 +73,8 @@ export interface EventInvokeConfigProps extends EventInvokeConfigOptions { export class EventInvokeConfig extends Resource { constructor(scope: Construct, id: string, props: EventInvokeConfigProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.maxEventAge && (props.maxEventAge.toSeconds() < 60 || props.maxEventAge.toSeconds() > 21600)) { throw new Error('`maximumEventAge` must represent a `Duration` that is between 60 and 21600 seconds.'); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/event-source-mapping.ts b/packages/aws-cdk-lib/aws-lambda/lib/event-source-mapping.ts index 2e28bc5b5cf43..3b5edd3c5a91e 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/event-source-mapping.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/event-source-mapping.ts @@ -5,6 +5,7 @@ import { CfnEventSourceMapping } from './lambda.generated'; import * as iam from '../../aws-iam'; import { IKey } from '../../aws-kms'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The type of authentication protocol or the VPC components for your event source's SourceAccessConfiguration @@ -400,6 +401,8 @@ export class EventSourceMapping extends cdk.Resource implements IEventSourceMapp constructor(scope: Construct, id: string, props: EventSourceMappingProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.eventSourceArn == undefined && props.kafkaBootstrapServers == undefined) { throw new Error('Either eventSourceArn or kafkaBootstrapServers must be set'); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts b/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts index 288c425232003..b7bcb79dead43 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function-url.ts @@ -5,6 +5,7 @@ import { IVersion } from './lambda-version'; import { CfnUrl } from './lambda.generated'; import * as iam from '../../aws-iam'; import { Duration, IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The auth types for a function url @@ -218,6 +219,8 @@ export class FunctionUrl extends Resource implements IFunctionUrl { constructor(scope: Construct, id: string, props: FunctionUrlProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (this.instanceOfVersion(props.function)) { throw new Error('FunctionUrl cannot be used with a Version'); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function.ts b/packages/aws-cdk-lib/aws-lambda/lib/function.ts index 68dc147ac5d3b..c3a66ad404e0a 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function.ts @@ -31,6 +31,7 @@ import * as sns from '../../aws-sns'; import * as sqs from '../../aws-sqs'; import { Annotations, ArnFormat, CfnResource, Duration, FeatureFlags, Fn, IAspect, Lazy, Names, Size, Stack, Token } from '../../core'; import { ValidationError } from '../../core/lib/errors'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { LAMBDA_RECOGNIZE_LAYER_VERSION } from '../../cx-api'; /** @@ -915,6 +916,8 @@ export class Function extends FunctionBase { super(scope, id, { physicalName: props.functionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.functionName && !Token.isUnresolved(props.functionName)) { if (props.functionName.length > 64) { diff --git a/packages/aws-cdk-lib/aws-lambda/lib/image-function.ts b/packages/aws-cdk-lib/aws-lambda/lib/image-function.ts index f20496fc71a6e..edb668eca8336 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/image-function.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/image-function.ts @@ -6,6 +6,7 @@ import { Handler } from './handler'; import { Runtime } from './runtime'; import * as ecr from '../../aws-ecr'; import { Platform } from '../../aws-ecr-assets'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties to configure a new DockerImageFunction construct. @@ -71,5 +72,7 @@ export class DockerImageFunction extends Function { runtime: Runtime.FROM_IMAGE, code: props.code._bind(props.architecture), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); } } diff --git a/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts b/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts index f0ad496b72017..c2da032a95953 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/lambda-version.ts @@ -8,6 +8,7 @@ import { CfnVersion } from './lambda.generated'; import { addAlias } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import { Fn, Lazy, RemovalPolicy, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IVersion extends IFunction { /** @@ -189,6 +190,8 @@ export class Version extends QualifiedFunctionBase implements IVersion { constructor(scope: Construct, id: string, props: VersionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.lambda = props.lambda; this.architecture = props.lambda.architecture; diff --git a/packages/aws-cdk-lib/aws-lambda/lib/layers.ts b/packages/aws-cdk-lib/aws-lambda/lib/layers.ts index 8fa00ec929949..7442db33b0372 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/layers.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/layers.ts @@ -4,6 +4,7 @@ import { Code } from './code'; import { CfnLayerVersion, CfnLayerVersionPermission } from './lambda.generated'; import { Runtime } from './runtime'; import { IResource, RemovalPolicy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Non runtime options @@ -185,6 +186,8 @@ export class LayerVersion extends LayerVersionBase { super(scope, id, { physicalName: props.layerVersionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.compatibleRuntimes && props.compatibleRuntimes.length === 0) { throw new Error('Attempted to define a Lambda layer that supports no runtime!'); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts b/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts index 9393baea36007..af5d45191fd99 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/singleton-lambda.ts @@ -10,6 +10,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a newly created singleton Lambda @@ -68,6 +69,8 @@ export class SingletonFunction extends FunctionBase { constructor(scope: Construct, id: string, props: SingletonFunctionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.constructName = (props.lambdaPurpose || 'SingletonLambda') + slugify(props.uuid); this.lambdaFunction = this.ensureLambda(props); diff --git a/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts b/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts index a525de583b043..e4084eddfbf38 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/cross-account-destination.ts @@ -5,6 +5,7 @@ import { ILogSubscriptionDestination, LogSubscriptionDestinationConfig } from '. import * as iam from '../../aws-iam'; import { ArnFormat } from '../../core'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a CrossAccountDestination @@ -72,6 +73,8 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri // In the underlying model, the name is not optional, but we make it so anyway. cdk.Lazy.string({ produce: () => this.generateUniqueName() }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.resource = new CfnDestination(this, 'Resource', { destinationName: this.physicalName!, diff --git a/packages/aws-cdk-lib/aws-logs/lib/log-group.ts b/packages/aws-cdk-lib/aws-logs/lib/log-group.ts index b04c6e2f426ee..4ed7bc767171d 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/log-group.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/log-group.ts @@ -10,6 +10,7 @@ import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { Annotations, Arn, ArnFormat, RemovalPolicy, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface ILogGroup extends iam.IResourceWithPolicy { /** @@ -606,6 +607,8 @@ export class LogGroup extends LogGroupBase { super(scope, id, { physicalName: props.logGroupName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); let retentionInDays = props.retention; if (retentionInDays === undefined) { retentionInDays = RetentionDays.TWO_YEARS; } diff --git a/packages/aws-cdk-lib/aws-logs/lib/log-stream.ts b/packages/aws-cdk-lib/aws-logs/lib/log-stream.ts index 7696826d14b85..9927c8027c1f6 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/log-stream.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/log-stream.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { ILogGroup } from './log-group'; import { CfnLogStream } from './logs.generated'; import { IResource, RemovalPolicy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface ILogStream extends IResource { /** @@ -68,6 +69,8 @@ export class LogStream extends Resource implements ILogStream { super(scope, id, { physicalName: props.logStreamName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnLogStream(this, 'Resource', { logGroupName: props.logGroup.logGroupName, diff --git a/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts b/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts index ba9f0dfe9171f..589442f99d225 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/metric-filter.ts @@ -3,6 +3,7 @@ import { ILogGroup, MetricFilterOptions } from './log-group'; import { CfnMetricFilter } from './logs.generated'; import { Metric, MetricOptions } from '../../aws-cloudwatch'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a MetricFilter @@ -26,6 +27,8 @@ export class MetricFilter extends Resource { super(scope, id, { physicalName: props.filterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.metricName = props.metricName; this.metricNamespace = props.metricNamespace; diff --git a/packages/aws-cdk-lib/aws-logs/lib/policy.ts b/packages/aws-cdk-lib/aws-logs/lib/policy.ts index 0e9515470d54e..c0d84d7001978 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/policy.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnResourcePolicy } from './logs.generated'; import { PolicyDocument, PolicyStatement } from '../../aws-iam'; import { Resource, Lazy, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties to define Cloudwatch log group resource policy @@ -45,6 +46,8 @@ export class ResourcePolicy extends Resource { super(scope, id, { physicalName: props?.resourcePolicyName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const l1 = new CfnResourcePolicy(this, 'ResourcePolicy', { policyName: Lazy.string({ diff --git a/packages/aws-cdk-lib/aws-logs/lib/query-definition.ts b/packages/aws-cdk-lib/aws-logs/lib/query-definition.ts index 502e2950c19a7..e09a69abf52f9 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/query-definition.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/query-definition.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnQueryDefinition } from '.'; import { ILogGroup } from './log-group'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a QueryString @@ -202,6 +203,8 @@ export class QueryDefinition extends Resource { super(scope, id, { physicalName: props.queryDefinitionName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const queryDefinition = new CfnQueryDefinition(this, 'Resource', { name: props.queryDefinitionName, diff --git a/packages/aws-cdk-lib/aws-logs/lib/subscription-filter.ts b/packages/aws-cdk-lib/aws-logs/lib/subscription-filter.ts index 68ca728c858f4..5c3907ffde784 100644 --- a/packages/aws-cdk-lib/aws-logs/lib/subscription-filter.ts +++ b/packages/aws-cdk-lib/aws-logs/lib/subscription-filter.ts @@ -4,6 +4,7 @@ import { CfnSubscriptionFilter } from './logs.generated'; import * as iam from '../../aws-iam'; import { KinesisDestination } from '../../aws-logs-destinations'; import { Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface for classes that can be the destination of a log Subscription @@ -57,6 +58,8 @@ export class SubscriptionFilter extends Resource { super(scope, id, { physicalName: props.filterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if ( props.distribution && diff --git a/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts b/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts index fe00ce2a39f6e..a5c42603974fe 100644 --- a/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts +++ b/packages/aws-cdk-lib/aws-opensearchservice/lib/domain.ts @@ -15,6 +15,7 @@ import * as logs from '../../aws-logs'; import * as route53 from '../../aws-route53'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -1390,6 +1391,8 @@ export class Domain extends DomainBase implements IDomain, ec2.IConnectable { super(scope, id, { physicalName: props.domainName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const defaultInstanceType = 'r5.large.search'; const warmDefaultInstanceType = 'ultrawarm1.medium.search'; diff --git a/packages/aws-cdk-lib/aws-rds/lib/aurora-cluster-instance.ts b/packages/aws-cdk-lib/aws-rds/lib/aurora-cluster-instance.ts index 184a3530acb5d..d2944d85ba05c 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/aurora-cluster-instance.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/aurora-cluster-instance.ts @@ -11,6 +11,7 @@ import * as ec2 from '../../aws-ec2'; import { IRole } from '../../aws-iam'; import * as kms from '../../aws-kms'; import { IResource, Resource, Duration, RemovalPolicy, ArnFormat, FeatureFlags } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AURORA_CLUSTER_CHANGE_SCOPE_OF_INSTANCE_PARAMETER_GROUP_WITH_EACH_PARAMETERS } from '../../cx-api'; /** @@ -474,6 +475,8 @@ class AuroraClusterInstance extends Resource implements IAuroraClusterInstance { { physicalName: props.instanceIdentifier, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.tier = props.promotionTier ?? 2; if (this.tier > 15) { throw new Error('promotionTier must be between 0-15'); diff --git a/packages/aws-cdk-lib/aws-rds/lib/cluster.ts b/packages/aws-cdk-lib/aws-rds/lib/cluster.ts index 7284a8c42b1e3..b5ec7e8f0be1b 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/cluster.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/cluster.ts @@ -20,6 +20,7 @@ import * as logs from '../../aws-logs'; import * as s3 from '../../aws-s3'; import * as secretsmanager from '../../aws-secretsmanager'; import { Annotations, ArnFormat, Duration, FeatureFlags, Lazy, RemovalPolicy, Resource, Stack, Token, TokenComparison } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -1190,6 +1191,8 @@ class ImportedDatabaseCluster extends DatabaseClusterBase implements IDatabaseCl constructor(scope: Construct, id: string, attrs: DatabaseClusterAttributes) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, attrs); this.clusterIdentifier = attrs.clusterIdentifier; this._clusterResourceIdentifier = attrs.clusterResourceIdentifier; diff --git a/packages/aws-cdk-lib/aws-rds/lib/database-secret.ts b/packages/aws-cdk-lib/aws-rds/lib/database-secret.ts index f1253ca3ea349..bdca03c667b9f 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/database-secret.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/database-secret.ts @@ -4,6 +4,7 @@ import * as kms from '../../aws-kms'; import * as secretsmanager from '../../aws-secretsmanager'; import { Aws, Names } from '../../core'; import { md5hash } from '../../core/lib/helpers-internal'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a DatabaseSecret. @@ -94,6 +95,8 @@ export class DatabaseSecret extends secretsmanager.Secret { }, replicaRegions: props.replicaRegions, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.replaceOnPasswordCriteriaChanges) { const hash = md5hash(JSON.stringify({ diff --git a/packages/aws-cdk-lib/aws-rds/lib/instance.ts b/packages/aws-cdk-lib/aws-rds/lib/instance.ts index cfd41de9e680c..312ad80305f8f 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/instance.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/instance.ts @@ -18,6 +18,7 @@ import * as logs from '../../aws-logs'; import * as s3 from '../../aws-s3'; import * as secretsmanager from '../../aws-secretsmanager'; import { ArnComponents, ArnFormat, Duration, FeatureFlags, IResource, Lazy, RemovalPolicy, Resource, Stack, Token, Tokenization } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -1174,6 +1175,8 @@ export class DatabaseInstance extends DatabaseInstanceSource implements IDatabas constructor(scope: Construct, id: string, props: DatabaseInstanceProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const credentials = renderCredentials(this, props.engine, props.credentials); const secret = credentials.secret; diff --git a/packages/aws-cdk-lib/aws-rds/lib/option-group.ts b/packages/aws-cdk-lib/aws-rds/lib/option-group.ts index 8b4ca531e804a..d8cf468619e15 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/option-group.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/option-group.ts @@ -3,6 +3,7 @@ import { IInstanceEngine } from './instance-engine'; import { CfnOptionGroup } from './rds.generated'; import * as ec2 from '../../aws-ec2'; import { IResource, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * An option group @@ -123,6 +124,8 @@ export class OptionGroup extends Resource implements IOptionGroup { constructor(scope: Construct, id: string, props: OptionGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const majorEngineVersion = props.engine.engineVersion?.majorVersion; if (!majorEngineVersion) { diff --git a/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts b/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts index ef1f43aac56b1..8dc190307db45 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/parameter-group.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { IEngine } from './engine'; import { CfnDBClusterParameterGroup, CfnDBParameterGroup } from './rds.generated'; import { IResource, Lazy, RemovalPolicy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for `IParameterGroup.bindToCluster`. @@ -140,6 +141,8 @@ export class ParameterGroup extends Resource implements IParameterGroup { constructor(scope: Construct, id: string, props: ParameterGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const family = props.engine.parameterGroupFamily; if (!family) { diff --git a/packages/aws-cdk-lib/aws-rds/lib/proxy.ts b/packages/aws-cdk-lib/aws-rds/lib/proxy.ts index 6c8ffe2fb1695..a86a32c57d435 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/proxy.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/proxy.ts @@ -8,6 +8,7 @@ import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as secretsmanager from '../../aws-secretsmanager'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -446,6 +447,8 @@ export class DatabaseProxy extends DatabaseProxyBase constructor(scope: Construct, id: string, props: DatabaseProxyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const physicalName = props.dbProxyName || ( cdk.FeatureFlags.of(this).isEnabled(cxapi.DATABASE_PROXY_UNIQUE_RESOURCE_NAME) ? diff --git a/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts b/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts index 572b0bb2fc3c2..90b08d3c216a7 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/serverless-cluster.ts @@ -13,6 +13,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as secretsmanager from '../../aws-secretsmanager'; import { Resource, Duration, Token, Annotations, RemovalPolicy, IResource, Stack, Lazy, FeatureFlags, ArnFormat } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; /** @@ -557,6 +558,8 @@ export class ServerlessCluster extends ServerlessClusterNew { constructor(scope: Construct, id: string, props: ServerlessClusterProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.vpc = props.vpc; this.vpcSubnets = props.vpcSubnets; diff --git a/packages/aws-cdk-lib/aws-rds/lib/subnet-group.ts b/packages/aws-cdk-lib/aws-rds/lib/subnet-group.ts index d0bf8c7e9928b..110b3225fd6d3 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/subnet-group.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/subnet-group.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { CfnDBSubnetGroup } from './rds.generated'; import * as ec2 from '../../aws-ec2'; import { IResource, RemovalPolicy, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Interface for a subnet group. @@ -71,6 +72,8 @@ export class SubnetGroup extends Resource implements ISubnetGroup { constructor(scope: Construct, id: string, props: SubnetGroupProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const { subnetIds } = props.vpc.selectSubnets(props.vpcSubnets ?? { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }); diff --git a/packages/aws-cdk-lib/aws-route53/lib/health-check.ts b/packages/aws-cdk-lib/aws-route53/lib/health-check.ts index 6c6caab8d43d8..7d6e412a944a4 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/health-check.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/health-check.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnHealthCheck } from './route53.generated'; import { Duration, IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Imported or created health check @@ -260,6 +261,8 @@ export class HealthCheck extends Resource implements IHealthCheck { */ constructor(scope: Construct, id: string, props: HealthCheckProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnHealthCheck(this, 'Resource', { healthCheckConfig: { diff --git a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts index 76c0e9caa3b25..dff151dbeb246 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts @@ -10,6 +10,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as cxschema from '../../cloud-assembly-schema'; import { ContextProvider, Duration, Lazy, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Common properties to create a Route 53 hosted zone @@ -199,6 +200,8 @@ export class HostedZone extends Resource implements IHostedZone { constructor(scope: Construct, id: string, props: HostedZoneProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); validateZoneName(props.zoneName); diff --git a/packages/aws-cdk-lib/aws-route53/lib/key-signing-key.ts b/packages/aws-cdk-lib/aws-route53/lib/key-signing-key.ts index 0f9ad36b3ead1..fb5d8c332e9e2 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/key-signing-key.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/key-signing-key.ts @@ -4,6 +4,7 @@ import { CfnKeySigningKey } from './route53.generated'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { Resource, IResource, Lazy, Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for constructing a Key Signing Key. @@ -135,6 +136,8 @@ export class KeySigningKey extends Resource implements IKeySigningKey { produce: () => Names.uniqueResourceName(this, { maxLength: 128, allowedSpecialCharacters: '_' }), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.grantKeyPermissionsForZone(props.kmsKey, props.hostedZone); diff --git a/packages/aws-cdk-lib/aws-route53/lib/record-set.ts b/packages/aws-cdk-lib/aws-route53/lib/record-set.ts index a421917f1151b..68b9079e8957a 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/record-set.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/record-set.ts @@ -7,6 +7,7 @@ import { CfnRecordSet } from './route53.generated'; import { determineFullyQualifiedDomainName } from './util'; import * as iam from '../../aws-iam'; import { CustomResource, Duration, IResource, Names, RemovalPolicy, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { CrossAccountZoneDelegationProvider } from '../../custom-resource-handlers/dist/aws-route53/cross-account-zone-delegation-provider.generated'; import { DeleteExistingRecordSetProvider } from '../../custom-resource-handlers/dist/aws-route53/delete-existing-record-set-provider.generated'; @@ -338,6 +339,8 @@ export class RecordSet extends Resource implements IRecordSet { constructor(scope: Construct, id: string, props: RecordSetProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.weight && !Token.isUnresolved(props.weight) && (props.weight < 0 || props.weight > 255)) { throw new Error(`weight must be between 0 and 255 inclusive, got: ${props.weight}`); diff --git a/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts b/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts index 72aaaedf9191f..bfc23cde8ded2 100644 --- a/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts +++ b/packages/aws-cdk-lib/aws-s3/lib/bucket-policy.ts @@ -3,6 +3,7 @@ import { Bucket, IBucket } from './bucket'; import { CfnBucket, CfnBucketPolicy } from './s3.generated'; import { PolicyDocument } from '../../aws-iam'; import { RemovalPolicy, Resource, Token, Tokenization } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { CfnReference } from '../../core/lib/private/cfn-reference'; export interface BucketPolicyProps { @@ -101,6 +102,8 @@ export class BucketPolicy extends Resource { constructor(scope: Construct, id: string, props: BucketPolicyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.bucket = props.bucket; diff --git a/packages/aws-cdk-lib/aws-s3/lib/bucket.ts b/packages/aws-cdk-lib/aws-s3/lib/bucket.ts index 82a39e5dc4473..e2c92c89b89d5 100644 --- a/packages/aws-cdk-lib/aws-s3/lib/bucket.ts +++ b/packages/aws-cdk-lib/aws-s3/lib/bucket.ts @@ -26,6 +26,7 @@ import { Tokenization, Annotations, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { CfnReference } from '../../core/lib/private/cfn-reference'; import { AutoDeleteObjectsProvider } from '../../custom-resource-handlers/dist/aws-s3/auto-delete-objects-provider.generated'; import * as cxapi from '../../cx-api'; @@ -1964,6 +1965,8 @@ export class Bucket extends BucketBase { super(scope, id, { physicalName: props.bucketName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.notificationsHandlerRole = props.notificationsHandlerRole; this.notificationsSkipDestinationValidation = props.notificationsSkipDestinationValidation; diff --git a/packages/aws-cdk-lib/aws-secretsmanager/lib/policy.ts b/packages/aws-cdk-lib/aws-secretsmanager/lib/policy.ts index 3c372466f9ad6..ad5fd6bc2cec5 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/lib/policy.ts @@ -3,6 +3,7 @@ import { ISecret } from './secret'; import { CfnResourcePolicy } from './secretsmanager.generated'; import * as iam from '../../aws-iam'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Construction properties for a ResourcePolicy @@ -36,6 +37,8 @@ export class ResourcePolicy extends Resource { constructor(scope: Construct, id: string, props: ResourcePolicyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnResourcePolicy(this, 'Resource', { resourcePolicy: this.document, diff --git a/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts b/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts index d28d077cd6aa3..e37a2ac5c3375 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts @@ -7,6 +7,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as lambda from '../../aws-lambda'; import { Duration, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The default set of characters we exclude from generated passwords for database users. @@ -89,6 +90,8 @@ export interface RotationScheduleProps extends RotationScheduleOptions { export class RotationSchedule extends Resource { constructor(scope: Construct, id: string, props: RotationScheduleProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if ((!props.rotationLambda && !props.hostedRotation) || (props.rotationLambda && props.hostedRotation)) { throw new Error('One of `rotationLambda` or `hostedRotation` must be specified.'); diff --git a/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts b/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts index 2749327c68259..ab7835cf8648d 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/lib/secret.ts @@ -5,6 +5,7 @@ import * as secretsmanager from './secretsmanager.generated'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { ArnFormat, FeatureFlags, Fn, IResolveContext, IResource, Lazy, RemovalPolicy, Resource, ResourceProps, SecretValue, Stack, Token, TokenComparison } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import * as cxapi from '../../cx-api'; const SECRET_SYMBOL = Symbol.for('@aws-cdk/secretsmanager.Secret'); @@ -624,6 +625,8 @@ export class Secret extends SecretBase { super(scope, id, { physicalName: props.secretName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.generateSecretString && (props.generateSecretString.secretStringTemplate || props.generateSecretString.generateStringKey) && diff --git a/packages/aws-cdk-lib/aws-servicecatalog/lib/portfolio.ts b/packages/aws-cdk-lib/aws-servicecatalog/lib/portfolio.ts index 9810f280db900..b82aa6b8e4403 100644 --- a/packages/aws-cdk-lib/aws-servicecatalog/lib/portfolio.ts +++ b/packages/aws-cdk-lib/aws-servicecatalog/lib/portfolio.ts @@ -14,6 +14,7 @@ import * as iam from '../../aws-iam'; import { IBucket } from '../../aws-s3'; import * as sns from '../../aws-sns'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for portfolio share. @@ -340,6 +341,8 @@ export class Portfolio extends PortfolioBase { constructor(scope: Construct, id: string, props: PortfolioProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validatePortfolioProps(props); diff --git a/packages/aws-cdk-lib/aws-servicecatalog/lib/product.ts b/packages/aws-cdk-lib/aws-servicecatalog/lib/product.ts index 4ceaab07975fc..c81393e43fbb4 100644 --- a/packages/aws-cdk-lib/aws-servicecatalog/lib/product.ts +++ b/packages/aws-cdk-lib/aws-servicecatalog/lib/product.ts @@ -7,6 +7,7 @@ import { CfnCloudFormationProduct } from './servicecatalog.generated'; import { TagOptions } from './tag-options'; import { IBucket } from '../../aws-s3'; import { ArnFormat, IResource, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A Service Catalog product, currently only supports type CloudFormationProduct @@ -188,6 +189,8 @@ export class CloudFormationProduct extends Product { constructor(scope: Construct, id: string, props: CloudFormationProductProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.validateProductProps(props); diff --git a/packages/aws-cdk-lib/aws-servicecatalog/lib/tag-options.ts b/packages/aws-cdk-lib/aws-servicecatalog/lib/tag-options.ts index 456dbc3a42a8e..d1ecbb499f0a6 100644 --- a/packages/aws-cdk-lib/aws-servicecatalog/lib/tag-options.ts +++ b/packages/aws-cdk-lib/aws-servicecatalog/lib/tag-options.ts @@ -3,6 +3,7 @@ import { hashValues } from './private/util'; import { InputValidator } from './private/validation'; import { CfnTagOption } from './servicecatalog.generated'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for TagOptions. @@ -33,6 +34,8 @@ export class TagOptions extends cdk.Resource { constructor(scope: Construct, id: string, props: TagOptionsProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this._cfnTagOptions = this.createUnderlyingTagOptions(props.allowedValuesForTags); } diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/alias-target-instance.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/alias-target-instance.ts index 018d6740db923..afd31f3acfae7 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/alias-target-instance.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/alias-target-instance.ts @@ -4,6 +4,7 @@ import { NamespaceType } from './namespace'; import { DnsRecordType, IService, RoutingPolicy } from './service'; import { CfnInstance } from './servicediscovery.generated'; import { Names } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /* * Properties for an AliasTargetInstance @@ -44,6 +45,8 @@ export class AliasTargetInstance extends InstanceBase { constructor(scope: Construct, id: string, props: AliasTargetInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.service.namespace.type === NamespaceType.HTTP) { throw new Error('Namespace associated with Service must be a DNS Namespace.'); diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/cname-instance.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/cname-instance.ts index 6d948119a4e73..87beefd6cd322 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/cname-instance.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/cname-instance.ts @@ -3,6 +3,7 @@ import { BaseInstanceProps, InstanceBase } from './instance'; import { NamespaceType } from './namespace'; import { DnsRecordType, IService } from './service'; import { CfnInstance } from './servicediscovery.generated'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /* * Properties for a CnameInstance used for service#registerCnameInstance @@ -48,6 +49,8 @@ export class CnameInstance extends InstanceBase { constructor(scope: Construct, id: string, props: CnameInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.service.namespace.type === NamespaceType.HTTP) { throw new Error('Namespace associated with Service must be a DNS Namespace.'); diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts index bbda008139095..cbbaebaaa7c0f 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/http-namespace.ts @@ -3,6 +3,7 @@ import { BaseNamespaceProps, INamespace, NamespaceType } from './namespace'; import { BaseServiceProps, Service } from './service'; import { CfnHttpNamespace } from './servicediscovery.generated'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface HttpNamespaceProps extends BaseNamespaceProps {} export interface IHttpNamespace extends INamespace { } @@ -60,6 +61,8 @@ export class HttpNamespace extends Resource implements IHttpNamespace { constructor(scope: Construct, id: string, props: HttpNamespaceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const ns = new CfnHttpNamespace(this, 'Resource', { name: props.name, diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/ip-instance.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/ip-instance.ts index e635fca07cee4..e821bf17396bc 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/ip-instance.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/ip-instance.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { BaseInstanceProps, InstanceBase } from './instance'; import { DnsRecordType, IService } from './service'; import { CfnInstance } from './servicediscovery.generated'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /* * Properties for a IpInstance used for service#registerIpInstance @@ -76,6 +77,8 @@ export class IpInstance extends InstanceBase { constructor(scope: Construct, id: string, props: IpInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const dnsRecordType = props.service.dnsRecordType; if (dnsRecordType === DnsRecordType.CNAME) { diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/non-ip-instance.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/non-ip-instance.ts index d75c5d011444b..15286feda2e31 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/non-ip-instance.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/non-ip-instance.ts @@ -3,6 +3,7 @@ import { BaseInstanceProps, InstanceBase } from './instance'; import { defaultDiscoveryType } from './private/utils'; import { IService, DiscoveryType } from './service'; import { CfnInstance } from './servicediscovery.generated'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface NonIpInstanceBaseProps extends BaseInstanceProps { } @@ -36,6 +37,8 @@ export class NonIpInstance extends InstanceBase { constructor(scope: Construct, id: string, props: NonIpInstanceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const discoveryType = props.service.discoveryType || defaultDiscoveryType(props.service.namespace); if (discoveryType !== DiscoveryType.API) { diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts index 72c3ac2e75c97..34f95fd7ad165 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/private-dns-namespace.ts @@ -4,6 +4,7 @@ import { DnsServiceProps, Service } from './service'; import { CfnPrivateDnsNamespace } from './servicediscovery.generated'; import * as ec2 from '../../aws-ec2'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface PrivateDnsNamespaceProps extends BaseNamespaceProps { /** @@ -73,6 +74,8 @@ export class PrivateDnsNamespace extends Resource implements IPrivateDnsNamespac constructor(scope: Construct, id: string, props: PrivateDnsNamespaceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.vpc === undefined) { throw new Error('VPC must be specified for PrivateDNSNamespaces'); } diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts index d58848fc4320d..61c1d5853521c 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/public-dns-namespace.ts @@ -3,6 +3,7 @@ import { BaseNamespaceProps, INamespace, NamespaceType } from './namespace'; import { DnsServiceProps, Service } from './service'; import { CfnPublicDnsNamespace } from './servicediscovery.generated'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface PublicDnsNamespaceProps extends BaseNamespaceProps {} export interface IPublicDnsNamespace extends INamespace { } @@ -65,6 +66,8 @@ export class PublicDnsNamespace extends Resource implements IPublicDnsNamespace constructor(scope: Construct, id: string, props: PublicDnsNamespaceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const ns = new CfnPublicDnsNamespace(this, 'Resource', { name: props.name, diff --git a/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts b/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts index 75ec3f7015373..e88c69c819f81 100644 --- a/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts +++ b/packages/aws-cdk-lib/aws-servicediscovery/lib/service.ts @@ -9,6 +9,7 @@ import { defaultDiscoveryType } from './private/utils'; import { CfnService } from './servicediscovery.generated'; import * as elbv2 from '../../aws-elasticloadbalancingv2'; import { Duration, IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; export interface IService extends IResource { /** @@ -218,6 +219,8 @@ export class Service extends ServiceBase { constructor(scope: Construct, id: string, props: ServiceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const namespaceType = props.namespace.type; const discoveryType = props.discoveryType || defaultDiscoveryType(props.namespace); diff --git a/packages/aws-cdk-lib/aws-ses/lib/configuration-set-event-destination.ts b/packages/aws-cdk-lib/aws-ses/lib/configuration-set-event-destination.ts index 52672e3229e06..559bb1213d342 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/configuration-set-event-destination.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/configuration-set-event-destination.ts @@ -4,6 +4,7 @@ import { CfnConfigurationSetEventDestination } from './ses.generated'; import * as iam from '../../aws-iam'; import * as sns from '../../aws-sns'; import { Aws, IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A configuration set event destination @@ -237,6 +238,8 @@ export class ConfigurationSetEventDestination extends Resource implements IConfi super(scope, id, { physicalName: props.configurationSetEventDestinationName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const configurationSet = new CfnConfigurationSetEventDestination(this, 'Resource', { configurationSetName: props.configurationSet.configurationSetName, diff --git a/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts b/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts index cb45d79b3d887..47e6c90714c09 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/configuration-set.ts @@ -4,6 +4,7 @@ import { IDedicatedIpPool } from './dedicated-ip-pool'; import { undefinedIfNoKeys } from './private/utils'; import { CfnConfigurationSet } from './ses.generated'; import { Duration, IResource, Resource, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A configuration set @@ -174,6 +175,8 @@ export class ConfigurationSet extends Resource implements IConfigurationSet { super(scope, id, { physicalName: props.configurationSetName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.disableSuppressionList && props.suppressionReasons) { throw new Error('When disableSuppressionList is true, suppressionReasons must not be specified.'); diff --git a/packages/aws-cdk-lib/aws-ses/lib/dedicated-ip-pool.ts b/packages/aws-cdk-lib/aws-ses/lib/dedicated-ip-pool.ts index a085e330f9481..d35fb856138df 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/dedicated-ip-pool.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/dedicated-ip-pool.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnDedicatedIpPool } from './ses.generated'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Scaling mode to use for this IP pool. @@ -77,6 +78,8 @@ export class DedicatedIpPool extends Resource implements IDedicatedIpPool { super(scope, id, { physicalName: props.dedicatedIpPoolName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.dedicatedIpPoolName && !/^[a-z0-9_-]{0,64}$/.test(props.dedicatedIpPoolName)) { throw new Error(`Invalid dedicatedIpPoolName "${props.dedicatedIpPoolName}". The name must only include lowercase letters, numbers, underscores, hyphens, and must not exceed 64 characters.`); diff --git a/packages/aws-cdk-lib/aws-ses/lib/email-identity.ts b/packages/aws-cdk-lib/aws-ses/lib/email-identity.ts index 82d8e5d6b0ff5..49e3bea9b00d6 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/email-identity.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/email-identity.ts @@ -6,6 +6,7 @@ import { Grant, IGrantable } from '../../aws-iam'; import { IPublicHostedZone } from '../../aws-route53'; import * as route53 from '../../aws-route53'; import { IResource, Lazy, Resource, SecretValue, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * An email identity @@ -457,6 +458,8 @@ export class EmailIdentity extends EmailIdentityBase { constructor(scope: Construct, id: string, props: EmailIdentityProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const dkimIdentity = props.dkimIdentity ?? DkimIdentity.easyDkim(); diff --git a/packages/aws-cdk-lib/aws-ses/lib/receipt-filter.ts b/packages/aws-cdk-lib/aws-ses/lib/receipt-filter.ts index b503400cf5b53..90b011d1f334e 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/receipt-filter.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/receipt-filter.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnReceiptFilter } from './ses.generated'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * The policy for the receipt filter. @@ -52,6 +53,8 @@ export class ReceiptFilter extends Resource { super(scope, id, { physicalName: props.receiptFilterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnReceiptFilter(this, 'Resource', { filter: { diff --git a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule-set.ts b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule-set.ts index 75cf18b239e9c..31d38aac10602 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule-set.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule-set.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import { DropSpamReceiptRule, ReceiptRule, ReceiptRuleOptions } from './receipt-rule'; import { CfnReceiptRuleSet } from './ses.generated'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * A receipt rule set. @@ -101,6 +102,8 @@ export class ReceiptRuleSet extends ReceiptRuleSetBase { super(scope, id, { physicalName: props.receiptRuleSetName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnReceiptRuleSet(this, 'Resource', { ruleSetName: this.physicalName, diff --git a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts index ae662eb3f18d4..b8c5c926466d6 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/receipt-rule.ts @@ -4,6 +4,7 @@ import { IReceiptRuleSet } from './receipt-rule-set'; import { CfnReceiptRule } from './ses.generated'; import * as iam from '../../aws-iam'; import { Aws, IResource, Lazy, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { DropSpamSingletonFunction } from '../../custom-resource-handlers/dist/aws-ses/drop-spam-provider.generated'; /** @@ -118,6 +119,8 @@ export class ReceiptRule extends Resource implements IReceiptRule { super(scope, id, { physicalName: props.receiptRuleName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnReceiptRule(this, 'Resource', { after: props.after?.receiptRuleName, diff --git a/packages/aws-cdk-lib/aws-ses/lib/vdm-attributes.ts b/packages/aws-cdk-lib/aws-ses/lib/vdm-attributes.ts index 891f606cb97a6..20fa382e5da60 100644 --- a/packages/aws-cdk-lib/aws-ses/lib/vdm-attributes.ts +++ b/packages/aws-cdk-lib/aws-ses/lib/vdm-attributes.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnVdmAttributes } from './ses.generated'; import { IResource, Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Virtual Deliverability Manager (VDM) attributes @@ -58,6 +59,8 @@ export class VdmAttributes extends Resource implements IVdmAttributes { constructor(scope: Construct, id: string, props: VdmAttributesProps = {}) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnVdmAttributes(this, 'Resource', { dashboardAttributes: { diff --git a/packages/aws-cdk-lib/aws-signer/lib/signing-profile.ts b/packages/aws-cdk-lib/aws-signer/lib/signing-profile.ts index d562dfa566393..27538d6f1e230 100644 --- a/packages/aws-cdk-lib/aws-signer/lib/signing-profile.ts +++ b/packages/aws-cdk-lib/aws-signer/lib/signing-profile.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnSigningProfile } from './signer.generated'; import { Duration, IResource, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Platforms that are allowed with signing config. @@ -173,6 +174,8 @@ export class SigningProfile extends Resource implements ISigningProfile { super(scope, id, { physicalName: props.signingProfileName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const resource = new CfnSigningProfile( this, 'Resource', { platformId: props.platform.platformId, diff --git a/packages/aws-cdk-lib/aws-sns/lib/policy.ts b/packages/aws-cdk-lib/aws-sns/lib/policy.ts index 2d663b733fa90..9672dd8730ae0 100644 --- a/packages/aws-cdk-lib/aws-sns/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-sns/lib/policy.ts @@ -3,6 +3,7 @@ import { CfnTopicPolicy } from './sns.generated'; import { ITopic } from './topic-base'; import { Effect, PolicyDocument, PolicyStatement, StarPrincipal } from '../../aws-iam'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties to associate SNS topics with a policy @@ -57,6 +58,8 @@ export class TopicPolicy extends Resource { constructor(scope: Construct, id: string, props: TopicPolicyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.document = props.policyDocument ?? this.document; diff --git a/packages/aws-cdk-lib/aws-sns/lib/subscription.ts b/packages/aws-cdk-lib/aws-sns/lib/subscription.ts index 2b6cc1c073bc7..08b8edfbb3f47 100644 --- a/packages/aws-cdk-lib/aws-sns/lib/subscription.ts +++ b/packages/aws-cdk-lib/aws-sns/lib/subscription.ts @@ -6,6 +6,7 @@ import { ITopic } from './topic-base'; import { PolicyStatement, ServicePrincipal } from '../../aws-iam'; import { IQueue } from '../../aws-sqs'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Options for creating a new subscription @@ -105,6 +106,8 @@ export class Subscription extends Resource { constructor(scope: Construct, id: string, props: SubscriptionProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.rawMessageDelivery && [ diff --git a/packages/aws-cdk-lib/aws-sns/lib/topic.ts b/packages/aws-cdk-lib/aws-sns/lib/topic.ts index f78b32bf8cfe3..e547110496ab9 100644 --- a/packages/aws-cdk-lib/aws-sns/lib/topic.ts +++ b/packages/aws-cdk-lib/aws-sns/lib/topic.ts @@ -4,6 +4,7 @@ import { ITopic, TopicBase } from './topic-base'; import { IRole } from '../../aws-iam'; import { IKey } from '../../aws-kms'; import { ArnFormat, Lazy, Names, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for a new SNS topic @@ -255,6 +256,8 @@ export class Topic extends TopicBase { super(scope, id, { physicalName: props.topicName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.enforceSSL = props.enforceSSL; diff --git a/packages/aws-cdk-lib/aws-sqs/lib/policy.ts b/packages/aws-cdk-lib/aws-sqs/lib/policy.ts index 2a427c0522c19..ec406ce3c36e7 100644 --- a/packages/aws-cdk-lib/aws-sqs/lib/policy.ts +++ b/packages/aws-cdk-lib/aws-sqs/lib/policy.ts @@ -3,6 +3,7 @@ import { IQueue } from './queue-base'; import { CfnQueuePolicy } from './sqs.generated'; import { PolicyDocument } from '../../aws-iam'; import { Resource } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties to associate SQS queues with a policy @@ -36,6 +37,8 @@ export class QueuePolicy extends Resource { constructor(scope: Construct, id: string, props: QueuePolicyProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); new CfnQueuePolicy(this, 'Resource', { policyDocument: this.document, diff --git a/packages/aws-cdk-lib/aws-sqs/lib/queue.ts b/packages/aws-cdk-lib/aws-sqs/lib/queue.ts index d05f886cc22a8..66afca7b7b471 100644 --- a/packages/aws-cdk-lib/aws-sqs/lib/queue.ts +++ b/packages/aws-cdk-lib/aws-sqs/lib/queue.ts @@ -5,6 +5,7 @@ import { validateProps } from './validate-props'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { Duration, RemovalPolicy, Stack, Token, ArnFormat, Annotations } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Properties for creating a new Queue @@ -382,6 +383,8 @@ export class Queue extends QueueBase { super(scope, id, { physicalName: props.queueName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); validateProps(props); diff --git a/packages/aws-cdk-lib/aws-ssm/lib/parameter.ts b/packages/aws-cdk-lib/aws-ssm/lib/parameter.ts index eff6d92766815..49aaebcf00a3a 100644 --- a/packages/aws-cdk-lib/aws-ssm/lib/parameter.ts +++ b/packages/aws-cdk-lib/aws-ssm/lib/parameter.ts @@ -10,6 +10,7 @@ import { ContextProvider, Fn, IResource, Resource, Stack, Token, Tokenization, } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * An SSM Parameter reference. @@ -664,6 +665,8 @@ export class StringParameter extends ParameterBase implements IStringParameter { super(scope, id, { physicalName: props.parameterName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.allowedPattern) { _assertValidValue(props.stringValue, props.allowedPattern); diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts index 32ddf07f3a65f..fecb6a4f8d3a1 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/activity.ts @@ -7,6 +7,8 @@ import { CfnActivity } from './stepfunctions.generated'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; import { ArnFormat, IResource, Lazy, Names, Resource, Stack } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; + /** * Properties for defining a new Step Functions Activity */ @@ -76,6 +78,8 @@ export class Activity extends Resource implements IActivity { physicalName: props.activityName || Lazy.string({ produce: () => this.generateName() }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.encryptionConfiguration = props.encryptionConfiguration; diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts index 5fea9d8ab09e4..6125ecc828ae5 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts @@ -11,6 +11,7 @@ import * as iam from '../../aws-iam'; import * as logs from '../../aws-logs'; import * as s3_assets from '../../aws-s3-assets'; import { Arn, ArnFormat, Duration, IResource, RemovalPolicy, Resource, Stack, Token } from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Two types of state machines are available in AWS Step Functions: EXPRESS AND STANDARD. @@ -433,6 +434,8 @@ export class StateMachine extends StateMachineBase { super(scope, id, { physicalName: props.stateMachineName, }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); if (props.definition && props.definitionBody) { throw new Error('Cannot specify definition and definitionBody at the same time'); diff --git a/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts b/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts index 385a13dcda254..4fd5a75d060fe 100644 --- a/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts +++ b/packages/aws-cdk-lib/aws-synthetics/lib/canary.ts @@ -11,6 +11,7 @@ import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as s3 from '../../aws-s3'; import * as cdk from '../../core'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; import { AutoDeleteUnderlyingResourcesProvider } from '../../custom-resource-handlers/dist/aws-synthetics/auto-delete-underlying-resources-provider.generated'; const AUTO_DELETE_UNDERLYING_RESOURCES_RESOURCE_TYPE = 'Custom::SyntheticsAutoDeleteUnderlyingResources'; @@ -349,6 +350,8 @@ export class Canary extends cdk.Resource implements ec2.IConnectable { produce: () => this.generateUniqueName(), }), }); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.artifactsBucket = props.artifactsBucketLocation?.bucket ?? new s3.Bucket(this, 'ArtifactsBucket', { encryption: s3.BucketEncryption.KMS_MANAGED, diff --git a/packages/aws-cdk-lib/core/lib/custom-resource.ts b/packages/aws-cdk-lib/core/lib/custom-resource.ts index 134cefab3c505..833dc84bea1f3 100644 --- a/packages/aws-cdk-lib/core/lib/custom-resource.ts +++ b/packages/aws-cdk-lib/core/lib/custom-resource.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { CfnResource } from './cfn-resource'; import { Duration } from './duration'; +import { addConstructMetadata } from './metadata-resource'; import { RemovalPolicy } from './removal-policy'; import { Resource } from './resource'; import { Token } from './token'; @@ -137,6 +138,8 @@ export class CustomResource extends Resource { constructor(scope: Construct, id: string, props: CustomResourceProps) { super(scope, id); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); const type = renderResourceType(props.resourceType); const pascalCaseProperties = props.pascalCaseProperties ?? false; diff --git a/packages/aws-cdk-lib/core/lib/metadata-resource.ts b/packages/aws-cdk-lib/core/lib/metadata-resource.ts index 3d18f592b3054..7b60395755cbd 100644 --- a/packages/aws-cdk-lib/core/lib/metadata-resource.ts +++ b/packages/aws-cdk-lib/core/lib/metadata-resource.ts @@ -1,3 +1,15 @@ +import { Construct, IConstruct } from 'constructs'; +import { Resource } from './resource'; +import { Token } from './token'; + +/** + * List of fields that must be redacted regardless. + * i.e. grantPrincipal for ServicePrincipal class will always reference to + * this construct, so we need to redact it regardless of the value, otherwise + * causing recursion to never end. + */ +const FIELDS_TO_REDACT = ['grantPrincipal', 'node']; + /** * Enumeration of metadata types used for tracking analytics in AWS CDK. */ @@ -20,3 +32,74 @@ export enum MetadataType { */ FEATURE_FLAG = 'aws:cdk:analytics:featureflag', } + +export function addConstructMetadata(scope: Construct, props: any): void { + addMetadata(scope, MetadataType.CONSTRUCT, props); +} + +function addMetadata(scope: Construct, type: MetadataType, props: any): void { + scope.node.addMetadata(type, redactTelemetryDataHelper(props)); +} + +/** + * Check whether the given construct is a Resource. Note that this is + * duplicated function from 'core/lib/resource.ts' to avoid circular + * dependencies in imports. + */ +export function isResource(construct: IConstruct): construct is Resource { + const RESOURCE_SYMBOL = Symbol.for('@aws-cdk/core.Resource'); + return construct !== null && typeof(construct) === 'object' && RESOURCE_SYMBOL in construct; +} + +/** + * Redact values from dictionary values other than Boolean and ENUM-type values. + * @TODO we will build a JSON blueprint of ENUM-type values in the codebase and + * do not redact the ENUM-type values if it match any key in the blueprint. + */ +export function redactTelemetryDataHelper(data: any, visited = new WeakSet()): any { + if (typeof data === 'boolean') { + return data; // Return booleans as-is + } + + if (Array.isArray(data)) { + // Handle arrays by recursively redacting each element + return data.map((item) => redactTelemetryDataHelper(item, visited)); + } + + if (data && Token.isUnresolved(data)) { + return '*'; + } + + if (data && Object.keys(data).length > 0 && typeof data === 'object') { + // Handle objects by iterating over their key-value pairs + if (Construct.isConstruct(data)) { + return '*'; + } + + if (visited.has(data)) { + // Redact duplicates or circular references + return '*'; + } + visited.add(data); + + /** + * @TODO we need to build a JSON blueprint of class and props. If 'data' matches + * any leaf node in the blueprint, then redact the value to avoid logging customer + * data. + */ + const result: Record = {}; + for (const [key, value] of Object.entries(data)) { + if (FIELDS_TO_REDACT.includes(key)) { + result[key] = '*'; + continue; + } + if (key && Token.isUnresolved(key)) { + continue; + } + result[key] = redactTelemetryDataHelper(value, visited); + } + return result; + } + + return '*'; +} diff --git a/packages/aws-cdk-lib/core/lib/private/runtime-info.ts b/packages/aws-cdk-lib/core/lib/private/runtime-info.ts index ef282c55fb5b5..25685f5a1a131 100644 --- a/packages/aws-cdk-lib/core/lib/private/runtime-info.ts +++ b/packages/aws-cdk-lib/core/lib/private/runtime-info.ts @@ -1,7 +1,6 @@ import { IConstruct, MetadataEntry } from 'constructs'; import { App } from '../app'; -import { MetadataType } from '../metadata-resource'; -import { Resource } from '../resource'; +import { isResource, MetadataType } from '../metadata-resource'; import { Stack } from '../stack'; import { Stage } from '../stage'; import { IPolicyValidationPluginBeta1 } from '../validation'; @@ -38,7 +37,7 @@ export function constructInfoFromConstruct(construct: IConstruct): ConstructInfo return { fqn: jsiiRuntimeInfo.fqn, version: jsiiRuntimeInfo.version, - metadata: isResource(construct) ? redactTelemetryData(construct.node.metadata) : undefined, + metadata: isResource(construct) ? filterMetadataType(construct.node.metadata) : undefined, }; } else if (jsiiRuntimeInfo) { // There is something defined, but doesn't match our expectations. Fail fast and hard. @@ -52,55 +51,14 @@ export function constructInfoFromConstruct(construct: IConstruct): ConstructInfo * * @param metadata a list of metadata entries */ -export function redactTelemetryData(metadata: MetadataEntry[]): Record[] { +export function filterMetadataType(metadata: MetadataEntry[]): Record[] { const validTypes = new Set([ MetadataType.CONSTRUCT, MetadataType.METHOD, MetadataType.FEATURE_FLAG, ]); - return metadata - .filter((entry) => validTypes.has(entry.type as MetadataType)) - .map((entry) => ({ - type: entry.type, - data: redactTelemetryDataHelper(entry.data), - })); -} - -/** - * Redact values from dictionary values other than Boolean and ENUM-type values. - * @TODO we will build a JSON blueprint of ENUM-type values in the codebase and - * do not redact the ENUM-type values if it match any key in the blueprint. - */ -function redactTelemetryDataHelper(data: any): any { - if (typeof data === 'boolean') { - return data; // Return booleans as-is - } - - if (Array.isArray(data)) { - // Handle arrays by recursively redacting each element - return data.map((item) => redactTelemetryDataHelper(item)); - } - - if (data && typeof data === 'object') { - // Handle objects by iterating over their key-value pairs - if (isResource(data)) { - return '*'; - } - - /** - * @TODO we need to build a JSON blueprint of class and props. If 'data' matches - * any leaf node in the blueprint, then redact the value to avoid logging customer - * data. - */ - const result: Record = {}; - for (const [key, value] of Object.entries(data)) { - result[key] = redactTelemetryDataHelper(value); - } - return result; - } - - return '*'; + return metadata.filter((entry) => validTypes.has(entry.type as MetadataType)); } /** @@ -186,16 +144,6 @@ export function constructInfoFromStack(stack: Stack): ConstructInfo[] { return Array.from(uniqueMap.values()); } -/** - * Check whether the given construct is a Resource. Note that this is - * duplicated function from 'core/lib/resource.ts' to avoid circular - * dependencies in imports. - */ -function isResource(construct: IConstruct): construct is Resource { - const RESOURCE_SYMBOL = Symbol.for('@aws-cdk/core.Resource'); - return construct !== null && typeof(construct) === 'object' && RESOURCE_SYMBOL in construct; -} - /** * Returns all constructs under the parent construct (including the parent), * stopping when it reaches a boundary of another stack (e.g., Stack, Stage, NestedStack). diff --git a/packages/aws-cdk-lib/core/lib/resource.ts b/packages/aws-cdk-lib/core/lib/resource.ts index ee79dc233fdb8..68843e42853d7 100644 --- a/packages/aws-cdk-lib/core/lib/resource.ts +++ b/packages/aws-cdk-lib/core/lib/resource.ts @@ -38,6 +38,25 @@ export interface ResourceEnvironment { readonly region: string; } +// /** +// * +// * @param _target +// * @param propertyKey +// * @param descriptor +// */ +// export function metadata(_target: any, propertyKey: string, descriptor: PropertyDescriptor): void { +// const originalMethod = descriptor.value; + +// descriptor.value = function (...args: any[]) { +// if (this instanceof Resource) { +// this.node.addMetadata(); +// } + +// // Call the original method +// return originalMethod.apply(this, args); +// }; +// } + /** * Interface for the Resource construct. */ diff --git a/packages/aws-cdk-lib/core/test/metadata-resource.test.ts b/packages/aws-cdk-lib/core/test/metadata-resource.test.ts index 265a6cf22ff76..3bfe6ca977258 100644 --- a/packages/aws-cdk-lib/core/test/metadata-resource.test.ts +++ b/packages/aws-cdk-lib/core/test/metadata-resource.test.ts @@ -113,12 +113,10 @@ describe('MetadataResource', () => { handler: 'index.handler', code: Code.fromInline('def handler(event, context):\n\tprint(\'The function has been invoked.\')'), }; - const func = new Function(myStack, 'MyFunction', funcProp); - func.node.addMetadata(MetadataType.CONSTRUCT, funcProp); + new Function(myStack, 'MyFunction', funcProp); const template = myApp.synth().getStackByName('EnableTelemtryStack').template; expect(template.Resources?.CDKMetadata).toBeDefined(); - expect(template.Resources?.CDKMetadata?.Properties?.Analytics).toEqual('v2:deflate64:H4sIAAAAAAAA/8vLT0nVyyrWLzO00DMy0DNQzCrOzNQtKs0rycxN1QuC0ADZIqxKJQAAAA=='); }); test('includes the formatted Analytics property', () => { diff --git a/packages/aws-cdk-lib/core/test/private/runtime-info.test.ts b/packages/aws-cdk-lib/core/test/private/runtime-info.test.ts index 52bd8c33b143a..af221df783ac5 100644 --- a/packages/aws-cdk-lib/core/test/private/runtime-info.test.ts +++ b/packages/aws-cdk-lib/core/test/private/runtime-info.test.ts @@ -1,10 +1,12 @@ +import { trace } from 'console'; import { MetadataEntry } from 'constructs'; +import { filter } from 'lodash'; import { Code, Function, Runtime } from '../../../aws-lambda'; import { Stack } from '../../lib'; -import { MetadataType } from '../../lib/metadata-resource'; +import { MetadataType, redactTelemetryDataHelper } from '../../lib/metadata-resource'; import { constructInfoFromConstruct, - redactTelemetryData, + filterMetadataType, } from '../../lib/private/runtime-info'; test('test constructInfoFromConstruct can correctly get metadata information', () => { @@ -16,12 +18,56 @@ test('test constructInfoFromConstruct can correctly get metadata information', ( "def handler(event, context):\n\tprint('The function has been invoked.')", ), }); - myFunction.node.addMetadata('hello', 'foo'); - myFunction.node.addMetadata(MetadataType.CONSTRUCT, { foo: 'bar' }); const constructInfo = constructInfoFromConstruct(myFunction); - expect(constructInfo?.metadata).toEqual([ - { type: MetadataType.CONSTRUCT, data: { foo: '*' } }, + expect(constructInfo?.metadata).toMatchObject([ + { + type: 'aws:cdk:analytics:construct', + trace: undefined, + data: expect.any(Object), // Matches any object for `data` + }, + ]); +}); + +test('test filterMetadataType correct filter', () => { + const metadata: MetadataEntry[] = [ + { type: MetadataType.CONSTRUCT, data: { hello: 'world' } }, + { + type: MetadataType.METHOD, + data: { + bool: true, + nested: { foo: 'bar' }, + arr: [1, 2, 3], + str: 'foo', + arrOfObjects: [{ foo: { hello: 'world' } }], + }, + }, + { + type: 'hello', + data: { bool: true, nested: { foo: 'bar' }, arr: [1, 2, 3], str: 'foo' }, + }, + { + type: MetadataType.FEATURE_FLAG, + data: 'foobar', + }, + ]; + + expect(filterMetadataType(metadata)).toEqual([ + { type: MetadataType.CONSTRUCT, data: { hello: 'world' } }, + { + type: MetadataType.METHOD, + data: { + bool: true, + nested: { foo: 'bar' }, + arr: [1, 2, 3], + str: 'foo', + arrOfObjects: [{ foo: { hello: 'world' } }], + }, + }, + { + type: MetadataType.FEATURE_FLAG, + data: 'foobar', + }, ]); }); @@ -35,10 +81,9 @@ test('test metadata is redacted correctly', () => { ), }); - const metadata: MetadataEntry[] = [ - { type: 'foo', data: { hello: 'world' } }, + const metadata = [ + { data: { hello: 'world' } }, { - type: MetadataType.CONSTRUCT, data: { bool: true, nested: { foo: 'bar' }, @@ -48,24 +93,21 @@ test('test metadata is redacted correctly', () => { }, }, { - type: MetadataType.METHOD, data: { bool: true, nested: { foo: 'bar' }, arr: [1, 2, 3], str: 'foo' }, }, { - type: MetadataType.FEATURE_FLAG, data: 'foobar', }, { - type: 'aws:cdk:analytics:construct', data: 'foo', }, ]; // TODO: change this test case to verify that we only collect objects // that's part of CDK and redact any customer provided object. - expect(redactTelemetryData(metadata)).toEqual([ + expect(redactTelemetryDataHelper(metadata)).toEqual([ + { data: { hello: '*' } }, { - type: MetadataType.CONSTRUCT, data: { bool: true, nested: { foo: '*' }, @@ -75,7 +117,6 @@ test('test metadata is redacted correctly', () => { }, }, { - type: MetadataType.METHOD, data: { bool: true, nested: { foo: '*' }, @@ -84,11 +125,9 @@ test('test metadata is redacted correctly', () => { }, }, { - type: MetadataType.FEATURE_FLAG, data: '*', }, { - type: 'aws:cdk:analytics:construct', data: '*', }, ]); diff --git a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md index 1ad9b50f6be19..e1b63611acfe2 100644 --- a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +++ b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md @@ -84,8 +84,8 @@ Flags come in three types: | [@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault](#aws-cdkaws-ec2bastionhostuseamazonlinux2023bydefault) | When enabled, the BastionHost construct will use the latest Amazon Linux 2023 AMI, instead of Amazon Linux 2. | 2.172.0 | (default) | | [@aws-cdk/core:aspectStabilization](#aws-cdkcoreaspectstabilization) | When enabled, a stabilization loop will be run when invoking Aspects during synthesis. | 2.172.0 | (config) | | [@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource](#aws-cdkaws-route53-targetsuserpooldomainnamemethodwithoutcustomresource) | When enabled, use a new method for DNS Name of user pool domain target without creating a custom resource. | 2.174.0 | (fix) | -| [@aws-cdk/aws-ecs:disableEcsImdsBlocking](#aws-cdkaws-ecsdisableecsimdsblocking) | When set to true, CDK synth will throw exception if canContainersAccessInstanceRole is false. **IMPORTANT: See [details.](#aws-cdkaws-ecsdisableEcsImdsBlocking)** | V2NEXT | (temporary) | -| [@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature](#aws-cdkaws-ecsenableimdsblockingdeprecatedfeature) | When set to true along with canContainersAccessInstanceRole=false in ECS cluster, new updated commands will be added to UserData to block container accessing IMDS. **Applicable to Linux only. IMPORTANT: See [details.](#aws-cdkaws-ecsenableImdsBlockingDeprecatedFeature)** | V2NEXT | (temporary) | +| [@aws-cdk/aws-ecs:disableEcsImdsBlocking](#aws-cdkaws-ecsdisableecsimdsblocking) | When set to true, CDK synth will throw exception if canContainersAccessInstanceRole is false. **IMPORTANT: See [details.](#aws-cdkaws-ecsdisableEcsImdsBlocking)** | 2.175.0 | (temporary) | +| [@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature](#aws-cdkaws-ecsenableimdsblockingdeprecatedfeature) | When set to true along with canContainersAccessInstanceRole=false in ECS cluster, new updated commands will be added to UserData to block container accessing IMDS. **Applicable to Linux only. IMPORTANT: See [details.](#aws-cdkaws-ecsenableImdsBlockingDeprecatedFeature)** | 2.175.0 | (temporary) | | [@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault](#aws-cdkaws-elasticloadbalancingv2albdualstackwithoutpublicipv4securitygrouprulesdefault) | When enabled, the default security group ingress rules will allow IPv6 ingress from anywhere | V2NEXT | (fix) | | [@aws-cdk/core:enableAdditionalMetadataCollection](#aws-cdkcoreenableadditionalmetadatacollection) | When enabled, CDK will expand the scope of usage data collected to better inform CDK development and improve communication for security concerns and emerging issues. | V2NEXT | (config) | @@ -242,6 +242,7 @@ different environments). This means that the name of the synthesized template file will be based on the construct path and not on the defined `stackName` of the stack. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.16.0 | `false` | `true` | @@ -249,6 +250,7 @@ of the stack. **Compatibility with old behavior:** Pass stack identifiers to the CLI instead of stack names. + ### aws-cdk:enableDiffNoFail *Make `cdk diff` not fail when there are differences* (default) @@ -256,13 +258,14 @@ of the stack. Determines what status code `cdk diff` should return when the specified stack differs from the deployed stack or the local CloudFormation template: -- `aws-cdk:enableDiffNoFail=true` => status code == 0 -- `aws-cdk:enableDiffNoFail=false` => status code == 1 +* `aws-cdk:enableDiffNoFail=true` => status code == 0 +* `aws-cdk:enableDiffNoFail=false` => status code == 1 You can override this behavior with the --fail flag: -- `--fail` => status code == 1 -- `--no-fail` => status code == 0 +* `--fail` => status code == 1 +* `--no-fail` => status code == 0 + | Since | Default | Recommended | | ----- | ----- | ----- | @@ -271,6 +274,7 @@ You can override this behavior with the --fail flag: **Compatibility with old behavior:** Specify `--fail` to the CLI. + ### @aws-cdk/aws-ecr-assets:dockerIgnoreSupport *DockerImageAsset properly supports `.dockerignore` files by default* (default) @@ -282,6 +286,7 @@ is standard Docker ignore semantics. This is a feature flag as the old behavior was technically incorrect but users may have come to depend on it. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.73.0 | `false` | `true` | @@ -289,6 +294,7 @@ users may have come to depend on it. **Compatibility with old behavior:** Update your `.dockerignore` file to match standard Docker ignore rules, if necessary. + ### @aws-cdk/aws-secretsmanager:parseOwnedSecretName *Fix the referencing of SecretsManager names from ARNs* (default) @@ -299,6 +305,7 @@ rather than the default full resource name, which includes the SecretsManager su If this flag is not set, Secret.secretName will include the SecretsManager suffix, which cannot be directly used by SecretsManager.DescribeSecret, and must be parsed by the user first (e.g., Fn:Join, Fn:Select, Fn:Split). + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.77.0 | `false` | `true` | @@ -306,6 +313,7 @@ used by SecretsManager.DescribeSecret, and must be parsed by the user first (e.g **Compatibility with old behavior:** Use `parseArn(secret.secretName).resourceName` to emulate the incorrect old parsing. + ### @aws-cdk/aws-kms:defaultKeyPolicies *Tighten default KMS key policies* (default) @@ -322,6 +330,7 @@ true, the policy matches what happens when this feature flag is set. Additionally, if this flag is not set and the user supplies a custom key policy, this will be appended to the key's default policy (rather than replacing it). + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.78.0 | `false` | `true` | @@ -329,6 +338,7 @@ to the key's default policy (rather than replacing it). **Compatibility with old behavior:** Pass `trustAccountIdentities: false` to `Key` construct to restore the old behavior. + ### @aws-cdk/aws-s3:grantWriteWithoutAcl *Remove `PutObjectAcl` from Bucket.grantWrite* (default) @@ -339,6 +349,7 @@ which could be used to grant read/write object access to IAM principals in other Use a feature flag to make sure existing customers who might be relying on the overly-broad permissions are not broken. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.85.0 | `false` | `true` | @@ -346,6 +357,7 @@ on the overly-broad permissions are not broken. **Compatibility with old behavior:** Call `bucket.grantPutAcl()` in addition to `bucket.grantWrite()` to grant ACL permissions. + ### @aws-cdk/aws-ecs-patterns:removeDefaultDesiredCount *Do not specify a default DesiredCount for ECS services* (default) @@ -360,6 +372,7 @@ If this flag is not set, the default behaviour for CfnService.desiredCount is to desiredCount of 1, if one is not provided. If true, a default will not be defined for CfnService.desiredCount and as such desiredCount will be undefined, if one is not provided. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.92.0 | `false` | `true` | @@ -367,12 +380,14 @@ CfnService.desiredCount and as such desiredCount will be undefined, if one is no **Compatibility with old behavior:** You can pass `desiredCount: 1` explicitly, but you should never need this. + ### @aws-cdk/aws-efs:defaultEncryptionAtRest *Enable this feature flag to have elastic file systems encrypted at rest by default.* (default) Encryption can also be configured explicitly using the `encrypted` property. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.98.0 | `false` | `true` | @@ -380,6 +395,7 @@ Encryption can also be configured explicitly using the `encrypted` property. **Compatibility with old behavior:** Pass the `encrypted: false` property to the `FileSystem` construct to disable encryption. + ### @aws-cdk/core:newStyleStackSynthesis *Switch to new stack synthesis method which enables CI/CD* (fix) @@ -387,11 +403,13 @@ Encryption can also be configured explicitly using the `encrypted` property. If this flag is specified, all `Stack`s will use the `DefaultStackSynthesizer` by default. If it is not set, they will use the `LegacyStackSynthesizer`. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.39.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/core:stackRelativeExports *Name exports based on the construct paths relative to the stack, rather than the global construct path* (fix) @@ -401,11 +419,13 @@ ensure uniqueness, and makes the export names robust against refactoring the location of the stack in the construct tree (specifically, moving the Stack into a Stage). + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.58.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/aws-rds:lowercaseDbIdentifier *Force lowercasing of RDS Cluster names in CDK* (fix) @@ -420,11 +440,13 @@ Must be behind a permanent flag because changing a name from mixed case to lower would lead CloudFormation to think the name was changed and would trigger a cluster replacement (losing data!). + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.97.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId *Allow adding/removing multiple UsagePlanKeys independently* (fix) @@ -442,11 +464,13 @@ which again is disallowed. In effect, there is no way to get out of this mess in a backwards compatible way, while supporting existing stacks. This flag changes the logical id layout of UsagePlanKey to not be sensitive to order. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.98.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/aws-lambda:recognizeVersionProps *Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`.* (fix) @@ -456,22 +480,26 @@ not constitute creating a new Version. See 'currentVersion' section in the aws-lambda module's README for more details. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.106.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021 *Enable this feature flag to have cloudfront distributions use the security policy TLSv1.2_2021 by default.* (fix) The security policy can also be configured explicitly using the `minimumProtocolVersion` property. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.117.0 | `false` | `true` | | 2.0.0 | `true` | `true` | + ### @aws-cdk/core:target-partitions *What regions to include in lookup tables of environment agnostic stacks* (config) @@ -481,11 +509,13 @@ of unnecessary regions included in stacks without a known region. The type of this value should be a list of strings. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.137.0 | `false` | `["aws","aws-cn"]` | | 2.4.0 | `false` | `["aws","aws-cn"]` | + ### @aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver *ECS extensions will automatically add an `awslogs` driver if no logging is specified* (default) @@ -495,6 +525,7 @@ Enable this feature flag to configure default logging behavior for the ECS Servi This is a feature flag as the new behavior provides a better default experience for the users. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.140.0 | `false` | `true` | @@ -502,6 +533,7 @@ This is a feature flag as the new behavior provides a better default experience **Compatibility with old behavior:** Specify a log driver explicitly. + ### @aws-cdk/aws-ec2:uniqueImdsv2TemplateName *Enable this feature flag to have Launch Templates generated by the `InstanceRequireImdsv2Aspect` use unique names.* (fix) @@ -512,11 +544,13 @@ account and region, the deployments would always fail as the generated Launch Te The new implementation addresses this issue by generating the Launch Template name with the `Names.uniqueId` method. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.140.0 | `false` | `true` | | 2.8.0 | `false` | `true` | + ### @aws-cdk/aws-iam:minimizePolicies *Minimize IAM policies by combining Statements* (config) @@ -525,11 +559,13 @@ Minimize IAM policies by combining Principals, Actions and Resources of two Statements in the policies, as long as it doesn't change the meaning of the policy. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.150.0 | `false` | `true` | | 2.18.0 | `false` | `true` | + ### @aws-cdk/core:checkSecretUsage *Enable this flag to make it impossible to accidentally use SecretValues in unsafe locations* (config) @@ -538,11 +574,13 @@ With this flag enabled, `SecretValue` instances can only be passed to constructs that accept `SecretValue`s; otherwise, `unsafeUnwrap()` must be called to use it as a regular string. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.153.0 | `false` | `true` | | 2.21.0 | `false` | `true` | + ### @aws-cdk/aws-lambda:recognizeLayerVersion *Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`.* (fix) @@ -551,11 +589,13 @@ This flag correct incorporates Lambda Layer properties into the Lambda Function See 'currentVersion' section in the aws-lambda module's README for more details. + | Since | Default | Recommended | | ----- | ----- | ----- | | 1.159.0 | `false` | `true` | | 2.27.0 | `false` | `true` | + ### @aws-cdk/core:validateSnapshotRemovalPolicy *Error on snapshot removal policies on resources that do not support it.* (default) @@ -565,6 +605,7 @@ If supplied on an unsupported resource, CloudFormation ignores the policy altoge This flag will reduce confusion and unexpected loss of data when erroneously supplying the snapshot removal policy. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -572,6 +613,7 @@ the snapshot removal policy. **Compatibility with old behavior:** The old behavior was incorrect. Update your source to not specify SNAPSHOT policies on resources that do not support it. + ### @aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName *Generate key aliases that include the stack name* (fix) @@ -583,11 +625,13 @@ the KMS key alias name created for these pipelines may be the same due to how th This new implementation creates a stack safe resource name for the alias using the stack name instead of the stack ID. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.29.0 | `false` | `true` | + ### @aws-cdk/aws-s3:createDefaultLoggingPolicy *Enable this feature flag to create an S3 bucket policy by default in cases where an AWS service would automatically create the Policy if one does not exist.* (fix) @@ -601,13 +645,15 @@ and error indicating that a bucket policy already exists. In cases where we know what the required policy is we can go ahead and create the policy so we can remain in control of it. -@see +@see https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3 + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.31.0 | `false` | `true` | + ### @aws-cdk/aws-sns-subscriptions:restrictSqsDescryption *Restrict KMS key policy for encrypted Queues a bit more* (fix) @@ -619,11 +665,13 @@ Previously the decryption was only restricted to the SNS service principal. To m secure, it is a good practice to restrict the decryption further and only allow the connected SNS topic to decryption the subscribed queue. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.32.0 | `false` | `true` | + ### @aws-cdk/aws-ecs:arnFormatIncludesClusterName *ARN format used by ECS. In the new ARN format, the cluster name is part of the resource ID.* (fix) @@ -633,31 +681,35 @@ If this flag is set, the new ARN format (with cluster name) for ECS is used. This is a feature flag as the old format is still valid for existing ECS clusters. -See +See https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.35.0 | `false` | `true` | + ### @aws-cdk/aws-apigateway:disableCloudWatchRole *Make default CloudWatch Role behavior safe for multiple API Gateways in one environment* (fix) Enable this feature flag to change the default behavior for aws-apigateway.RestApi and aws-apigateway.SpecRestApi -to *not* create a CloudWatch role and Account. There is only a single ApiGateway account per AWS +to _not_ create a CloudWatch role and Account. There is only a single ApiGateway account per AWS environment which means that each time you create a RestApi in your account the ApiGateway account is overwritten. If at some point the newest RestApi is deleted, the ApiGateway Account and CloudWatch role will also be deleted, breaking any existing ApiGateways that were depending on them. When this flag is enabled you should either create the ApiGateway account and CloudWatch role -separately *or* only enable the cloudWatchRole on a single RestApi. +separately _or_ only enable the cloudWatchRole on a single RestApi. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.38.0 | `false` | `true` | + ### @aws-cdk/core:enablePartitionLiterals *Make ARNs concrete if AWS partition is known* (fix) @@ -686,11 +738,13 @@ Principal: The intrinsic function will still be used in Stacks where no region is defined or the region's partition is unknown. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.38.0 | `false` | `true` | + ### @aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker *Avoid setting the "ECS" deployment controller when adding a circuit breaker* (fix) @@ -701,11 +755,13 @@ This does not change any behaviour as the default deployment controller when it This is a feature flag as the new behavior provides a better default experience for the users. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.51.0 | `false` | `true` | + ### @aws-cdk/aws-events:eventsTargetQueueSameAccount *Event Rules may only push to encrypted SQS queues in the same account* (fix) @@ -714,11 +770,13 @@ This flag applies to SQS Queues that are used as the target of event Rules. When from the same account as the Rule can send messages. If a queue is unencrypted, this restriction will always apply, regardless of the value of this flag. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.51.0 | `false` | `true` | + ### @aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName *Enable this feature to by default create default policy names for imported roles that depend on the stack the role is in.* (fix) @@ -729,11 +787,13 @@ of a role using the same default policy name. This new implementation creates default policy names based on the constructs node path in their stack. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.60.0 | `false` | `true` | + ### @aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy *Use S3 Bucket Policy instead of ACLs for Server Access Logging* (fix) @@ -745,13 +805,15 @@ enabled on the bucket. This flag uses a Bucket Policy statement to allow Server Access Log delivery, following best practices for S3. -@see +@see https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.60.0 | `false` | `true` | + ### @aws-cdk/customresources:installLatestAwsSdkDefault *Whether to install the latest SDK by default in AwsCustomResource* (default) @@ -763,6 +825,7 @@ do not have internet access, or in environments where 'npmjs.com' is not availab The recommended setting is to disable the default installation behavior, and pass the flag on a resource-by-resource basis to enable it if necessary. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -770,6 +833,7 @@ flag on a resource-by-resource basis to enable it if necessary. **Compatibility with old behavior:** Set installLatestAwsSdk: true on all resources that need it. + ### @aws-cdk/aws-route53-patters:useCertificate *Use the official `Certificate` resource instead of `DnsValidatedCertificate`* (default) @@ -779,6 +843,7 @@ of the deprecated `DnsValidatedCertificate` construct. If this flag is enabled a the stack in a region other than us-east-1 then you must also set `crossRegionReferences=true` on the stack. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -786,6 +851,7 @@ stack. **Compatibility with old behavior:** Define a `DnsValidatedCertificate` explicitly and pass in the `certificate` property + ### @aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup *Remove CloudWatch alarms from deployment group* (fix) @@ -794,11 +860,13 @@ Enable this flag to be able to remove all CloudWatch alarms from a deployment gr the alarms from the construct. If this flag is not set, removing all alarms from the construct will still leave the alarms configured for the deployment group. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.65.0 | `false` | `true` | + ### @aws-cdk/aws-rds:databaseProxyUniqueResourceName *Use unique resource name for Database Proxy* (fix) @@ -811,11 +879,13 @@ If this flag is set, the default behavior is to use unique resource names for ea This is a feature flag as the old behavior was technically incorrect, but users may have come to depend on it. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.65.0 | `false` | `true` | + ### @aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId *Include authorizer configuration in the calculation of the API deployment logical ID.* (fix) @@ -825,11 +895,13 @@ the API configuration, including methods, and resources, etc. Enable this featur to also include the configuration of any authorizer attached to the API in the calculation, so any changes made to an authorizer will create a new deployment. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.66.0 | `false` | `true` | + ### @aws-cdk/aws-ec2:launchTemplateDefaultUserData *Define user data for a launch template by default when a machine image is provided.* (fix) @@ -838,11 +910,13 @@ The ec2.LaunchTemplate construct did not define user data when a machine image i provided despite the document. If this is set, a user data is automatically defined according to the OS of the machine image. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.67.0 | `false` | `true` | + ### @aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments *SecretTargetAttachments uses the ResourcePolicy of the attached Secret.* (fix) @@ -858,11 +932,13 @@ This won't be possible without intervention due to limitation outlined above. First remove all permissions granted to the Secret and deploy without the ResourcePolicies. Then you can re-add the permissions and deploy again. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.67.0 | `false` | `true` | + ### @aws-cdk/aws-redshift:columnId *Whether to use an ID to track Redshift column changes* (fix) @@ -879,11 +955,13 @@ than their `name`. This will prevent data loss when columns are renamed. initial deployment, the columns will be dropped and recreated, causing data loss. After the initial deployment of the `id`s, the `name`s of the columns can be changed without data loss. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.68.0 | `false` | `true` | + ### @aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2 *Enable AmazonEMRServicePolicy_v2 managed policies* (fix) @@ -897,11 +975,13 @@ managed policies. This is a feature flag as the old behavior will be deprecated, but some resources may require manual intervention since they might not have the appropriate tags propagated automatically. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.72.0 | `false` | `true` | + ### @aws-cdk/aws-apigateway:requestValidatorUniqueId *Generate a unique id for each RequestValidator added to a method* (fix) @@ -912,11 +992,13 @@ providing the `RequestValidatorOptions` in the `addMethod()` method. If the flag is not set then only a single RequestValidator can be added in this way. Any additional RequestValidators have to be created directly with `new RequestValidator`. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.78.0 | `false` | `true` | + ### @aws-cdk/aws-ec2:restrictDefaultSecurityGroup *Restrict access to the VPC default security group* (default) @@ -926,17 +1008,20 @@ VPC default security group. When a VPC is created, a default security group is created as well and this cannot be deleted. The default security group is created with ingress/egress rules that allow -*all* traffic. [AWS Security best practices recommend](https://docs.aws.amazon.com/securityhub/latest/userguide/ec2-controls.html#ec2-2) +_all_ traffic. [AWS Security best practices recommend](https://docs.aws.amazon.com/securityhub/latest/userguide/ec2-controls.html#ec2-2) removing these ingress/egress rules in order to restrict access to the default security group. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.78.0 | `false` | `true` | -**Compatibility with old behavior:** +**Compatibility with old behavior:** To allow all ingress/egress traffic to the VPC default security group you can set the `restrictDefaultSecurityGroup: false`. + + ### @aws-cdk/aws-kms:aliasNameRef @@ -948,11 +1033,13 @@ when referencing key.aliasName or key.keyArn. If the flag is not set then a raw string is passed as the Alias name and no implicit dependencies will be set. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.83.0 | `false` | `true` | + ### @aws-cdk/core:includePrefixInUniqueNameGeneration *Include the stack prefix in the stack name generation process* (fix) @@ -966,11 +1053,13 @@ If the flag is not set, then the prefix of the stack is prepended to the generat feature flag can lead to a change in stacks' name. Changing a stack name mean recreating the whole stack, which is not viable in some productive setups. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.84.0 | `false` | `true` | + ### @aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig *Generate a launch template when creating an AutoScalingGroup* (fix) @@ -983,14 +1072,17 @@ will now create an equivalent 'launchTemplate'. Alternatively, users can provide attempt to set user data according to the OS of the machine image if explicit user data is not provided. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.88.0 | `false` | `true` | -**Compatibility with old behavior:** +**Compatibility with old behavior:** If backwards compatibility needs to be maintained due to an existing autoscaling group using a launch config, set this flag to false. + + ### @aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby @@ -999,6 +1091,7 @@ provided. If this is set, an opensearch domain will automatically be created with multi-az with standby enabled. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1006,6 +1099,7 @@ multi-az with standby enabled. **Compatibility with old behavior:** Pass `capacity.multiAzWithStandbyEnabled: false` to `Domain` construct to restore the old behavior. + ### @aws-cdk/aws-efs:denyAnonymousAccess *EFS denies anonymous clients accesses* (default) @@ -1016,6 +1110,7 @@ access to `efs.FileSystem`. If this flag is not set, `efs.FileSystem` will allow all anonymous clients that can access over the network. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1023,6 +1118,7 @@ that can access over the network. **Compatibility with old behavior:** You can pass `allowAnonymousAccess: true` so allow anonymous clients access. + ### @aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId *When enabled, mount targets will have a stable logicalId that is linked to the associated subnet.* (fix) @@ -1034,11 +1130,13 @@ subnets changes. Set this flag to false for existing mount targets. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.93.0 | `false` | `true` | + ### @aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion *Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default* (default) @@ -1048,6 +1146,7 @@ functions will us the latest version of the runtime provided by the Lambda service. Do not use this if you your lambda function is reliant on dependencies shipped as part of the runtime environment. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1055,6 +1154,7 @@ shipped as part of the runtime environment. **Compatibility with old behavior:** Pass `runtime: lambda.Runtime.NODEJS_16_X` to `Function` construct to restore the previous behavior. + ### @aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier *When enabled, will always use the arn for identifiers for CfnSourceApiAssociation in the GraphqlApi construct rather than id.* (fix) @@ -1063,11 +1163,13 @@ When this feature flag is enabled, we use the IGraphqlApi ARN rather than ID whe the GraphqlApi construct. Using the ARN allows the association to support an association with a source api or merged api in another account. Note that for existing source api associations created with this flag disabled, enabling the flag will lead to a resource replacement. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.97.0 | `false` | `true` | + ### @aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters *When enabled, a scope of InstanceParameterGroup for AuroraClusterInstance with each parameters will change.* (fix) @@ -1079,11 +1181,13 @@ from AuroraCluster. If the flag is set to false then it can only make one `AuroraClusterInstance` with each `InstanceParameterGroup` in the AuroraCluster. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.97.0 | `false` | `true` | + ### @aws-cdk/aws-rds:preventRenderingDeprecatedCredentials *When enabled, creating an RDS database cluster from a snapshot will only render credentials for snapshot credentials.* (fix) @@ -1101,11 +1205,13 @@ Set this flag to prevent rendering deprecated `credentials` and creating an extra database secret when only using `snapshotCredentials` to create an RDS database cluster from a snapshot. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.98.0 | `false` | `true` | + ### @aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource *When enabled, the CodeCommit source action is using the default branch name 'main'.* (fix) @@ -1114,11 +1220,13 @@ When setting up a CodeCommit source action for the source stage of a pipeline, p default branch is 'master'. However, with the activation of this feature flag, the default branch is updated to 'main'. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.103.1 | `false` | `true` | + ### @aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction *When enabled, the logical ID of a Lambda permission for a Lambda action includes an alarm ID.* (fix) @@ -1130,11 +1238,13 @@ can be created with `LambdaAction`. If the flag is set to false then it can only make one alarm for the Lambda with `LambdaAction`. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.124.0 | `false` | `true` | + ### @aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse *Enables Pipeline to set the default value for crossAccountKeys to false.* (default) @@ -1142,6 +1252,7 @@ If the flag is set to false then it can only make one alarm for the Lambda with When this feature flag is enabled, and the `crossAccountKeys` property is not provided in a `Pipeline` construct, the construct automatically defaults the value of this property to false. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1149,6 +1260,7 @@ construct, the construct automatically defaults the value of this property to fa **Compatibility with old behavior:** Pass `crossAccountKeys: true` to `Pipeline` construct to restore the previous behavior. + ### @aws-cdk/aws-codepipeline:defaultPipelineTypeToV2 *Enables Pipeline to set the default pipeline type to V2.* (default) @@ -1156,6 +1268,7 @@ construct, the construct automatically defaults the value of this property to fa When this feature flag is enabled, and the `pipelineType` property is not provided in a `Pipeline` construct, the construct automatically defaults the value of this property to `PipelineType.V2`. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1163,6 +1276,7 @@ construct, the construct automatically defaults the value of this property to `P **Compatibility with old behavior:** Pass `pipelineType: PipelineType.V1` to `Pipeline` construct to restore the previous behavior. + ### @aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope *When enabled, IAM Policy created from KMS key grant will reduce the resource scope to this key only.* (fix) @@ -1170,11 +1284,13 @@ construct, the construct automatically defaults the value of this property to `P When this feature flag is enabled and calling KMS key grant method, the created IAM policy will reduce the resource scope from '*' to this specific granting KMS key. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.134.0 | `false` | `true` | + ### @aws-cdk/aws-eks:nodegroupNameAttribute *When enabled, nodegroupName attribute of the provisioned EKS NodeGroup will not have the cluster name prefix.* (fix) @@ -1182,17 +1298,20 @@ When this feature flag is enabled and calling KMS key grant method, the created When this feature flag is enabled, the nodegroupName attribute will be exactly the name of the nodegroup without any prefix. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.139.0 | `false` | `true` | + ### @aws-cdk/aws-ec2:ebsDefaultGp3Volume *When enabled, the default volume type of the EBS volume will be GP3* (default) When this featuer flag is enabled, the default volume type of the EBS volume will be `EbsDeviceVolumeType.GENERAL_PURPOSE_SSD_GP3`. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1200,6 +1319,7 @@ When this featuer flag is enabled, the default volume type of the EBS volume wil **Compatibility with old behavior:** Pass `volumeType: EbsDeviceVolumeType.GENERAL_PURPOSE_SSD` to `Volume` construct to restore the previous behavior. + ### @aws-cdk/pipelines:reduceAssetRoleTrustScope *Remove the root account principal from PipelineAssetsFileRole trust policy* (default) @@ -1207,6 +1327,7 @@ When this featuer flag is enabled, the default volume type of the EBS volume wil When this feature flag is enabled, the root account principal will not be added to the trust policy of asset role. When this feature flag is disabled, it will keep the root account principal in the trust policy. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1214,12 +1335,14 @@ When this feature flag is disabled, it will keep the root account principal in t **Compatibility with old behavior:** Disable the feature flag to add the root account principal back + ### @aws-cdk/aws-ecs:removeDefaultDeploymentAlarm *When enabled, remove default deployment alarm settings* (default) When this featuer flag is enabled, remove the default deployment alarm settings when creating a AWS ECS service. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1227,6 +1350,7 @@ When this featuer flag is enabled, remove the default deployment alarm settings **Compatibility with old behavior:** Set AWS::ECS::Service 'DeploymentAlarms' manually to restore the previous behavior. + ### @aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault *When enabled, the custom resource used for `AwsCustomResource` will configure the `logApiResponseData` property as true by default* (fix) @@ -1234,17 +1358,19 @@ When this featuer flag is enabled, remove the default deployment alarm settings This results in 'logApiResponseData' being passed as true to the custom resource provider. This will cause the custom resource handler to receive an 'Update' event. If you don't have an SDK call configured for the 'Update' event and you're dependent on specific SDK call response data, you will see this error from CFN: -CustomResource attribute error: Vendor response doesn't contain attribute in object. See ) for more details. +CustomResource attribute error: Vendor response doesn't contain attribute in object. See https://github.com/aws/aws-cdk/issues/29949) for more details. Unlike most feature flags, we don't recommend setting this feature flag to true. However, if you're using the 'AwsCustomResource' construct with 'logApiResponseData' as true in the event object, then setting this feature flag will keep this behavior. Otherwise, setting this feature flag to false will trigger an 'Update' event by removing the 'logApiResponseData' property from the event object. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.145.0 | `false` | `false` | + ### @aws-cdk/aws-s3:keepNotificationInImportedBucket *When enabled, Adding notifications to a bucket in the current stack will not remove notification from imported stack.* (fix) @@ -1254,11 +1380,13 @@ Currently, adding notifications to a bucket where it was created by ourselves wi When this feature flag is enabled, adding notifications to a bucket in the current stack will only update notification defined in this stack. Other notifications that are not managed by this stack will be kept. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.155.0 | `false` | `false` | + ### @aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask *When enabled, use new props for S3 URI field in task definition of state machine for bedrock invoke model.* (fix) @@ -1269,6 +1397,7 @@ of State Machine Task definition. When this feature flag is enabled, specify newly introduced props 's3InputUri' and 's3OutputUri' to populate S3 uri under input and output fields in state machine task definition for Bedrock invoke model. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1276,6 +1405,7 @@ When this feature flag is enabled, specify newly introduced props 's3InputUri' a **Compatibility with old behavior:** Disable the feature flag to use input and output path fields for s3 URI + ### @aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions *When enabled, we will only grant the necessary permissions when users specify cloudwatch log group through logConfiguration* (fix) @@ -1285,6 +1415,7 @@ specified as logConfiguration and it will grant 'Resources': ['*'] to the task r When this feature flag is enabled, we will only grant the necessary permissions when users specify cloudwatch log group. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1292,6 +1423,7 @@ When this feature flag is enabled, we will only grant the necessary permissions **Compatibility with old behavior:** Disable the feature flag to continue grant permissions to log group when no log group is specified + ### @aws-cdk/aws-ec2:ec2SumTImeoutEnabled *When enabled, initOptions.timeout and resourceSignalTimeout values will be summed together.* (fix) @@ -1301,11 +1433,13 @@ only the value from 'resourceSignalTimeout' will be used. When this feature flag is enabled, if both initOptions.timeout and resourceSignalTimeout are specified, the values will to be summed together. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.160.0 | `false` | `true` | + ### @aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission *When enabled, a Lambda authorizer Permission created when using GraphqlApi will be properly scoped with a SourceArn.* (fix) @@ -1317,11 +1451,13 @@ it allows invocations from any source. When this feature flag is enabled, the AWS::Lambda::Permission will be properly scoped with the SourceArn corresponding to the specific AppSync GraphQL API. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.161.0 | `false` | `true` | + ### @aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages *When enabled, both `@aws-sdk` and `@smithy` packages will be excluded from the Lambda Node.js 18.x runtime to prevent version mismatches in bundled applications.* (fix) @@ -1332,11 +1468,13 @@ However, this can cause version mismatches between the '@aws-sdk/*' and '@smithy When this feature flag is enabled, both '@aws-sdk/*' and '@smithy/*' packages will be excluded during the bundling process. This ensures that no mismatches occur between these tightly coupled dependencies when using the AWS SDK v3 in Lambda functions. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.161.0 | `false` | `true` | + ### @aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId *When enabled, the value of property `instanceResourceId` in construct `DatabaseInstanceReadReplica` will be set to the correct value which is `DbiResourceId` instead of currently `DbInstanceArn`* (fix) @@ -1345,6 +1483,7 @@ Currently, the value of the property 'instanceResourceId' in construct 'Database When this feature flag is enabled, the value of that property will be as expected set to 'DbiResourceId' attribute, and that will fix the grantConnect method. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1352,6 +1491,7 @@ When this feature flag is enabled, the value of that property will be as expecte **Compatibility with old behavior:** Disable the feature flag to use `DbInstanceArn` as value for property `instanceResourceId` + ### @aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics *When enabled, CFN templates added with `cfn-include` will error if the template contains Resource Update or Create policies with CFN Intrinsics that include non-primitive values.* (fix) @@ -1360,11 +1500,13 @@ Without enabling this feature flag, `cfn-include` will silently drop resource up Enabling this feature flag will make `cfn-include` throw on these templates, unless you specify the logical ID of the resource in the 'unhydratedResources' property. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.161.0 | `false` | `true` | + ### @aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy *When enabled, the resource of IAM Run Ecs policy generated by SFN EcsRunTask will reference the definition, instead of constructing ARN.* (fix) @@ -1374,11 +1516,13 @@ The revision number at the end will be replaced with a wildcard which it shouldn When this feature flag is enabled, if the task definition is created in the stack, the 'Resource' section will 'Ref' the taskDefinition. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.163.0 | `false` | `true` | + ### @aws-cdk/aws-dynamodb:resourcePolicyPerReplica *When enabled will allow you to specify a resource policy per replica, and not copy the source table policy to all replicas* (fix) @@ -1390,11 +1534,13 @@ This will prevent you from creating a new table which has an additional replica This is a feature flag as the old behavior was technically incorrect but users may have come to depend on it. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.164.0 | `false` | `true` | + ### @aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault *When enabled, the BastionHost construct will use the latest Amazon Linux 2023 AMI, instead of Amazon Linux 2.* (default) @@ -1406,6 +1552,7 @@ and secure option. When this feature flag is enabled, if you do not pass the machineImage property to the BastionHost construct, the latest Amazon Linux 2023 version will be used instead of Amazon Linux 2. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1413,6 +1560,7 @@ the latest Amazon Linux 2023 version will be used instead of Amazon Linux 2. **Compatibility with old behavior:** Disable the feature flag or explicitly pass an Amazon Linux 2 machine image to the BastionHost construct. + ### @aws-cdk/core:aspectStabilization *When enabled, a stabilization loop will be run when invoking Aspects during synthesis.* (config) @@ -1422,11 +1570,13 @@ This means that the Aspects that create other Aspects are not run and Aspects th When this feature flag is enabled, a stabilization loop is run to recurse the construct tree multiple times when invoking Aspects. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.172.0 | `true` | `true` | + ### @aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource *When enabled, use a new method for DNS Name of user pool domain target without creating a custom resource.* (fix) @@ -1436,22 +1586,25 @@ creates a custom resource internally, but the new method doesn't need a custom r If the flag is set to false then a custom resource will be created when using `UserPoolDomainTarget`. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | | 2.174.0 | `false` | `true` | + ### @aws-cdk/aws-ecs:disableEcsImdsBlocking *When set to true, CDK synth will throw exception if canContainersAccessInstanceRole is false. **IMPORTANT: See [details.](#aws-cdkaws-ecsdisableEcsImdsBlocking)*** (temporary) In an ECS Cluster with `MachineImageType.AMAZON_LINUX_2`, the canContainersAccessInstanceRole=false option attempts to add commands to block containers from accessing IMDS. CDK cannot guarantee the correct execution of the feature in all platforms. Setting this feature flag -to true will ensure CDK does not attempt to implement IMDS blocking. By **end of 2025**, CDK will remove the +to true will ensure CDK does not attempt to implement IMDS blocking. By **end of 2025**, CDK will remove the IMDS blocking feature. See [Github discussion](https://github.com/aws/aws-cdk/discussions/32609) for more information. It is recommended to follow ECS documentation to block IMDS for your specific platform and cluster configuration. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1459,16 +1612,18 @@ It is recommended to follow ECS documentation to block IMDS for your specific pl **Compatibility with old behavior:** It is strongly recommended to set this flag to true. However, if necessary, set this flag to false to continue using the old implementation. + ### @aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature *When set to true along with canContainersAccessInstanceRole=false in ECS cluster, new updated commands will be added to UserData to block container accessing IMDS. **Applicable to Linux only. IMPORTANT: See [details.](#aws-cdkaws-ecsenableImdsBlockingDeprecatedFeature)*** (temporary) In an ECS Cluster with `MachineImageType.AMAZON_LINUX_2`, the canContainersAccessInstanceRole=false option attempts to add commands to block containers from -accessing IMDS. Set this flag to true in order to use new and updated commands. Please note that this -feature alone with this feature flag will be deprecated by **end of 2025** as CDK cannot +accessing IMDS. Set this flag to true in order to use new and updated commands. Please note that this +feature alone with this feature flag will be deprecated by **end of 2025** as CDK cannot guarantee the correct execution of the feature in all platforms. See [Github discussion](https://github.com/aws/aws-cdk/discussions/32609) for more information. It is recommended to follow ECS documentation to block IMDS for your specific platform and cluster configuration. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1476,6 +1631,7 @@ It is recommended to follow ECS documentation to block IMDS for your specific pl **Compatibility with old behavior:** Set this flag to false in order to continue using old and outdated commands. However, it is **not** recommended. + ### @aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault *When enabled, the default security group ingress rules will allow IPv6 ingress from anywhere* (fix) @@ -1486,6 +1642,7 @@ will allow IPv6 ingress from anywhere (::/0). Previously, the default security g Using a feature flag to make sure existing customers who might be relying on the overly restrictive permissions are not broken. + | Since | Default | Recommended | | ----- | ----- | ----- | | (not in v1) | | | @@ -1493,6 +1650,7 @@ on the overly restrictive permissions are not broken. **Compatibility with old behavior:** Disable the feature flag to only allow IPv4 ingress in the default security group rules. + ### @aws-cdk/core:enableAdditionalMetadataCollection *When enabled, CDK will expand the scope of usage data collected to better inform CDK development and improve communication for security concerns and emerging issues.* (config) diff --git a/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts b/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts index 49a45e1804b68..e97926c9e49d8 100644 --- a/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts +++ b/packages/aws-cdk-lib/pipelines/lib/private/asset-singleton-role.ts @@ -2,6 +2,7 @@ import { Construct, IDependable } from 'constructs'; import * as iam from '../../../aws-iam'; import { PolicyStatement } from '../../../aws-iam'; import { ArnFormat, Stack } from '../../../core'; +import { addConstructMetadata } from '../../../core/lib/metadata-resource'; /** * Role which will be reused across asset jobs @@ -15,6 +16,8 @@ export class AssetSingletonRole extends iam.Role { constructor(scope: Construct, id: string, props: iam.RoleProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); // Logging permissions this.addToPolicy(new iam.PolicyStatement({ diff --git a/packages/aws-cdk-lib/triggers/lib/trigger-function.ts b/packages/aws-cdk-lib/triggers/lib/trigger-function.ts index c2c3fd61847e4..20358f2e39d25 100644 --- a/packages/aws-cdk-lib/triggers/lib/trigger-function.ts +++ b/packages/aws-cdk-lib/triggers/lib/trigger-function.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { ITrigger, Trigger, TriggerOptions } from '.'; import * as lambda from '../../aws-lambda'; +import { addConstructMetadata } from '../../core/lib/metadata-resource'; /** * Props for `InvokeFunction`. @@ -20,6 +21,8 @@ export class TriggerFunction extends lambda.Function implements ITrigger { constructor(scope: Construct, id: string, props: TriggerFunctionProps) { super(scope, id, props); + // Enhanced CDK Analytics Telemetry + addConstructMetadata(this, props); this.trigger = new Trigger(this, 'Trigger', { ...props, diff --git a/tools/@aws-cdk/construct-metadata-updater/.gitignore b/tools/@aws-cdk/construct-metadata-updater/.gitignore new file mode 100644 index 0000000000000..bef31def37928 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/.gitignore @@ -0,0 +1,15 @@ +*.js +*.js.map +*.d.ts +dist + +.LAST_BUILD +*.snk +!jest.config.js + +.nyc_output +coverage +nyc.config.js +!.eslintrc.js +!test/test-fixture/jsii/node_modules/ +junit.xml diff --git a/tools/@aws-cdk/construct-metadata-updater/LICENSE b/tools/@aws-cdk/construct-metadata-updater/LICENSE new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tools/@aws-cdk/construct-metadata-updater/README.md b/tools/@aws-cdk/construct-metadata-updater/README.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata b/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata new file mode 100755 index 0000000000000..c3483bf973ee4 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('./update-construct-metadata.js'); diff --git a/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata.ts b/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata.ts new file mode 100755 index 0000000000000..f8fe4bd500948 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/bin/update-construct-metadata.ts @@ -0,0 +1,7 @@ +#!/usr/bin/env node +import {main} from '../lib'; + +main().catch(e => { + console.error(e); + process.exit(1); +}); \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/jest.config.js b/tools/@aws-cdk/construct-metadata-updater/jest.config.js new file mode 100644 index 0000000000000..9a7e1a9cb0b61 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); +module.exports = baseConfig; \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/lib/index.ts b/tools/@aws-cdk/construct-metadata-updater/lib/index.ts new file mode 100644 index 0000000000000..a0a7cfda046db --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/lib/index.ts @@ -0,0 +1,6 @@ +import { ResourceMetadataUpdater } from './metadata-updater'; + +export async function main() { + const updater = new ResourceMetadataUpdater("../../../../packages/"); + await updater.execute(); +} \ No newline at end of file diff --git a/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts b/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts new file mode 100644 index 0000000000000..97c0b63d3da27 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/lib/metadata-updater.ts @@ -0,0 +1,217 @@ +import { ClassDeclaration, Project, QuoteKind } from "ts-morph"; +import * as path from "path"; +import * as fs from "fs"; +// import SyntaxKind = ts.SyntaxKind; + +const DIRECTORIES_TO_SKIP = [ + "node_modules", + "dist", + "build", + "decdk", + "awslint", + "test", +]; + +export class ResourceMetadataUpdater { + private project: Project; + + constructor(dir: string) { + const projectDir = path.resolve(__dirname, dir); + + // Initialize a ts-morph Project + this.project = new Project({ + tsConfigFilePath: path.resolve(__dirname, "../tsconfig.json"), + manipulationSettings: { + quoteKind: QuoteKind.Single, + }, + }); + this.project.addSourceFilesAtPaths(this.readTypescriptFiles(projectDir)); + + console.log("Transformation complete."); + } + + public execute() { + // Process each file in the project + this.project.getSourceFiles().forEach((sourceFile) => { + console.log(`Processing file: ${sourceFile.getFilePath()}`); + this.transformFile(sourceFile.getFilePath()); + }); + } + + /** + * Recursively collect all .ts files from a given directory. + */ + private readTypescriptFiles(dir: string, filesList: string[] = []) { + const files = fs.readdirSync(dir); + + files.forEach((file) => { + const filePath = path.join(dir, file); + if (fs.statSync(filePath).isDirectory()) { + // Check if this directory is in the list of directories to skip + if (!DIRECTORIES_TO_SKIP.includes(file)) { + this.readTypescriptFiles(filePath, filesList); + } + } else if ( + filePath.endsWith(".ts") && + !filePath.endsWith(".generated.ts") && + !filePath.endsWith(".d.ts") && + !file.includes("test") + ) { + filesList.push(filePath); + } + }); + + return filesList; + } + + /** + * Recursively checks if a given type is a descendant of 'Resource'. + */ + private isDescendantOfResource(type: any): boolean { + // Check if the current type is 'Resource' + if (type.getSymbol().getName() === 'Resource') { + return true; + } + + // Get the base types (parent types) + const baseTypes = type.getBaseTypes(); + for (const baseType of baseTypes) { + if (this.isDescendantOfResource(baseType)) { + return true; + } + } + + // If no base type is 'Resource', return false + return false; + } + + /** + * Parse and transform a file using ts-morph. + */ + private transformFile(filePath: string): void { + const sourceFile = this.project.getSourceFile(filePath); + if (!sourceFile) return; + + let importAdded = false; + + sourceFile.forEachChild((node) => { + if (node instanceof ClassDeclaration) { + const symbol = node.getSymbol(); + if (symbol) { + const className = symbol.getName(); // Correct way to get the name + + // Check if the class is abstract by inspecting modifiers + const isAbstract = node.getModifiers()?.some((mod) => mod.getText() === "abstract"); + if (isAbstract) { + console.log(`Skipping abstract class: ${className}`); + return; + } + + // Check if the class or its subclasses extends Resource + const type = node.getType(); + if (this.isDescendantOfResource(type)) { + console.log(`Relevant class found: ${className} extends Resource`); + + if (!importAdded) { + this.addImportAndMetadataStatement(sourceFile, filePath, node); + importAdded = true; + } + } + } + } + }); + } + + /** + * Add the import statement for MetadataType to the file. + */ + private addImportAndMetadataStatement(sourceFile: any, filePath: string, node: any) { + const ret = this.addLineInConstructor(sourceFile, node); + if (!ret) { + return; + } + + const absoluteFilePath = path.resolve(filePath); + const absoluteTargetPath = path.resolve(__dirname, '../../../../packages/aws-cdk-lib/core/lib/metadata-resource.ts'); + + let relativePath = path.relative(path.dirname(absoluteFilePath), absoluteTargetPath).replace(/\\/g, "/").replace(/.ts/, ""); + if (absoluteFilePath.includes('@aws-cdk')) { + relativePath = 'aws-cdk-lib/core/lib/metadata-resource' + } + + // Check if the import already exists + if (sourceFile.getImportDeclarations().some((stmt: any) => stmt.getModuleSpecifier().getText().includes('/metadata-resource'))) { + console.log("Import already exists, skipping addition."); + return; + } + + // Create the new import statement + sourceFile.addImportDeclaration({ + moduleSpecifier: relativePath, + namedImports: [{ name: "addConstructMetadata" }], + }); + + console.log(`Added import for MetadataType in file: ${filePath} with relative path: ${relativePath}`); + + // Write the updated file back to disk + sourceFile.saveSync(); + } + + /** + * Add the line of code 'this.node.addMetadata(...)' inside the class constructor. + */ + private addLineInConstructor(sourceFile: any, classDeclaration: ClassDeclaration): boolean { + const constructor = classDeclaration.getConstructors()[0]; // Assuming there's only one constructor + + if (constructor) { + const parameters = constructor.getParameters(); + const parameterCount = parameters.length; + + // Only continue if there's at least 3 parameters. + if (parameterCount <= 2) { + return false; + } + + // Check if the statement already exists + const statements = constructor.getStatements(); + const hasMetadataCall = statements.some(statement => + statement.getText().includes('addConstructMetadata(') + ); + + if (hasMetadataCall) { + console.log(`Metadata statement already exists in class: ${classDeclaration.getName()}`); + return true; + } + + // Find the super() call, if it exists + const superCall = constructor.getStatements().find(statement => + statement.getText().includes('super(') + ); + + // If a super() call exists, find its index and insert after it + if (superCall) { + const superCallIndex = constructor.getStatements().indexOf(superCall); + constructor.insertStatements(superCallIndex + 1, writer => { + writer.setIndentationLevel(0); + writer.write(' // Enhanced CDK Analytics Telemetry\n'); + writer.write(' addConstructMetadata(this, props);'); + }); + console.log(`Added 'addConstructMetadata();' after the 'super()' in the constructor of class: ${classDeclaration.getName()}`); + } else { + // If no super() call exists, just add the line at the top + constructor.insertStatements(0, writer => { + writer.setIndentationLevel(0); + writer.write(' // Enhanced CDK Analytics Telemetry\n'); + writer.write(' addConstructMetadata(this, props);'); + }); + console.log(`No 'super()' found. Added 'this.node.addMetadata();' at the top of the constructor for class: ${classDeclaration.getName()}`); + } + } else { + console.log(`No constructor found for class: ${classDeclaration.getName()}`); + return false; + } + + sourceFile.saveSync(); + return true; + } +} diff --git a/tools/@aws-cdk/construct-metadata-updater/package.json b/tools/@aws-cdk/construct-metadata-updater/package.json new file mode 100644 index 0000000000000..3a711f2c0c43c --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/package.json @@ -0,0 +1,31 @@ +{ + "name": "@aws-cdk/metadata-updater", + "version": "0.0.0", + "private": true, + "bin": { + "metadata-updater": "bin/update-construct-metadata.ts" + }, + "scripts": { + "build": "tsc --build", + "build+test": "npm run build && npm run test", + "lint": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test", + "package": "mkdir -p dist/js && mv $(npm pack) dist/js/", + "test": "jest --passWithNoTests --updateSnapshot", + "test:watch": "jest --watch", + "watch": "tsc --build -w tsconfig.json" + }, + "devDependencies": { + "@types/jest": "^29.5.14", + "@types/node": "^16", + "jest": "^29", + "ts-jest": "^29", + "typescript": "~5.5.2", + "cjs-module-lexer": "^1.4.1" + }, + "dependencies": { + "esbuild": "^0.24.0", + "ts-morph": "~24.0.0" + }, + "main": "lib/index.js", + "license": "Apache-2.0" +} diff --git a/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts b/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts new file mode 100644 index 0000000000000..9767914247611 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/test/metadata-updater.test.ts @@ -0,0 +1,185 @@ +import { ResourceMetadataUpdater } from '../lib/metadata-updater'; +import { Project, ClassDeclaration, SourceFile, QuoteKind } from 'ts-morph'; +import * as path from 'path'; +import * as fs from 'fs'; + +// Mock ts-morph +jest.mock('ts-morph'); +// Mock fs +jest.mock('fs'); +// Mock path +jest.mock('path'); + +describe('ResourceMetadataUpdater', () => { + let updater: ResourceMetadataUpdater; + let mockSourceFile: jest.Mocked; + let mockClassDeclaration: jest.Mocked; + + beforeEach(() => { + // Reset all mocks + jest.clearAllMocks(); + + // Setup mock implementations + (Project as jest.Mock).mockImplementation(() => ({ + addSourceFilesAtPaths: jest.fn(), + getSourceFiles: jest.fn().mockReturnValue([]), + })); + + // Mock fs.readdirSync and fs.statSync + (fs.readdirSync as jest.Mock).mockReturnValue([]); + (fs.statSync as jest.Mock).mockReturnValue({ isDirectory: () => false }); + + // Mock path.resolve + (path.resolve as jest.Mock).mockImplementation((...args) => args.join('/')); + + // Create instance of updater + updater = new ResourceMetadataUpdater('./test-dir'); + }); + + describe('constructor', () => { + it('should initialize with correct project settings', () => { + expect(Project).toHaveBeenCalledWith({ + tsConfigFilePath: expect.stringMatching(/tsconfig\.json$/), + manipulationSettings: { + quoteKind: QuoteKind.Single + } + }); + }); + }); + + describe('readTypescriptFiles', () => { + it('should skip specified directories', () => { + const mockFiles = ['node_modules', 'dist', 'test', 'valid.ts']; + (fs.readdirSync as jest.Mock).mockReturnValue(mockFiles); + (path.join as jest.Mock).mockImplementation((...args) => args.join('/')); + (fs.statSync as jest.Mock).mockImplementation((path) => ({ + isDirectory: () => !path.endsWith('.ts') + })); + + const result = (updater as any).readTypescriptFiles('./test-dir'); + expect(result).toEqual(['./test-dir/valid.ts']); + }); + + it('should only include valid typescript files', () => { + const mockFiles = ['file.ts', 'file.generated.ts', 'file.d.ts', 'file.test.ts']; + (fs.readdirSync as jest.Mock).mockReturnValue(mockFiles); + (fs.statSync as jest.Mock).mockReturnValue({ isDirectory: () => false }); + + const result = (updater as any).readTypescriptFiles('./test-dir'); + expect(result).toEqual(['./test-dir/file.ts']); + }); + }); + + describe('isDescendantOfResource', () => { + it('should return true for direct Resource type', () => { + const mockType = { + getSymbol: () => ({ getName: () => 'Resource' }) + }; + + const result = (updater as any).isDescendantOfResource(mockType); + expect(result).toBe(true); + }); + + it('should return true for descendant of Resource', () => { + const mockType = { + getSymbol: () => ({ getName: () => 'NotResource' }), + getBaseTypes: () => [{ + getSymbol: () => ({ getName: () => 'Resource' }) + }] + }; + + const result = (updater as any).isDescendantOfResource(mockType); + expect(result).toBe(true); + }); + + it('should return false for non-Resource type', () => { + const mockType = { + getSymbol: () => ({ getName: () => 'NotResource' }), + getBaseTypes: () => [] + }; + + const result = (updater as any).isDescendantOfResource(mockType); + expect(result).toBe(false); + }); + }); + + describe('transformFile', () => { + beforeEach(() => { + mockClassDeclaration = { + getSymbol: jest.fn().mockReturnValue({ getName: () => 'TestClass' }), + getModifiers: jest.fn().mockReturnValue([]), + getType: jest.fn(), + getName: jest.fn().mockReturnValue('TestClass'), + getConstructors: jest.fn().mockReturnValue([]) + } as any; + + Object.setPrototypeOf(mockClassDeclaration, ClassDeclaration.prototype); + + mockSourceFile = { + forEachChild: jest.fn((callback) => callback(mockClassDeclaration)), + getImportDeclarations: jest.fn().mockReturnValue([]), + addImportDeclaration: jest.fn(), + saveSync: jest.fn() + } as any; + + (Project as jest.Mock).mockImplementation(() => ({ + addSourceFilesAtPaths: jest.fn(), + getSourceFile: jest.fn().mockReturnValue(mockSourceFile) + })); + + updater = new ResourceMetadataUpdater('./test-dir'); + (updater as any).addImportAndMetadataStatement = jest.fn(); + }); + + it('should skip abstract classes', () => { + mockClassDeclaration.getModifiers.mockReturnValue([{ getText: () => 'abstract' } as any]); + (updater as any).transformFile('test.ts'); + expect(mockClassDeclaration.getType).not.toHaveBeenCalled(); + }); + + it('should process non-abstract Resource classes', () => { + mockClassDeclaration.getType.mockReturnValue({ + getSymbol: () => ({ getName: () => 'Resource' }), + getBaseTypes: () => [] + } as any); + + (updater as any).transformFile('test.ts'); + expect((updater as any).addImportAndMetadataStatement).toHaveBeenCalled(); + }); + }); + + describe('addLineInConstructor', () => { + it('should not add metadata if constructor has less than 3 parameters', () => { + const mockConstructor = { + getParameters: jest.fn().mockReturnValue([1, 2]), + getStatements: jest.fn().mockReturnValue([]) + }; + + mockClassDeclaration = { + getName: jest.fn().mockReturnValue('TestClass'), + getConstructors: jest.fn().mockReturnValue([mockConstructor]) + } as any; + + const result = (updater as any).addLineInConstructor(mockSourceFile, mockClassDeclaration); + expect(result).toBe(false); + }); + + it('should add metadata statement after super() call', () => { + const mockStatements = [{ getText: () => 'super(scope, id);' }]; + const mockConstructor = { + getParameters: jest.fn().mockReturnValue([1, 2, 3]), + getStatements: jest.fn().mockReturnValue(mockStatements), + insertStatements: jest.fn() + }; + + mockClassDeclaration = { + getName: jest.fn().mockReturnValue('TestClass'), + getConstructors: jest.fn().mockReturnValue([mockConstructor]) + } as any; + + const result = (updater as any).addLineInConstructor(mockSourceFile, mockClassDeclaration); + expect(result).toBe(true); + expect(mockConstructor.insertStatements).toHaveBeenCalled(); + }); + }); +}); diff --git a/tools/@aws-cdk/construct-metadata-updater/tsconfig.json b/tools/@aws-cdk/construct-metadata-updater/tsconfig.json new file mode 100644 index 0000000000000..26a4b348983d4 --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": ["es2020", "dom"], + "strict": true, + "alwaysStrict": true, + "declaration": true, + "inlineSourceMap": true, + "inlineSources": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "resolveJsonModule": true, + "composite": true, + "incremental": true, + "moduleResolution": "node" + }, + "include": ["**/*.ts"], + "exclude": ["**/*.d.ts"] +} diff --git a/tools/@aws-cdk/construct-metadata-updater/yarn.lock b/tools/@aws-cdk/construct-metadata-updater/yarn.lock new file mode 100644 index 0000000000000..dfe1d87392c3a --- /dev/null +++ b/tools/@aws-cdk/construct-metadata-updater/yarn.lock @@ -0,0 +1,2362 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.9": + version "7.26.3" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.26.0", "@babel/generator@^7.26.3", "@babel/generator@^7.7.2": + version "7.26.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== + dependencies: + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== + dependencies: + "@babel/types" "^7.26.3" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9": + version "7.26.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3": + version "7.26.3" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@ts-morph/common@~0.25.0": + version "0.25.0" + resolved "https://registry.npmjs.org/@ts-morph/common/-/common-0.25.0.tgz#b76cbd517118acc8eadaf12b2fc2d47f42923452" + integrity sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg== + dependencies: + minimatch "^9.0.4" + path-browserify "^1.0.1" + tinyglobby "^0.2.9" + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.6" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/node@*": + version "22.10.5" + resolved "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz#95af89a3fb74a2bb41ef9927f206e6472026e48b" + integrity sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ== + dependencies: + undici-types "~6.20.0" + +"@types/node@^16": + version "16.18.123" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.123.tgz#9073e454ee52ce9e2de038e7e0cf90f65c9abd56" + integrity sha512-/n7I6V/4agSpJtFDKKFEa763Hc1z3hmvchobHS1TisCOTKD5nxq8NJ2iK7SRIMYL276Q9mgWOx2AWp5n2XI6eA== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0: + version "4.24.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" + integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001688: + version "1.0.30001690" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" + integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== + +chalk@^4.0.0, chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +code-block-writer@^13.0.3: + version "13.0.3" + resolved "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz#90f8a84763a5012da7af61319dd638655ae90b5b" + integrity sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.4.0" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.73: + version "1.5.79" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz#4424f23f319db7a653cf9ee76102e4ac283e6b3e" + integrity sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +esbuild@^0.24.0: + version "0.24.2" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fdir@^6.4.2: + version "6.4.2" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz#ddaa7ce1831b161bc3657bb99cb36e1622702689" + integrity sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ== + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29: + version "29.7.0" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== + +resolve@^1.20.0: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +tinyglobby@^0.2.9: + version "0.2.10" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz#e712cf2dc9b95a1f5c5bbd159720e15833977a0f" + integrity sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew== + dependencies: + fdir "^6.4.2" + picomatch "^4.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-jest@^29: + version "29.2.5" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + +ts-morph@~24.0.0: + version "24.0.0" + resolved "https://registry.npmjs.org/ts-morph/-/ts-morph-24.0.0.tgz#6249b526ade40cf99c8803e7abdae6c65882e58e" + integrity sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw== + dependencies: + "@ts-morph/common" "~0.25.0" + code-block-writer "^13.0.3" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@~5.5.2: + version "5.5.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==