@ludeo/cloud-common 1.2.83 → 1.2.84-ygarbage9

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 (158) 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/create-game-resource-request.d.ts +2 -2
  18. package/dist/v4/events/create-game-resource-request.js +1 -1
  19. package/dist/v4/events/create-game-resource-request.js.map +1 -1
  20. package/dist/v4/events/create-machine-resource-batch-request.d.ts +2 -2
  21. package/dist/v4/events/create-machine-resource-batch-request.js +1 -1
  22. package/dist/v4/events/create-machine-resource-batch-request.js.map +1 -1
  23. package/dist/v4/events/create-machine-resource-request.d.ts +2 -2
  24. package/dist/v4/events/create-machine-resource-request.js +1 -1
  25. package/dist/v4/events/create-machine-resource-request.js.map +1 -1
  26. package/dist/v4/events/game-allocated-response.d.ts +4 -4
  27. package/dist/v4/events/game-allocated-response.js +1 -1
  28. package/dist/v4/events/game-allocated-response.js.map +1 -1
  29. package/dist/v4/events/game-resource-ready-for-creation.d.ts +4 -4
  30. package/dist/v4/events/game-resource-ready-for-creation.js +1 -1
  31. package/dist/v4/events/game-resource-ready-for-creation.js.map +1 -1
  32. package/dist/v4/events/game-resource-status-changed.d.ts +2 -2
  33. package/dist/v4/events/game-resource-status-changed.js +2 -2
  34. package/dist/v4/events/game-resource-status-changed.js.map +1 -1
  35. package/dist/v4/events/index.d.ts +2 -0
  36. package/dist/v4/events/index.js +2 -0
  37. package/dist/v4/events/index.js.map +1 -1
  38. package/dist/v4/events/load-ludeo-resource.d.ts +4 -4
  39. package/dist/v4/events/load-ludeo-resource.js +1 -1
  40. package/dist/v4/events/load-ludeo-resource.js.map +1 -1
  41. package/dist/v4/events/machine-allocated-response.d.ts +2 -2
  42. package/dist/v4/events/machine-allocated-response.js +1 -1
  43. package/dist/v4/events/machine-allocated-response.js.map +1 -1
  44. package/dist/v4/events/machine-pool-resizing-task.d.ts +2 -2
  45. package/dist/v4/events/machine-pool-resizing-task.js +1 -1
  46. package/dist/v4/events/machine-pool-resizing-task.js.map +1 -1
  47. package/dist/v4/events/machine-resource-batch-creation-failed-response.d.ts +2 -2
  48. package/dist/v4/events/machine-resource-batch-creation-failed-response.js +1 -1
  49. package/dist/v4/events/machine-resource-batch-creation-failed-response.js.map +1 -1
  50. package/dist/v4/events/machine-resource-batch-termination-failed-response.d.ts +2 -2
  51. package/dist/v4/events/machine-resource-batch-termination-failed-response.js +1 -1
  52. package/dist/v4/events/machine-resource-batch-termination-failed-response.js.map +1 -1
  53. package/dist/v4/events/monitor-game-resource-task.js +1 -1
  54. package/dist/v4/events/monitor-game-resource-task.js.map +1 -1
  55. package/dist/v4/events/pool-created.event.d.ts +9 -0
  56. package/dist/v4/events/pool-created.event.js +34 -0
  57. package/dist/v4/events/pool-created.event.js.map +1 -0
  58. package/dist/v4/events/pool-status.d.ts +1 -2
  59. package/dist/v4/events/pool-status.js +1 -1
  60. package/dist/v4/events/pool-status.js.map +1 -1
  61. package/dist/v4/events/pool-updated.event.d.ts +9 -0
  62. package/dist/v4/events/pool-updated.event.js +34 -0
  63. package/dist/v4/events/pool-updated.event.js.map +1 -0
  64. package/dist/v4/events/terminate-game-resource-request.d.ts +3 -3
  65. package/dist/v4/events/terminate-game-resource-request.js +2 -2
  66. package/dist/v4/events/terminate-game-resource-request.js.map +1 -1
  67. package/dist/v4/events/terminate-machine-resource-batch-request.d.ts +2 -2
  68. package/dist/v4/events/terminate-machine-resource-batch-request.js +1 -1
  69. package/dist/v4/events/terminate-machine-resource-batch-request.js.map +1 -1
  70. package/dist/v4/events/terminate-machine-resource-request.d.ts +2 -2
  71. package/dist/v4/events/terminate-machine-resource-request.js +1 -1
  72. package/dist/v4/events/terminate-machine-resource-request.js.map +1 -1
  73. package/dist/v4/events/update-ludeo-resource-status-request.d.ts +4 -4
  74. package/dist/v4/events/update-ludeo-resource-status-request.js +1 -1
  75. package/dist/v4/events/update-ludeo-resource-status-request.js.map +1 -1
  76. package/dist/v4/types/cloud/allocation-data.d.ts +2 -1
  77. package/dist/v4/types/cloud/aws/resource-provider-settings.d.ts +1 -1
  78. package/dist/v4/types/cloud/aws/resource-provider-settings.js +2 -2
  79. package/dist/v4/types/cloud/aws/resource-provider-settings.js.map +1 -1
  80. package/dist/v4/types/cloud/game-creation-response.d.ts +2 -1
  81. package/dist/v4/types/cloud/index.d.ts +1 -0
  82. package/dist/v4/types/cloud/index.js +1 -0
  83. package/dist/v4/types/cloud/index.js.map +1 -1
  84. package/dist/v4/types/cloud/mock/allocation-data.d.ts +5 -0
  85. package/dist/v4/types/cloud/mock/allocation-data.js +29 -0
  86. package/dist/v4/types/cloud/mock/allocation-data.js.map +1 -0
  87. package/dist/v4/types/cloud/mock/game-creation-response.d.ts +3 -0
  88. package/dist/v4/types/cloud/mock/game-creation-response.js +22 -0
  89. package/dist/v4/types/cloud/mock/game-creation-response.js.map +1 -0
  90. package/dist/v4/types/cloud/mock/index.d.ts +5 -0
  91. package/dist/v4/types/cloud/mock/index.js +22 -0
  92. package/dist/v4/types/cloud/mock/index.js.map +1 -0
  93. package/dist/v4/types/cloud/mock/provider-settings.d.ts +4 -0
  94. package/dist/v4/types/cloud/mock/provider-settings.js +7 -0
  95. package/dist/v4/types/cloud/mock/provider-settings.js.map +1 -0
  96. package/dist/v4/types/cloud/mock/request-data.d.ts +3 -0
  97. package/dist/v4/types/cloud/mock/request-data.js +22 -0
  98. package/dist/v4/types/cloud/mock/request-data.js.map +1 -0
  99. package/dist/v4/types/cloud/mock/resource-provider-settings.d.ts +6 -0
  100. package/dist/v4/types/cloud/mock/resource-provider-settings.js +33 -0
  101. package/dist/v4/types/cloud/mock/resource-provider-settings.js.map +1 -0
  102. package/dist/v4/types/cloud/provider-request.d.ts +2 -1
  103. package/dist/v4/types/cloud/provider-settings.d.ts +4 -1
  104. package/dist/v4/types/cloud/provider-settings.js +11 -0
  105. package/dist/v4/types/cloud/provider-settings.js.map +1 -1
  106. package/dist/v4/types/cloud/provider.d.ts +2 -1
  107. package/dist/v4/types/cloud/provider.js +1 -0
  108. package/dist/v4/types/cloud/provider.js.map +1 -1
  109. package/dist/v4/types/cloud/resource-provider-settings.d.ts +4 -1
  110. package/dist/v4/types/cloud/resource-provider-settings.js +11 -0
  111. package/dist/v4/types/cloud/resource-provider-settings.js.map +1 -1
  112. package/dist/v4/types/pools/configuration/base.js +1 -1
  113. package/dist/v4/types/pools/configuration/base.js.map +1 -1
  114. package/dist/v4/types/pools/resource/game.d.ts +3 -3
  115. package/dist/v4/types/pools/resource/game.js +2 -2
  116. package/dist/v4/types/pools/resource/game.js.map +1 -1
  117. package/package.json +1 -1
  118. package/src/v4/events/allocate-game-resource-request.ts +10 -7
  119. package/src/v4/events/allocate-ludeo-resource-request.ts +9 -5
  120. package/src/v4/events/aws-reactivate-stream-session-task.ts +6 -3
  121. package/src/v4/events/aws-stream-session-active.ts +7 -4
  122. package/src/v4/events/aws-stream-session-reactivation-started.ts +6 -3
  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 +2 -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/monitor-game-resource-task.ts +2 -2
  136. package/src/v4/events/pool-created.event.ts +20 -0
  137. package/src/v4/events/pool-status.ts +4 -4
  138. package/src/v4/events/pool-updated.event.ts +20 -0
  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 +6 -4
  142. package/src/v4/events/update-ludeo-resource-status-request.ts +9 -5
  143. package/src/v4/types/cloud/allocation-data.ts +4 -1
  144. package/src/v4/types/cloud/aws/resource-provider-settings.ts +1 -1
  145. package/src/v4/types/cloud/game-creation-response.ts +4 -1
  146. package/src/v4/types/cloud/index.ts +1 -0
  147. package/src/v4/types/cloud/mock/allocation-data.ts +12 -0
  148. package/src/v4/types/cloud/mock/game-creation-response.ts +7 -0
  149. package/src/v4/types/cloud/mock/index.ts +5 -0
  150. package/src/v4/types/cloud/mock/provider-settings.ts +4 -0
  151. package/src/v4/types/cloud/mock/request-data.ts +7 -0
  152. package/src/v4/types/cloud/mock/resource-provider-settings.ts +16 -0
  153. package/src/v4/types/cloud/provider-request.ts +2 -1
  154. package/src/v4/types/cloud/provider-settings.ts +15 -1
  155. package/src/v4/types/cloud/provider.ts +1 -0
  156. package/src/v4/types/cloud/resource-provider-settings.ts +17 -1
  157. package/src/v4/types/pools/configuration/base.ts +2 -2
  158. package/src/v4/types/pools/resource/game.ts +7 -5
