@ludeo/cloud-common 1.2.84 → 1.2.86-ygarbage1

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.
Files changed (151) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/dist/v4/events/allocate-game-resource-request.d.ts +3 -3
  3. package/dist/v4/events/allocate-game-resource-request.js +2 -2
  4. package/dist/v4/events/allocate-game-resource-request.js.map +1 -1
  5. package/dist/v4/events/allocate-ludeo-resource-request.d.ts +4 -4
  6. package/dist/v4/events/allocate-ludeo-resource-request.js +1 -1
  7. package/dist/v4/events/allocate-ludeo-resource-request.js.map +1 -1
  8. package/dist/v4/events/aws-reactivate-stream-session-task.d.ts +2 -2
  9. package/dist/v4/events/aws-reactivate-stream-session-task.js +2 -2
  10. package/dist/v4/events/aws-reactivate-stream-session-task.js.map +1 -1
  11. package/dist/v4/events/aws-stream-session-active.d.ts +2 -2
  12. package/dist/v4/events/aws-stream-session-active.js +2 -2
  13. package/dist/v4/events/aws-stream-session-active.js.map +1 -1
  14. package/dist/v4/events/aws-stream-session-reactivation-started.d.ts +2 -2
  15. package/dist/v4/events/aws-stream-session-reactivation-started.js +2 -2
  16. package/dist/v4/events/aws-stream-session-reactivation-started.js.map +1 -1
  17. package/dist/v4/events/build-created.d.ts +2 -1
  18. package/dist/v4/events/build-created.js +4 -4
  19. package/dist/v4/events/build-created.js.map +1 -1
  20. package/dist/v4/events/build-creation-failed.d.ts +12 -0
  21. package/dist/v4/events/build-creation-failed.js +46 -0
  22. package/dist/v4/events/build-creation-failed.js.map +1 -0
  23. package/dist/v4/events/build-uploaded.d.ts +12 -0
  24. package/dist/v4/events/build-uploaded.js +45 -0
  25. package/dist/v4/events/build-uploaded.js.map +1 -0
  26. package/dist/v4/events/create-build.d.ts +15 -0
  27. package/dist/v4/events/create-build.js +51 -0
  28. package/dist/v4/events/create-build.js.map +1 -0
  29. package/dist/v4/events/create-game-resource-request.d.ts +2 -2
  30. package/dist/v4/events/create-game-resource-request.js +1 -1
  31. package/dist/v4/events/create-game-resource-request.js.map +1 -1
  32. package/dist/v4/events/create-machine-resource-batch-request.d.ts +2 -2
  33. package/dist/v4/events/create-machine-resource-batch-request.js +1 -1
  34. package/dist/v4/events/create-machine-resource-batch-request.js.map +1 -1
  35. package/dist/v4/events/create-machine-resource-request.d.ts +2 -2
  36. package/dist/v4/events/create-machine-resource-request.js +1 -1
  37. package/dist/v4/events/create-machine-resource-request.js.map +1 -1
  38. package/dist/v4/events/game-allocated-response.d.ts +4 -4
  39. package/dist/v4/events/game-allocated-response.js +1 -1
  40. package/dist/v4/events/game-allocated-response.js.map +1 -1
  41. package/dist/v4/events/game-resource-ready-for-creation.d.ts +4 -4
  42. package/dist/v4/events/game-resource-ready-for-creation.js +1 -1
  43. package/dist/v4/events/game-resource-ready-for-creation.js.map +1 -1
  44. package/dist/v4/events/game-resource-status-changed.d.ts +2 -2
  45. package/dist/v4/events/game-resource-status-changed.js +2 -2
  46. package/dist/v4/events/game-resource-status-changed.js.map +1 -1
  47. package/dist/v4/events/index.d.ts +4 -0
  48. package/dist/v4/events/index.js +4 -0
  49. package/dist/v4/events/index.js.map +1 -1
  50. package/dist/v4/events/load-ludeo-resource.d.ts +4 -4
  51. package/dist/v4/events/load-ludeo-resource.js +1 -1
  52. package/dist/v4/events/load-ludeo-resource.js.map +1 -1
  53. package/dist/v4/events/machine-allocated-response.d.ts +2 -2
  54. package/dist/v4/events/machine-allocated-response.js +1 -1
  55. package/dist/v4/events/machine-allocated-response.js.map +1 -1
  56. package/dist/v4/events/machine-pool-resizing-task.d.ts +2 -2
  57. package/dist/v4/events/machine-pool-resizing-task.js +1 -1
  58. package/dist/v4/events/machine-pool-resizing-task.js.map +1 -1
  59. package/dist/v4/events/machine-resource-batch-creation-failed-response.d.ts +2 -2
  60. package/dist/v4/events/machine-resource-batch-creation-failed-response.js +1 -1
  61. package/dist/v4/events/machine-resource-batch-creation-failed-response.js.map +1 -1
  62. package/dist/v4/events/machine-resource-batch-termination-failed-response.d.ts +2 -2
  63. package/dist/v4/events/machine-resource-batch-termination-failed-response.js +1 -1
  64. package/dist/v4/events/machine-resource-batch-termination-failed-response.js.map +1 -1
  65. package/dist/v4/events/machine-resource-created-response.d.ts +3 -1
  66. package/dist/v4/events/machine-resource-created-response.js +4 -0
  67. package/dist/v4/events/machine-resource-created-response.js.map +1 -1
  68. package/dist/v4/events/machine-resource-termination-failed-response.d.ts +16 -0
  69. package/dist/v4/events/machine-resource-termination-failed-response.js +58 -0
  70. package/dist/v4/events/machine-resource-termination-failed-response.js.map +1 -0
  71. package/dist/v4/events/monitor-game-resource-task.js +1 -1
  72. package/dist/v4/events/monitor-game-resource-task.js.map +1 -1
  73. package/dist/v4/events/pool-status.js +1 -1
  74. package/dist/v4/events/pool-status.js.map +1 -1
  75. package/dist/v4/events/terminate-game-resource-request.d.ts +3 -3
  76. package/dist/v4/events/terminate-game-resource-request.js +2 -2
  77. package/dist/v4/events/terminate-game-resource-request.js.map +1 -1
  78. package/dist/v4/events/terminate-machine-resource-batch-request.d.ts +2 -2
  79. package/dist/v4/events/terminate-machine-resource-batch-request.js +1 -1
  80. package/dist/v4/events/terminate-machine-resource-batch-request.js.map +1 -1
  81. package/dist/v4/events/terminate-machine-resource-request.d.ts +4 -2
  82. package/dist/v4/events/terminate-machine-resource-request.js +5 -1
  83. package/dist/v4/events/terminate-machine-resource-request.js.map +1 -1
  84. package/dist/v4/events/update-ludeo-resource-status-request.d.ts +4 -4
  85. package/dist/v4/events/update-ludeo-resource-status-request.js +1 -1
  86. package/dist/v4/events/update-ludeo-resource-status-request.js.map +1 -1
  87. package/dist/v4/types/build.d.ts +3 -3
  88. package/dist/v4/types/build.js +30 -0
  89. package/dist/v4/types/build.js.map +1 -1
  90. package/dist/v4/types/cloud/index.d.ts +1 -0
  91. package/dist/v4/types/cloud/index.js +1 -0
  92. package/dist/v4/types/cloud/index.js.map +1 -1
  93. package/dist/v4/types/cloud/machine-provider-settings.d.ts +2 -0
  94. package/dist/v4/types/cloud/machine-provider-settings.js +3 -0
  95. package/dist/v4/types/cloud/machine-provider-settings.js.map +1 -0
  96. package/dist/v4/types/cloud/mock/index.d.ts +1 -0
  97. package/dist/v4/types/cloud/mock/index.js +1 -0
  98. package/dist/v4/types/cloud/mock/index.js.map +1 -1
  99. package/dist/v4/types/cloud/mock/machine-provider-settings.d.ts +3 -0
  100. package/dist/v4/types/cloud/mock/machine-provider-settings.js +21 -0
  101. package/dist/v4/types/cloud/mock/machine-provider-settings.js.map +1 -0
  102. package/dist/v4/types/cloud/provider-settings.d.ts +2 -0
  103. package/dist/v4/types/cloud/provider-settings.js +11 -0
  104. package/dist/v4/types/cloud/provider-settings.js.map +1 -1
  105. package/dist/v4/types/cloud/resource-provider-settings.d.ts +2 -0
  106. package/dist/v4/types/cloud/resource-provider-settings.js +11 -0
  107. package/dist/v4/types/cloud/resource-provider-settings.js.map +1 -1
  108. package/dist/v4/types/pools/configuration/base.js +1 -1
  109. package/dist/v4/types/pools/configuration/base.js.map +1 -1
  110. package/dist/v4/types/pools/resource/game.d.ts +3 -3
  111. package/dist/v4/types/pools/resource/game.js +2 -2
  112. package/dist/v4/types/pools/resource/game.js.map +1 -1
  113. package/package.json +1 -1
  114. package/src/v4/events/allocate-game-resource-request.ts +10 -7
  115. package/src/v4/events/allocate-ludeo-resource-request.ts +9 -5
  116. package/src/v4/events/aws-reactivate-stream-session-task.ts +6 -3
  117. package/src/v4/events/aws-stream-session-active.ts +7 -4
  118. package/src/v4/events/aws-stream-session-reactivation-started.ts +6 -3
  119. package/src/v4/events/build-created.ts +3 -3
  120. package/src/v4/events/build-creation-failed.ts +29 -0
  121. package/src/v4/events/build-uploaded.ts +28 -0
  122. package/src/v4/events/create-build.ts +33 -0
  123. package/src/v4/events/create-game-resource-request.ts +6 -4
  124. package/src/v4/events/create-machine-resource-batch-request.ts +6 -4
  125. package/src/v4/events/create-machine-resource-request.ts +6 -4
  126. package/src/v4/events/game-allocated-response.ts +9 -5
  127. package/src/v4/events/game-resource-ready-for-creation.ts +14 -6
  128. package/src/v4/events/game-resource-status-changed.ts +8 -4
  129. package/src/v4/events/index.ts +4 -0
  130. package/src/v4/events/load-ludeo-resource.ts +9 -5
  131. package/src/v4/events/machine-allocated-response.ts +6 -4
  132. package/src/v4/events/machine-pool-resizing-task.ts +6 -4
  133. package/src/v4/events/machine-resource-batch-creation-failed-response.ts +6 -4
  134. package/src/v4/events/machine-resource-batch-termination-failed-response.ts +6 -4
  135. package/src/v4/events/machine-resource-created-response.ts +8 -2
  136. package/src/v4/events/machine-resource-termination-failed-response.ts +47 -0
  137. package/src/v4/events/monitor-game-resource-task.ts +2 -2
  138. package/src/v4/events/pool-status.ts +2 -2
  139. package/src/v4/events/terminate-game-resource-request.ts +10 -6
  140. package/src/v4/events/terminate-machine-resource-batch-request.ts +6 -3
  141. package/src/v4/events/terminate-machine-resource-request.ts +12 -5
  142. package/src/v4/events/update-ludeo-resource-status-request.ts +9 -5
  143. package/src/v4/types/build.ts +15 -3
  144. package/src/v4/types/cloud/index.ts +1 -0
  145. package/src/v4/types/cloud/machine-provider-settings.ts +3 -0
  146. package/src/v4/types/cloud/mock/index.ts +1 -0
  147. package/src/v4/types/cloud/mock/machine-provider-settings.ts +6 -0
  148. package/src/v4/types/cloud/provider-settings.ts +13 -0
  149. package/src/v4/types/cloud/resource-provider-settings.ts +13 -0
  150. package/src/v4/types/pools/configuration/base.ts +2 -2
  151. package/src/v4/types/pools/resource/game.ts +7 -5
