@aws-cdk/aws-gamelift-alpha 2.58.1-alpha.0 → 2.60.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.
@@ -0,0 +1,94 @@
1
+ import * as sns from 'aws-cdk-lib/aws-sns';
2
+ import { Construct } from 'constructs';
3
+ import { IGameSessionQueue } from './game-session-queue';
4
+ import { MatchmakingConfigurationProps, GameProperty, MatchmakingConfigurationBase, IMatchmakingConfiguration } from './matchmaking-configuration';
5
+ /**
6
+ * Properties for a new queued matchmaking configuration
7
+ */
8
+ export interface QueuedMatchmakingConfigurationProps extends MatchmakingConfigurationProps {
9
+ /**
10
+ * The number of player slots in a match to keep open for future players.
11
+ * For example, if the configuration's rule set specifies a match for a single 12-person team, and the additional player count is set to 2, only 10 players are selected for the match.
12
+ *
13
+ * @default no additional player slots
14
+ */
15
+ readonly additionalPlayerCount?: number;
16
+ /**
17
+ * The method used to backfill game sessions that are created with this matchmaking configuration.
18
+ * - Choose manual when your game manages backfill requests manually or does not use the match backfill feature.
19
+ * - Otherwise backfill is settled to automatic to have GameLift create a `StartMatchBackfill` request whenever a game session has one or more open slots.
20
+ *
21
+ * @see https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-backfill.html
22
+ *
23
+ * @default automatic backfill mode
24
+ */
25
+ readonly manualBackfillMode?: boolean;
26
+ /**
27
+ * A set of custom properties for a game session, formatted as key-value pairs.
28
+ * These properties are passed to a game server process with a request to start a new game session.
29
+ *
30
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession
31
+ *
32
+ * @default no additional game properties
33
+ */
34
+ readonly gameProperties?: GameProperty[];
35
+ /**
36
+ * A set of custom game session properties, formatted as a single string value.
37
+ * This data is passed to a game server process with a request to start a new game session.
38
+ *
39
+ * @see https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession
40
+ *
41
+ * @default no additional game session data
42
+ */
43
+ readonly gameSessionData?: string;
44
+ /**
45
+ * Queues are used to start new GameLift-hosted game sessions for matches that are created with this matchmaking configuration.
46
+ *
47
+ * Queues can be located in any Region.
48
+ */
49
+ readonly gameSessionQueues: IGameSessionQueue[];
50
+ }
51
+ /**
52
+ * A FlexMatch matchmaker process does the work of building a game match.
53
+ * It manages the pool of matchmaking requests received, forms teams for a match, processes and selects players to find the best possible player groups, and initiates the process of placing and starting a game session for the match.
54
+ * This topic describes the key aspects of a matchmaker and how to configure one customized for your game.
55
+ *
56
+ * @see https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-configuration.html
57
+ *
58
+ * @resource AWS::GameLift::MatchmakingConfiguration
59
+ */
60
+ export declare class QueuedMatchmakingConfiguration extends MatchmakingConfigurationBase {
61
+ /**
62
+ * Import an existing matchmaking configuration from its name.
63
+ */
64
+ static fromQueuedMatchmakingConfigurationName(scope: Construct, id: string, matchmakingConfigurationName: string): IMatchmakingConfiguration;
65
+ /**
66
+ * Import an existing matchmaking configuration from its ARN.
67
+ */
68
+ static fromQueuedMatchmakingConfigurationArn(scope: Construct, id: string, matchmakingConfigurationArn: string): IMatchmakingConfiguration;
69
+ /**
70
+ * The name of the matchmaking configuration.
71
+ */
72
+ readonly matchmakingConfigurationName: string;
73
+ /**
74
+ * The ARN of the matchmaking configuration.
75
+ */
76
+ readonly matchmakingConfigurationArn: string;
77
+ /**
78
+ * The notification target for matchmaking events
79
+ */
80
+ readonly notificationTarget?: sns.ITopic;
81
+ /**
82
+ * A list of game session queue destinations
83
+ */
84
+ private readonly gameSessionQueues;
85
+ constructor(scope: Construct, id: string, props: QueuedMatchmakingConfigurationProps);
86
+ /**
87
+ * Adds a game session queue destination to the matchmaking configuration.
88
+ *
89
+ * @param gameSessionQueue A game session queue
90
+ */
91
+ addGameSessionQueue(gameSessionQueue: IGameSessionQueue): void;
92
+ private parseGameSessionQueues;
93
+ private parseGameProperties;
94
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.QueuedMatchmakingConfiguration = void 0;
5
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
+ const iam = require("aws-cdk-lib/aws-iam");
8
+ const sns = require("aws-cdk-lib/aws-sns");
9
+ const cdk = require("aws-cdk-lib");
10
+ const gamelift = require("aws-cdk-lib/aws-gamelift");
11
+ const matchmaking_configuration_1 = require("./matchmaking-configuration");
12
+ /**
13
+ * A FlexMatch matchmaker process does the work of building a game match.
14
+ * It manages the pool of matchmaking requests received, forms teams for a match, processes and selects players to find the best possible player groups, and initiates the process of placing and starting a game session for the match.
15
+ * This topic describes the key aspects of a matchmaker and how to configure one customized for your game.
16
+ *
17
+ * @see https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-configuration.html
18
+ *
19
+ * @resource AWS::GameLift::MatchmakingConfiguration
20
+ */
21
+ class QueuedMatchmakingConfiguration extends matchmaking_configuration_1.MatchmakingConfigurationBase {
22
+ constructor(scope, id, props) {
23
+ super(scope, id, {
24
+ physicalName: props.matchmakingConfigurationName,
25
+ });
26
+ /**
27
+ * A list of game session queue destinations
28
+ */
29
+ this.gameSessionQueues = [];
30
+ try {
31
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_QueuedMatchmakingConfigurationProps(props);
32
+ }
33
+ catch (error) {
34
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
35
+ Error.captureStackTrace(error, QueuedMatchmakingConfiguration);
36
+ }
37
+ throw error;
38
+ }
39
+ if (props.matchmakingConfigurationName && !cdk.Token.isUnresolved(props.matchmakingConfigurationName)) {
40
+ if (props.matchmakingConfigurationName.length > 128) {
41
+ throw new Error(`Matchmaking configuration name can not be longer than 128 characters but has ${props.matchmakingConfigurationName.length} characters.`);
42
+ }
43
+ if (!/^[a-zA-Z0-9-\.]+$/.test(props.matchmakingConfigurationName)) {
44
+ throw new Error(`Matchmaking configuration name ${props.matchmakingConfigurationName} can contain only letters, numbers, hyphens, back slash or dot with no spaces.`);
45
+ }
46
+ }
47
+ if (props.description && !cdk.Token.isUnresolved(props.description)) {
48
+ if (props.description.length > 1024) {
49
+ throw new Error(`Matchmaking configuration description can not be longer than 1024 characters but has ${props.description.length} characters.`);
50
+ }
51
+ }
52
+ if (props.gameProperties && props.gameProperties.length > 16) {
53
+ throw new Error(`The maximum number of game properties allowed in the matchmaking configuration cannot be higher than 16, given ${props.gameProperties.length}`);
54
+ }
55
+ if (props.gameSessionData && props.gameSessionData.length > 4096) {
56
+ throw new Error(`Matchmaking configuration game session data can not be longer than 4096 characters but has ${props.gameSessionData.length} characters.`);
57
+ }
58
+ if (props.customEventData && props.customEventData.length > 256) {
59
+ throw new Error(`Matchmaking configuration custom event data can not be longer than 256 characters but has ${props.customEventData.length} characters.`);
60
+ }
61
+ if (props.acceptanceTimeout && props.acceptanceTimeout.toSeconds() > 600) {
62
+ throw new Error(`Matchmaking configuration acceptance timeout can not exceed 600 seconds, actual ${props.acceptanceTimeout.toSeconds()} seconds.`);
63
+ }
64
+ if (props.requestTimeout && props.requestTimeout.toSeconds() > 43200) {
65
+ throw new Error(`Matchmaking configuration request timeout can not exceed 43200 seconds, actual ${props.requestTimeout.toSeconds()} seconds.`);
66
+ }
67
+ //Notification target
68
+ this.notificationTarget = props.notificationTarget;
69
+ if (!this.notificationTarget) {
70
+ this.notificationTarget = new sns.Topic(this, 'Topic', {});
71
+ }
72
+ // Be sure to add the right TopicPolicy to enable gamelift publish action to given topic
73
+ const topicPolicy = new sns.TopicPolicy(this, 'TopicPolicy', {
74
+ topics: [this.notificationTarget],
75
+ });
76
+ topicPolicy.document.addStatements(new iam.PolicyStatement({
77
+ actions: ['sns:Publish'],
78
+ principals: [new iam.ServicePrincipal('gamelift.amazonaws.com')],
79
+ resources: [this.notificationTarget.topicArn],
80
+ }));
81
+ // Add all queues
82
+ (props.gameSessionQueues || []).forEach(this.addGameSessionQueue.bind(this));
83
+ const resource = new gamelift.CfnMatchmakingConfiguration(this, 'Resource', {
84
+ name: this.physicalName,
85
+ acceptanceRequired: Boolean(props.requireAcceptance),
86
+ acceptanceTimeoutSeconds: props.acceptanceTimeout && props.acceptanceTimeout.toSeconds(),
87
+ additionalPlayerCount: props.additionalPlayerCount,
88
+ backfillMode: props.manualBackfillMode ? 'MANUAL' : 'AUTOMATIC',
89
+ customEventData: props.customEventData,
90
+ description: props.description,
91
+ flexMatchMode: 'WITH_QUEUE',
92
+ gameProperties: this.parseGameProperties(props),
93
+ gameSessionData: props.gameSessionData,
94
+ gameSessionQueueArns: cdk.Lazy.list({ produce: () => this.parseGameSessionQueues() }),
95
+ notificationTarget: this.notificationTarget.topicArn,
96
+ requestTimeoutSeconds: props.requestTimeout && props.requestTimeout.toSeconds() || cdk.Duration.seconds(300).toSeconds(),
97
+ ruleSetName: props.ruleSet.matchmakingRuleSetName,
98
+ });
99
+ this.matchmakingConfigurationName = this.getResourceNameAttribute(resource.ref);
100
+ this.matchmakingConfigurationArn = cdk.Stack.of(scope).formatArn({
101
+ service: 'gamelift',
102
+ resource: 'matchmakingconfiguration',
103
+ resourceName: this.matchmakingConfigurationName,
104
+ arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
105
+ });
106
+ }
107
+ /**
108
+ * Import an existing matchmaking configuration from its name.
109
+ */
110
+ static fromQueuedMatchmakingConfigurationName(scope, id, matchmakingConfigurationName) {
111
+ return this.fromMatchmakingConfigurationAttributes(scope, id, { matchmakingConfigurationName: matchmakingConfigurationName });
112
+ }
113
+ /**
114
+ * Import an existing matchmaking configuration from its ARN.
115
+ */
116
+ static fromQueuedMatchmakingConfigurationArn(scope, id, matchmakingConfigurationArn) {
117
+ return this.fromMatchmakingConfigurationAttributes(scope, id, { matchmakingConfigurationArn: matchmakingConfigurationArn });
118
+ }
119
+ /**
120
+ * Adds a game session queue destination to the matchmaking configuration.
121
+ *
122
+ * @param gameSessionQueue A game session queue
123
+ */
124
+ addGameSessionQueue(gameSessionQueue) {
125
+ try {
126
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_IGameSessionQueue(gameSessionQueue);
127
+ }
128
+ catch (error) {
129
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
130
+ Error.captureStackTrace(error, this.addGameSessionQueue);
131
+ }
132
+ throw error;
133
+ }
134
+ this.gameSessionQueues.push(gameSessionQueue);
135
+ }
136
+ parseGameSessionQueues() {
137
+ if (!this.gameSessionQueues || this.gameSessionQueues.length === 0) {
138
+ return undefined;
139
+ }
140
+ return this.gameSessionQueues.map((queue) => queue.gameSessionQueueArn);
141
+ }
142
+ parseGameProperties(props) {
143
+ if (!props.gameProperties || props.gameProperties.length === 0) {
144
+ return undefined;
145
+ }
146
+ return props.gameProperties.map(parseGameProperty);
147
+ function parseGameProperty(gameProperty) {
148
+ return {
149
+ key: gameProperty.key,
150
+ value: gameProperty.value,
151
+ };
152
+ }
153
+ }
154
+ }
155
+ exports.QueuedMatchmakingConfiguration = QueuedMatchmakingConfiguration;
156
+ _a = JSII_RTTI_SYMBOL_1;
157
+ QueuedMatchmakingConfiguration[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.QueuedMatchmakingConfiguration", version: "2.60.0-alpha.0" };
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkLW1hdGNobWFraW5nLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJxdWV1ZWQtbWF0Y2htYWtpbmctY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLG1DQUFtQztBQUduQyxxREFBcUQ7QUFDckQsMkVBQW1KO0FBcURuSjs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsOEJBQStCLFNBQVEsd0RBQTRCO0lBa0M5RSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBDO1FBQ2xGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyw0QkFBNEI7U0FDakQsQ0FBQyxDQUFDO1FBUkw7O1dBRUc7UUFDYyxzQkFBaUIsR0FBd0IsRUFBRSxDQUFDOzs7Ozs7K0NBaENsRCw4QkFBOEI7Ozs7UUF1Q3ZDLElBQUksS0FBSyxDQUFDLDRCQUE0QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLEVBQUU7WUFDckcsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7YUFDMUo7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxLQUFLLENBQUMsNEJBQTRCLGdGQUFnRixDQUFDLENBQUM7YUFDdks7U0FDRjtRQUVELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxX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MEI7WUFDbkQsT0FBTztnQkFDTCxHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUc7Z0JBQ3JCLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSzthQUMxQixDQUFDO1FBQ0osQ0FBQztLQUNGOztBQXJKSCx3RUF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJR2FtZVNlc3Npb25RdWV1ZSB9IGZyb20gJy4vZ2FtZS1zZXNzaW9uLXF1ZXVlJztcbmltcG9ydCAqIGFzIGdhbWVsaWZ0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nYW1lbGlmdCc7XG5pbXBvcnQgeyBNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Qcm9wcywgR2FtZVByb3BlcnR5LCBNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25CYXNlLCBJTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tYXRjaG1ha2luZy1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldyBxdWV1ZWQgbWF0Y2htYWtpbmcgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlZE1hdGNobWFraW5nQ29uZmlndXJhdGlvblByb3BzIGV4dGVuZHMgTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uUHJvcHMge1xuLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGxheWVyIHNsb3RzIGluIGEgbWF0Y2ggdG8ga2VlcCBvcGVuIGZvciBmdXR1cmUgcGxheWVycy5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBjb25maWd1cmF0aW9uJ3MgcnVsZSBzZXQgc3BlY2lmaWVzIGEgbWF0Y2ggZm9yIGEgc2luZ2xlIDEyLXBlcnNvbiB0ZWFtLCBhbmQgdGhlIGFkZGl0aW9uYWwgcGxheWVyIGNvdW50IGlzIHNldCB0byAyLCBvbmx5IDEwIHBsYXllcnMgYXJlIHNlbGVjdGVkIGZvciB0aGUgbWF0Y2guXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgcGxheWVyIHNsb3RzXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsUGxheWVyQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRob2QgdXNlZCB0byBiYWNrZmlsbCBnYW1lIHNlc3Npb25zIHRoYXQgYXJlIGNyZWF0ZWQgd2l0aCB0aGlzIG1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIC0gQ2hvb3NlIG1hbnVhbCB3aGVuIHlvdXIgZ2FtZSBtYW5hZ2VzIGJhY2tmaWxsIHJlcXVlc3RzIG1hbnVhbGx5IG9yIGRvZXMgbm90IHVzZSB0aGUgbWF0Y2ggYmFja2ZpbGwgZmVhdHVyZS5cbiAgICogLSBPdGhlcndpc2UgYmFja2ZpbGwgaXMgc2V0dGxlZCB0byBhdXRvbWF0aWMgdG8gaGF2ZSBHYW1lTGlmdCBjcmVhdGUgYSBgU3RhcnRNYXRjaEJhY2tmaWxsYCByZXF1ZXN0IHdoZW5ldmVyIGEgZ2FtZSBzZXNzaW9uIGhhcyBvbmUgb3IgbW9yZSBvcGVuIHNsb3RzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZmxleG1hdGNoZ3VpZGUvbWF0Y2gtYmFja2ZpbGwuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvbWF0aWMgYmFja2ZpbGwgbW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgbWFudWFsQmFja2ZpbGxNb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgY3VzdG9tIHByb3BlcnRpZXMgZm9yIGEgZ2FtZSBzZXNzaW9uLCBmb3JtYXR0ZWQgYXMga2V5LXZhbHVlIHBhaXJzLlxuICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBwYXNzZWQgdG8gYSBnYW1lIHNlcnZlciBwcm9jZXNzIHdpdGggYSByZXF1ZXN0IHRvIHN0YXJ0IGEgbmV3IGdhbWUgc2Vzc2lvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2dhbWVsaWZ0LXNkay1zZXJ2ZXItYXBpLmh0bWwjZ2FtZWxpZnQtc2RrLXNlcnZlci1zdGFydHNlc3Npb25cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBnYW1lIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVQcm9wZXJ0aWVzPzogR2FtZVByb3BlcnR5W107XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGN1c3RvbSBnYW1lIHNlc3Npb24gcHJvcGVydGllcywgZm9ybWF0dGVkIGFzIGEgc2luZ2xlIHN0cmluZyB2YWx1ZS5cbiAgICogVGhpcyBkYXRhIGlzIHBhc3NlZCB0byBhIGdhbWUgc2VydmVyIHByb2Nlc3Mgd2l0aCBhIHJlcXVlc3QgdG8gc3RhcnQgYSBuZXcgZ2FtZSBzZXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZ2FtZWxpZnQtc2RrLXNlcnZlci1hcGkuaHRtbCNnYW1lbGlmdC1zZGstc2VydmVyLXN0YXJ0c2Vzc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGdhbWUgc2Vzc2lvbiBkYXRhXG4gICAqL1xuICByZWFkb25seSBnYW1lU2Vzc2lvbkRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXVlcyBhcmUgdXNlZCB0byBzdGFydCBuZXcgR2FtZUxpZnQtaG9zdGVkIGdhbWUgc2Vzc2lvbnMgZm9yIG1hdGNoZXMgdGhhdCBhcmUgY3JlYXRlZCB3aXRoIHRoaXMgbWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogUXVldWVzIGNhbiBiZSBsb2NhdGVkIGluIGFueSBSZWdpb24uXG4gICAqL1xuICByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlczogSUdhbWVTZXNzaW9uUXVldWVbXTtcbn1cblxuLyoqXG4gKiBBIEZsZXhNYXRjaCBtYXRjaG1ha2VyIHByb2Nlc3MgZG9lcyB0aGUgd29yayBvZiBidWlsZGluZyBhIGdhbWUgbWF0Y2guXG4gKiBJdCBtYW5hZ2VzIHRoZSBwb29sIG9mIG1hdGNobWFraW5nIHJlcXVlc3RzIHJlY2VpdmVkLCBmb3JtcyB0ZWFtcyBmb3IgYSBtYXRjaCwgcHJvY2Vzc2VzIGFuZCBzZWxlY3RzIHBsYXllcnMgdG8gZmluZCB0aGUgYmVzdCBwb3NzaWJsZSBwbGF5ZXIgZ3JvdXBzLCBhbmQgaW5pdGlhdGVzIHRoZSBwcm9jZXNzIG9mIHBsYWNpbmcgYW5kIHN0YXJ0aW5nIGEgZ2FtZSBzZXNzaW9uIGZvciB0aGUgbWF0Y2guXG4gKiBUaGlzIHRvcGljIGRlc2NyaWJlcyB0aGUga2V5IGFzcGVjdHMgb2YgYSBtYXRjaG1ha2VyIGFuZCBob3cgdG8gY29uZmlndXJlIG9uZSBjdXN0b21pemVkIGZvciB5b3VyIGdhbWUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2ZsZXhtYXRjaGd1aWRlL21hdGNoLWNvbmZpZ3VyYXRpb24uaHRtbFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkdhbWVMaWZ0OjpNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXVlZE1hdGNobWFraW5nQ29uZmlndXJhdGlvbiBleHRlbmRzIE1hdGNobWFraW5nQ29uZmlndXJhdGlvbkJhc2Uge1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbiBmcm9tIGl0cyBuYW1lLlxuICAgKi9cbiAgc3RhdGljIGZyb21RdWV1ZWRNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyk6IElNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmZyb21NYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lOiBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBtYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGZyb20gaXRzIEFSTi5cbiAgICovXG4gIHN0YXRpYyBmcm9tUXVldWVkTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG1hdGNobWFraW5nQ29uZmlndXJhdGlvbkFybjogc3RyaW5nKTogSU1hdGNobWFraW5nQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU1hdGNobWFraW5nQ29uZmlndXJhdGlvbkF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IG1hdGNobWFraW5nQ29uZmlndXJhdGlvbkFybjogbWF0Y2htYWtpbmdDb25maWd1cmF0aW9uQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIG1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgICAqIFRoZSBBUk4gb2YgdGhlIG1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBub3RpZmljYXRpb24gdGFyZ2V0IGZvciBtYXRjaG1ha2luZyBldmVudHNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25UYXJnZXQ/OiBzbnMuSVRvcGljO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZ2FtZSBzZXNzaW9uIHF1ZXVlIGRlc3RpbmF0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlczogSUdhbWVTZXNzaW9uUXVldWVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBRdWV1ZWRNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZSkpIHtcbiAgICAgIGlmIChwcm9wcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gbmFtZSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEvXlthLXpBLVowLTktXFwuXSskLy50ZXN0KHByb3BzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbiBuYW1lICR7cHJvcHMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZX0gY2FuIGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCBiYWNrIHNsYXNoIG9yIGRvdCB3aXRoIG5vIHNwYWNlcy5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZGVzY3JpcHRpb24pKSB7XG4gICAgICBpZiAocHJvcHMuZGVzY3JpcHRpb24ubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRpb24gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmRlc2NyaXB0aW9uLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZ2FtZVByb3BlcnRpZXMgJiYgcHJvcHMuZ2FtZVByb3BlcnRpZXMubGVuZ3RoID4gMTYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG1heGltdW0gbnVtYmVyIG9mIGdhbWUgcHJvcGVydGllcyBhbGxvd2VkIGluIHRoZSBtYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGNhbm5vdCBiZSBoaWdoZXIgdGhhbiAxNiwgZ2l2ZW4gJHtwcm9wcy5nYW1lUHJvcGVydGllcy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmdhbWVTZXNzaW9uRGF0YSAmJiBwcm9wcy5nYW1lU2Vzc2lvbkRhdGEubGVuZ3RoID4gNDA5Nikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGdhbWUgc2Vzc2lvbiBkYXRhIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gNDA5NiBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5nYW1lU2Vzc2lvbkRhdGEubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jdXN0b21FdmVudERhdGEgJiYgcHJvcHMuY3VzdG9tRXZlbnREYXRhLmxlbmd0aCA+IDI1Nikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGN1c3RvbSBldmVudCBkYXRhIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMjU2IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmN1c3RvbUV2ZW50RGF0YS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmFjY2VwdGFuY2VUaW1lb3V0ICYmIHByb3BzLmFjY2VwdGFuY2VUaW1lb3V0LnRvU2Vjb25kcygpID4gNjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gYWNjZXB0YW5jZSB0aW1lb3V0IGNhbiBub3QgZXhjZWVkIDYwMCBzZWNvbmRzLCBhY3R1YWwgJHtwcm9wcy5hY2NlcHRhbmNlVGltZW91dC50b1NlY29uZHMoKX0gc2Vjb25kcy5gKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucmVxdWVzdFRpbWVvdXQgJiYgcHJvcHMucmVxdWVzdFRpbWVvdXQudG9TZWNvbmRzKCkgPiA0MzIwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIHJlcXVlc3QgdGltZW91dCBjYW4gbm90IGV4Y2VlZCA0MzIwMCBzZWNvbmRzLCBhY3R1YWwgJHtwcm9wcy5yZXF1ZXN0VGltZW91dC50b1NlY29uZHMoKX0gc2Vjb25kcy5gKTtcbiAgICB9XG5cbiAgICAvL05vdGlmaWNhdGlvbiB0YXJnZXRcbiAgICB0aGlzLm5vdGlmaWNhdGlvblRhcmdldCA9IHByb3BzLm5vdGlmaWNhdGlvblRhcmdldDtcbiAgICBpZiAoIXRoaXMubm90aWZpY2F0aW9uVGFyZ2V0KSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblRhcmdldCA9IG5ldyBzbnMuVG9waWModGhpcywgJ1RvcGljJywge30pO1xuICAgIH1cbiAgICAvLyBCZSBzdXJlIHRvIGFkZCB0aGUgcmlnaHQgVG9waWNQb2xpY3kgdG8gZW5hYmxlIGdhbWVsaWZ0IHB1Ymxpc2ggYWN0aW9uIHRvIGdpdmVuIHRvcGljXG4gICAgY29uc3QgdG9waWNQb2xpY3kgPSBuZXcgc25zLlRvcGljUG9saWN5KHRoaXMsICdUb3BpY1BvbGljeScsIHtcbiAgICAgIHRvcGljczogW3RoaXMubm90aWZpY2F0aW9uVGFyZ2V0XSxcbiAgICB9KTtcbiAgICB0b3BpY1BvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnc25zOlB1Ymxpc2gnXSxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2dhbWVsaWZ0LmFtYXpvbmF3cy5jb20nKV0sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLm5vdGlmaWNhdGlvblRhcmdldC50b3BpY0Fybl0sXG4gICAgfSkpO1xuXG4gICAgLy8gQWRkIGFsbCBxdWV1ZXNcbiAgICAocHJvcHMuZ2FtZVNlc3Npb25RdWV1ZXMgfHwgW10pLmZvckVhY2godGhpcy5hZGRHYW1lU2Vzc2lvblF1ZXVlLmJpbmQodGhpcykpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgZ2FtZWxpZnQuQ2ZuTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgYWNjZXB0YW5jZVJlcXVpcmVkOiBCb29sZWFuKHByb3BzLnJlcXVpcmVBY2NlcHRhbmNlKSxcbiAgICAgIGFjY2VwdGFuY2VUaW1lb3V0U2Vjb25kczogcHJvcHMuYWNjZXB0YW5jZVRpbWVvdXQgJiYgcHJvcHMuYWNjZXB0YW5jZVRpbWVvdXQudG9TZWNvbmRzKCksXG4gICAgICBhZGRpdGlvbmFsUGxheWVyQ291bnQ6IHByb3BzLmFkZGl0aW9uYWxQbGF5ZXJDb3VudCxcbiAgICAgIGJhY2tmaWxsTW9kZTogcHJvcHMubWFudWFsQmFja2ZpbGxNb2RlID8gJ01BTlVBTCcgOiAnQVVUT01BVElDJyxcbiAgICAgIGN1c3RvbUV2ZW50RGF0YTogcHJvcHMuY3VzdG9tRXZlbnREYXRhLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZmxleE1hdGNoTW9kZTogJ1dJVEhfUVVFVUUnLFxuICAgICAgZ2FtZVByb3BlcnRpZXM6IHRoaXMucGFyc2VHYW1lUHJvcGVydGllcyhwcm9wcyksXG4gICAgICBnYW1lU2Vzc2lvbkRhdGE6IHByb3BzLmdhbWVTZXNzaW9uRGF0YSxcbiAgICAgIGdhbWVTZXNzaW9uUXVldWVBcm5zOiBjZGsuTGF6eS5saXN0KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5wYXJzZUdhbWVTZXNzaW9uUXVldWVzKCkgfSksXG4gICAgICBub3RpZmljYXRpb25UYXJnZXQ6IHRoaXMubm90aWZpY2F0aW9uVGFyZ2V0LnRvcGljQXJuLFxuICAgICAgcmVxdWVzdFRpbWVvdXRTZWNvbmRzOiBwcm9wcy5yZXF1ZXN0VGltZW91dCAmJiBwcm9wcy5yZXF1ZXN0VGltZW91dC50b1NlY29uZHMoKSB8fCBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLnRvU2Vjb25kcygpLFxuICAgICAgcnVsZVNldE5hbWU6IHByb3BzLnJ1bGVTZXQubWF0Y2htYWtpbmdSdWxlU2V0TmFtZSxcbiAgICB9KTtcblxuICAgIHRoaXMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Bcm4gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiAnZ2FtZWxpZnQnLFxuICAgICAgcmVzb3VyY2U6ICdtYXRjaG1ha2luZ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZ2FtZSBzZXNzaW9uIHF1ZXVlIGRlc3RpbmF0aW9uIHRvIHRoZSBtYXRjaG1ha2luZyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZ2FtZVNlc3Npb25RdWV1ZSBBIGdhbWUgc2Vzc2lvbiBxdWV1ZVxuICAgKi9cbiAgcHVibGljIGFkZEdhbWVTZXNzaW9uUXVldWUoZ2FtZVNlc3Npb25RdWV1ZTogSUdhbWVTZXNzaW9uUXVldWUpIHtcbiAgICB0aGlzLmdhbWVTZXNzaW9uUXVldWVzLnB1c2goZ2FtZVNlc3Npb25RdWV1ZSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlR2FtZVNlc3Npb25RdWV1ZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5nYW1lU2Vzc2lvblF1ZXVlcyB8fCB0aGlzLmdhbWVTZXNzaW9uUXVldWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nYW1lU2Vzc2lvblF1ZXVlcy5tYXAoKHF1ZXVlKSA9PiBxdWV1ZS5nYW1lU2Vzc2lvblF1ZXVlQXJuKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VHYW1lUHJvcGVydGllcyhwcm9wczogUXVldWVkTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uUHJvcHMpOiBnYW1lbGlmdC5DZm5NYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb24uR2FtZVByb3BlcnR5UHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5nYW1lUHJvcGVydGllcyB8fCBwcm9wcy5nYW1lUHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmdhbWVQcm9wZXJ0aWVzLm1hcChwYXJzZUdhbWVQcm9wZXJ0eSk7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUdhbWVQcm9wZXJ0eShnYW1lUHJvcGVydHk6IEdhbWVQcm9wZXJ0eSk6IGdhbWVsaWZ0LkNmbk1hdGNobWFraW5nQ29uZmlndXJhdGlvbi5HYW1lUHJvcGVydHlQcm9wZXJ0eSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGdhbWVQcm9wZXJ0eS5rZXksXG4gICAgICAgIHZhbHVlOiBnYW1lUHJvcGVydHkudmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG59Il19
package/lib/script.js CHANGED
@@ -15,7 +15,7 @@ class ScriptBase extends cdk.Resource {
15
15
  }
16
16
  exports.ScriptBase = ScriptBase;
17
17
  _a = JSII_RTTI_SYMBOL_1;
18
- ScriptBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.ScriptBase", version: "2.58.1-alpha.0" };
18
+ ScriptBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.ScriptBase", version: "2.60.0-alpha.0" };
19
19
  /**
20
20
  * A GameLift script, that is installed and runs on instances in an Amazon GameLift fleet. It consists of
21
21
  * a zip file with all of the components of the realtime game server script.
@@ -119,7 +119,7 @@ class Script extends ScriptBase {
119
119
  }
120
120
  exports.Script = Script;
121
121
  _b = JSII_RTTI_SYMBOL_1;
122
- Script[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.Script", version: "2.58.1-alpha.0" };
122
+ Script[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.Script", version: "2.60.0-alpha.0" };
123
123
  /**
124
124
  * Given an opaque (token) ARN, returns a CloudFormation expression that extracts the script
125
125
  * identifier from the ARN.
@@ -0,0 +1,40 @@
1
+ import * as sns from 'aws-cdk-lib/aws-sns';
2
+ import { Construct } from 'constructs';
3
+ import { MatchmakingConfigurationProps, MatchmakingConfigurationBase, IMatchmakingConfiguration } from './matchmaking-configuration';
4
+ /**
5
+ * Properties for a new standalone matchmaking configuration
6
+ */
7
+ export interface StandaloneMatchmakingConfigurationProps extends MatchmakingConfigurationProps {
8
+ }
9
+ /**
10
+ * A FlexMatch matchmaker process does the work of building a game match.
11
+ * It manages the pool of matchmaking requests received, forms teams for a match, processes and selects players to find the best possible player groups, and initiates the process of placing and starting a game session for the match.
12
+ * This topic describes the key aspects of a matchmaker and how to configure one customized for your game.
13
+ *
14
+ * @see https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-configuration.html
15
+ *
16
+ * @resource AWS::GameLift::MatchmakingConfiguration
17
+ */
18
+ export declare class StandaloneMatchmakingConfiguration extends MatchmakingConfigurationBase {
19
+ /**
20
+ * Import an existing matchmaking configuration from its name.
21
+ */
22
+ static fromStandaloneMatchmakingConfigurationName(scope: Construct, id: string, matchmakingConfigurationName: string): IMatchmakingConfiguration;
23
+ /**
24
+ * Import an existing matchmaking configuration from its ARN.
25
+ */
26
+ static fromStandaloneMatchmakingConfigurationArn(scope: Construct, id: string, matchmakingConfigurationArn: string): IMatchmakingConfiguration;
27
+ /**
28
+ * The Identifier of the matchmaking configuration.
29
+ */
30
+ readonly matchmakingConfigurationName: string;
31
+ /**
32
+ * The ARN of the matchmaking configuration.
33
+ */
34
+ readonly matchmakingConfigurationArn: string;
35
+ /**
36
+ * The notification target for matchmaking events
37
+ */
38
+ readonly notificationTarget?: sns.ITopic;
39
+ constructor(scope: Construct, id: string, props: StandaloneMatchmakingConfigurationProps);
40
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StandaloneMatchmakingConfiguration = void 0;
5
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
+ const iam = require("aws-cdk-lib/aws-iam");
8
+ const sns = require("aws-cdk-lib/aws-sns");
9
+ const cdk = require("aws-cdk-lib");
10
+ const gamelift = require("aws-cdk-lib/aws-gamelift");
11
+ const matchmaking_configuration_1 = require("./matchmaking-configuration");
12
+ /**
13
+ * A FlexMatch matchmaker process does the work of building a game match.
14
+ * It manages the pool of matchmaking requests received, forms teams for a match, processes and selects players to find the best possible player groups, and initiates the process of placing and starting a game session for the match.
15
+ * This topic describes the key aspects of a matchmaker and how to configure one customized for your game.
16
+ *
17
+ * @see https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-configuration.html
18
+ *
19
+ * @resource AWS::GameLift::MatchmakingConfiguration
20
+ */
21
+ class StandaloneMatchmakingConfiguration extends matchmaking_configuration_1.MatchmakingConfigurationBase {
22
+ constructor(scope, id, props) {
23
+ super(scope, id, {
24
+ physicalName: props.matchmakingConfigurationName,
25
+ });
26
+ try {
27
+ jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_StandaloneMatchmakingConfigurationProps(props);
28
+ }
29
+ catch (error) {
30
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
31
+ Error.captureStackTrace(error, StandaloneMatchmakingConfiguration);
32
+ }
33
+ throw error;
34
+ }
35
+ if (props.matchmakingConfigurationName && !cdk.Token.isUnresolved(props.matchmakingConfigurationName)) {
36
+ if (props.matchmakingConfigurationName.length > 128) {
37
+ throw new Error(`Matchmaking configuration name can not be longer than 128 characters but has ${props.matchmakingConfigurationName.length} characters.`);
38
+ }
39
+ if (!/^[a-zA-Z0-9-\.]+$/.test(props.matchmakingConfigurationName)) {
40
+ throw new Error(`Matchmaking configuration name ${props.matchmakingConfigurationName} can contain only letters, numbers, hyphens, back slash or dot with no spaces.`);
41
+ }
42
+ }
43
+ if (props.description && !cdk.Token.isUnresolved(props.description)) {
44
+ if (props.description.length > 1024) {
45
+ throw new Error(`Matchmaking configuration description can not be longer than 1024 characters but has ${props.description.length} characters.`);
46
+ }
47
+ }
48
+ if (props.customEventData && props.customEventData.length > 256) {
49
+ throw new Error(`Matchmaking configuration custom event data can not be longer than 256 characters but has ${props.customEventData.length} characters.`);
50
+ }
51
+ if (props.acceptanceTimeout && props.acceptanceTimeout.toSeconds() > 600) {
52
+ throw new Error(`Matchmaking configuration acceptance timeout can not exceed 600 seconds, actual ${props.acceptanceTimeout.toSeconds()} seconds.`);
53
+ }
54
+ if (props.requestTimeout && props.requestTimeout.toSeconds() > 43200) {
55
+ throw new Error(`Matchmaking configuration request timeout can not exceed 43200 seconds, actual ${props.requestTimeout.toSeconds()} seconds.`);
56
+ }
57
+ //Notification target
58
+ this.notificationTarget = props.notificationTarget;
59
+ if (!this.notificationTarget) {
60
+ this.notificationTarget = new sns.Topic(this, 'Topic', {});
61
+ }
62
+ // Be sure to add the right TopicPolicy to enable gamelift publish action to given topic
63
+ const topicPolicy = new sns.TopicPolicy(this, 'TopicPolicy', {
64
+ topics: [this.notificationTarget],
65
+ });
66
+ topicPolicy.document.addStatements(new iam.PolicyStatement({
67
+ actions: ['sns:Publish'],
68
+ principals: [new iam.ServicePrincipal('gamelift.amazonaws.com')],
69
+ resources: [this.notificationTarget.topicArn],
70
+ }));
71
+ const resource = new gamelift.CfnMatchmakingConfiguration(this, 'Resource', {
72
+ name: this.physicalName,
73
+ acceptanceRequired: Boolean(props.requireAcceptance),
74
+ acceptanceTimeoutSeconds: props.acceptanceTimeout && props.acceptanceTimeout.toSeconds(),
75
+ customEventData: props.customEventData,
76
+ description: props.description,
77
+ flexMatchMode: 'STANDALONE',
78
+ notificationTarget: this.notificationTarget.topicArn,
79
+ requestTimeoutSeconds: props.requestTimeout && props.requestTimeout.toSeconds() || cdk.Duration.seconds(300).toSeconds(),
80
+ ruleSetName: props.ruleSet.matchmakingRuleSetName,
81
+ });
82
+ this.matchmakingConfigurationName = this.getResourceNameAttribute(resource.ref);
83
+ this.matchmakingConfigurationArn = cdk.Stack.of(scope).formatArn({
84
+ service: 'gamelift',
85
+ resource: 'matchmakingconfiguration',
86
+ resourceName: this.matchmakingConfigurationName,
87
+ arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
88
+ });
89
+ }
90
+ /**
91
+ * Import an existing matchmaking configuration from its name.
92
+ */
93
+ static fromStandaloneMatchmakingConfigurationName(scope, id, matchmakingConfigurationName) {
94
+ return this.fromMatchmakingConfigurationAttributes(scope, id, { matchmakingConfigurationName });
95
+ }
96
+ /**
97
+ * Import an existing matchmaking configuration from its ARN.
98
+ */
99
+ static fromStandaloneMatchmakingConfigurationArn(scope, id, matchmakingConfigurationArn) {
100
+ return this.fromMatchmakingConfigurationAttributes(scope, id, { matchmakingConfigurationArn });
101
+ }
102
+ }
103
+ exports.StandaloneMatchmakingConfiguration = StandaloneMatchmakingConfiguration;
104
+ _a = JSII_RTTI_SYMBOL_1;
105
+ StandaloneMatchmakingConfiguration[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.StandaloneMatchmakingConfiguration", version: "2.60.0-alpha.0" };
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhbG9uZS1tYXRjaG1ha2luZy1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhbG9uZS1tYXRjaG1ha2luZy1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbUNBQW1DO0FBRW5DLHFEQUFxRDtBQUNyRCwyRUFBcUk7QUFPckk7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGtDQUFtQyxTQUFRLHdEQUE0QjtJQTZCbEYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QztRQUN0RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsNEJBQTRCO1NBQ2pELENBQUMsQ0FBQzs7Ozs7OytDQWhDTSxrQ0FBa0M7Ozs7UUFrQzNDLElBQUksS0FBSyxDQUFDLDRCQUE0QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLEVBQUU7WUFDckcsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7YUFDMUo7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxLQUFLLENBQUMsNEJBQTRCLGdGQUFnRixDQUFDLENBQUM7YUFDdks7U0FDRjtRQUVELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNuRSxJQUFJLEtBQUssQ0FB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QUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQy9ELE9BQU8sRUFBRSxVQUFVO1lBQ25CLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyw0QkFBNEI7WUFDL0MsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CO1NBQzdDLENBQUMsQ0FBQztLQUNKO0lBOUZEOztTQUVLO0lBQ0wsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLDRCQUFvQztRQUNsSCxPQUFPLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0tBQ2pHO0lBRUQ7O1NBRUs7SUFDTCxNQUFNLENBQUMseUNBQXlDLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsMkJBQW1DO1FBQ2hILE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLENBQUM7S0FDaEc7O0FBZEgsZ0ZBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZ2FtZWxpZnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0JztcbmltcG9ydCB7IE1hdGNobWFraW5nQ29uZmlndXJhdGlvblByb3BzLCBNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25CYXNlLCBJTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tYXRjaG1ha2luZy1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldyBzdGFuZGFsb25lIG1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFsb25lTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uUHJvcHMgZXh0ZW5kcyBNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Qcm9wcyB7fVxuXG4vKipcbiAqIEEgRmxleE1hdGNoIG1hdGNobWFrZXIgcHJvY2VzcyBkb2VzIHRoZSB3b3JrIG9mIGJ1aWxkaW5nIGEgZ2FtZSBtYXRjaC5cbiAqIEl0IG1hbmFnZXMgdGhlIHBvb2wgb2YgbWF0Y2htYWtpbmcgcmVxdWVzdHMgcmVjZWl2ZWQsIGZvcm1zIHRlYW1zIGZvciBhIG1hdGNoLCBwcm9jZXNzZXMgYW5kIHNlbGVjdHMgcGxheWVycyB0byBmaW5kIHRoZSBiZXN0IHBvc3NpYmxlIHBsYXllciBncm91cHMsIGFuZCBpbml0aWF0ZXMgdGhlIHByb2Nlc3Mgb2YgcGxhY2luZyBhbmQgc3RhcnRpbmcgYSBnYW1lIHNlc3Npb24gZm9yIHRoZSBtYXRjaC5cbiAqIFRoaXMgdG9waWMgZGVzY3JpYmVzIHRoZSBrZXkgYXNwZWN0cyBvZiBhIG1hdGNobWFrZXIgYW5kIGhvdyB0byBjb25maWd1cmUgb25lIGN1c3RvbWl6ZWQgZm9yIHlvdXIgZ2FtZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZmxleG1hdGNoZ3VpZGUvbWF0Y2gtY29uZmlndXJhdGlvbi5odG1sXG4gKlxuICogQHJlc291cmNlIEFXUzo6R2FtZUxpZnQ6Ok1hdGNobWFraW5nQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhbG9uZU1hdGNobWFraW5nQ29uZmlndXJhdGlvbiBleHRlbmRzIE1hdGNobWFraW5nQ29uZmlndXJhdGlvbkJhc2Uge1xuXG4gIC8qKlxuICAgICAqIEltcG9ydCBhbiBleGlzdGluZyBtYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGZyb20gaXRzIG5hbWUuXG4gICAgICovXG4gIHN0YXRpYyBmcm9tU3RhbmRhbG9uZU1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogSU1hdGNobWFraW5nQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU1hdGNobWFraW5nQ29uZmlndXJhdGlvbkF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IG1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbiBmcm9tIGl0cyBBUk4uXG4gICAgICovXG4gIHN0YXRpYyBmcm9tU3RhbmRhbG9uZU1hdGNobWFraW5nQ29uZmlndXJhdGlvbkFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyk6IElNYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmZyb21NYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Bcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIG1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBub3RpZmljYXRpb24gdGFyZ2V0IGZvciBtYXRjaG1ha2luZyBldmVudHNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25UYXJnZXQ/OiBzbnMuSVRvcGljO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFsb25lTWF0Y2htYWtpbmdDb25maWd1cmF0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUpKSB7XG4gICAgICBpZiAocHJvcHMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIG5hbWUgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghL15bYS16QS1aMC05LVxcLl0rJC8udGVzdChwcm9wcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gbmFtZSAke3Byb3BzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgYmFjayBzbGFzaCBvciBkb3Qgd2l0aCBubyBzcGFjZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmRlc2NyaXB0aW9uKSkge1xuICAgICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaG1ha2luZyBjb25maWd1cmF0aW9uIGRlc2NyaXB0aW9uIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5kZXNjcmlwdGlvbi5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmN1c3RvbUV2ZW50RGF0YSAmJiBwcm9wcy5jdXN0b21FdmVudERhdGEubGVuZ3RoID4gMjU2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gY3VzdG9tIGV2ZW50IGRhdGEgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyNTYgY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuY3VzdG9tRXZlbnREYXRhLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYWNjZXB0YW5jZVRpbWVvdXQgJiYgcHJvcHMuYWNjZXB0YW5jZVRpbWVvdXQudG9TZWNvbmRzKCkgPiA2MDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWF0Y2htYWtpbmcgY29uZmlndXJhdGlvbiBhY2NlcHRhbmNlIHRpbWVvdXQgY2FuIG5vdCBleGNlZWQgNjAwIHNlY29uZHMsIGFjdHVhbCAke3Byb3BzLmFjY2VwdGFuY2VUaW1lb3V0LnRvU2Vjb25kcygpfSBzZWNvbmRzLmApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5yZXF1ZXN0VGltZW91dCAmJiBwcm9wcy5yZXF1ZXN0VGltZW91dC50b1NlY29uZHMoKSA+IDQzMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNobWFraW5nIGNvbmZpZ3VyYXRpb24gcmVxdWVzdCB0aW1lb3V0IGNhbiBub3QgZXhjZWVkIDQzMjAwIHNlY29uZHMsIGFjdHVhbCAke3Byb3BzLnJlcXVlc3RUaW1lb3V0LnRvU2Vjb25kcygpfSBzZWNvbmRzLmApO1xuICAgIH1cblxuICAgIC8vTm90aWZpY2F0aW9uIHRhcmdldFxuICAgIHRoaXMubm90aWZpY2F0aW9uVGFyZ2V0ID0gcHJvcHMubm90aWZpY2F0aW9uVGFyZ2V0O1xuICAgIGlmICghdGhpcy5ub3RpZmljYXRpb25UYXJnZXQpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uVGFyZ2V0ID0gbmV3IHNucy5Ub3BpYyh0aGlzLCAnVG9waWMnLCB7fSk7XG4gICAgfVxuICAgIC8vIEJlIHN1cmUgdG8gYWRkIHRoZSByaWdodCBUb3BpY1BvbGljeSB0byBlbmFibGUgZ2FtZWxpZnQgcHVibGlzaCBhY3Rpb24gdG8gZ2l2ZW4gdG9waWNcbiAgICBjb25zdCB0b3BpY1BvbGljeSA9IG5ldyBzbnMuVG9waWNQb2xpY3kodGhpcywgJ1RvcGljUG9saWN5Jywge1xuICAgICAgdG9waWNzOiBbdGhpcy5ub3RpZmljYXRpb25UYXJnZXRdLFxuICAgIH0pO1xuICAgIHRvcGljUG9saWN5LmRvY3VtZW50LmFkZFN0YXRlbWVudHMobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzbnM6UHVibGlzaCddLFxuICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZ2FtZWxpZnQuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgIHJlc291cmNlczogW3RoaXMubm90aWZpY2F0aW9uVGFyZ2V0LnRvcGljQXJuXSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBnYW1lbGlmdC5DZm5NYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBhY2NlcHRhbmNlUmVxdWlyZWQ6IEJvb2xlYW4ocHJvcHMucmVxdWlyZUFjY2VwdGFuY2UpLFxuICAgICAgYWNjZXB0YW5jZVRpbWVvdXRTZWNvbmRzOiBwcm9wcy5hY2NlcHRhbmNlVGltZW91dCAmJiBwcm9wcy5hY2NlcHRhbmNlVGltZW91dC50b1NlY29uZHMoKSxcbiAgICAgIGN1c3RvbUV2ZW50RGF0YTogcHJvcHMuY3VzdG9tRXZlbnREYXRhLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZmxleE1hdGNoTW9kZTogJ1NUQU5EQUxPTkUnLFxuICAgICAgbm90aWZpY2F0aW9uVGFyZ2V0OiB0aGlzLm5vdGlmaWNhdGlvblRhcmdldC50b3BpY0FybixcbiAgICAgIHJlcXVlc3RUaW1lb3V0U2Vjb25kczogcHJvcHMucmVxdWVzdFRpbWVvdXQgJiYgcHJvcHMucmVxdWVzdFRpbWVvdXQudG9TZWNvbmRzKCkgfHwgY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKS50b1NlY29uZHMoKSxcbiAgICAgIHJ1bGVTZXROYW1lOiBwcm9wcy5ydWxlU2V0Lm1hdGNobWFraW5nUnVsZVNldE5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1hdGNobWFraW5nQ29uZmlndXJhdGlvbk5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShyZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMubWF0Y2htYWtpbmdDb25maWd1cmF0aW9uQXJuID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnbWF0Y2htYWtpbmdjb25maWd1cmF0aW9uJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5tYXRjaG1ha2luZ0NvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-gamelift-alpha",
3
- "version": "2.58.1-alpha.0",
3
+ "version": "2.60.0-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for AWS::GameLift",
6
6
  "main": "lib/index.js",
@@ -81,20 +81,20 @@
81
81
  },
82
82
  "license": "Apache-2.0",
83
83
  "devDependencies": {
84
- "@aws-cdk/cdk-build-tools": "2.58.1",
85
- "@aws-cdk/integ-runner": "2.58.1",
86
- "@aws-cdk/cfn2ts": "2.58.1",
87
- "@aws-cdk/pkglint": "2.58.1",
84
+ "@aws-cdk/cdk-build-tools": "2.60.0",
85
+ "@aws-cdk/integ-runner": "2.60.0",
86
+ "@aws-cdk/cfn2ts": "2.60.0",
87
+ "@aws-cdk/pkglint": "2.60.0",
88
88
  "@types/jest": "^27.5.2",
89
89
  "jest": "^27.5.1",
90
- "aws-cdk-lib": "2.58.1",
90
+ "aws-cdk-lib": "2.60.0",
91
91
  "constructs": "^10.0.0",
92
- "@aws-cdk/integ-tests-alpha": "2.58.1-alpha.0"
92
+ "@aws-cdk/integ-tests-alpha": "2.60.0-alpha.0"
93
93
  },
94
94
  "dependencies": {},
95
95
  "homepage": "https://github.com/aws/aws-cdk",
96
96
  "peerDependencies": {
97
- "aws-cdk-lib": "^2.58.1",
97
+ "aws-cdk-lib": "^2.60.0",
98
98
  "constructs": "^10.0.0"
99
99
  },
100
100
  "engines": {