@@ -0,0 +1,20 @@
1
+ import { LudeoEvent } from "../../infra/ludeo-event";
2
+ import { CloudPoolContext } from "../contexts/cloud-pool-context";
3
+ import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
4
+ import { CloudPool } from "../types/pools";
5
+
6
+ export class PoolCreatedEvent extends LudeoEvent {
7
+ static readonly EVENT_NAME = "cloud-pools.pool-created";
8
+
9
+ constructor(payload: CloudPool, context: CloudPoolContext) {
10
+ super(PoolCreatedEvent.EVENT_NAME);
11
+ this.payload = payload;
12
+ this.context = context;
13
+ }
14
+
15
+ @ValidateNestedType(() => CloudPoolContext)
16
+ context: CloudPoolContext;
17
+
18
+ @ValidateNestedType(() => CloudPool)
19
+ payload: CloudPool;
20
+ }
@@ -6,15 +6,15 @@ import {
6
6
  BasePoolAttributes,
7
7
  LudeoPoolAttributes,
8
8
  MachinePoolAttributes,
9
- AWSProviderSettings,
10
9
  CloudProviderSettings,
10
+ GamePoolAttributes,
11
+ getProviderSettingsType,
11
12
  } from "../types";
12
13
  import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
13
- import { GamePoolAttributes } from "../../v3/types";
14
14
  import { IsUUIDOrEmpty } from "../../decorators/is-uuid-or-empty.decorator";