@@ -1,16 +1,20 @@
1
1
  import { CloudResourceContext } from "../contexts";
2
2
  import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import {
4
- AWSProviderSettings,
5
4
  CloudProvider,
6
5
  CloudProviderSettings,
6
+ CloudResourceProviderSettings,
7
7
  GameResourceSettings,
8
+ getProviderSettingsType,
8
9
  } from "../types";
9
10
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
10
11
  import { IsEnum, IsUUID, IsOptional } from "class-validator";
11
12
  import { IsUUIDOrEmpty } from "../../decorators/is-uuid-or-empty.decorator";
12
13
 
13
- export class GameAllocatedResponsePayload {
14
+ export class GameAllocatedResponsePayload<
15
+ T extends CloudProviderSettings = CloudProviderSettings,
16
+ K extends CloudResourceProviderSettings = CloudResourceProviderSettings
17
+ > {
14
18
  @IsUUID()
15
19
  gameResourceId: string;
16
20
 
@@ -27,14 +31,14 @@ export class GameAllocatedResponsePayload {
27
31
  @IsUUIDOrEmpty()
28
32
  ludeoId?: string;
29
33
 
30
- @ValidateNestedType(() => AWSProviderSettings)
31
- providerSettings: CloudProviderSettings;
34
+ @ValidateNestedType(getProviderSettingsType)
35
+ providerSettings: T;
32
36
 
33
37
  @IsUUID()
34
38
  gameId: string;
35
39
 
36
40
  @ValidateNestedType(() => GameResourceSettings)
37
- gameResourceSettings: GameResourceSettings;
41
+ gameResourceSettings: GameResourceSettings<K>;
38
42
 
39
43
  @IsEnum(CloudProvider)
40
44
  cloudProvider: CloudProvider;
@@ -1,15 +1,23 @@
1
1
  import { LudeoEvent } from "../../infra";
2
2
  import { ValidateNestedType } from "../../decorators";
3
3
  import { CloudResourceContext } from "../contexts";
4
- import { GameResourceSettings } from "../types";
4
+ import {
5
+ CloudProviderSettings,
6
+ CloudResourceProviderSettings,
7
+ GameResourceSettings,
8
+ getResourceProviderSettingsType,
9
+ } from "../types";
5
10
  import { CreateGameResourceRequestPayload } from "./create-game-resource-request";
6
11
 
7
- export class GameResourceReadyForCreationPayload {
8
- @ValidateNestedType(() => CreateGameResourceRequestPayload)
9
- creationPayload: CreateGameResourceRequestPayload;
12
+ export class GameResourceReadyForCreationPayload<
13
+ T extends CloudProviderSettings = CloudProviderSettings,
14
+ K extends CloudResourceProviderSettings = CloudResourceProviderSettings
15
+ > {
16
+ @ValidateNestedType(() => CreateGameResourceRequestPayload<T>)
17
+ creationPayload: CreateGameResourceRequestPayload<T>;
10
18
 
11
- @ValidateNestedType(() => GameResourceSettings)
12
- gameResourceSettings: GameResourceSettings;
19
+ @ValidateNestedType(getResourceProviderSettingsType)
20
+ gameResourceSettings: GameResourceSettings<K>;
13
21
  }
14
22
 
15
23
  export class GameResourceReadyForCreation extends LudeoEvent {
@@ -1,7 +1,11 @@
1
1
  import { IsOptional, IsString, IsUUID } from "class-validator";
2
2
  import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import { CloudResourceContext } from "../contexts/cloud-resource-context";
4
- import { AWSResourceProviderSettings, CloudResourceStatus } from "../types";
4
+ import {
5
+ CloudResourceProviderSettings,
6
+ CloudResourceStatus,
7
+ getResourceProviderSettingsType,
8
+ } from "../types";
5
9
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
10
 
7
11
  export class GameResourceStatusChangedEventPayload {
@@ -11,8 +15,8 @@ export class GameResourceStatusChangedEventPayload {
11
15
  @IsUUID()
12
16
  gamePoolId: string;
13
17
 
14
- @ValidateNestedType(() => AWSResourceProviderSettings)
15
- providerSettings: AWSResourceProviderSettings;
18
+ @ValidateNestedType(getResourceProviderSettingsType)
19
+ providerSettings: CloudResourceProviderSettings;
16
20
 
17
21
  @IsString()
18
22
  status: CloudResourceStatus;
@@ -32,7 +36,7 @@ export class GameResourceStatusChangedEvent extends LudeoEvent {
32
36
 
33
37
  constructor(
34
38
  payload: GameResourceStatusChangedEventPayload,
35
- context: CloudResourceContext,
39
+ context: CloudResourceContext
36
40
  ) {
37
41
  super(GameResourceStatusChangedEvent.EVENT_NAME);
38
42
  this.payload = payload;
@@ -116,5 +116,9 @@ export * from "./monitor-aws-artifacts-status-task";
116
116
  export * from "./build-artifacts-ready-for-creation";
117
117
  export * from "./token-activated";
118
118
  export * from "./cloud-session-sent-to-client";
119
+ export * from "./build-uploaded";
120
+ export * from "./create-build";
121
+ export * from "./build-creation-failed";
119
122
  export * from "./pool-updated.event";
120
123
  export * from "./pool-created.event";
124
+ export * from "./machine-resource-termination-failed-response";
@@ -3,14 +3,18 @@ import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
4
4
  import { CloudResourceContext } from "../contexts";
5
5
  import {
6
- AWSProviderSettings,
7
6
  CloudProvider,
8
7
  CloudProviderSettings,
8
+ CloudResourceProviderSettings,
9
9
  GameResourceSettings,
10
+ getProviderSettingsType,
10
11
  } from "../types";
11
12
  import { IsUUIDOrEmpty } from "../../decorators/is-uuid-or-empty.decorator";
12
13
 
13
- export class LoadLudeoResourcePayload {
14
+ export class LoadLudeoResourcePayload<
15
+ T extends CloudProviderSettings = CloudProviderSettings,
16
+ K extends CloudResourceProviderSettings = CloudResourceProviderSettings
17
+ > {
14
18
  @IsUUID()
15
19
  gameResourceId: string;
16
20
 
@@ -34,10 +38,10 @@ export class LoadLudeoResourcePayload {
34
38
  ludeoPoolId: string;
35
39
 
36
40
  @ValidateNestedType(() => GameResourceSettings)
37
- gameResourceSettings: GameResourceSettings;
41
+ gameResourceSettings: GameResourceSettings<K>;
38
42
 
39
- @ValidateNestedType(() => AWSProviderSettings)
40
- providerSettings: CloudProviderSettings;
43
+ @ValidateNestedType(getProviderSettingsType)
44
+ providerSettings: T;
41
45
 
42
46
  @IsEnum(CloudProvider)
43
47
  cloudProvider: CloudProvider;
@@ -4,12 +4,14 @@ import { CloudResourceContext } from "../contexts";
4
4
  import { LudeoEvent } from "../../infra/ludeo-event";
5
5
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
6
  import {
7
- AWSProviderSettings,
8
7
  CloudProviderSettings,
9
8
  CloudProvider,
9
+ getProviderSettingsType,
10
10
  } from "../types";
11
11
 
12
- export class MachineAllocatedResponsePayload {
12
+ export class MachineAllocatedResponsePayload<
13
+ T extends CloudProviderSettings = CloudProviderSettings
14
+ > {
13
15
  @IsUUID()
14
16
  machineResourceId: string;
15
17
 
@@ -22,8 +24,8 @@ export class MachineAllocatedResponsePayload {
22
24
  @IsUUID()
23
25
  gamePoolId: string;
24
26
 
25
- @ValidateNestedType(() => AWSProviderSettings)
26
- providerSettings: CloudProviderSettings;
27
+ @ValidateNestedType(getProviderSettingsType)
28
+ providerSettings: T;
27
29
 
28
30
  @IsEnum(CloudProvider)
29
31
  cloudProvider: CloudProvider;
@@ -2,14 +2,16 @@ import { IsEnum, IsUUID } from "class-validator";
2
2
  import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import { ValidateNestedType } from "../../decorators";
4
4
  import {
5
- AWSProviderSettings,
6
5
  CloudProvider,
7
6
  CloudProviderSettings,
7
+ getProviderSettingsType,
8
8
  } from "../types";
9
9
 
10
- export class MachinePoolResizingTaskEventPayload {
11
- @ValidateNestedType(() => AWSProviderSettings)
12
- providerSettings: CloudProviderSettings;
10
+ export class MachinePoolResizingTaskEventPayload<
11
+ T extends CloudProviderSettings = CloudProviderSettings
12
+ > {
13
+ @ValidateNestedType(getProviderSettingsType)
14
+ providerSettings: T;
13
15
 
14
16
  @IsEnum(CloudProvider)
15
17
  cloudProvider: CloudProvider;
@@ -4,12 +4,14 @@ import { CloudResourceContext } from "../contexts";
4
4
  import { LudeoEvent } from "../../infra/ludeo-event";
5
5
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
6
  import {
7
- AWSProviderSettings,
8
7
  CloudProvider,
9
8
  CloudProviderSettings,
9
+ getProviderSettingsType,
10
10
  } from "../types";
11
11
 
12
- export class MachineResourceBatchCreationFailedResponsePayload {
12
+ export class MachineResourceBatchCreationFailedResponsePayload<
13
+ T extends CloudProviderSettings = CloudProviderSettings
14
+ > {
13
15
  @IsArray()
14
16
  machineResourceIds: string[];
15
17
 
@@ -19,8 +21,8 @@ export class MachineResourceBatchCreationFailedResponsePayload {
19
21
  @IsEnum(CloudProvider)
20
22
  cloudProvider: CloudProvider;
21
23
 
22
- @ValidateNestedType(() => AWSProviderSettings)
23
- cloudProviderSettings: CloudProviderSettings;
24
+ @ValidateNestedType(getProviderSettingsType)
25
+ cloudProviderSettings: T;
24
26
 
25
27
  @IsString()
26
28
  errorMessage: string;
@@ -4,12 +4,14 @@ import { CloudResourceContext } from "../contexts";
4
4
  import { LudeoEvent } from "../../infra/ludeo-event";
5
5
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
6
  import {
7
- AWSProviderSettings,
8
7
  CloudProvider,
9
8
  CloudProviderSettings,
9
+ getProviderSettingsType,
10
10
  } from "../types";
11
11
 
12
- export class MachineResourceBatchTerminationFailedResponsePayload {
12
+ export class MachineResourceBatchTerminationFailedResponsePayload<
13
+ T extends CloudProviderSettings = CloudProviderSettings
14
+ > {
13
15
  @IsArray()
14
16
  machineResourceIds: string[];
15
17
 
@@ -19,8 +21,8 @@ export class MachineResourceBatchTerminationFailedResponsePayload {
19
21
  @IsEnum(CloudProvider)
20
22
  cloudProvider: CloudProvider;
21
23
 
22
- @ValidateNestedType(() => AWSProviderSettings)
23
- cloudProviderSettings: CloudProviderSettings;
24
+ @ValidateNestedType(getProviderSettingsType)
25
+ cloudProviderSettings: T;
24
26
 
25
27
  @IsString()
26
28
  errorMessage: string;
@@ -1,15 +1,21 @@
1
- import { IsUUID } from "class-validator";
1
+ import { IsOptional, IsUUID } from "class-validator";
2
2
 
3
3
  import { CloudResourceContext } from "../contexts";
4
4
  import { LudeoEvent } from "../../infra/ludeo-event";
5
5
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
+ import { MachineProviderSettings } from "../types/cloud/machine-provider-settings";
6
7
 
7
- export class MachineResourceCreatedResponsePayload {
8
+ export class MachineResourceCreatedResponsePayload<
9
+ T extends MachineProviderSettings = MachineProviderSettings
10
+ > {
8
11
  @IsUUID()
9
12
  machineResourceId: string;
10
13
 
11
14
  @IsUUID()
12
15
  machinePoolId: string;
16
+
17
+ @IsOptional()
18
+ machineProviderSettings?: T;
13
19
  }
14
20
 
15
21
  export class MachineResourceCreatedResponse extends LudeoEvent {
@@ -0,0 +1,47 @@
1
+ import { IsArray, IsEnum, IsString, IsUUID } from "class-validator";
2
+
3
+ import { CloudResourceContext } from "../contexts";
4
+ import { LudeoEvent } from "../../infra/ludeo-event";
5
+ import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
+ import {
7
+ AWSProviderSettings,
8
+ CloudProvider,
9
+ CloudProviderSettings,
10
+ } from "../types";
11
+
12
+ export class MachineResourceTerminationFailedResponsePayload {
13
+ @IsUUID()
14
+ machineResourceId: string;
15
+
16
+ @IsUUID()
17
+ machinePoolId: string;
18
+
19
+ @IsEnum(CloudProvider)
20
+ cloudProvider: CloudProvider;
21
+
22
+ @ValidateNestedType(() => AWSProviderSettings)
23
+ cloudProviderSettings: CloudProviderSettings;
24
+
25
+ @IsString()
26
+ errorMessage: string;
27
+ }
28
+
29
+ export class MachineResourceTerminationFailedResponse extends LudeoEvent {
30
+ static readonly EVENT_NAME =
31
+ "cloud-pools.machine-resource-termination-failed-response";
32
+
33
+ constructor(
34
+ payload: MachineResourceTerminationFailedResponsePayload,
35
+ context: CloudResourceContext
36
+ ) {
37
+ super(MachineResourceTerminationFailedResponse.EVENT_NAME);
38
+ this.payload = payload;
39
+ this.context = context;
40
+ }
41
+
42
+ @ValidateNestedType(() => CloudResourceContext)
43
+ context: CloudResourceContext;
44
+
45
+ @ValidateNestedType(() => MachineResourceTerminationFailedResponsePayload)
46
+ payload: MachineResourceTerminationFailedResponsePayload;
47
+ }
@@ -1,9 +1,9 @@
1
1
  import { IsEnum, IsUUID } from "class-validator";
2
2
  import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import {
4
- AWSResourceProviderSettings,
5
4
  CloudProvider,
6
5
  CloudResourceProviderSettings,
6
+ getResourceProviderSettingsType,
7
7
  } from "../types";
8
8
  import { ValidateNestedType } from "../../decorators";
9
9
 
@@ -14,7 +14,7 @@ export class MonitorGameResourceTaskEventPayload {
14
14
  @IsUUID()
15
15
  gamePoolId: string;
16
16
 
17
- @ValidateNestedType(() => AWSResourceProviderSettings)
17
+ @ValidateNestedType(getResourceProviderSettingsType)
18
18
  providerSettings: CloudResourceProviderSettings;
19
19
 
20
20
  @IsEnum(CloudProvider)
@@ -6,9 +6,9 @@ import {
6
6
  BasePoolAttributes,
7
7
  LudeoPoolAttributes,
8
8
  MachinePoolAttributes,
9
- AWSProviderSettings,
10
9
  CloudProviderSettings,
11
10
  GamePoolAttributes,
11
+ getProviderSettingsType,
12
12
  } from "../types";
13
13
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
14
14
  import { IsUUIDOrEmpty } from "../../decorators/is-uuid-or-empty.decorator";
@@ -44,7 +44,7 @@ export class PoolStatusEventGamePool extends PoolStatusEventBasePool<GamePoolAtt
44
44
  export class PoolStatusEventMachinePool extends PoolStatusEventBasePool<MachinePoolAttributes> {
45
45
  games: PoolStatusEventGamePool[];
46
46
 
47
- @ValidateNestedType(() => AWSProviderSettings)
47
+ @ValidateNestedType(getProviderSettingsType)
48
48
  providerSettings: Partial<CloudProviderSettings>;
49
49
  }
50
50
 
@@ -14,14 +14,18 @@ import {
14
14
  import { LudeoEvent } from "../../infra/ludeo-event";
15
15
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
16
16
  import {
17
- AWSProviderSettings,
18
17
  CloudProviderSettings,
19
18
  AWSResourceProviderSettings,
20
19
  CloudResourceProviderSettings,
21
20
  CloudProvider,
21
+ getProviderSettingsType,
22
+ getResourceProviderSettingsType,
22
23
  } from "../types";
23
24
 
24
- export class TerminateGameResourceRequestPayload {
25
+ export class TerminateGameResourceRequestPayload<
26
+ T extends CloudProviderSettings = CloudProviderSettings,
27
+ K extends CloudResourceProviderSettings = CloudResourceProviderSettings
28
+ > {
25
29
  @IsUUID()
26
30
  gameResourceId: string;
27
31
 
@@ -35,11 +39,11 @@ export class TerminateGameResourceRequestPayload {
35
39
  @IsEnum(CloudProvider)
36
40
  cloudProvider: CloudProvider;
37
41
 
38
- @ValidateNestedType(() => AWSProviderSettings)
39
- providerSettings: CloudProviderSettings;
42
+ @ValidateNestedType(getProviderSettingsType)
43
+ providerSettings: T;
40
44
 
41
- @ValidateNestedType(() => AWSResourceProviderSettings)
42
- resourceProviderSettings: CloudResourceProviderSettings;
45
+ @ValidateNestedType(getResourceProviderSettingsType)
46
+ resourceProviderSettings: K;
43
47
 
44
48
  @IsBoolean()
45
49
  shouldDeallocateMachineResource: boolean;
@@ -7,9 +7,12 @@ import {
7
7
  AWSProviderSettings,
8
8
  CloudProvider,
9
9
  CloudProviderSettings,
10
+ getProviderSettingsType,
10
11
  } from "../types";
11
12
 
12
- export class TerminateMachineResourceBatchRequestPayload {
13
+ export class TerminateMachineResourceBatchRequestPayload<
14
+ T extends CloudProviderSettings = CloudProviderSettings
15
+ > {
13
16
  @IsArray()
14
17
  machineResourceIds: string[];
15
18
 
@@ -19,8 +22,8 @@ export class TerminateMachineResourceBatchRequestPayload {
19
22
  @IsEnum(CloudProvider)
20
23
  cloudProvider: CloudProvider;
21
24
 
22
- @ValidateNestedType(() => AWSProviderSettings)
23
- cloudProviderSettings: CloudProviderSettings;
25
+ @ValidateNestedType(getProviderSettingsType)
26
+ cloudProviderSettings: T;
24
27
  }
25
28
 
26
29
  export class TerminateMachineResourceBatchRequest extends LudeoEvent {
@@ -1,15 +1,19 @@
1
- import { IsEnum, IsUUID } from "class-validator";
1
+ import { IsEnum, IsOptional, IsUUID } from "class-validator";
2
2
 
3
3
  import { CloudResourceContext } from "../contexts";
4
4
  import { LudeoEvent } from "../../infra/ludeo-event";
5
5
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
6
6
  import {
7
- AWSProviderSettings,
8
7
  CloudProvider,
9
8
  CloudProviderSettings,
9
+ getProviderSettingsType,
10
10
  } from "../types";
11
+ import { MachineProviderSettings } from "../types/cloud/machine-provider-settings";
11
12
 
12
- export class TerminateMachineResourceRequestPayload {
13
+ export class TerminateMachineResourceRequestPayload<
14
+ T extends CloudProviderSettings = CloudProviderSettings,
15
+ K extends MachineProviderSettings = MachineProviderSettings
16
+ > {
13
17
  @IsUUID()
14
18
  machineResourceId: string;
15
19
 
@@ -19,8 +23,11 @@ export class TerminateMachineResourceRequestPayload {
19
23
  @IsEnum(CloudProvider)
20
24
  cloudProvider: CloudProvider;
21
25
 
22
- @ValidateNestedType(() => AWSProviderSettings)
23
- cloudProviderSettings: CloudProviderSettings;
26
+ @ValidateNestedType(getProviderSettingsType)
27
+ cloudProviderSettings: T;
28
+
29
+ @IsOptional()
30
+ providerSettings?: K;
24
31
  }
25
32
 
26
33
  export class TerminateMachineResourceRequest extends LudeoEvent {
@@ -2,15 +2,19 @@ import { IsEnum, IsOptional, IsString, IsUUID } from "class-validator";
2
2
  import { LudeoEvent } from "../../infra/ludeo-event";
3
3
  import { CloudResourceContext } from "../contexts/cloud-resource-context";
4
4
  import {
5
- AWSProviderSettings,
6
5
  CloudProvider,
7
6
  CloudProviderSettings,
7
+ CloudResourceProviderSettings,
8
8
  CloudResourceStatus,
9
9
  GameResourceSettings,
10
+ getProviderSettingsType,
10
11
  } from "../types";
11
12
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
12
13
 
13
- export class UpdateLudeoResourceStatusRequestPayload {
14
+ export class UpdateLudeoResourceStatusRequestPayload<
15
+ T extends CloudProviderSettings = CloudProviderSettings,
16
+ K extends CloudResourceProviderSettings = CloudResourceProviderSettings
17
+ > {
14
18
  @IsUUID()
15
19
  ludeoResourceId: string;
16
20
 
@@ -36,11 +40,11 @@ export class UpdateLudeoResourceStatusRequestPayload {
36
40
  @IsEnum(CloudProvider)
37
41
  cloudProvider: CloudProvider;
38
42
 
39
- @ValidateNestedType(() => AWSProviderSettings)
40
- providerSettings: CloudProviderSettings;
43
+ @ValidateNestedType(getProviderSettingsType)
44
+ providerSettings: T;
41
45
 
42
46
  @ValidateNestedType(() => GameResourceSettings)
43
- gameResourceSettings: GameResourceSettings;
47
+ gameResourceSettings: GameResourceSettings<K>;
44
48
  }
45
49
 
46
50
  export class UpdateLudeoResourceStatusRequest extends LudeoEvent {
@@ -1,3 +1,4 @@
1
+ import { IsOptional, IsString } from "class-validator";
1
2
  import { CloudProvider } from "./cloud";
2
3
 
3
4
  export enum BuildStatus {
@@ -23,9 +24,20 @@ export enum ArtifactStatus {
23
24
  }
24
25
 
25
26
  export class BuildMetadata {
26
- studioId: string;
27
- gameId: string;
28
- versionId: string;
27
+ @IsString()
28
+ @IsOptional()
29
+ studioId?: string;
30
+
31
+ @IsString()
32
+ @IsOptional()
33
+ gameId?: string;
34
+
35
+ @IsString()
36
+ @IsOptional()
37
+ versionId?: string;
38
+
39
+ @IsString()
40
+ @IsOptional()
29
41
  friendlyName?: string;
30
42
  }
31
43
 
@@ -8,3 +8,4 @@ export * from "./provider";
8
8
  export * from "./resource-provider-settings";
9
9
  export * from "./session";
10
10
  export * from "./mock";
11
+ export * from "./machine-provider-settings";
@@ -0,0 +1,3 @@
1
+ import { MockMachineProviderSettings } from "./mock";
2
+
3
+ export type MachineProviderSettings = MockMachineProviderSettings;
@@ -3,3 +3,4 @@ export * from "./provider-settings";
3
3
  export * from "./request-data";
4
4
  export * from "./game-creation-response";
5
5
  export * from "./allocation-data";
6
+ export * from "./machine-provider-settings";
@@ -0,0 +1,6 @@
1
+ import { IsString } from "class-validator";
2
+
3
+ export class MockMachineProviderSettings {
4
+ @IsString()
5
+ machineId: string;
6
+ }
@@ -1,4 +1,17 @@
1
+ import { TypeHelpOptions } from "class-transformer";
1
2
  import { AWSProviderSettings } from "./aws";
2
3
  import { MockProviderSettings } from "./mock";
3
4
 
4
5
  export type CloudProviderSettings = AWSProviderSettings | MockProviderSettings;
6
+
7
+ export const getProviderSettingsType = ({
8
+ object,
9
+ property,
10
+ }: TypeHelpOptions) => {
11
+ const providerSettings = object[property];
12
+ if ("streamGroupId" in providerSettings) {
13
+ return AWSProviderSettings;
14
+ }
15
+
16
+ return MockProviderSettings;
17
+ };
@@ -1,6 +1,19 @@
1
+ import { TypeHelpOptions } from "class-transformer";
1
2
  import { AWSResourceProviderSettings } from "./aws";
2
3
  import { MockResourceProviderSettings } from "./mock";
3
4
 
4
5
  export type CloudResourceProviderSettings =
5
6
  | AWSResourceProviderSettings
6
7
  | MockResourceProviderSettings;
8
+
9
+ export const getResourceProviderSettingsType = ({
10
+ object,
11
+ property,
12
+ }: TypeHelpOptions) => {
13
+ const providerSettings = object[property];
14
+ if ("streamSessionId" in providerSettings) {
15
+ return AWSResourceProviderSettings;
16
+ }
17
+
18
+ return MockResourceProviderSettings;
19
+ };
@@ -1,9 +1,9 @@
1
1
  import { IsNumber, IsEnum, IsUUID, IsOptional } from "class-validator";
2
2
 
3
3
  import {
4
- AWSProviderSettings,
5
4
  CloudProvider,
6
5
  CloudProviderSettings,
6
+ getProviderSettingsType,
7
7
  } from "../../cloud";
8
8
  import { CloudPoolType } from "../type";
9
9
  import { BasePoolAttributes } from "./attributes";
@@ -20,7 +20,7 @@ export class PoolScaleConfiguration {
20
20
 
21
21
  export class BaseCloudPoolConfiguration {
22
22
  @IsOptional()
23
- @ValidateNestedType(() => AWSProviderSettings)
23
+ @ValidateNestedType(getProviderSettingsType)
24
24
  providerSettings?: CloudProviderSettings;
25
25
 
26
26
  @IsEnum(CloudProvider)
@@ -3,14 +3,16 @@ import { IsOptional, IsString, IsUUID } from "class-validator";
3
3
  import { BaseCloudResource } from "./base";
4
4
  import { ValidateNestedType } from "../../../../decorators";
5
5
  import {
6
- AWSResourceProviderSettings,
7
6
  CloudResourceProviderSettings,
8
- } from "../../cloud";
7
+ getResourceProviderSettingsType,
8
+ } from "../../cloud/resource-provider-settings";
9
9
 
10
- export class GameResourceSettings {
10
+ export class GameResourceSettings<
11
+ T extends CloudResourceProviderSettings = CloudResourceProviderSettings
12
+ > {
11
13
  @IsOptional()
12
- @ValidateNestedType(() => AWSResourceProviderSettings)
13
- provider?: CloudResourceProviderSettings;
14
+ @ValidateNestedType(getResourceProviderSettingsType)
15
+ provider?: T;
14
16
 
15
17
  @IsOptional()
16
18
  @IsUUID()