@btc-embedded/cdk-extensions 0.20.0 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +529 -45
- package/API.md +491 -15
- package/CHANGELOG.md +26 -0
- package/lib/constructs/EventPipe.js +1 -1
- package/lib/constructs/ExportedService.d.ts +141 -0
- package/lib/constructs/ExportedService.js +139 -0
- package/lib/constructs/S3Bucket.js +1 -1
- package/lib/constructs/SecureRestApi.js +1 -1
- package/lib/constructs/SecureRestApiV2.js +1 -1
- package/lib/constructs/index.d.ts +1 -0
- package/lib/constructs/index.js +2 -1
- package/lib/extensions/ApiGatewayExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +1 -1
- package/lib/extensions/CloudMapExtension.d.ts +16 -0
- package/lib/extensions/CloudMapExtension.js +11 -2
- package/lib/extensions/DeactivatableServiceExtension.js +1 -1
- package/lib/extensions/DocumentDbAccessExtension.js +1 -1
- package/lib/extensions/DomainEventMessagingExtension.js +1 -1
- package/lib/extensions/EfsMountExtension.js +1 -1
- package/lib/extensions/ExtraContainerExtension.js +1 -1
- package/lib/extensions/HTTPApiExtension.js +1 -1
- package/lib/extensions/LogExtension.js +1 -1
- package/lib/extensions/ModifyContainerDefinitionExtension.js +1 -1
- package/lib/extensions/ModifyTaskDefinitionExtension.js +1 -1
- package/lib/extensions/OpenIdExtension.js +1 -1
- package/lib/extensions/OpenTelemetryExtension.js +1 -1
- package/lib/extensions/PostgresDbAccessExtension.js +1 -1
- package/lib/extensions/SharedVolumeExtension.js +1 -1
- package/lib/extensions/TcpKeepAliveExtension.js +1 -1
- package/lib/platform/ApiGateway.js +1 -1
- package/lib/platform/ApiGatewayVpcLink.js +2 -2
- package/lib/platform/ApplicationLoadBalancer.js +1 -1
- package/lib/platform/ApplicationLoadBalancerV2.d.ts +9 -6
- package/lib/platform/ApplicationLoadBalancerV2.js +6 -4
- package/lib/platform/BTCLogGroup.js +1 -1
- package/lib/platform/CognitoUserPool.js +2 -2
- package/lib/platform/DefaultUserPoolClients.js +1 -1
- package/lib/platform/DocumentDB.js +2 -2
- package/lib/platform/EcsCluster.js +1 -1
- package/lib/platform/EfsFileSystem.js +1 -1
- package/lib/platform/PrivateDnsNamespace.js +1 -1
- package/lib/platform/ResourceServer.js +1 -1
- package/lib/platform/Vpc.js +1 -1
- package/lib/platform/VpcV2.js +3 -3
- package/lib/utils/StackParameter.js +1 -1
- package/package.json +1 -1
package/API.md
CHANGED
|
@@ -2896,6 +2896,253 @@ public readonly role: Role;
|
|
|
2896
2896
|
---
|
|
2897
2897
|
|
|
2898
2898
|
|
|
2899
|
+
### ExportedService <a name="ExportedService" id="@btc-embedded/cdk-extensions.ExportedService"></a>
|
|
2900
|
+
|
|
2901
|
+
- *Implements:* <a href="#@btc-embedded/cdk-extensions.IExportedService">IExportedService</a>
|
|
2902
|
+
|
|
2903
|
+
Represents an ECS service exported from another CDK stack.
|
|
2904
|
+
|
|
2905
|
+
This construct enables cross-stack service connectivity by transporting service
|
|
2906
|
+
metadata (security group ID and namespace) across stack boundaries using StackParameter.
|
|
2907
|
+
The port must be specified when importing the service.
|
|
2908
|
+
|
|
2909
|
+
On the provider side (where the service is defined), use ExportedService
|
|
2910
|
+
within the CloudMapExtension to expose the service. On the consumer side,
|
|
2911
|
+
use ExportedService.fromAttributes() to import the service with the port.
|
|
2912
|
+
|
|
2913
|
+
*Example*
|
|
2914
|
+
|
|
2915
|
+
```typescript
|
|
2916
|
+
// Consumer side
|
|
2917
|
+
const exportedService = ExportedService.fromAttributes(scope, id, {
|
|
2918
|
+
stackName: 'my-service-stack',
|
|
2919
|
+
serviceName: 'my-service',
|
|
2920
|
+
port: 8080,
|
|
2921
|
+
});
|
|
2922
|
+
|
|
2923
|
+
exportedService.allowFrom(myService);
|
|
2924
|
+
const url = exportedService.apiUrl();
|
|
2925
|
+
```
|
|
2926
|
+
|
|
2927
|
+
|
|
2928
|
+
#### Initializers <a name="Initializers" id="@btc-embedded/cdk-extensions.ExportedService.Initializer"></a>
|
|
2929
|
+
|
|
2930
|
+
```typescript
|
|
2931
|
+
import { ExportedService } from '@btc-embedded/cdk-extensions'
|
|
2932
|
+
|
|
2933
|
+
new ExportedService(scope: Construct, id: string, props: ExportedServiceProps)
|
|
2934
|
+
```
|
|
2935
|
+
|
|
2936
|
+
| **Name** | **Type** | **Description** |
|
|
2937
|
+
| --- | --- | --- |
|
|
2938
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
|
|
2939
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
|
|
2940
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.props">props</a></code> | <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceProps">ExportedServiceProps</a></code> | *No description.* |
|
|
2941
|
+
|
|
2942
|
+
---
|
|
2943
|
+
|
|
2944
|
+
##### `scope`<sup>Required</sup> <a name="scope" id="@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.scope"></a>
|
|
2945
|
+
|
|
2946
|
+
- *Type:* constructs.Construct
|
|
2947
|
+
|
|
2948
|
+
---
|
|
2949
|
+
|
|
2950
|
+
##### `id`<sup>Required</sup> <a name="id" id="@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.id"></a>
|
|
2951
|
+
|
|
2952
|
+
- *Type:* string
|
|
2953
|
+
|
|
2954
|
+
---
|
|
2955
|
+
|
|
2956
|
+
##### `props`<sup>Required</sup> <a name="props" id="@btc-embedded/cdk-extensions.ExportedService.Initializer.parameter.props"></a>
|
|
2957
|
+
|
|
2958
|
+
- *Type:* <a href="#@btc-embedded/cdk-extensions.ExportedServiceProps">ExportedServiceProps</a>
|
|
2959
|
+
|
|
2960
|
+
---
|
|
2961
|
+
|
|
2962
|
+
#### Methods <a name="Methods" id="Methods"></a>
|
|
2963
|
+
|
|
2964
|
+
| **Name** | **Description** |
|
|
2965
|
+
| --- | --- |
|
|
2966
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.toString">toString</a></code> | Returns a string representation of this construct. |
|
|
2967
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.allowFrom">allowFrom</a></code> | Allow an ECS service to connect to this exported service. |
|
|
2968
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.apiUrl">apiUrl</a></code> | Get the internal API URL of the service. |
|
|
2969
|
+
|
|
2970
|
+
---
|
|
2971
|
+
|
|
2972
|
+
##### `toString` <a name="toString" id="@btc-embedded/cdk-extensions.ExportedService.toString"></a>
|
|
2973
|
+
|
|
2974
|
+
```typescript
|
|
2975
|
+
public toString(): string
|
|
2976
|
+
```
|
|
2977
|
+
|
|
2978
|
+
Returns a string representation of this construct.
|
|
2979
|
+
|
|
2980
|
+
##### `allowFrom` <a name="allowFrom" id="@btc-embedded/cdk-extensions.ExportedService.allowFrom"></a>
|
|
2981
|
+
|
|
2982
|
+
```typescript
|
|
2983
|
+
public allowFrom(service: Service, description?: string): void
|
|
2984
|
+
```
|
|
2985
|
+
|
|
2986
|
+
Allow an ECS service to connect to this exported service.
|
|
2987
|
+
|
|
2988
|
+
This method adds a security group ingress rule allowing traffic from the
|
|
2989
|
+
given service to this exported service on its configured port.
|
|
2990
|
+
|
|
2991
|
+
###### `service`<sup>Required</sup> <a name="service" id="@btc-embedded/cdk-extensions.ExportedService.allowFrom.parameter.service"></a>
|
|
2992
|
+
|
|
2993
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.Service
|
|
2994
|
+
|
|
2995
|
+
The ECS service to allow connections from.
|
|
2996
|
+
|
|
2997
|
+
---
|
|
2998
|
+
|
|
2999
|
+
###### `description`<sup>Optional</sup> <a name="description" id="@btc-embedded/cdk-extensions.ExportedService.allowFrom.parameter.description"></a>
|
|
3000
|
+
|
|
3001
|
+
- *Type:* string
|
|
3002
|
+
|
|
3003
|
+
Optional description for the security group rule.
|
|
3004
|
+
|
|
3005
|
+
---
|
|
3006
|
+
|
|
3007
|
+
##### `apiUrl` <a name="apiUrl" id="@btc-embedded/cdk-extensions.ExportedService.apiUrl"></a>
|
|
3008
|
+
|
|
3009
|
+
```typescript
|
|
3010
|
+
public apiUrl(): string
|
|
3011
|
+
```
|
|
3012
|
+
|
|
3013
|
+
Get the internal API URL of the service.
|
|
3014
|
+
|
|
3015
|
+
The URL format is: http://<service-name>.<namespace>:<port>/
|
|
3016
|
+
|
|
3017
|
+
#### Static Functions <a name="Static Functions" id="Static Functions"></a>
|
|
3018
|
+
|
|
3019
|
+
| **Name** | **Description** |
|
|
3020
|
+
| --- | --- |
|
|
3021
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
|
|
3022
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.fromAttributes">fromAttributes</a></code> | Import an ExportedService from another stack. |
|
|
3023
|
+
|
|
3024
|
+
---
|
|
3025
|
+
|
|
3026
|
+
##### `isConstruct` <a name="isConstruct" id="@btc-embedded/cdk-extensions.ExportedService.isConstruct"></a>
|
|
3027
|
+
|
|
3028
|
+
```typescript
|
|
3029
|
+
import { ExportedService } from '@btc-embedded/cdk-extensions'
|
|
3030
|
+
|
|
3031
|
+
ExportedService.isConstruct(x: any)
|
|
3032
|
+
```
|
|
3033
|
+
|
|
3034
|
+
Checks if `x` is a construct.
|
|
3035
|
+
|
|
3036
|
+
Use this method instead of `instanceof` to properly detect `Construct`
|
|
3037
|
+
instances, even when the construct library is symlinked.
|
|
3038
|
+
|
|
3039
|
+
Explanation: in JavaScript, multiple copies of the `constructs` library on
|
|
3040
|
+
disk are seen as independent, completely different libraries. As a
|
|
3041
|
+
consequence, the class `Construct` in each copy of the `constructs` library
|
|
3042
|
+
is seen as a different class, and an instance of one class will not test as
|
|
3043
|
+
`instanceof` the other class. `npm install` will not create installations
|
|
3044
|
+
like this, but users may manually symlink construct libraries together or
|
|
3045
|
+
use a monorepo tool: in those cases, multiple copies of the `constructs`
|
|
3046
|
+
library can be accidentally installed, and `instanceof` will behave
|
|
3047
|
+
unpredictably. It is safest to avoid using `instanceof`, and using
|
|
3048
|
+
this type-testing method instead.
|
|
3049
|
+
|
|
3050
|
+
###### `x`<sup>Required</sup> <a name="x" id="@btc-embedded/cdk-extensions.ExportedService.isConstruct.parameter.x"></a>
|
|
3051
|
+
|
|
3052
|
+
- *Type:* any
|
|
3053
|
+
|
|
3054
|
+
Any object.
|
|
3055
|
+
|
|
3056
|
+
---
|
|
3057
|
+
|
|
3058
|
+
##### `fromAttributes` <a name="fromAttributes" id="@btc-embedded/cdk-extensions.ExportedService.fromAttributes"></a>
|
|
3059
|
+
|
|
3060
|
+
```typescript
|
|
3061
|
+
import { ExportedService } from '@btc-embedded/cdk-extensions'
|
|
3062
|
+
|
|
3063
|
+
ExportedService.fromAttributes(scope: Construct, id: string, attrs: ExportedServiceLookupOptions)
|
|
3064
|
+
```
|
|
3065
|
+
|
|
3066
|
+
Import an ExportedService from another stack.
|
|
3067
|
+
|
|
3068
|
+
This method imports the service metadata (security group and namespace)
|
|
3069
|
+
that was exported by the provider stack and constructs an IExportedService
|
|
3070
|
+
instance that can be used for establishing connections.
|
|
3071
|
+
|
|
3072
|
+
###### `scope`<sup>Required</sup> <a name="scope" id="@btc-embedded/cdk-extensions.ExportedService.fromAttributes.parameter.scope"></a>
|
|
3073
|
+
|
|
3074
|
+
- *Type:* constructs.Construct
|
|
3075
|
+
|
|
3076
|
+
The scope in which to define the construct.
|
|
3077
|
+
|
|
3078
|
+
---
|
|
3079
|
+
|
|
3080
|
+
###### `id`<sup>Required</sup> <a name="id" id="@btc-embedded/cdk-extensions.ExportedService.fromAttributes.parameter.id"></a>
|
|
3081
|
+
|
|
3082
|
+
- *Type:* string
|
|
3083
|
+
|
|
3084
|
+
The construct ID.
|
|
3085
|
+
|
|
3086
|
+
---
|
|
3087
|
+
|
|
3088
|
+
###### `attrs`<sup>Required</sup> <a name="attrs" id="@btc-embedded/cdk-extensions.ExportedService.fromAttributes.parameter.attrs"></a>
|
|
3089
|
+
|
|
3090
|
+
- *Type:* <a href="#@btc-embedded/cdk-extensions.ExportedServiceLookupOptions">ExportedServiceLookupOptions</a>
|
|
3091
|
+
|
|
3092
|
+
The exported service lookup options (stackName, serviceName, and port).
|
|
3093
|
+
|
|
3094
|
+
---
|
|
3095
|
+
|
|
3096
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
3097
|
+
|
|
3098
|
+
| **Name** | **Type** | **Description** |
|
|
3099
|
+
| --- | --- | --- |
|
|
3100
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
|
|
3101
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | Get the connections object for this service. |
|
|
3102
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedService.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | The security group of the exported ECS service. |
|
|
3103
|
+
|
|
3104
|
+
---
|
|
3105
|
+
|
|
3106
|
+
##### `node`<sup>Required</sup> <a name="node" id="@btc-embedded/cdk-extensions.ExportedService.property.node"></a>
|
|
3107
|
+
|
|
3108
|
+
```typescript
|
|
3109
|
+
public readonly node: Node;
|
|
3110
|
+
```
|
|
3111
|
+
|
|
3112
|
+
- *Type:* constructs.Node
|
|
3113
|
+
|
|
3114
|
+
The tree node.
|
|
3115
|
+
|
|
3116
|
+
---
|
|
3117
|
+
|
|
3118
|
+
##### `connections`<sup>Required</sup> <a name="connections" id="@btc-embedded/cdk-extensions.ExportedService.property.connections"></a>
|
|
3119
|
+
|
|
3120
|
+
```typescript
|
|
3121
|
+
public readonly connections: Connections;
|
|
3122
|
+
```
|
|
3123
|
+
|
|
3124
|
+
- *Type:* aws-cdk-lib.aws_ec2.Connections
|
|
3125
|
+
|
|
3126
|
+
Get the connections object for this service.
|
|
3127
|
+
|
|
3128
|
+
This allows the ExportedService to be used with the standard CDK IConnectable
|
|
3129
|
+
pattern for security group management.
|
|
3130
|
+
|
|
3131
|
+
---
|
|
3132
|
+
|
|
3133
|
+
##### `securityGroup`<sup>Required</sup> <a name="securityGroup" id="@btc-embedded/cdk-extensions.ExportedService.property.securityGroup"></a>
|
|
3134
|
+
|
|
3135
|
+
```typescript
|
|
3136
|
+
public readonly securityGroup: ISecurityGroup;
|
|
3137
|
+
```
|
|
3138
|
+
|
|
3139
|
+
- *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
|
|
3140
|
+
|
|
3141
|
+
The security group of the exported ECS service.
|
|
3142
|
+
|
|
3143
|
+
---
|
|
3144
|
+
|
|
3145
|
+
|
|
2899
3146
|
### PrivateDnsNamespace <a name="PrivateDnsNamespace" id="@btc-embedded/cdk-extensions.PrivateDnsNamespace"></a>
|
|
2900
3147
|
|
|
2901
3148
|
- *Implements:* <a href="#@btc-embedded/cdk-extensions.IPrivateDnsNamespace">IPrivateDnsNamespace</a>
|
|
@@ -5485,10 +5732,10 @@ const applicationLoadBalancerPropsV2: ApplicationLoadBalancerPropsV2 = { ... }
|
|
|
5485
5732
|
| --- | --- | --- |
|
|
5486
5733
|
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.healtCheckPath">healtCheckPath</a></code> | <code>string</code> | The health check path for the target group. |
|
|
5487
5734
|
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.hostedZone">hostedZone</a></code> | <code>aws-cdk-lib.aws_route53.IHostedZone</code> | The Route 53 hosted zone where the ALB's DNS record will be created. |
|
|
5488
|
-
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.recordName">recordName</a></code> | <code>string</code> | The domain prefix or record name for configuring the ALB domain. |
|
|
5489
5735
|
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.trafficPort">trafficPort</a></code> | <code>number</code> | The port on which the target group will receive traffic. |
|
|
5490
5736
|
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.userPool">userPool</a></code> | <code><a href="#@btc-embedded/cdk-extensions.ICognitoUserPool">ICognitoUserPool</a></code> | The Cognito User Pool of this base platform. |
|
|
5491
5737
|
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | The VPC in which the Application Load Balancer will be deployed. |
|
|
5738
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.recordName">recordName</a></code> | <code>string</code> | The domain prefix or record name for configuring the ALB domain. |
|
|
5492
5739
|
|
|
5493
5740
|
---
|
|
5494
5741
|
|
|
@@ -5516,20 +5763,6 @@ The Route 53 hosted zone where the ALB's DNS record will be created.
|
|
|
5516
5763
|
|
|
5517
5764
|
---
|
|
5518
5765
|
|
|
5519
|
-
##### `recordName`<sup>Required</sup> <a name="recordName" id="@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.recordName"></a>
|
|
5520
|
-
|
|
5521
|
-
```typescript
|
|
5522
|
-
public readonly recordName: string;
|
|
5523
|
-
```
|
|
5524
|
-
|
|
5525
|
-
- *Type:* string
|
|
5526
|
-
|
|
5527
|
-
The domain prefix or record name for configuring the ALB domain.
|
|
5528
|
-
|
|
5529
|
-
This name is used to register an A record in the given hosted zone.
|
|
5530
|
-
|
|
5531
|
-
---
|
|
5532
|
-
|
|
5533
5766
|
##### `trafficPort`<sup>Required</sup> <a name="trafficPort" id="@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.trafficPort"></a>
|
|
5534
5767
|
|
|
5535
5768
|
```typescript
|
|
@@ -5566,6 +5799,22 @@ The VPC in which the Application Load Balancer will be deployed.
|
|
|
5566
5799
|
|
|
5567
5800
|
---
|
|
5568
5801
|
|
|
5802
|
+
##### `recordName`<sup>Optional</sup> <a name="recordName" id="@btc-embedded/cdk-extensions.ApplicationLoadBalancerPropsV2.property.recordName"></a>
|
|
5803
|
+
|
|
5804
|
+
```typescript
|
|
5805
|
+
public readonly recordName: string;
|
|
5806
|
+
```
|
|
5807
|
+
|
|
5808
|
+
- *Type:* string
|
|
5809
|
+
- *Default:* zone root
|
|
5810
|
+
|
|
5811
|
+
The domain prefix or record name for configuring the ALB domain.
|
|
5812
|
+
|
|
5813
|
+
This name is used to register an A record in the given hosted zone. If not
|
|
5814
|
+
provided, the zone's root will be used.
|
|
5815
|
+
|
|
5816
|
+
---
|
|
5817
|
+
|
|
5569
5818
|
### ApplicationLoadBalancerV2LookupOptions <a name="ApplicationLoadBalancerV2LookupOptions" id="@btc-embedded/cdk-extensions.ApplicationLoadBalancerV2LookupOptions"></a>
|
|
5570
5819
|
|
|
5571
5820
|
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.ApplicationLoadBalancerV2LookupOptions.Initializer"></a>
|
|
@@ -5833,6 +6082,7 @@ const cloudMapExtensionProps: CloudMapExtensionProps = { ... }
|
|
|
5833
6082
|
| **Name** | **Type** | **Description** |
|
|
5834
6083
|
| --- | --- | --- |
|
|
5835
6084
|
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtensionProps.property.platformStackName">platformStackName</a></code> | <code>string</code> | The name of the platform stack to import the namespace parameter details from. |
|
|
6085
|
+
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtensionProps.property.exportService">exportService</a></code> | <code>boolean</code> | Whether to export this service for cross-stack consumption. |
|
|
5836
6086
|
|
|
5837
6087
|
---
|
|
5838
6088
|
|
|
@@ -5848,6 +6098,23 @@ The name of the platform stack to import the namespace parameter details from.
|
|
|
5848
6098
|
|
|
5849
6099
|
---
|
|
5850
6100
|
|
|
6101
|
+
##### `exportService`<sup>Optional</sup> <a name="exportService" id="@btc-embedded/cdk-extensions.CloudMapExtensionProps.property.exportService"></a>
|
|
6102
|
+
|
|
6103
|
+
```typescript
|
|
6104
|
+
public readonly exportService: boolean;
|
|
6105
|
+
```
|
|
6106
|
+
|
|
6107
|
+
- *Type:* boolean
|
|
6108
|
+
- *Default:* false
|
|
6109
|
+
|
|
6110
|
+
Whether to export this service for cross-stack consumption.
|
|
6111
|
+
|
|
6112
|
+
When enabled, the service metadata (security group, namespace, port) is
|
|
6113
|
+
exported as stack parameters, allowing other stacks to import and connect
|
|
6114
|
+
to this service using ExportedService.fromAttributes().
|
|
6115
|
+
|
|
6116
|
+
---
|
|
6117
|
+
|
|
5851
6118
|
### CognitoUserPoolProps <a name="CognitoUserPoolProps" id="@btc-embedded/cdk-extensions.CognitoUserPoolProps"></a>
|
|
5852
6119
|
|
|
5853
6120
|
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.CognitoUserPoolProps.Initializer"></a>
|
|
@@ -8029,6 +8296,122 @@ public readonly logGroup: ILogGroup;
|
|
|
8029
8296
|
|
|
8030
8297
|
---
|
|
8031
8298
|
|
|
8299
|
+
### ExportedServiceLookupOptions <a name="ExportedServiceLookupOptions" id="@btc-embedded/cdk-extensions.ExportedServiceLookupOptions"></a>
|
|
8300
|
+
|
|
8301
|
+
Options for importing an ExportedService from another stack.
|
|
8302
|
+
|
|
8303
|
+
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.Initializer"></a>
|
|
8304
|
+
|
|
8305
|
+
```typescript
|
|
8306
|
+
import { ExportedServiceLookupOptions } from '@btc-embedded/cdk-extensions'
|
|
8307
|
+
|
|
8308
|
+
const exportedServiceLookupOptions: ExportedServiceLookupOptions = { ... }
|
|
8309
|
+
```
|
|
8310
|
+
|
|
8311
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
8312
|
+
|
|
8313
|
+
| **Name** | **Type** | **Description** |
|
|
8314
|
+
| --- | --- | --- |
|
|
8315
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.port">port</a></code> | <code>number</code> | The port on which the service is listening. |
|
|
8316
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.serviceName">serviceName</a></code> | <code>string</code> | The name of the exported ECS service. |
|
|
8317
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.stackName">stackName</a></code> | <code>string</code> | The name of the stack where the service was exported. |
|
|
8318
|
+
|
|
8319
|
+
---
|
|
8320
|
+
|
|
8321
|
+
##### `port`<sup>Required</sup> <a name="port" id="@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.port"></a>
|
|
8322
|
+
|
|
8323
|
+
```typescript
|
|
8324
|
+
public readonly port: number;
|
|
8325
|
+
```
|
|
8326
|
+
|
|
8327
|
+
- *Type:* number
|
|
8328
|
+
|
|
8329
|
+
The port on which the service is listening.
|
|
8330
|
+
|
|
8331
|
+
---
|
|
8332
|
+
|
|
8333
|
+
##### `serviceName`<sup>Required</sup> <a name="serviceName" id="@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.serviceName"></a>
|
|
8334
|
+
|
|
8335
|
+
```typescript
|
|
8336
|
+
public readonly serviceName: string;
|
|
8337
|
+
```
|
|
8338
|
+
|
|
8339
|
+
- *Type:* string
|
|
8340
|
+
|
|
8341
|
+
The name of the exported ECS service.
|
|
8342
|
+
|
|
8343
|
+
---
|
|
8344
|
+
|
|
8345
|
+
##### `stackName`<sup>Required</sup> <a name="stackName" id="@btc-embedded/cdk-extensions.ExportedServiceLookupOptions.property.stackName"></a>
|
|
8346
|
+
|
|
8347
|
+
```typescript
|
|
8348
|
+
public readonly stackName: string;
|
|
8349
|
+
```
|
|
8350
|
+
|
|
8351
|
+
- *Type:* string
|
|
8352
|
+
|
|
8353
|
+
The name of the stack where the service was exported.
|
|
8354
|
+
|
|
8355
|
+
---
|
|
8356
|
+
|
|
8357
|
+
### ExportedServiceProps <a name="ExportedServiceProps" id="@btc-embedded/cdk-extensions.ExportedServiceProps"></a>
|
|
8358
|
+
|
|
8359
|
+
Properties for creating a new ExportedService.
|
|
8360
|
+
|
|
8361
|
+
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.ExportedServiceProps.Initializer"></a>
|
|
8362
|
+
|
|
8363
|
+
```typescript
|
|
8364
|
+
import { ExportedServiceProps } from '@btc-embedded/cdk-extensions'
|
|
8365
|
+
|
|
8366
|
+
const exportedServiceProps: ExportedServiceProps = { ... }
|
|
8367
|
+
```
|
|
8368
|
+
|
|
8369
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
8370
|
+
|
|
8371
|
+
| **Name** | **Type** | **Description** |
|
|
8372
|
+
| --- | --- | --- |
|
|
8373
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceProps.property.namespaceName">namespaceName</a></code> | <code>string</code> | The namespace name where the service is registered (CloudMap namespace). |
|
|
8374
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceProps.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | The security group of the ECS service. |
|
|
8375
|
+
| <code><a href="#@btc-embedded/cdk-extensions.ExportedServiceProps.property.serviceName">serviceName</a></code> | <code>string</code> | The name of the ECS service being exported. |
|
|
8376
|
+
|
|
8377
|
+
---
|
|
8378
|
+
|
|
8379
|
+
##### `namespaceName`<sup>Required</sup> <a name="namespaceName" id="@btc-embedded/cdk-extensions.ExportedServiceProps.property.namespaceName"></a>
|
|
8380
|
+
|
|
8381
|
+
```typescript
|
|
8382
|
+
public readonly namespaceName: string;
|
|
8383
|
+
```
|
|
8384
|
+
|
|
8385
|
+
- *Type:* string
|
|
8386
|
+
|
|
8387
|
+
The namespace name where the service is registered (CloudMap namespace).
|
|
8388
|
+
|
|
8389
|
+
---
|
|
8390
|
+
|
|
8391
|
+
##### `securityGroup`<sup>Required</sup> <a name="securityGroup" id="@btc-embedded/cdk-extensions.ExportedServiceProps.property.securityGroup"></a>
|
|
8392
|
+
|
|
8393
|
+
```typescript
|
|
8394
|
+
public readonly securityGroup: ISecurityGroup;
|
|
8395
|
+
```
|
|
8396
|
+
|
|
8397
|
+
- *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
|
|
8398
|
+
|
|
8399
|
+
The security group of the ECS service.
|
|
8400
|
+
|
|
8401
|
+
---
|
|
8402
|
+
|
|
8403
|
+
##### `serviceName`<sup>Required</sup> <a name="serviceName" id="@btc-embedded/cdk-extensions.ExportedServiceProps.property.serviceName"></a>
|
|
8404
|
+
|
|
8405
|
+
```typescript
|
|
8406
|
+
public readonly serviceName: string;
|
|
8407
|
+
```
|
|
8408
|
+
|
|
8409
|
+
- *Type:* string
|
|
8410
|
+
|
|
8411
|
+
The name of the ECS service being exported.
|
|
8412
|
+
|
|
8413
|
+
---
|
|
8414
|
+
|
|
8032
8415
|
### ExtraContainerExtensionProps <a name="ExtraContainerExtensionProps" id="@btc-embedded/cdk-extensions.ExtraContainerExtensionProps"></a>
|
|
8033
8416
|
|
|
8034
8417
|
#### Initializer <a name="Initializer" id="@btc-embedded/cdk-extensions.ExtraContainerExtensionProps.Initializer"></a>
|
|
@@ -10245,6 +10628,7 @@ The created task definition to add containers to.
|
|
|
10245
10628
|
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtension.property.container">container</a></code> | <code>aws-cdk-lib.aws_ecs.ContainerDefinition</code> | The container for this extension. |
|
|
10246
10629
|
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtension.property.props">props</a></code> | <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtensionProps">CloudMapExtensionProps</a></code> | *No description.* |
|
|
10247
10630
|
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtension.property.serviceName">serviceName</a></code> | <code>string</code> | *No description.* |
|
|
10631
|
+
| <code><a href="#@btc-embedded/cdk-extensions.CloudMapExtension.property.exportedServiceConstruct">exportedServiceConstruct</a></code> | <code><a href="#@btc-embedded/cdk-extensions.ExportedService">ExportedService</a></code> | The exported service construct, if exportService is enabled. |
|
|
10248
10632
|
|
|
10249
10633
|
---
|
|
10250
10634
|
|
|
@@ -10297,6 +10681,20 @@ public readonly serviceName: string;
|
|
|
10297
10681
|
|
|
10298
10682
|
---
|
|
10299
10683
|
|
|
10684
|
+
##### `exportedServiceConstruct`<sup>Optional</sup> <a name="exportedServiceConstruct" id="@btc-embedded/cdk-extensions.CloudMapExtension.property.exportedServiceConstruct"></a>
|
|
10685
|
+
|
|
10686
|
+
```typescript
|
|
10687
|
+
public readonly exportedServiceConstruct: ExportedService;
|
|
10688
|
+
```
|
|
10689
|
+
|
|
10690
|
+
- *Type:* <a href="#@btc-embedded/cdk-extensions.ExportedService">ExportedService</a>
|
|
10691
|
+
|
|
10692
|
+
The exported service construct, if exportService is enabled.
|
|
10693
|
+
|
|
10694
|
+
Available after the service has been configured.
|
|
10695
|
+
|
|
10696
|
+
---
|
|
10697
|
+
|
|
10300
10698
|
|
|
10301
10699
|
### DeactivatableServiceExtension <a name="DeactivatableServiceExtension" id="@btc-embedded/cdk-extensions.DeactivatableServiceExtension"></a>
|
|
10302
10700
|
|
|
@@ -14337,6 +14735,84 @@ The access mode for the grantee.
|
|
|
14337
14735
|
---
|
|
14338
14736
|
|
|
14339
14737
|
|
|
14738
|
+
### IExportedService <a name="IExportedService" id="@btc-embedded/cdk-extensions.IExportedService"></a>
|
|
14739
|
+
|
|
14740
|
+
- *Extends:* aws-cdk-lib.aws_ec2.IConnectable
|
|
14741
|
+
|
|
14742
|
+
- *Implemented By:* <a href="#@btc-embedded/cdk-extensions.ExportedService">ExportedService</a>, <a href="#@btc-embedded/cdk-extensions.IExportedService">IExportedService</a>
|
|
14743
|
+
|
|
14744
|
+
Public interface for an ExportedService.
|
|
14745
|
+
|
|
14746
|
+
#### Methods <a name="Methods" id="Methods"></a>
|
|
14747
|
+
|
|
14748
|
+
| **Name** | **Description** |
|
|
14749
|
+
| --- | --- |
|
|
14750
|
+
| <code><a href="#@btc-embedded/cdk-extensions.IExportedService.allowFrom">allowFrom</a></code> | Allow an ECS service to connect to this exported service. |
|
|
14751
|
+
| <code><a href="#@btc-embedded/cdk-extensions.IExportedService.apiUrl">apiUrl</a></code> | Get the internal API URL of the service. |
|
|
14752
|
+
|
|
14753
|
+
---
|
|
14754
|
+
|
|
14755
|
+
##### `allowFrom` <a name="allowFrom" id="@btc-embedded/cdk-extensions.IExportedService.allowFrom"></a>
|
|
14756
|
+
|
|
14757
|
+
```typescript
|
|
14758
|
+
public allowFrom(service: Service, description?: string): void
|
|
14759
|
+
```
|
|
14760
|
+
|
|
14761
|
+
Allow an ECS service to connect to this exported service.
|
|
14762
|
+
|
|
14763
|
+
###### `service`<sup>Required</sup> <a name="service" id="@btc-embedded/cdk-extensions.IExportedService.allowFrom.parameter.service"></a>
|
|
14764
|
+
|
|
14765
|
+
- *Type:* @aws-cdk-containers/ecs-service-extensions.Service
|
|
14766
|
+
|
|
14767
|
+
---
|
|
14768
|
+
|
|
14769
|
+
###### `description`<sup>Optional</sup> <a name="description" id="@btc-embedded/cdk-extensions.IExportedService.allowFrom.parameter.description"></a>
|
|
14770
|
+
|
|
14771
|
+
- *Type:* string
|
|
14772
|
+
|
|
14773
|
+
---
|
|
14774
|
+
|
|
14775
|
+
##### `apiUrl` <a name="apiUrl" id="@btc-embedded/cdk-extensions.IExportedService.apiUrl"></a>
|
|
14776
|
+
|
|
14777
|
+
```typescript
|
|
14778
|
+
public apiUrl(): string
|
|
14779
|
+
```
|
|
14780
|
+
|
|
14781
|
+
Get the internal API URL of the service.
|
|
14782
|
+
|
|
14783
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
14784
|
+
|
|
14785
|
+
| **Name** | **Type** | **Description** |
|
|
14786
|
+
| --- | --- | --- |
|
|
14787
|
+
| <code><a href="#@btc-embedded/cdk-extensions.IExportedService.property.connections">connections</a></code> | <code>aws-cdk-lib.aws_ec2.Connections</code> | The network connections associated with this resource. |
|
|
14788
|
+
| <code><a href="#@btc-embedded/cdk-extensions.IExportedService.property.securityGroup">securityGroup</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup</code> | The security group of the exported ECS service. |
|
|
14789
|
+
|
|
14790
|
+
---
|
|
14791
|
+
|
|
14792
|
+
##### `connections`<sup>Required</sup> <a name="connections" id="@btc-embedded/cdk-extensions.IExportedService.property.connections"></a>
|
|
14793
|
+
|
|
14794
|
+
```typescript
|
|
14795
|
+
public readonly connections: Connections;
|
|
14796
|
+
```
|
|
14797
|
+
|
|
14798
|
+
- *Type:* aws-cdk-lib.aws_ec2.Connections
|
|
14799
|
+
|
|
14800
|
+
The network connections associated with this resource.
|
|
14801
|
+
|
|
14802
|
+
---
|
|
14803
|
+
|
|
14804
|
+
##### `securityGroup`<sup>Required</sup> <a name="securityGroup" id="@btc-embedded/cdk-extensions.IExportedService.property.securityGroup"></a>
|
|
14805
|
+
|
|
14806
|
+
```typescript
|
|
14807
|
+
public readonly securityGroup: ISecurityGroup;
|
|
14808
|
+
```
|
|
14809
|
+
|
|
14810
|
+
- *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup
|
|
14811
|
+
|
|
14812
|
+
The security group of the exported ECS service.
|
|
14813
|
+
|
|
14814
|
+
---
|
|
14815
|
+
|
|
14340
14816
|
### IPrivateDnsNamespace <a name="IPrivateDnsNamespace" id="@btc-embedded/cdk-extensions.IPrivateDnsNamespace"></a>
|
|
14341
14817
|
|
|
14342
14818
|
- *Implemented By:* <a href="#@btc-embedded/cdk-extensions.PrivateDnsNamespace">PrivateDnsNamespace</a>, <a href="#@btc-embedded/cdk-extensions.IPrivateDnsNamespace">IPrivateDnsNamespace</a>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.20.1](https://github.com/btc-embedded/cdk-extensions/compare/v0.20.0...v0.20.1) (2026-01-15)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* vpc creation when vpcName is set ([3e8d1d4](https://github.com/btc-embedded/cdk-extensions/commit/3e8d1d46b194b0cbdfe89c6a0bbcdf53561b9472))
|
|
8
|
+
|
|
9
|
+
## [0.20.0](https://github.com/btc-embedded/cdk-extensions/compare/v0.19.0...v0.20.0) (2026-01-15)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### ⚠ BREAKING CHANGES
|
|
13
|
+
|
|
14
|
+
* Provinding VPC and ECS cluster as constructs
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* add fargate spot capacity provider to ecs cluster ([72db2cf](https://github.com/btc-embedded/cdk-extensions/commit/72db2cf970526dd3cb65eb8877924e0fb45082bd))
|
|
19
|
+
* Provinding VPC and ECS cluster as constructs ([553f891](https://github.com/btc-embedded/cdk-extensions/commit/553f891b2e66654668eacbbf3e640628ce9a908f))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* code bug ([99bd9f0](https://github.com/btc-embedded/cdk-extensions/commit/99bd9f023875abae2bde5568318c146a410d3cd3))
|
|
25
|
+
* refactor the code ([f633af6](https://github.com/btc-embedded/cdk-extensions/commit/f633af629963cccbb70053619299d70ae7f6e9b2))
|
|
26
|
+
* update doc and vpcv2 instance variables ([c07c72e](https://github.com/btc-embedded/cdk-extensions/commit/c07c72e6b3fbcd3c023600cce72836b8a0b61c4c))
|
|
27
|
+
|
|
2
28
|
## [0.19.0](https://github.com/btc-embedded/cdk-extensions/compare/v0.18.1...v0.19.0) (2026-01-14)
|
|
3
29
|
|
|
4
30
|
|
|
@@ -145,5 +145,5 @@ class EventPipe extends construct_1.Construct {
|
|
|
145
145
|
}
|
|
146
146
|
exports.EventPipe = EventPipe;
|
|
147
147
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148
|
-
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.20.
|
|
148
|
+
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.20.2" };
|
|
149
149
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRQaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvRXZlbnRQaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBDO0FBQzFDLGlEQUE2RDtBQUU3RCxxREFBZ0Q7QUFHaEQsd0RBQXFEO0FBQ3JELDBDQUEwQztBQUMxQyx3RUFBdUU7QUFzQ3ZFLElBQVksUUFpQlg7QUFqQkQsV0FBWSxRQUFRO0lBQ2xCOztPQUVHO0lBQ0gsdUJBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gseUJBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBakJXLFFBQVEsd0JBQVIsUUFBUSxRQWlCbkI7QUFFRDs7R0FFRztBQUNILElBQVksY0FjWDtBQWRELFdBQVksY0FBYztJQUN4Qjs7Ozs7T0FLRztJQUNILDJFQUFnQixDQUFBO0lBQ2hCOzs7O09BSUc7SUFDSCx5RUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFkVyxjQUFjLDhCQUFkLGNBQWMsUUFjekI7QUEyRkQ7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxxQkFBUztJQUd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxrQkFBa0IsR0FDcEIsY0FBYyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsSUFBSSw0QkFBNEIsR0FDOUIsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFckUsSUFBSSxXQUFXLEdBQUcsT0FBTyxJ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QUUsQ0FBQztRQUVQLElBQUksbUJBQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzdCLEdBQUcsaUJBQWlCO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM3QixNQUFNLEVBQUUsU0FBUztZQUNqQixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBcUI7UUFDMUMsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDekUsQ0FBQzs7QUE5R0gsOEJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgSUxvZ0dyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBDZm5QaXBlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1waXBlc1wiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zcXNcIjtcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzL2xpYi9jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEJUQ0xvZ0dyb3VwIH0gZnJvbSBcIi4uL3BsYXRmb3JtXCI7XG5pbXBvcnQgeyBpc0RlYWN0aXZhdGVkQ29uc3RydWN0IH0gZnJvbSBcIi4uL3V0aWxzL2RlYWN0aXZhdGVkQ29uc3RydWN0XCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgcGlwZSBjb25zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQaXBlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBTUVMgcXVldWUuIE5vIG90aGVyIHNvdXJjZSB0eXBlcyBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBTUVMgcXVldWUgb3IgdGFyZ2V0IHN0ZXAgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFRhcmdldFF1ZXVlIHwgVGFyZ2V0U3RlcEZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB1c2VkIGJ5IHRoZSBldmVudCBwaXBlLiBJZiBvbWl0dGVkLCBhIG5ldyByb2xlIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogUm9sZTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZmlsdGVyIGZvciB0aGUgcGlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcj86IFBpcGVGaWx0ZXI7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9nIGxldmVsIGZvciB0aGUgcGlwZS4gQ3JlYXRlcyBhIG5ldyBsb2cgZ3JvdXAsIGlmIGVuYWJsZWQuXG4gICAqIERlZmF1bHQ6IERpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcblxuICAvKipcbiAgICogVXNlIGFuIGV4aXN0aW5nIGxvZyBncm91cC4gSWYgbm9uZSBpcyBnaXZlbiBhbmQgbG9nZ2luZyBpcyBlbmFibGVkLCBhIG5ldyBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBJTG9nR3JvdXA7XG59XG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgbG9nZ2luZy4gTm8gbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIE9GRiA9IFwiT0ZGXCIsXG4gIC8qKlxuICAgKiBPbmx5IGxvZyBlcnJvcnMuXG4gICAqL1xuICBFUlJPUiA9IFwiRVJST1JcIixcbiAgLyoqXG4gICAqIExvZyBlcnJvcnMgYW5kIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMuXG4gICAqL1xuICBJTkZPID0gXCJJTkZPXCIsXG4gIC8qKlxuICAgKiBMb2cgdmVyeSB2ZXJib3NlLlxuICAgKi9cbiAgVFJBQ0UgPSBcIlRSQUNFXCIsXG59XG5cbi8qKlxuICogVGhlIGludm9jYXRpb24gdHlwZSBvZiB0aGUgc3RlcCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gSW52b2NhdGlvblR5cGUge1xuICAvKipcbiAgICogKGRlZmF1bHQpIC0gSW52b2tlIHN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0U3luY0V4ZWN1dGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9hcGlyZWZlcmVuY2UvQVBJX1N0YXJ0U3luY0V4ZWN1dGlvbi5odG1sKVxuICAgKiBpbiB0aGUgKkFXUyBTdGVwIEZ1bmN0aW9ucyBBUEkgUmVmZXJlbmNlKi5cbiAgICogPiBgUkVRVUVTVF9SRVNQT05TRWAgaXMgbm90IHN1cHBvcnRlZCBmb3IgYFNUQU5EQVJEYCBzdGF0ZSBtYWNoaW5lIHdvcmtmbG93cy5cbiAgICovXG4gIFJFUVVFU1RfUkVTUE9OU0UsXG4gIC8qKlxuICAgKiBJbnZva2UgYXN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0RXhlY3V0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2FwaXJlZmVyZW5jZS9BUElfU3RhcnRFeGVjdXRpb24uaHRtbClcbiAgICogaW4gdGhlICpBV1MgU3RlcCBGdW5jdGlvbnMgQVBJIFJlZmVyZW5jZSouXG4gICAqL1xuICBGSVJFX0FORF9GT1JHRVQsXG59XG5cbi8qKlxuICogVGhlIGlucHV0IHRlbXBsYXRlLlxuICogTm90ZSB0aGF0IHNvbWUgdmFsdWVzIGluIHRoZSByZXN1bHRpbmcgY29kZSBzaG91bGQgbm90IGhhdmUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUsIGUuZy4gaWYgYW4gb2JqZWN0XG4gKiBzaGFsbCBiZSBhZGRlZC4gVG8gcmVmbGVjdCB0aGlzLCBhZGQgY3VybHkgYnJhY2tldHMgYXJvdW5kIHRoZSB2YWx1ZSwgZS5nLiBge3s8JC5ib2R5Pn19YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRlbXBsYXRlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBhcyBwaXBlIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRRdWV1ZSB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogU3RlcEZ1bmN0aW9uIGFzIHBpcGUgdGFyZ2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFN0ZXBGdW5jdGlvbiB7XG4gIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbjogSVN0YXRlTWFjaGluZTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgYSBzdGVwIGZ1bmN0aW9uIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzIHtcbiAgcmVhZG9ubHkgaW5wdXRUZW1wbGF0ZT86IElucHV0VGVtcGxhdGU7XG4gIHJlYWRvbmx5IGludm9jYXRpb25UeXBlPzogSW52b2NhdGlvblR5cGU7XG59XG5cbi8qKlxuICogQmFzZSB0eXBlIGZvciBmaWx0ZXIgcnVsZXMuIE5vdCBhbGwgYXZhaWxhYmxlIHJ1bGVzIGFyZSBjdXJyZW50bHkgaW1wbGVtZW50ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlclJ1bGUgPVxuICB8IFByZWZpeEZpbHRlclJ1bGVcbiAgfCBTdWZmaXhGaWx0ZXJSdWxlXG4gIHwgQW55dGhpbmdCdXRGaWx0ZXJSdWxlXG4gIHwgRmlsdGVyRXF1YWxzSWdub3JlQ2FzZTtcblxuLyoqXG4gKiBSdWxlIHRoYXQgYSBwcm9wZXJ0eSBoYXMgdG8gc3RhcnQgd2l0aCBhIHByZWZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhIHByb3BlcnR5IGhhcyB0byBlbmQgd2l0aCBhIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWZmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgc3VmZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhbGxvd3MgYWxsIHZhbHVlcyBleGNlcHQgdGhlIGdpdmVuIG9uZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW55dGhpbmdCdXRGaWx0ZXJSdWxlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJhbnl0aGluZy1idXRcIjogc3RyaW5nW10gfCBGaWx0ZXJSdWxlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBtYXRjaGVzIGEgc3RyaW5nLCBpZ25vcmluZyB0aGUgY2FzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJlcXVhbHMtaWdub3JlLWNhc2VcIjogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBmaWx0ZXIgZm9yIG1lc3NhZ2VzIGluIHRoZSBwaXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJ1bGVzIGZvciBlYWNoIGF0dHJpYnV0ZSBvZiB0aGUgYm9keS5cbiAgICogQGpzaWkgaWdub3JlXG4gICAqL1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBGaWx0ZXJSdWxlW107XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciB0aGUgTDEgZXZlbnQgcGlwZSB3aXRoIHRoZSBhYmlsaXR5IHRvIGRlYWN0aXZhdGUgaXQgd2l0aGluIHRoZSBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UGlwZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFBpcGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uID1cbiAgICAgIFwic3RlcEZ1bmN0aW9uXCIgaW4gcHJvcHMudGFyZ2V0ID8gcHJvcHMudGFyZ2V0LnN0ZXBGdW5jdGlvbiA6IHVuZGVmaW5lZDtcbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycyA9XG4gICAgICBcInBhcmFtZXRlcnNcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucGFyYW1ldGVycyA6IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRRdWV1ZSA9IFwicXVldWVcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucXVldWUgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgc3FzVGFyZ2V0ID0gdGFyZ2V0UXVldWUgIT09IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRBcm4gPSBzcXNUYXJnZXRcbiAgICAgID8gdGFyZ2V0UXVldWUhLnF1ZXVlQXJuXG4gICAgICA6IHRhcmdldFN0ZXBGdW5jdGlvbiEuc3RhdGVNYWNoaW5lQXJuO1xuXG4gICAgbGV0IGRlc2lyZWRTdGF0ZSA9IFwiUlVOTklOR1wiO1xuICAgIGlmIChpc0RlYWN0aXZhdGVkQ29uc3RydWN0KGlkKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkSW5mbyhgJHtpZH0gaXMgc2V0IGRvIGJlIGRlYWN0aXZhdGVkLmApO1xuICAgICAgZGVzaXJlZFN0YXRlID0gXCJTVE9QUEVEXCI7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID1cbiAgICAgIHByb3BzLnJvbGUgfHxcbiAgICAgIG5ldyBSb2xlKHRoaXMsIFwiRXZlbnRQaXBlUm9sZVwiLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJwaXBlcy5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgfSk7XG5cbiAgICBsZXQgZmlsdGVyQ3JpdGVyaWEgPSBwcm9wcy5maWx0ZXJcbiAgICAgID8ge1xuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF0dGVybjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLmZpbHRlcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgdGFyZ2V0UGFyYW1ldGVyczogQ2ZuUGlwZS5QaXBlVGFyZ2V0UGFyYW1ldGVyc1Byb3BlcnR5ID0ge307XG4gICAgaWYgKHRhcmdldFF1ZXVlKSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBtZXNzYWdlR3JvdXBJZDogXCJkZWZhdWx0XCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgaW52b2NhdGlvblR5cGU6IHRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM/Lmludm9jYXRpb25UeXBlXG4gICAgICAgICAgICA/IEludm9jYXRpb25UeXBlW3RhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnMuaW52b2NhdGlvblR5cGVdXG4gICAgICAgICAgICA6IEludm9jYXRpb25UeXBlW0ludm9jYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0VdLFxuICAgICAgICB9LFxuICAgICAgICAuLi4odGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycz8uaW5wdXRUZW1wbGF0ZSAmJiB7XG4gICAgICAgICAgaW5wdXRUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB0YXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzLmlucHV0VGVtcGxhdGUsXG4gICAgICAgICAgKS5yZXBsYWNlKC9cIlxce1xceyguKz8pXFx9XFx9XCIvLCBcIiQxXCIpLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZVBhcmFtZXRlcnMgPSB7XG4gICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgfSxcbiAgICAgIC4uLihmaWx0ZXJDcml0ZXJpYSAmJiB7IGZpbHRlckNyaXRlcmlhOiBmaWx0ZXJDcml0ZXJpYSB9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyAocHJvcHMubG9nR3JvdXAgPz9cbiAgICAgICAgbmV3IEJUQ0xvZ0dyb3VwKHRoaXMsIFwiRXZlbnRQaXBlTG9nR3JvdXBcIiwge1xuICAgICAgICAgIGxvZ1R5cGU6IFwiZXZlbnQtcGlwZVwiLFxuICAgICAgICB9KSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcGlwZUNvbmZpZ3VyYXRpb24gPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyB7XG4gICAgICAgICAgbG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgY2xvdWR3YXRjaExvZ3NMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICAgICAgICBsb2dHcm91cEFybjogbG9nR3JvdXAhLmxvZ0dyb3VwQXJuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxldmVsOiBwcm9wcy5sb2dMZXZlbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICA6IHt9O1xuXG4gICAgbmV3IENmblBpcGUodGhpcywgXCJFdmVudFBpcGVcIiwge1xuICAgICAgLi4ucGlwZUNvbmZpZ3VyYXRpb24sXG4gICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLnF1ZXVlQXJuLFxuICAgICAgdGFyZ2V0OiB0YXJnZXRBcm4sXG4gICAgICBzb3VyY2VQYXJhbWV0ZXJzOiBzb3VyY2VQYXJhbWV0ZXJzLFxuICAgICAgdGFyZ2V0UGFyYW1ldGVyczogdGFyZ2V0UGFyYW1ldGVycyxcbiAgICAgIGRlc2lyZWRTdGF0ZTogZGVzaXJlZFN0YXRlLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuc291cmNlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0UXVldWU/LmdyYW50U2VuZE1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0U3RlcEZ1bmN0aW9uPy5ncmFudFN0YXJ0RXhlY3V0aW9uKHRoaXMucm9sZSk7XG4gICAgbG9nR3JvdXA/LmdyYW50V3JpdGUodGhpcy5yb2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nZ2luZ0VuYWJsZWQocHJvcHM6IEV2ZW50UGlwZVByb3BzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHByb3BzLmxvZ0xldmVsICE9PSB1bmRlZmluZWQgJiYgcHJvcHMubG9nTGV2ZWwgIT09IExvZ0xldmVsLk9GRjtcbiAgfVxufVxuIl19
|