15
15
 
16
16
  export class PoolStatusEventBasePool<
17
- T extends BasePoolAttributes = BasePoolAttributes,
17
+ T extends BasePoolAttributes = BasePoolAttributes
18
18
  > {
19
19
  @ValidateNestedType(() => BasePoolAttributes)
20
20
  attributes: T;
@@ -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
 
@@ -0,0 +1,20 @@
1
+ import { LudeoEvent } from "../../infra/ludeo-event";
2
+ import { ValidateNestedType } from "../../decorators/validate-nested-type.decorator";
3
+ import { CloudPool } from "../types/pools";
4
+ import { CloudPoolContext } from "../contexts/cloud-pool-context";
5
+
6
+ export class PoolUpdatedEvent extends LudeoEvent {
7
+ static readonly EVENT_NAME = "cloud-pools.pool-updated";
8
+
9
+ constructor(payload: CloudPool, context: CloudPoolContext) {
10
+ super(PoolUpdatedEvent.EVENT_NAME);
11
+ this.payload = payload;
12
+ this.context = context;
13
+ }
14
+
15
+ @ValidateNestedType(() => CloudPoolContext)
16
+ context: CloudPoolContext;
17
+
18
+ @ValidateNestedType(() => CloudPool)
19
+ payload: CloudPool;
20
+ }
@@ -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 {
@@ -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 TerminateMachineResourceRequestPayload {
12
+ export class TerminateMachineResourceRequestPayload<
13
+ T extends CloudProviderSettings = CloudProviderSettings
14
+ > {
13
15
  @IsUUID()
14
16
  machineResourceId: string;
15
17
 
@@ -19,8 +21,8 @@ export class TerminateMachineResourceRequestPayload {
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
 
26
28
  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,6 @@
1
1
  import { AwsAllocationData } from "./aws";
2
+ import { MockAllocationData } from "./mock";
2
3
 
3
- export type CloudProviderAllocationData = AwsAllocationData;
4
+ export type CloudProviderAllocationData =
5
+ | AwsAllocationData
6
+ | MockAllocationData;
@@ -1,5 +1,5 @@
1
1
  import { IsEnum, IsOptional, IsString } from "class-validator";
2
- import { CloudProvider } from "../../cloud";
2
+ import { CloudProvider } from "../../cloud/provider";
3
3
 
4
4
  export class AWSResourceProviderSettings {
5
5
  @IsOptional()
@@ -1,3 +1,6 @@
1
1
  import { AWSGameCreationResponse } from "./aws";
2
+ import { MockGameCreationResponse } from "./mock";
2
3
 
3
- export type GameCreationResponse = AWSGameCreationResponse;
4
+ export type GameCreationResponse =
5
+ | AWSGameCreationResponse
6
+ | MockGameCreationResponse;
@@ -7,3 +7,4 @@ export * from "./provider-settings";
7
7
  export * from "./provider";
8
8
  export * from "./resource-provider-settings";
9
9
  export * from "./session";
10
+ export * from "./mock";
@@ -0,0 +1,12 @@
1
+ import { IsString } from "class-validator";
2
+
3
+ export class MockAllocationData {
4
+ @IsString()
5
+ machineId: string;
6
+
7
+ @IsString()
8
+ streamId: string;
9
+
10
+ @IsString()
11
+ signalResponse: string;
12
+ }
@@ -0,0 +1,7 @@
1
+ import { IsNotEmpty, IsString } from "class-validator";
2
+
3
+ export class MockGameCreationResponse {
4
+ @IsString()
5
+ @IsNotEmpty()
6
+ streamId: string;
7
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./resource-provider-settings";
2
+ export * from "./provider-settings";
3
+ export * from "./request-data";
4
+ export * from "./game-creation-response";
5
+ export * from "./allocation-data";
@@ -0,0 +1,4 @@
1
+ export class MockProviderSettings {
2
+ region?: string;
3
+ machinePoolSize?: number;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { IsNotEmpty, IsString } from "class-validator";
2
+
3
+ export class MockRequestData {
4
+ @IsString()
5
+ @IsNotEmpty()
6
+ signalRequest: string;
7
+ }
@@ -0,0 +1,16 @@
1
+ import { IsEnum, IsOptional, IsString } from "class-validator";
2
+ import { CloudProvider } from "../../cloud/provider";
3
+
4
+ export class MockResourceProviderSettings {
5
+ @IsOptional()
6
+ @IsString()
7
+ streamId?: string;
8
+
9
+ @IsEnum(CloudProvider)
10
+ @IsOptional()
11
+ cloudProvider?: CloudProvider;
12
+
13
+ @IsOptional()
14
+ @IsString()
15
+ region?: string;
16
+ }
@@ -1,3 +1,4 @@
1
1
  import { AWSRequestData } from "./aws";
2
+ import { MockRequestData } from "./mock";
2
3
 
3
- export type CloudProviderRequest = AWSRequestData;
4
+ export type CloudProviderRequest = AWSRequestData | MockRequestData;
@@ -1,3 +1,17 @@
1
+ import { TypeHelpOptions } from "class-transformer";
1
2
  import { AWSProviderSettings } from "./aws";
3
+ import { MockProviderSettings } from "./mock";
2
4
 
3
- export type CloudProviderSettings = AWSProviderSettings;
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,4 +1,5 @@
1
1
  export enum CloudProvider {
2
2
  AWS = "aws",
3
3
  NVIDIA = "nvidia",
4
+ MOCK = "mock",
4
5
  }
@@ -1,3 +1,19 @@
1
+ import { TypeHelpOptions } from "class-transformer";
1
2
  import { AWSResourceProviderSettings } from "./aws";
3
+ import { MockResourceProviderSettings } from "./mock";
2
4
 
3
- export type CloudResourceProviderSettings = AWSResourceProviderSettings;
5
+ export type CloudResourceProviderSettings =
6
+ | AWSResourceProviderSettings
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()