@aws-cdk/aws-gamelift-alpha 2.53.0-alpha.0 → 2.54.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +3059 -1405
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +63 -1
- package/README.md +101 -7
- package/lib/alias.d.ts +141 -0
- package/lib/alias.js +142 -0
- package/lib/build-fleet.js +1 -1
- package/lib/build.d.ts +33 -3
- package/lib/build.js +37 -7
- package/lib/content.js +3 -3
- package/lib/fleet-base.d.ts +21 -0
- package/lib/fleet-base.js +38 -2
- package/lib/game-server-group.js +2 -2
- package/lib/index.d.ts +3 -0
- package/lib/index.js +4 -1
- package/lib/ingress-rule.js +2 -2
- package/lib/matchmaking-ruleset-body.d.ts +78 -0
- package/lib/matchmaking-ruleset-body.js +77 -0
- package/lib/matchmaking-ruleset.d.ts +129 -0
- package/lib/matchmaking-ruleset.js +139 -0
- package/lib/script.js +2 -2
- package/package.json +8 -8
- package/rosetta/default.ts-fixture +1 -1
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/.warnings.jsii.js
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
function _aws_cdk_aws_gamelift_alpha_IAlias(p) {
|
|
2
|
+
}
|
|
3
|
+
function _aws_cdk_aws_gamelift_alpha_AliasOptions(p) {
|
|
4
|
+
}
|
|
5
|
+
function _aws_cdk_aws_gamelift_alpha_AliasAttributes(p) {
|
|
6
|
+
}
|
|
7
|
+
function _aws_cdk_aws_gamelift_alpha_AliasProps(p) {
|
|
8
|
+
if (p == null)
|
|
9
|
+
return;
|
|
10
|
+
visitedObjects.add(p);
|
|
11
|
+
try {
|
|
12
|
+
if (!visitedObjects.has(p.fleet))
|
|
13
|
+
_aws_cdk_aws_gamelift_alpha_IFleet(p.fleet);
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
visitedObjects.delete(p);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function _aws_cdk_aws_gamelift_alpha_AliasBase(p) {
|
|
20
|
+
}
|
|
21
|
+
function _aws_cdk_aws_gamelift_alpha_Alias(p) {
|
|
22
|
+
}
|
|
1
23
|
function _aws_cdk_aws_gamelift_alpha_Content(p) {
|
|
2
24
|
}
|
|
3
25
|
function _aws_cdk_aws_gamelift_alpha_ContentConfig(p) {
|
|
@@ -204,6 +226,46 @@ function _aws_cdk_aws_gamelift_alpha_BuildFleetProps(p) {
|
|
|
204
226
|
}
|
|
205
227
|
function _aws_cdk_aws_gamelift_alpha_BuildFleet(p) {
|
|
206
228
|
}
|
|
229
|
+
function _aws_cdk_aws_gamelift_alpha_IMatchmakingRuleSet(p) {
|
|
230
|
+
}
|
|
231
|
+
function _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetProps(p) {
|
|
232
|
+
if (p == null)
|
|
233
|
+
return;
|
|
234
|
+
visitedObjects.add(p);
|
|
235
|
+
try {
|
|
236
|
+
if (!visitedObjects.has(p.content))
|
|
237
|
+
_aws_cdk_aws_gamelift_alpha_RuleSetContent(p.content);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
visitedObjects.delete(p);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetAttributes(p) {
|
|
244
|
+
}
|
|
245
|
+
function _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetBase(p) {
|
|
246
|
+
}
|
|
247
|
+
function _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSet(p) {
|
|
248
|
+
}
|
|
249
|
+
function _aws_cdk_aws_gamelift_alpha_IRuleSetBody(p) {
|
|
250
|
+
}
|
|
251
|
+
function _aws_cdk_aws_gamelift_alpha_RuleSetBodyConfig(p) {
|
|
252
|
+
}
|
|
253
|
+
function _aws_cdk_aws_gamelift_alpha_IRuleSetContent(p) {
|
|
254
|
+
}
|
|
255
|
+
function _aws_cdk_aws_gamelift_alpha_RuleSetContentProps(p) {
|
|
256
|
+
if (p == null)
|
|
257
|
+
return;
|
|
258
|
+
visitedObjects.add(p);
|
|
259
|
+
try {
|
|
260
|
+
if (!visitedObjects.has(p.content))
|
|
261
|
+
_aws_cdk_aws_gamelift_alpha_IRuleSetBody(p.content);
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
visitedObjects.delete(p);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function _aws_cdk_aws_gamelift_alpha_RuleSetContent(p) {
|
|
268
|
+
}
|
|
207
269
|
function print(name, deprecationMessage) {
|
|
208
270
|
const deprecated = process.env.JSII_DEPRECATED;
|
|
209
271
|
const deprecationMode = ["warn", "fail", "quiet"].includes(deprecated) ? deprecated : "warn";
|
|
@@ -240,4 +302,4 @@ class DeprecationError extends Error {
|
|
|
240
302
|
});
|
|
241
303
|
}
|
|
242
304
|
}
|
|
243
|
-
module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_aws_gamelift_alpha_Content, _aws_cdk_aws_gamelift_alpha_ContentConfig, _aws_cdk_aws_gamelift_alpha_S3Content, _aws_cdk_aws_gamelift_alpha_AssetContent, _aws_cdk_aws_gamelift_alpha_IBuild, _aws_cdk_aws_gamelift_alpha_BuildBase, _aws_cdk_aws_gamelift_alpha_OperatingSystem, _aws_cdk_aws_gamelift_alpha_BuildAttributes, _aws_cdk_aws_gamelift_alpha_BuildProps, _aws_cdk_aws_gamelift_alpha_Build, _aws_cdk_aws_gamelift_alpha_IScript, _aws_cdk_aws_gamelift_alpha_ScriptBase, _aws_cdk_aws_gamelift_alpha_ScriptAttributes, _aws_cdk_aws_gamelift_alpha_ScriptProps, _aws_cdk_aws_gamelift_alpha_Script, _aws_cdk_aws_gamelift_alpha_AutoScalingPolicy, _aws_cdk_aws_gamelift_alpha_InstanceDefinition, _aws_cdk_aws_gamelift_alpha_DeleteOption, _aws_cdk_aws_gamelift_alpha_BalancingStrategy, _aws_cdk_aws_gamelift_alpha_IGameServerGroup, _aws_cdk_aws_gamelift_alpha_GameServerGroupBase, _aws_cdk_aws_gamelift_alpha_GameServerGroupAttributes, _aws_cdk_aws_gamelift_alpha_GameServerGroupProps, _aws_cdk_aws_gamelift_alpha_GameServerGroup, _aws_cdk_aws_gamelift_alpha_Protocol, _aws_cdk_aws_gamelift_alpha_PortProps, _aws_cdk_aws_gamelift_alpha_Port, _aws_cdk_aws_gamelift_alpha_IPeer, _aws_cdk_aws_gamelift_alpha_Peer, _aws_cdk_aws_gamelift_alpha_IngressRule, _aws_cdk_aws_gamelift_alpha_LocationCapacity, _aws_cdk_aws_gamelift_alpha_Location, _aws_cdk_aws_gamelift_alpha_ServerProcess, _aws_cdk_aws_gamelift_alpha_RuntimeConfiguration, _aws_cdk_aws_gamelift_alpha_ResourceCreationLimitPolicy, _aws_cdk_aws_gamelift_alpha_IFleet, _aws_cdk_aws_gamelift_alpha_FleetProps, _aws_cdk_aws_gamelift_alpha_FleetAttributes, _aws_cdk_aws_gamelift_alpha_FleetBase, _aws_cdk_aws_gamelift_alpha_IBuildFleet, _aws_cdk_aws_gamelift_alpha_BuildFleetProps, _aws_cdk_aws_gamelift_alpha_BuildFleet };
|
|
305
|
+
module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_aws_gamelift_alpha_IAlias, _aws_cdk_aws_gamelift_alpha_AliasOptions, _aws_cdk_aws_gamelift_alpha_AliasAttributes, _aws_cdk_aws_gamelift_alpha_AliasProps, _aws_cdk_aws_gamelift_alpha_AliasBase, _aws_cdk_aws_gamelift_alpha_Alias, _aws_cdk_aws_gamelift_alpha_Content, _aws_cdk_aws_gamelift_alpha_ContentConfig, _aws_cdk_aws_gamelift_alpha_S3Content, _aws_cdk_aws_gamelift_alpha_AssetContent, _aws_cdk_aws_gamelift_alpha_IBuild, _aws_cdk_aws_gamelift_alpha_BuildBase, _aws_cdk_aws_gamelift_alpha_OperatingSystem, _aws_cdk_aws_gamelift_alpha_BuildAttributes, _aws_cdk_aws_gamelift_alpha_BuildProps, _aws_cdk_aws_gamelift_alpha_Build, _aws_cdk_aws_gamelift_alpha_IScript, _aws_cdk_aws_gamelift_alpha_ScriptBase, _aws_cdk_aws_gamelift_alpha_ScriptAttributes, _aws_cdk_aws_gamelift_alpha_ScriptProps, _aws_cdk_aws_gamelift_alpha_Script, _aws_cdk_aws_gamelift_alpha_AutoScalingPolicy, _aws_cdk_aws_gamelift_alpha_InstanceDefinition, _aws_cdk_aws_gamelift_alpha_DeleteOption, _aws_cdk_aws_gamelift_alpha_BalancingStrategy, _aws_cdk_aws_gamelift_alpha_IGameServerGroup, _aws_cdk_aws_gamelift_alpha_GameServerGroupBase, _aws_cdk_aws_gamelift_alpha_GameServerGroupAttributes, _aws_cdk_aws_gamelift_alpha_GameServerGroupProps, _aws_cdk_aws_gamelift_alpha_GameServerGroup, _aws_cdk_aws_gamelift_alpha_Protocol, _aws_cdk_aws_gamelift_alpha_PortProps, _aws_cdk_aws_gamelift_alpha_Port, _aws_cdk_aws_gamelift_alpha_IPeer, _aws_cdk_aws_gamelift_alpha_Peer, _aws_cdk_aws_gamelift_alpha_IngressRule, _aws_cdk_aws_gamelift_alpha_LocationCapacity, _aws_cdk_aws_gamelift_alpha_Location, _aws_cdk_aws_gamelift_alpha_ServerProcess, _aws_cdk_aws_gamelift_alpha_RuntimeConfiguration, _aws_cdk_aws_gamelift_alpha_ResourceCreationLimitPolicy, _aws_cdk_aws_gamelift_alpha_IFleet, _aws_cdk_aws_gamelift_alpha_FleetProps, _aws_cdk_aws_gamelift_alpha_FleetAttributes, _aws_cdk_aws_gamelift_alpha_FleetBase, _aws_cdk_aws_gamelift_alpha_IBuildFleet, _aws_cdk_aws_gamelift_alpha_BuildFleetProps, _aws_cdk_aws_gamelift_alpha_BuildFleet, _aws_cdk_aws_gamelift_alpha_IMatchmakingRuleSet, _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetProps, _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetAttributes, _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSetBase, _aws_cdk_aws_gamelift_alpha_MatchmakingRuleSet, _aws_cdk_aws_gamelift_alpha_IRuleSetBody, _aws_cdk_aws_gamelift_alpha_RuleSetBodyConfig, _aws_cdk_aws_gamelift_alpha_IRuleSetContent, _aws_cdk_aws_gamelift_alpha_RuleSetContentProps, _aws_cdk_aws_gamelift_alpha_RuleSetContent };
|
package/README.md
CHANGED
|
@@ -44,6 +44,73 @@ deliver inexpensive, resilient game hosting for your players
|
|
|
44
44
|
This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. It allows you to define components for your matchmaking
|
|
45
45
|
configuration or game server fleet management system.
|
|
46
46
|
|
|
47
|
+
## GameLift FlexMatch
|
|
48
|
+
|
|
49
|
+
### Matchmaking RuleSet
|
|
50
|
+
|
|
51
|
+
Every FlexMatch matchmaker must have a rule set. The rule set determines the
|
|
52
|
+
two key elements of a match: your game's team structure and size, and how to
|
|
53
|
+
group players together for the best possible match.
|
|
54
|
+
|
|
55
|
+
For example, a rule set might describe a match like this: Create a match with
|
|
56
|
+
two teams of four to eight players each, one team is the cowboy and the other
|
|
57
|
+
team the aliens. A team can have novice and experienced players, but the
|
|
58
|
+
average skill of the two teams must be within 10 points of each other. If no
|
|
59
|
+
match is made after 30 seconds, gradually relax the skill requirements.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
new gamelift.MatchmakingRuleSet(this, 'RuleSet', {
|
|
63
|
+
matchmakingRuleSetName: 'my-test-ruleset',
|
|
64
|
+
content: gamelift.RuleSetContent.fromJsonFile(path.join(__dirname, 'my-ruleset/ruleset.json')),
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### FlexMatch Monitoring
|
|
69
|
+
|
|
70
|
+
You can monitor GameLift FlexMatch activity for matchmaking configurations and
|
|
71
|
+
matchmaking rules using Amazon CloudWatch. These statistics are used to provide
|
|
72
|
+
a historical perspective on how your Gamelift FlexMatch solution is performing.
|
|
73
|
+
|
|
74
|
+
#### FlexMatch Metrics
|
|
75
|
+
|
|
76
|
+
GameLift FlexMatch sends metrics to CloudWatch so that you can collect and
|
|
77
|
+
analyze the activity of your matchmaking solution, including match acceptance
|
|
78
|
+
workflow, ticket consumtion.
|
|
79
|
+
|
|
80
|
+
You can then use CloudWatch alarms to alert you, for example, when matches has
|
|
81
|
+
been rejected (potential matches that were rejected by at least one player
|
|
82
|
+
since the last report) exceed a certain thresold which could means that you may
|
|
83
|
+
have an issue in your matchmaking rules.
|
|
84
|
+
|
|
85
|
+
CDK provides methods for accessing GameLift FlexMatch metrics with default configuration,
|
|
86
|
+
such as `metricRuleEvaluationsPassed`, or `metricRuleEvaluationsFailed` (see
|
|
87
|
+
[`IMatchmakingRuleSet`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-gamelift.IMatchmakingRuleSet.html)
|
|
88
|
+
for a full list). CDK also provides a generic `metric` method that can be used
|
|
89
|
+
to produce metric configurations for any metric provided by GameLift FlexMatch;
|
|
90
|
+
the configurations are pre-populated with the correct dimensions for the
|
|
91
|
+
matchmaking configuration.
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
declare const matchmakingRuleSet: gamelift.MatchmakingRuleSet;
|
|
95
|
+
// Alarm that triggers when the per-second average of not placed matches exceed 10%
|
|
96
|
+
const ruleEvaluationRatio = new cloudwatch.MathExpression({
|
|
97
|
+
expression: '1 - (ruleEvaluationsPassed / ruleEvaluationsFailed)',
|
|
98
|
+
usingMetrics: {
|
|
99
|
+
ruleEvaluationsPassed: matchmakingRuleSet.metricRuleEvaluationsPassed({ statistic: cloudwatch.Statistic.SUM }),
|
|
100
|
+
ruleEvaluationsFailed: matchmakingRuleSet.metric('ruleEvaluationsFailed'),
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
new cloudwatch.Alarm(this, 'Alarm', {
|
|
104
|
+
metric: ruleEvaluationRatio,
|
|
105
|
+
threshold: 0.1,
|
|
106
|
+
evaluationPeriods: 3,
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
See: [Monitoring Using CloudWatch Metrics](https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html)
|
|
111
|
+
in the *Amazon GameLift Developer Guide*.
|
|
112
|
+
|
|
113
|
+
|
|
47
114
|
## GameLift Hosting
|
|
48
115
|
|
|
49
116
|
### Uploading builds and scripts to GameLift
|
|
@@ -74,9 +141,12 @@ services.
|
|
|
74
141
|
|
|
75
142
|
```ts
|
|
76
143
|
declare const bucket: s3.Bucket;
|
|
77
|
-
new gamelift.Build(this, 'Build', {
|
|
144
|
+
const build = new gamelift.Build(this, 'Build', {
|
|
78
145
|
content: gamelift.Content.fromBucket(bucket, "sample-asset-key")
|
|
79
146
|
});
|
|
147
|
+
|
|
148
|
+
new CfnOutput(this, 'BuildArn', { value: build.buildArn });
|
|
149
|
+
new CfnOutput(this, 'BuildId', { value: build.buildId });
|
|
80
150
|
```
|
|
81
151
|
|
|
82
152
|
#### Upload a realtime server Script
|
|
@@ -280,7 +350,7 @@ fleet.addLocation('ap-southeast-1', 5, 2, 10);
|
|
|
280
350
|
Some GameLift features require you to extend limited access to your AWS
|
|
281
351
|
resources. This is done by creating an AWS IAM role. The GameLift Fleet class
|
|
282
352
|
automatically created an IAM role with all the minimum necessary permissions
|
|
283
|
-
for GameLift to access your
|
|
353
|
+
for GameLift to access your resources. If you wish, you may
|
|
284
354
|
specify your own IAM role.
|
|
285
355
|
|
|
286
356
|
```ts
|
|
@@ -306,12 +376,36 @@ const fleet = new gamelift.BuildFleet(this, 'Game server fleet', {
|
|
|
306
376
|
fleet.grant(role, 'gamelift:ListFleets');
|
|
307
377
|
```
|
|
308
378
|
|
|
379
|
+
### Alias
|
|
380
|
+
|
|
381
|
+
A GameLift alias is used to abstract a fleet designation. Fleet designations
|
|
382
|
+
tell Amazon GameLift where to search for available resources when creating new
|
|
383
|
+
game sessions for players. By using aliases instead of specific fleet IDs, you
|
|
384
|
+
can more easily and seamlessly switch player traffic from one fleet to another
|
|
385
|
+
by changing the alias's target location.
|
|
386
|
+
|
|
387
|
+
```ts
|
|
388
|
+
declare const fleet: gamelift.BuildFleet;
|
|
389
|
+
|
|
390
|
+
// Add an alias to an existing fleet using a dedicated fleet method
|
|
391
|
+
const liveAlias = fleet.addAlias('live');
|
|
392
|
+
|
|
393
|
+
// You can also create a standalone alias
|
|
394
|
+
new gamelift.Alias(this, 'TerminalAlias', {
|
|
395
|
+
aliasName: 'terminal-alias',
|
|
396
|
+
terminalMessage: 'A terminal message',
|
|
397
|
+
});
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
See [Add an alias to a GameLift fleet](https://docs.aws.amazon.com/gamelift/latest/developerguide/aliases-creating.html)
|
|
401
|
+
in the *Amazon GameLift Developer Guide*.
|
|
402
|
+
|
|
309
403
|
### Monitoring your Fleet
|
|
310
404
|
|
|
311
405
|
GameLift is integrated with CloudWatch, so you can monitor the performance of
|
|
312
406
|
your game servers via logs and metrics.
|
|
313
407
|
|
|
314
|
-
#### Metrics
|
|
408
|
+
#### Fleet Metrics
|
|
315
409
|
|
|
316
410
|
GameLift Fleet sends metrics to CloudWatch so that you can collect and analyze
|
|
317
411
|
the activity of your Fleet, including game and player sessions and server
|
|
@@ -319,7 +413,7 @@ processes.
|
|
|
319
413
|
|
|
320
414
|
You can then use CloudWatch alarms to alert you, for example, when matches has
|
|
321
415
|
been rejected (potential matches that were rejected by at least one player
|
|
322
|
-
since the last report) exceed a certain
|
|
416
|
+
since the last report) exceed a certain threshold which could means that you may
|
|
323
417
|
have an issue in your matchmaking rules.
|
|
324
418
|
|
|
325
419
|
CDK provides methods for accessing GameLift Fleet metrics with default configuration,
|
|
@@ -427,7 +521,7 @@ in the *Amazon GameLift FleetIQ Developer Guide*.
|
|
|
427
521
|
|
|
428
522
|
The GameLift FleetIQ class automatically creates an IAM role with all the minimum necessary
|
|
429
523
|
permissions for GameLift to access your Amazon EC2 Auto Scaling groups. If you wish, you may
|
|
430
|
-
specify your own IAM role. It must have the correct permissions, or FleetIQ creation or
|
|
524
|
+
specify your own IAM role. It must have the correct permissions, or FleetIQ creation or resource usage may fail.
|
|
431
525
|
|
|
432
526
|
```ts
|
|
433
527
|
declare const launchTemplate: ec2.ILaunchTemplate;
|
|
@@ -484,7 +578,7 @@ new gamelift.GameServerGroup(this, 'GameServerGroup', {
|
|
|
484
578
|
});
|
|
485
579
|
```
|
|
486
580
|
|
|
487
|
-
### Monitoring
|
|
581
|
+
### FleetIQ Monitoring
|
|
488
582
|
|
|
489
583
|
GameLift FleetIQ sends metrics to CloudWatch so that you can collect and
|
|
490
584
|
analyze the activity of your Game server fleet, including the number of
|
|
@@ -493,7 +587,7 @@ limited Spot availability.
|
|
|
493
587
|
|
|
494
588
|
You can then use CloudWatch alarms to alert you, for example, when the portion
|
|
495
589
|
of game servers that are currently supporting game executions exceed a certain
|
|
496
|
-
|
|
590
|
+
threshold which could means that your autoscaling policy need to be adjust to
|
|
497
591
|
add more instances to match with player demand.
|
|
498
592
|
|
|
499
593
|
CDK provides a generic `metric` method that can be used
|
package/lib/alias.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { IFleet } from './fleet-base';
|
|
4
|
+
/**
|
|
5
|
+
* Represents a Gamelift Alias for a Gamelift fleet destination.
|
|
6
|
+
*/
|
|
7
|
+
export interface IAlias extends cdk.IResource {
|
|
8
|
+
/**
|
|
9
|
+
* The Identifier of the alias.
|
|
10
|
+
*
|
|
11
|
+
* @attribute
|
|
12
|
+
*/
|
|
13
|
+
readonly aliasId: string;
|
|
14
|
+
/**
|
|
15
|
+
* The ARN of the alias.
|
|
16
|
+
*
|
|
17
|
+
* @attribute
|
|
18
|
+
*/
|
|
19
|
+
readonly aliasArn: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Options for `gamelift.Alias`.
|
|
23
|
+
*/
|
|
24
|
+
export interface AliasOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Description for the alias
|
|
27
|
+
*
|
|
28
|
+
* @default No description
|
|
29
|
+
*/
|
|
30
|
+
readonly description?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A full specification of an alias that can be used to import it fluently into the CDK application.
|
|
34
|
+
*/
|
|
35
|
+
export interface AliasAttributes {
|
|
36
|
+
/**
|
|
37
|
+
* The ARN of the alias
|
|
38
|
+
*
|
|
39
|
+
* At least one of `aliasArn` and `aliasId` must be provided.
|
|
40
|
+
*
|
|
41
|
+
* @default derived from `aliasId`.
|
|
42
|
+
*/
|
|
43
|
+
readonly aliasArn?: string;
|
|
44
|
+
/**
|
|
45
|
+
* The identifier of the alias
|
|
46
|
+
*
|
|
47
|
+
* At least one of `aliasId` and `aliasArn` must be provided.
|
|
48
|
+
*
|
|
49
|
+
* @default derived from `aliasArn`.
|
|
50
|
+
*/
|
|
51
|
+
readonly aliasId?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Properties for a new Fleet alias
|
|
55
|
+
*/
|
|
56
|
+
export interface AliasProps {
|
|
57
|
+
/**
|
|
58
|
+
* Name of this alias
|
|
59
|
+
*/
|
|
60
|
+
readonly aliasName: string;
|
|
61
|
+
/**
|
|
62
|
+
* A human-readable description of the alias
|
|
63
|
+
*
|
|
64
|
+
* @default no description
|
|
65
|
+
*/
|
|
66
|
+
readonly description?: string;
|
|
67
|
+
/**
|
|
68
|
+
* A fleet that the alias points to.
|
|
69
|
+
* If specified, the alias resolves to one specific fleet.
|
|
70
|
+
*
|
|
71
|
+
* At least one of `fleet` and `terminalMessage` must be provided.
|
|
72
|
+
*
|
|
73
|
+
* @default no fleet that the alias points to.
|
|
74
|
+
*/
|
|
75
|
+
readonly fleet?: IFleet;
|
|
76
|
+
/**
|
|
77
|
+
* The message text to be used with a terminal routing strategy.
|
|
78
|
+
*
|
|
79
|
+
* At least one of `fleet` and `terminalMessage` must be provided.
|
|
80
|
+
*
|
|
81
|
+
* @default no terminal message
|
|
82
|
+
*/
|
|
83
|
+
readonly terminalMessage?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Base class for new and imported GameLift Alias.
|
|
87
|
+
*/
|
|
88
|
+
export declare abstract class AliasBase extends cdk.Resource implements IAlias {
|
|
89
|
+
/**
|
|
90
|
+
* The Identifier of the alias.
|
|
91
|
+
*/
|
|
92
|
+
abstract readonly aliasId: string;
|
|
93
|
+
/**
|
|
94
|
+
* The ARN of the alias
|
|
95
|
+
*/
|
|
96
|
+
abstract readonly aliasArn: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A Amazon GameLift alias is used to abstract a fleet designation.
|
|
100
|
+
* Fleet designations tell GameLift where to search for available resources when creating new game sessions for players.
|
|
101
|
+
* Use aliases instead of specific fleet IDs to seamlessly switch player traffic from one fleet to another by changing the alias's target location.
|
|
102
|
+
*
|
|
103
|
+
* Aliases are useful in games that don't use queues.
|
|
104
|
+
* Switching fleets in a queue is a simple matter of creating a new fleet, adding it to the queue, and removing the old fleet, none of which is visible to players.
|
|
105
|
+
* In contrast, game clients that don't use queues must specify which fleet to use when communicating with the GameLift service.
|
|
106
|
+
* Without aliases, a fleet switch requires updates to your game code and possibly distribution of an updated game clients to players.
|
|
107
|
+
*
|
|
108
|
+
* When updating the fleet-id an alias points to, there is a transition period of up to 2 minutes where game sessions on the alias may end up on the old fleet.
|
|
109
|
+
*
|
|
110
|
+
* @see https://docs.aws.amazon.com/gamelift/latest/developerguide/aliases-creating.html
|
|
111
|
+
*
|
|
112
|
+
* @resource AWS::GameLift::Alias
|
|
113
|
+
*/
|
|
114
|
+
export declare class Alias extends AliasBase {
|
|
115
|
+
/**
|
|
116
|
+
* Import an existing alias from its identifier.
|
|
117
|
+
*/
|
|
118
|
+
static fromAliasId(scope: Construct, id: string, aliasId: string): IAlias;
|
|
119
|
+
/**
|
|
120
|
+
* Import an existing alias from its ARN.
|
|
121
|
+
*/
|
|
122
|
+
static fromAliasArn(scope: Construct, id: string, aliasArn: string): IAlias;
|
|
123
|
+
/**
|
|
124
|
+
* Import an existing alias from its attributes.
|
|
125
|
+
*/
|
|
126
|
+
static fromAliasAttributes(scope: Construct, id: string, attrs: AliasAttributes): IAlias;
|
|
127
|
+
/**
|
|
128
|
+
* The Identifier of the alias.
|
|
129
|
+
*/
|
|
130
|
+
readonly aliasId: string;
|
|
131
|
+
/**
|
|
132
|
+
* The ARN of the alias.
|
|
133
|
+
*/
|
|
134
|
+
readonly aliasArn: string;
|
|
135
|
+
/**
|
|
136
|
+
* A fleet that the alias points to.
|
|
137
|
+
*/
|
|
138
|
+
readonly fleet?: IFleet;
|
|
139
|
+
constructor(scope: Construct, id: string, props: AliasProps);
|
|
140
|
+
private parseRoutingStrategy;
|
|
141
|
+
}
|
package/lib/alias.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Alias = exports.AliasBase = void 0;
|
|
5
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
6
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
|
+
const cdk = require("aws-cdk-lib");
|
|
8
|
+
const aws_gamelift_1 = require("aws-cdk-lib/aws-gamelift");
|
|
9
|
+
/**
|
|
10
|
+
* Base class for new and imported GameLift Alias.
|
|
11
|
+
*/
|
|
12
|
+
class AliasBase extends cdk.Resource {
|
|
13
|
+
}
|
|
14
|
+
exports.AliasBase = AliasBase;
|
|
15
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
16
|
+
AliasBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.AliasBase", version: "2.54.0-alpha.0" };
|
|
17
|
+
/**
|
|
18
|
+
* A Amazon GameLift alias is used to abstract a fleet designation.
|
|
19
|
+
* Fleet designations tell GameLift where to search for available resources when creating new game sessions for players.
|
|
20
|
+
* Use aliases instead of specific fleet IDs to seamlessly switch player traffic from one fleet to another by changing the alias's target location.
|
|
21
|
+
*
|
|
22
|
+
* Aliases are useful in games that don't use queues.
|
|
23
|
+
* Switching fleets in a queue is a simple matter of creating a new fleet, adding it to the queue, and removing the old fleet, none of which is visible to players.
|
|
24
|
+
* In contrast, game clients that don't use queues must specify which fleet to use when communicating with the GameLift service.
|
|
25
|
+
* Without aliases, a fleet switch requires updates to your game code and possibly distribution of an updated game clients to players.
|
|
26
|
+
*
|
|
27
|
+
* When updating the fleet-id an alias points to, there is a transition period of up to 2 minutes where game sessions on the alias may end up on the old fleet.
|
|
28
|
+
*
|
|
29
|
+
* @see https://docs.aws.amazon.com/gamelift/latest/developerguide/aliases-creating.html
|
|
30
|
+
*
|
|
31
|
+
* @resource AWS::GameLift::Alias
|
|
32
|
+
*/
|
|
33
|
+
class Alias extends AliasBase {
|
|
34
|
+
constructor(scope, id, props) {
|
|
35
|
+
super(scope, id, {
|
|
36
|
+
physicalName: props.aliasName,
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_AliasProps(props);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
43
|
+
Error.captureStackTrace(error, Alias);
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
if (!cdk.Token.isUnresolved(props.aliasName)) {
|
|
48
|
+
if (props.aliasName.length > 1024) {
|
|
49
|
+
throw new Error(`Alias name can not be longer than 1024 characters but has ${props.aliasName.length} characters.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (props.description && !cdk.Token.isUnresolved(props.description)) {
|
|
53
|
+
if (props.description.length > 1024) {
|
|
54
|
+
throw new Error(`Alias description can not be longer than 1024 characters but has ${props.description.length} characters.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!props.terminalMessage && !props.fleet) {
|
|
58
|
+
throw new Error('Either a terminal message or a fleet must be binded to this Alias.');
|
|
59
|
+
}
|
|
60
|
+
if (props.terminalMessage && props.fleet) {
|
|
61
|
+
throw new Error('Either a terminal message or a fleet must be binded to this Alias, not both.');
|
|
62
|
+
}
|
|
63
|
+
const resource = new aws_gamelift_1.CfnAlias(this, 'Resource', {
|
|
64
|
+
name: props.aliasName,
|
|
65
|
+
description: props.description,
|
|
66
|
+
routingStrategy: this.parseRoutingStrategy(props),
|
|
67
|
+
});
|
|
68
|
+
this.aliasId = this.getResourceNameAttribute(resource.ref);
|
|
69
|
+
this.aliasArn = cdk.Stack.of(scope).formatArn({
|
|
70
|
+
service: 'gamelift',
|
|
71
|
+
resource: 'alias',
|
|
72
|
+
resourceName: this.aliasId,
|
|
73
|
+
arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Import an existing alias from its identifier.
|
|
78
|
+
*/
|
|
79
|
+
static fromAliasId(scope, id, aliasId) {
|
|
80
|
+
return this.fromAliasAttributes(scope, id, { aliasId: aliasId });
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Import an existing alias from its ARN.
|
|
84
|
+
*/
|
|
85
|
+
static fromAliasArn(scope, id, aliasArn) {
|
|
86
|
+
return this.fromAliasAttributes(scope, id, { aliasArn: aliasArn });
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Import an existing alias from its attributes.
|
|
90
|
+
*/
|
|
91
|
+
static fromAliasAttributes(scope, id, attrs) {
|
|
92
|
+
try {
|
|
93
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_AliasAttributes(attrs);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
97
|
+
Error.captureStackTrace(error, this.fromAliasAttributes);
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
if (!attrs.aliasId && !attrs.aliasArn) {
|
|
102
|
+
throw new Error('Either aliasId or aliasArn must be provided in AliasAttributes');
|
|
103
|
+
}
|
|
104
|
+
const aliasId = attrs.aliasId ??
|
|
105
|
+
cdk.Stack.of(scope).splitArn(attrs.aliasArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
106
|
+
if (!aliasId) {
|
|
107
|
+
throw new Error(`No alias identifier found in ARN: '${attrs.aliasArn}'`);
|
|
108
|
+
}
|
|
109
|
+
const aliasArn = attrs.aliasArn ?? cdk.Stack.of(scope).formatArn({
|
|
110
|
+
service: 'gamelift',
|
|
111
|
+
resource: 'alias',
|
|
112
|
+
resourceName: attrs.aliasId,
|
|
113
|
+
arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
|
|
114
|
+
});
|
|
115
|
+
class Import extends AliasBase {
|
|
116
|
+
constructor(s, i) {
|
|
117
|
+
super(s, i, {
|
|
118
|
+
environmentFromArn: aliasArn,
|
|
119
|
+
});
|
|
120
|
+
this.aliasId = aliasId;
|
|
121
|
+
this.aliasArn = aliasArn;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return new Import(scope, id);
|
|
125
|
+
}
|
|
126
|
+
parseRoutingStrategy(props) {
|
|
127
|
+
if (props.fleet) {
|
|
128
|
+
return {
|
|
129
|
+
fleetId: props.fleet.fleetId,
|
|
130
|
+
type: 'SIMPLE',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
message: props.terminalMessage,
|
|
135
|
+
type: 'TERMINAL',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.Alias = Alias;
|
|
140
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
141
|
+
Alias[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.Alias", version: "2.54.0-alpha.0" };
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbGlhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBbUM7QUFHbkMsMkRBQW9EO0FBNkZwRDs7R0FFRztBQUNILE1BQXNCLFNBQVUsU0FBUSxHQUFHLENBQUMsUUFBUTs7QUFBcEQsOEJBU0M7OztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQWEsS0FBTSxTQUFRLFNBQVM7SUFnRWxDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDOUIsQ0FBQyxDQUFDOzs7Ozs7K0NBbkVNLEtBQUs7Ozs7UUFxRWQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxDQUFDO2FBQ3BIO1NBQ0Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQzthQUM3SDtTQUNGO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztTQUN2RjtRQUVELElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksdUJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztZQUNyQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsZUFBZSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTztZQUMxQixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUI7U0FDN0MsQ0FBQyxDQUFDO0tBQ0o7SUFwR0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWU7UUFDOUQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNwRTtJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCOzs7Ozs7Ozs7O1FBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDbkY7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTztZQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBWSxDQUFDO1FBRWhHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUMxRTtRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQy9ELE9BQU8sRUFBRSxVQUFVO1lBQ25CLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTztZQUMzQixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUI7U0FDN0MsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFPLFNBQVEsU0FBUztZQUk1QixZQUFZLENBQVksRUFBRSxDQUFTO2dCQUNqQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDVixrQkFBa0IsRUFBRSxRQUFRO2lCQUM3QixDQUFDLENBQUM7Z0JBTlcsWUFBTyxHQUFHLE9BQVEsQ0FBQztnQkFDbkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztZQU1wQyxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztLQUM5QjtJQXlETyxvQkFBb0IsQ0FBQyxLQUFpQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUc7WUFDaEIsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUM1QixJQUFJLEVBQUUsUUFBUTthQUNmLENBQUM7U0FDSDtRQUNELE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDOUIsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQztLQUNIOztBQW5ISCxzQkFvSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJRmxlZXQgfSBmcm9tICcuL2ZsZWV0LWJhc2UnO1xuaW1wb3J0IHsgQ2ZuQWxpYXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lbGlmdCBBbGlhcyBmb3IgYSBHYW1lbGlmdCBmbGVldCBkZXN0aW5hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWxpYXMgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcblxuICAvKipcbiAgICAgKiBUaGUgSWRlbnRpZmllciBvZiB0aGUgYWxpYXMuXG4gICAgICpcbiAgICAgKiBAYXR0cmlidXRlXG4gICAgICovXG4gIHJlYWRvbmx5IGFsaWFzSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGdhbWVsaWZ0LkFsaWFzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc09wdGlvbnMge1xuICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIGFsaWFzXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBObyBkZXNjcmlwdGlvblxuICAgICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGZ1bGwgc3BlY2lmaWNhdGlvbiBvZiBhbiBhbGlhcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGltcG9ydCBpdCBmbHVlbnRseSBpbnRvIHRoZSBDREsgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAgICAgKiBUaGUgQVJOIG9mIHRoZSBhbGlhc1xuICAgICAgICpcbiAgICAgICAqIEF0IGxlYXN0IG9uZSBvZiBgYWxpYXNBcm5gIGFuZCBgYWxpYXNJZGAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCBkZXJpdmVkIGZyb20gYGFsaWFzSWRgLlxuICAgICAgICovXG4gIHJlYWRvbmx5IGFsaWFzQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhbGlhc1xuICAgICAqXG4gICAgICogQXQgbGVhc3Qgb25lIG9mIGBhbGlhc0lkYCBhbmQgYGFsaWFzQXJuYCAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSBgYWxpYXNBcm5gLlxuICAgICAqL1xuICByZWFkb25seSBhbGlhc0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IEZsZWV0IGFsaWFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNQcm9wcyB7XG4gIC8qKlxuICAgICAqIE5hbWUgb2YgdGhpcyBhbGlhc1xuICAgICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICAgKiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGlhc1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgbm8gZGVzY3JpcHRpb25cbiAgICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmxlZXQgdGhhdCB0aGUgYWxpYXMgcG9pbnRzIHRvLlxuICAgKiBJZiBzcGVjaWZpZWQsIHRoZSBhbGlhcyByZXNvbHZlcyB0byBvbmUgc3BlY2lmaWMgZmxlZXQuXG4gICAqXG4gICAqIEF0IGxlYXN0IG9uZSBvZiBgZmxlZXRgIGFuZCBgdGVybWluYWxNZXNzYWdlYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBmbGVldCB0aGF0IHRoZSBhbGlhcyBwb2ludHMgdG8uXG4gICAqL1xuICByZWFkb25seSBmbGVldD86IElGbGVldDtcblxuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdGV4dCB0byBiZSB1c2VkIHdpdGggYSB0ZXJtaW5hbCByb3V0aW5nIHN0cmF0ZWd5LlxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgYGZsZWV0YCBhbmQgYHRlcm1pbmFsTWVzc2FnZWAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gdGVybWluYWwgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVybWluYWxNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG5ldyBhbmQgaW1wb3J0ZWQgR2FtZUxpZnQgQWxpYXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBbGlhc0Jhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJQWxpYXMge1xuICAvKipcbiAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSBhbGlhcy5cbiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWxpYXNJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWxpYXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhbGlhc0Fybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgQW1hem9uIEdhbWVMaWZ0IGFsaWFzIGlzIHVzZWQgdG8gYWJzdHJhY3QgYSBmbGVldCBkZXNpZ25hdGlvbi5cbiAqIEZsZWV0IGRlc2lnbmF0aW9ucyB0ZWxsIEdhbWVMaWZ0IHdoZXJlIHRvIHNlYXJjaCBmb3IgYXZhaWxhYmxlIHJlc291cmNlcyB3aGVuIGNyZWF0aW5nIG5ldyBnYW1lIHNlc3Npb25zIGZvciBwbGF5ZXJzLlxuICogVXNlIGFsaWFzZXMgaW5zdGVhZCBvZiBzcGVjaWZpYyBmbGVldCBJRHMgdG8gc2VhbWxlc3NseSBzd2l0Y2ggcGxheWVyIHRyYWZmaWMgZnJvbSBvbmUgZmxlZXQgdG8gYW5vdGhlciBieSBjaGFuZ2luZyB0aGUgYWxpYXMncyB0YXJnZXQgbG9jYXRpb24uXG4gKlxuICogQWxpYXNlcyBhcmUgdXNlZnVsIGluIGdhbWVzIHRoYXQgZG9uJ3QgdXNlIHF1ZXVlcy5cbiAqIFN3aXRjaGluZyBmbGVldHMgaW4gYSBxdWV1ZSBpcyBhIHNpbXBsZSBtYXR0ZXIgb2YgY3JlYXRpbmcgYSBuZXcgZmxlZXQsIGFkZGluZyBpdCB0byB0aGUgcXVldWUsIGFuZCByZW1vdmluZyB0aGUgb2xkIGZsZWV0LCBub25lIG9mIHdoaWNoIGlzIHZpc2libGUgdG8gcGxheWVycy5cbiAqIEluIGNvbnRyYXN0LCBnYW1lIGNsaWVudHMgdGhhdCBkb24ndCB1c2UgcXVldWVzIG11c3Qgc3BlY2lmeSB3aGljaCBmbGVldCB0byB1c2Ugd2hlbiBjb21tdW5pY2F0aW5nIHdpdGggdGhlIEdhbWVMaWZ0IHNlcnZpY2UuXG4gKiBXaXRob3V0IGFsaWFzZXMsIGEgZmxlZXQgc3dpdGNoIHJlcXVpcmVzIHVwZGF0ZXMgdG8geW91ciBnYW1lIGNvZGUgYW5kIHBvc3NpYmx5IGRpc3RyaWJ1dGlvbiBvZiBhbiB1cGRhdGVkIGdhbWUgY2xpZW50cyB0byBwbGF5ZXJzLlxuICpcbiAqIFdoZW4gdXBkYXRpbmcgdGhlIGZsZWV0LWlkIGFuIGFsaWFzIHBvaW50cyB0bywgdGhlcmUgaXMgYSB0cmFuc2l0aW9uIHBlcmlvZCBvZiB1cCB0byAyIG1pbnV0ZXMgd2hlcmUgZ2FtZSBzZXNzaW9ucyBvbiB0aGUgYWxpYXMgbWF5IGVuZCB1cCBvbiB0aGUgb2xkIGZsZWV0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hbGlhc2VzLWNyZWF0aW5nLmh0bWxcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpHYW1lTGlmdDo6QWxpYXNcbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzIGV4dGVuZHMgQWxpYXNCYXNlIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGFsaWFzIGZyb20gaXRzIGlkZW50aWZpZXIuXG4gICAqL1xuICBzdGF0aWMgZnJvbUFsaWFzSWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYWxpYXNJZDogc3RyaW5nKTogSUFsaWFzIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tQWxpYXNBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBhbGlhc0lkOiBhbGlhc0lkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBhbGlhcyBmcm9tIGl0cyBBUk4uXG4gICAqL1xuICBzdGF0aWMgZnJvbUFsaWFzQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGFsaWFzQXJuOiBzdHJpbmcpOiBJQWxpYXMge1xuICAgIHJldHVybiB0aGlzLmZyb21BbGlhc0F0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGFsaWFzQXJuOiBhbGlhc0FybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgYWxpYXMgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICovXG4gIHN0YXRpYyBmcm9tQWxpYXNBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBBbGlhc0F0dHJpYnV0ZXMpOiBJQWxpYXMge1xuICAgIGlmICghYXR0cnMuYWxpYXNJZCAmJiAhYXR0cnMuYWxpYXNBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGFsaWFzSWQgb3IgYWxpYXNBcm4gbXVzdCBiZSBwcm92aWRlZCBpbiBBbGlhc0F0dHJpYnV0ZXMnKTtcbiAgICB9XG4gICAgY29uc3QgYWxpYXNJZCA9IGF0dHJzLmFsaWFzSWQgPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oYXR0cnMuYWxpYXNBcm4hLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcblxuICAgIGlmICghYWxpYXNJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBhbGlhcyBpZGVudGlmaWVyIGZvdW5kIGluIEFSTjogJyR7YXR0cnMuYWxpYXNBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGFsaWFzQXJuID0gYXR0cnMuYWxpYXNBcm4gPz8gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnYWxpYXMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5hbGlhc0lkLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQWxpYXNCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhbGlhc0lkID0gYWxpYXNJZCE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNBcm4gPSBhbGlhc0FybjtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSwge1xuICAgICAgICAgIGVudmlyb25tZW50RnJvbUFybjogYWxpYXNBcm4sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSBhbGlhcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGlhc0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgKiBUaGUgQVJOIG9mIHRoZSBhbGlhcy5cbiAgICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQSBmbGVldCB0aGF0IHRoZSBhbGlhcyBwb2ludHMgdG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmxlZXQ/OiBJRmxlZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsaWFzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuYWxpYXNOYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmFsaWFzTmFtZSkpIHtcbiAgICAgIGlmIChwcm9wcy5hbGlhc05hbWUubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFsaWFzIG5hbWUgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmFsaWFzTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmRlc2NyaXB0aW9uKSkge1xuICAgICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbGlhcyBkZXNjcmlwdGlvbiBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDEwMjQgY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuZGVzY3JpcHRpb24ubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcHJvcHMudGVybWluYWxNZXNzYWdlICYmICFwcm9wcy5mbGVldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgYSB0ZXJtaW5hbCBtZXNzYWdlIG9yIGEgZmxlZXQgbXVzdCBiZSBiaW5kZWQgdG8gdGhpcyBBbGlhcy4nKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudGVybWluYWxNZXNzYWdlICYmIHByb3BzLmZsZWV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBhIHRlcm1pbmFsIG1lc3NhZ2Ugb3IgYSBmbGVldCBtdXN0IGJlIGJpbmRlZCB0byB0aGlzIEFsaWFzLCBub3QgYm90aC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5BbGlhcyh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5hbGlhc05hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByb3V0aW5nU3RyYXRlZ3k6IHRoaXMucGFyc2VSb3V0aW5nU3RyYXRlZ3kocHJvcHMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hbGlhc0lkID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUocmVzb3VyY2UucmVmKTtcbiAgICB0aGlzLmFsaWFzQXJuID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnYWxpYXMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLmFsaWFzSWQsXG4gICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VSb3V0aW5nU3RyYXRlZ3kocHJvcHM6IEFsaWFzUHJvcHMpOiBDZm5BbGlhcy5Sb3V0aW5nU3RyYXRlZ3lQcm9wZXJ0eSB7XG4gICAgaWYgKHByb3BzLmZsZWV0ICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmxlZXRJZDogcHJvcHMuZmxlZXQuZmxlZXRJZCxcbiAgICAgICAgdHlwZTogJ1NJTVBMRScsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogcHJvcHMudGVybWluYWxNZXNzYWdlLFxuICAgICAgdHlwZTogJ1RFUk1JTkFMJyxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
|
package/lib/build-fleet.js
CHANGED
|
@@ -151,5 +151,5 @@ class BuildFleet extends fleet_base_1.FleetBase {
|
|
|
151
151
|
}
|
|
152
152
|
exports.BuildFleet = BuildFleet;
|
|
153
153
|
_a = JSII_RTTI_SYMBOL_1;
|
|
154
|
-
BuildFleet[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.BuildFleet", version: "2.
|
|
154
|
+
BuildFleet[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.BuildFleet", version: "2.54.0-alpha.0" };
|
|
155
155
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZmxlZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJidWlsZC1mbGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBMkM7QUFDM0MsbUNBQW1DO0FBR25DLDZDQUE2RDtBQUM3RCwyREFBb0Q7QUErQnBEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBMkN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzlCLENBQUMsQ0FBQztRQUxZLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQzs7Ozs7OytDQXpDdkMsVUFBVTs7OztRQWdEbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxDQUFDO2FBQ3BIO1NBQ0Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQzthQUM3SDtTQUNGO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0ZB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bmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElCdWlsZCB9IGZyb20gJy4vYnVpbGQnO1xuaW1wb3J0IHsgRmxlZXRCYXNlLCBGbGVldFByb3BzLCBJRmxlZXQgfSBmcm9tICcuL2ZsZWV0LWJhc2UnO1xuaW1wb3J0IHsgQ2ZuRmxlZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuaW1wb3J0IHsgUG9ydCwgSVBlZXIsIEluZ3Jlc3NSdWxlIH0gZnJvbSAnLi9pbmdyZXNzLXJ1bGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lTGlmdCBGbGVldCB1c2VkIHRvIHJ1biBhIGN1c3RvbSBnYW1lIGJ1aWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCdWlsZEZsZWV0IGV4dGVuZHMgSUZsZWV0IHt9XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgR2FtZWxpZnQgYnVpbGQgZmxlZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEZsZWV0UHJvcHMgZXh0ZW5kcyBGbGVldFByb3BzIHtcblxuICAvKipcbiAgICAgKiBBIGJ1aWxkIHRvIGJlIGRlcGxveWVkIG9uIHRoZSBmbGVldC5cbiAgICAgKiBUaGUgYnVpbGQgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkIHRvIEFtYXpvbiBHYW1lTGlmdCBhbmQgYmUgaW4gYSBgUkVBRFlgIHN0YXR1cy5cbiAgICAgKlxuICAgICAqIFRoaXMgZmxlZXQgc2V0dGluZyBjYW5ub3QgYmUgY2hhbmdlZCBvbmNlIHRoZSBmbGVldCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICByZWFkb25seSBjb250ZW50OiBJQnVpbGQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIElQIGFkZHJlc3MgcmFuZ2VzIGFuZCBwb3J0IHNldHRpbmdzIHRoYXQgYWxsb3cgaW5ib3VuZCB0cmFmZmljIHRvIGFjY2VzcyBnYW1lIHNlc3Npb25zIG9uIHRoaXMgZmxlZXQuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgbXVzdCBiZSBzZXQgYmVmb3JlIHBsYXllcnMgY2FuIGNvbm5lY3QgdG8gZ2FtZSBzZXNzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gaW5ib3VuZCB0cmFmZmljIGFsbG93ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluZ3Jlc3NSdWxlcz86IEluZ3Jlc3NSdWxlW107XG59XG5cbi8qKlxuICogQSBmbGVldCBjb250YWlucyBBbWF6b24gRWxhc3RpYyBDb21wdXRlIENsb3VkIChBbWF6b24gRUMyKSBpbnN0YW5jZXMgdGhhdCBHYW1lTGlmdCBob3N0cy5cbiAqIEEgZmxlZXQgdXNlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgc2NhbGluZyBsb2dpYyB0aGF0IHlvdSBkZWZpbmUgdG8gcnVuIHlvdXIgZ2FtZSBzZXJ2ZXIgYnVpbGQuIFlvdSBjYW4gdXNlIGEgZmxlZXQgZGlyZWN0bHkgd2l0aG91dCBhIHF1ZXVlLlxuICogWW91IGNhbiBhbHNvIGFzc29jaWF0ZSBtdWx0aXBsZSBmbGVldHMgd2l0aCBhIEdhbWVMaWZ0IHF1ZXVlLlxuICpcbiAqIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBTcG90IEluc3RhbmNlIGZsZWV0cyBjb25maWd1cmVkIHdpdGggeW91ciBwcmVmZXJyZWQgbG9jYXRpb25zLCBhbG9uZyB3aXRoIGEgYmFja3VwIE9uLURlbWFuZCBJbnN0YW5jZSBmbGVldCB3aXRoIHRoZSBzYW1lIGxvY2F0aW9ucy5cbiAqIFVzaW5nIG11bHRpcGxlIFNwb3QgSW5zdGFuY2UgZmxlZXRzIG9mIGRpZmZlcmVudCBpbnN0YW5jZSB0eXBlcyByZWR1Y2VzIHRoZSBjaGFuY2Ugb2YgbmVlZGluZyBPbi1EZW1hbmQgSW5zdGFuY2UgcGxhY2VtZW50LlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkdhbWVMaWZ0OjpGbGVldFxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRGbGVldCBleHRlbmRzIEZsZWV0QmFzZSBpbXBsZW1lbnRzIElCdWlsZEZsZWV0IHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGZsZWV0IGZyb20gaXRzIGlkZW50aWZpZXIuXG4gICAqL1xuICBzdGF0aWMgZnJvbUJ1aWxkRmxlZXRJZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBidWlsZEZsZWV0SWQ6IHN0cmluZyk6IElCdWlsZEZsZWV0IHtcbiAgICByZXR1cm4gdGhpcy5mcm9tRmxlZXRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBmbGVldElkOiBidWlsZEZsZWV0SWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGZsZWV0IGZyb20gaXRzIEFSTi5cbiAgICovXG4gIHN0YXRpYyBmcm9tQnVpbGRGbGVldEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBidWlsZEZsZWV0QXJuOiBzdHJpbmcpOiBJQnVpbGRGbGVldCB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUZsZWV0QXR0cmlidXRlcyhzY29wZSwgaWQsIHsgZmxlZXRBcm46IGJ1aWxkRmxlZXRBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGZsZWV0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZsZWV0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZmxlZXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmxlZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGNvbnRlbnQgb2YgdGhlIGZsZWV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudDogSUJ1aWxkO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgR2FtZUxpZnQgYXNzdW1lcyBieSBmbGVldCBpbnN0YW5jZXMgdG8gYWNjZXNzIEFXUyByZXNzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IGZsZWV0IGlzIHVzaW5nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGluZ3Jlc3NSdWxlczogSW5ncmVzc1J1bGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWlsZEZsZWV0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZmxlZXROYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmZsZWV0TmFtZSkpIHtcbiAgICAgIGlmIChwcm9wcy5mbGVldE5hbWUubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsZWV0IG5hbWUgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmZsZWV0TmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmRlc2NyaXB0aW9uKSkge1xuICAgICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGbGVldCBkZXNjcmlwdGlvbiBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDEwMjQgY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuZGVzY3JpcHRpb24ubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5taW5TaXplICYmIHByb3BzLm1pblNpemUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgYWxsb3dlZCBpbiB0aGUgRmxlZXQgY2Fubm90IGJlIGxvd2VyIHRoYW4gMCwgZ2l2ZW4gJHtwcm9wcy5taW5TaXplfWApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5tYXhTaXplICYmIHByb3BzLm1heFNpemUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgYWxsb3dlZCBpbiB0aGUgRmxlZXQgY2Fubm90IGJlIGxvd2VyIHRoYW4gMCwgZ2l2ZW4gJHtwcm9wcy5tYXhTaXplfWApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5wZWVyVnBjKSB7XG4gICAgICB0aGlzLndhcm5WcGNQZWVyaW5nQXV0aG9yaXphdGlvbnModGhpcyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCBsb2NhdGlvbnNcbiAgICBpZiAocHJvcHMubG9jYXRpb25zICYmIHByb3BzLmxvY2F0aW9ucz8ubGVuZ3RoID4gMTAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vcmUgdGhhbiAxMDAgbG9jYXRpb25zIGFyZSBhbGxvd2VkIHBlciBmbGVldCwgZ2l2ZW4gJHtwcm9wcy5sb2NhdGlvbnMubGVuZ3RofWApO1xuICAgIH1cbiAgICAocHJvcHMubG9jYXRpb25zIHx8IFtdKS5mb3JFYWNoKHRoaXMuYWRkSW50ZXJuYWxMb2NhdGlvbi5iaW5kKHRoaXMpKTtcblxuXG4gICAgLy8gQWRkIGFsbCBJbmdyZXNzIHJ1bGVzXG4gICAgaWYgKHByb3BzLmluZ3Jlc3NSdWxlcyAmJiBwcm9wcy5pbmdyZXNzUnVsZXM/Lmxlbmd0aCA+IDUwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vcmUgdGhhbiA1MCBpbmdyZXNzIHJ1bGVzIGFyZSBhbGxvd2VkIHBlciBmbGVldCwgZ2l2ZW4gJHtwcm9wcy5pbmdyZXNzUnVsZXMubGVuZ3RofWApO1xuICAgIH1cbiAgICAocHJvcHMuaW5ncmVzc1J1bGVzIHx8IFtdKS5mb3JFYWNoKHRoaXMuYWRkSW50ZXJuYWxJbmdyZXNzUnVsZS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuY29udGVudCA9IHByb3BzLmNvbnRlbnQ7XG4gICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZSA/PyBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdnYW1lbGlmdC5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWMyLmFtYXpvbmF3cy5jb20nKSksXG4gICAgfSk7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMucm9sZTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmbkZsZWV0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGJ1aWxkSWQ6IHRoaXMuY29udGVudC5idWlsZElkLFxuICAgICAgY2VydGlmaWNhdGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNlcnRpZmljYXRlVHlwZTogcHJvcHMudXNlQ2VydGlmaWNhdGUgPyAnR0VORVJBVEVEJzogJ0RJU0FCTEVEJyxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBkZXNpcmVkRWMySW5zdGFuY2VzOiBwcm9wcy5kZXNpcmVkQ2FwYWNpdHksXG4gICAgICBlYzJJbmJvdW5kUGVybWlzc2lvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucGFyc2VJbmdyZXNzUnVsZXMoKSB9KSxcbiAgICAgIGVjMkluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLnRvU3RyaW5nKCksXG4gICAgICBmbGVldFR5cGU6IHByb3BzLnVzZVNwb3QgPyAnU1BPVCcgOiAnT05fREVNQU5EJyxcbiAgICAgIGluc3RhbmNlUm9sZUFybjogdGhpcy5yb2xlLnJvbGVBcm4sXG4gICAgICBsb2NhdGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucGFyc2VMb2NhdGlvbnMoKSB9KSxcbiAgICAgIG1heFNpemU6IHByb3BzLm1heFNpemUgPyBwcm9wcy5tYXhTaXplIDogMSxcbiAgICAgIG1pblNpemU6IHByb3BzLm1pblNpemUgPyBwcm9wcy5taW5TaXplIDogMCxcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgbmV3R2FtZVNlc3Npb25Qcm90ZWN0aW9uUG9saWN5OiBwcm9wcy5wcm90ZWN0TmV3R2FtZVNlc3Npb24gPyAnRnVsbFByb3RlY3Rpb24nIDogJ05vUHJvdGVjdGlvbicsXG4gICAgICBwZWVyVnBjQXdzQWNjb3VudElkOiBwcm9wcy5wZWVyVnBjICYmIHByb3BzLnBlZXJWcGMuZW52LmFjY291bnQsXG4gICAgICBwZWVyVnBjSWQ6IHByb3BzLnBlZXJWcGMgJiYgcHJvcHMucGVlclZwYy52cGNJZCxcbiAgICAgIHJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeTogdGhpcy5wYXJzZVJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeShwcm9wcyksXG4gICAgICBydW50aW1lQ29uZmlndXJhdGlvbjogdGhpcy5wYXJzZVJ1bnRpbWVDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICB9KTtcblxuICAgIHRoaXMuZmxlZXRJZCA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5mbGVldEFybiA9IGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdnYW1lbGlmdCcsXG4gICAgICByZXNvdXJjZTogJ2ZsZWV0JyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5mbGVldElkLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBpbmdyZXNzIHJ1bGUgdG8gYWxsb3cgaW5ib3VuZCB0cmFmZmljIHRvIGFjY2VzcyBnYW1lIHNlc3Npb25zIG9uIHRoaXMgZmxlZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgQSByYW5nZSBvZiBhbGxvd2VkIElQIGFkZHJlc3Nlc1xuICAgKiBAcGFyYW0gcG9ydCBUaGUgcG9ydCByYW5nZSB1c2VkIGZvciBpbmdyZXNzIHRyYWZmaWNcbiAgICovXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShzb3VyY2U6IElQZWVyLCBwb3J0OiBQb3J0KSB7XG4gICAgdGhpcy5hZGRJbnRlcm5hbEluZ3Jlc3NSdWxlKHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcG9ydDogcG9ydCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW50ZXJuYWxJbmdyZXNzUnVsZShpbmdyZXNzUnVsZTogSW5ncmVzc1J1bGUpIHtcbiAgICBpZiAodGhpcy5pbmdyZXNzUnVsZXMubGVuZ3RoID09IDUwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG1vcmUgdGhhbiA1MCBpbmdyZXNzIHJ1bGVzIGFyZSBhbGxvd2VkIHBlciBmbGVldCcpO1xuICAgIH1cbiAgICB0aGlzLmluZ3Jlc3NSdWxlcy5wdXNoKGluZ3Jlc3NSdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VJbmdyZXNzUnVsZXMoKTogQ2ZuRmxlZXQuSXBQZXJtaXNzaW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmluZ3Jlc3NSdWxlcyB8fCB0aGlzLmluZ3Jlc3NSdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzc1J1bGVzLm1hcChwYXJzZUluZ3Jlc3NSdWxlKTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSW5ncmVzc1J1bGUoaW5ncmVzc1J1bGU6IEluZ3Jlc3NSdWxlKTogQ2ZuRmxlZXQuSXBQZXJtaXNzaW9uUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5ncmVzc1J1bGUucG9ydC50b0pzb24oKSxcbiAgICAgICAgLi4uaW5ncmVzc1J1bGUuc291cmNlLnRvSnNvbigpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn0iXX0=
|