@truelab/trueserver 0.0.3

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 (167) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +220 -0
  3. package/dist/application.d.ts +7 -0
  4. package/dist/application.d.ts.map +1 -0
  5. package/dist/application.js +41 -0
  6. package/dist/application.js.map +1 -0
  7. package/dist/helpers/config.helper.d.ts +5 -0
  8. package/dist/helpers/config.helper.d.ts.map +1 -0
  9. package/dist/helpers/config.helper.js +12 -0
  10. package/dist/helpers/config.helper.js.map +1 -0
  11. package/dist/helpers/env.helper.d.ts +5 -0
  12. package/dist/helpers/env.helper.d.ts.map +1 -0
  13. package/dist/helpers/env.helper.js +29 -0
  14. package/dist/helpers/env.helper.js.map +1 -0
  15. package/dist/helpers/fastify.helper.d.ts +9 -0
  16. package/dist/helpers/fastify.helper.d.ts.map +1 -0
  17. package/dist/helpers/fastify.helper.js +27 -0
  18. package/dist/helpers/fastify.helper.js.map +1 -0
  19. package/dist/helpers/handlers.helper.d.ts +39 -0
  20. package/dist/helpers/handlers.helper.d.ts.map +1 -0
  21. package/dist/helpers/handlers.helper.js +25 -0
  22. package/dist/helpers/handlers.helper.js.map +1 -0
  23. package/dist/helpers/logger.helper.d.ts +6 -0
  24. package/dist/helpers/logger.helper.d.ts.map +1 -0
  25. package/dist/helpers/logger.helper.js +21 -0
  26. package/dist/helpers/logger.helper.js.map +1 -0
  27. package/dist/helpers/pkg-version.helper.d.ts +5 -0
  28. package/dist/helpers/pkg-version.helper.d.ts.map +1 -0
  29. package/dist/helpers/pkg-version.helper.js +22 -0
  30. package/dist/helpers/pkg-version.helper.js.map +1 -0
  31. package/dist/helpers/random.helper.d.ts +7 -0
  32. package/dist/helpers/random.helper.d.ts.map +1 -0
  33. package/dist/helpers/random.helper.js +18 -0
  34. package/dist/helpers/random.helper.js.map +1 -0
  35. package/dist/helpers/tests.helper.d.ts +9 -0
  36. package/dist/helpers/tests.helper.d.ts.map +1 -0
  37. package/dist/helpers/tests.helper.js +45 -0
  38. package/dist/helpers/tests.helper.js.map +1 -0
  39. package/dist/index.d.ts +14 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +57 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/plugins/404.plugin.d.ts +3 -0
  44. package/dist/plugins/404.plugin.d.ts.map +1 -0
  45. package/dist/plugins/404.plugin.js +10 -0
  46. package/dist/plugins/404.plugin.js.map +1 -0
  47. package/dist/plugins/apikey.plugin.d.ts +3 -0
  48. package/dist/plugins/apikey.plugin.d.ts.map +1 -0
  49. package/dist/plugins/apikey.plugin.js +18 -0
  50. package/dist/plugins/apikey.plugin.js.map +1 -0
  51. package/dist/plugins/cors.plugin.d.ts +3 -0
  52. package/dist/plugins/cors.plugin.d.ts.map +1 -0
  53. package/dist/plugins/cors.plugin.js +15 -0
  54. package/dist/plugins/cors.plugin.js.map +1 -0
  55. package/dist/plugins/error.plugin.d.ts +3 -0
  56. package/dist/plugins/error.plugin.d.ts.map +1 -0
  57. package/dist/plugins/error.plugin.js +18 -0
  58. package/dist/plugins/error.plugin.js.map +1 -0
  59. package/dist/plugins/logger.plugin.d.ts +3 -0
  60. package/dist/plugins/logger.plugin.d.ts.map +1 -0
  61. package/dist/plugins/logger.plugin.js +51 -0
  62. package/dist/plugins/logger.plugin.js.map +1 -0
  63. package/dist/plugins/metrics.plugin.d.ts +9 -0
  64. package/dist/plugins/metrics.plugin.d.ts.map +1 -0
  65. package/dist/plugins/metrics.plugin.js +24 -0
  66. package/dist/plugins/metrics.plugin.js.map +1 -0
  67. package/dist/plugins/sentry.plugin.d.ts +3 -0
  68. package/dist/plugins/sentry.plugin.d.ts.map +1 -0
  69. package/dist/plugins/sentry.plugin.js +24 -0
  70. package/dist/plugins/sentry.plugin.js.map +1 -0
  71. package/dist/plugins/swagger.plugin.d.ts +3 -0
  72. package/dist/plugins/swagger.plugin.d.ts.map +1 -0
  73. package/dist/plugins/swagger.plugin.js +58 -0
  74. package/dist/plugins/swagger.plugin.js.map +1 -0
  75. package/dist/routes/client.route.d.ts +3 -0
  76. package/dist/routes/client.route.d.ts.map +1 -0
  77. package/dist/routes/client.route.js +21 -0
  78. package/dist/routes/client.route.js.map +1 -0
  79. package/dist/routes/config/config.route.d.ts +3 -0
  80. package/dist/routes/config/config.route.d.ts.map +1 -0
  81. package/dist/routes/config/config.route.js +21 -0
  82. package/dist/routes/config/config.route.js.map +1 -0
  83. package/dist/routes/config/config.route.validate.plugin.d.ts +3 -0
  84. package/dist/routes/config/config.route.validate.plugin.d.ts.map +1 -0
  85. package/dist/routes/config/config.route.validate.plugin.js +42 -0
  86. package/dist/routes/config/config.route.validate.plugin.js.map +1 -0
  87. package/dist/routes/config/index.d.ts +3 -0
  88. package/dist/routes/config/index.d.ts.map +1 -0
  89. package/dist/routes/config/index.js +14 -0
  90. package/dist/routes/config/index.js.map +1 -0
  91. package/dist/routes/healthcheck.route.d.ts +3 -0
  92. package/dist/routes/healthcheck.route.d.ts.map +1 -0
  93. package/dist/routes/healthcheck.route.js +34 -0
  94. package/dist/routes/healthcheck.route.js.map +1 -0
  95. package/dist/routes/play/index.d.ts +3 -0
  96. package/dist/routes/play/index.d.ts.map +1 -0
  97. package/dist/routes/play/index.js +14 -0
  98. package/dist/routes/play/index.js.map +1 -0
  99. package/dist/routes/play/play.route.d.ts +3 -0
  100. package/dist/routes/play/play.route.d.ts.map +1 -0
  101. package/dist/routes/play/play.route.js +22 -0
  102. package/dist/routes/play/play.route.js.map +1 -0
  103. package/dist/routes/play/play.route.validate.plugin.d.ts +13 -0
  104. package/dist/routes/play/play.route.validate.plugin.d.ts.map +1 -0
  105. package/dist/routes/play/play.route.validate.plugin.js +108 -0
  106. package/dist/routes/play/play.route.validate.plugin.js.map +1 -0
  107. package/dist/routes/validate/index.d.ts +3 -0
  108. package/dist/routes/validate/index.d.ts.map +1 -0
  109. package/dist/routes/validate/index.js +14 -0
  110. package/dist/routes/validate/index.js.map +1 -0
  111. package/dist/routes/validate/validate.route.d.ts +3 -0
  112. package/dist/routes/validate/validate.route.d.ts.map +1 -0
  113. package/dist/routes/validate/validate.route.js +22 -0
  114. package/dist/routes/validate/validate.route.js.map +1 -0
  115. package/dist/routes/validate/validate.route.validate.plugin.d.ts +3 -0
  116. package/dist/routes/validate/validate.route.validate.plugin.d.ts.map +1 -0
  117. package/dist/routes/validate/validate.route.validate.plugin.js +28 -0
  118. package/dist/routes/validate/validate.route.validate.plugin.js.map +1 -0
  119. package/dist/schemas/client.schema.d.ts +9 -0
  120. package/dist/schemas/client.schema.d.ts.map +1 -0
  121. package/dist/schemas/client.schema.js +22 -0
  122. package/dist/schemas/client.schema.js.map +1 -0
  123. package/dist/schemas/config.schema.d.ts +34 -0
  124. package/dist/schemas/config.schema.d.ts.map +1 -0
  125. package/dist/schemas/config.schema.js +78 -0
  126. package/dist/schemas/config.schema.js.map +1 -0
  127. package/dist/schemas/examples/client.schema.examples.d.ts +3 -0
  128. package/dist/schemas/examples/client.schema.examples.d.ts.map +1 -0
  129. package/dist/schemas/examples/client.schema.examples.js +32 -0
  130. package/dist/schemas/examples/client.schema.examples.js.map +1 -0
  131. package/dist/schemas/examples/config.schema.examples.d.ts +3 -0
  132. package/dist/schemas/examples/config.schema.examples.d.ts.map +1 -0
  133. package/dist/schemas/examples/config.schema.examples.js +56 -0
  134. package/dist/schemas/examples/config.schema.examples.js.map +1 -0
  135. package/dist/schemas/examples/healthcheck.schema.examples.d.ts +3 -0
  136. package/dist/schemas/examples/healthcheck.schema.examples.d.ts.map +1 -0
  137. package/dist/schemas/examples/healthcheck.schema.examples.js +28 -0
  138. package/dist/schemas/examples/healthcheck.schema.examples.js.map +1 -0
  139. package/dist/schemas/examples/play.schema.examples.d.ts +4 -0
  140. package/dist/schemas/examples/play.schema.examples.d.ts.map +1 -0
  141. package/dist/schemas/examples/play.schema.examples.js +165 -0
  142. package/dist/schemas/examples/play.schema.examples.js.map +1 -0
  143. package/dist/schemas/examples/validate.schema.examples.d.ts +4 -0
  144. package/dist/schemas/examples/validate.schema.examples.d.ts.map +1 -0
  145. package/dist/schemas/examples/validate.schema.examples.js +100 -0
  146. package/dist/schemas/examples/validate.schema.examples.js.map +1 -0
  147. package/dist/schemas/healthcheck.schema.d.ts +31 -0
  148. package/dist/schemas/healthcheck.schema.d.ts.map +1 -0
  149. package/dist/schemas/healthcheck.schema.js +63 -0
  150. package/dist/schemas/healthcheck.schema.js.map +1 -0
  151. package/dist/schemas/play.schema.d.ts +34 -0
  152. package/dist/schemas/play.schema.d.ts.map +1 -0
  153. package/dist/schemas/play.schema.js +80 -0
  154. package/dist/schemas/play.schema.js.map +1 -0
  155. package/dist/schemas/shared.d.ts +71 -0
  156. package/dist/schemas/shared.d.ts.map +1 -0
  157. package/dist/schemas/shared.js +147 -0
  158. package/dist/schemas/shared.js.map +1 -0
  159. package/dist/schemas/validate.schema.d.ts +21 -0
  160. package/dist/schemas/validate.schema.d.ts.map +1 -0
  161. package/dist/schemas/validate.schema.js +43 -0
  162. package/dist/schemas/validate.schema.js.map +1 -0
  163. package/dist/test-utils.d.ts +6 -0
  164. package/dist/test-utils.d.ts.map +1 -0
  165. package/dist/test-utils.js +13 -0
  166. package/dist/test-utils.js.map +1 -0
  167. package/package.json +80 -0
@@ -0,0 +1,3 @@
1
+ declare const configRoute: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default configRoute;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../routes/config/index.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,WAAW,mFAGf,CAAA;AAEF,eAAe,WAAW,CAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
7
+ const config_route_1 = __importDefault(require("./config.route"));
8
+ const config_route_validate_plugin_1 = __importDefault(require("./config.route.validate.plugin"));
9
+ const configRoute = (0, fastify_helper_1.registerRoute)(async (fastify) => {
10
+ fastify.register(config_route_validate_plugin_1.default);
11
+ fastify.register(config_route_1.default);
12
+ });
13
+ exports.default = configRoute;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../routes/config/index.ts"],"names":[],"mappings":";;;;;AAAA,iEAA4D;AAC5D,kEAAgD;AAChD,kGAAsE;AAEtE,MAAM,WAAW,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAChD,OAAO,CAAC,QAAQ,CAAC,sCAAyB,CAAC,CAAA;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAmB,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const healthcheckRoute: (fastify: import("../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default healthcheckRoute;
3
+ //# sourceMappingURL=healthcheck.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthcheck.route.d.ts","sourceRoot":"","sources":["../../routes/healthcheck.route.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,gBAAgB,gFA4BpB,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_helper_1 = require("../helpers/config.helper");
4
+ const env_helper_1 = require("../helpers/env.helper");
5
+ const fastify_helper_1 = require("../helpers/fastify.helper");
6
+ const healthcheck_schema_1 = require("../schemas/healthcheck.schema");
7
+ const shared_1 = require("../schemas/shared");
8
+ const healthcheckRoute = (0, fastify_helper_1.registerRoute)(async (fastify) => {
9
+ fastify.post('/healthcheck', {
10
+ schema: {
11
+ response: {
12
+ 200: healthcheck_schema_1.HealthcheckReplySchema,
13
+ 400: shared_1.RequestErrorSchema,
14
+ 403: shared_1.AccessErrorSchema,
15
+ 500: shared_1.InternalErrorSchema,
16
+ },
17
+ headers: shared_1.HeadersSchema,
18
+ },
19
+ }, () => ({
20
+ code: 200,
21
+ status: true,
22
+ service: (0, config_helper_1.getGameConfig)().name,
23
+ environment: (0, env_helper_1.variation)(shared_1.EEnvironment.development, shared_1.EEnvironment.staging, shared_1.EEnvironment.production),
24
+ uptime: process.uptime(),
25
+ message: 'OK',
26
+ timestamp: new Date().getTime(),
27
+ metrics: fastify.metrics,
28
+ services: {
29
+ sentry: !!fastify.Sentry,
30
+ },
31
+ }));
32
+ });
33
+ exports.default = healthcheckRoute;
34
+ //# sourceMappingURL=healthcheck.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthcheck.route.js","sourceRoot":"","sources":["../../routes/healthcheck.route.ts"],"names":[],"mappings":";;AAAA,4DAAwD;AACxD,sDAAiD;AACjD,8DAAyD;AACzD,sEAAsE;AACtE,8CAE0B;AAE1B,MAAM,gBAAgB,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACrD,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;QACzB,MAAM,EAAE;YACJ,QAAQ,EAAE;gBACN,GAAG,EAAE,2CAAsB;gBAC3B,GAAG,EAAE,2BAAkB;gBACvB,GAAG,EAAE,0BAAiB;gBACtB,GAAG,EAAE,4BAAmB;aAC3B;YACD,OAAO,EAAE,sBAAa;SACzB;KACJ,EAAE,GAAG,EAAE,CAAC,CAAC;QACN,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAA,6BAAa,GAAE,CAAC,IAAI;QAC7B,WAAW,EAAE,IAAA,sBAAS,EAClB,qBAAY,CAAC,WAAW,EACxB,qBAAY,CAAC,OAAO,EACpB,qBAAY,CAAC,UAAU,CAC1B;QACD,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE;YACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;SAC3B;KACJ,CAAC,CAAC,CAAA;AACP,CAAC,CAAC,CAAA;AAEF,kBAAe,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const playRoute: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default playRoute;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../routes/play/index.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS,mFAGb,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
7
+ const play_route_1 = __importDefault(require("./play.route"));
8
+ const play_route_validate_plugin_1 = __importDefault(require("./play.route.validate.plugin"));
9
+ const playRoute = (0, fastify_helper_1.registerRoute)(async (fastify) => {
10
+ fastify.register(play_route_validate_plugin_1.default);
11
+ fastify.register(play_route_1.default);
12
+ });
13
+ exports.default = playRoute;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../routes/play/index.ts"],"names":[],"mappings":";;;;;AAAA,iEAA4D;AAC5D,8DAA4C;AAC5C,8FAAkE;AAElE,MAAM,SAAS,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC9C,OAAO,CAAC,QAAQ,CAAC,oCAAuB,CAAC,CAAA;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAiB,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,kBAAe,SAAS,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const playRouteOriginal: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default playRouteOriginal;
3
+ //# sourceMappingURL=play.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.route.d.ts","sourceRoot":"","sources":["../../../routes/play/play.route.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,iBAAiB,mFAarB,CAAA;AAEF,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
4
+ const handlers_helper_1 = require("../../helpers/handlers.helper");
5
+ const play_schema_1 = require("../../schemas/play.schema");
6
+ const shared_1 = require("../../schemas/shared");
7
+ const playRouteOriginal = (0, fastify_helper_1.registerRoute)(async (fastify) => {
8
+ fastify.post('/play', {
9
+ schema: {
10
+ body: play_schema_1.PlayRequestSchema,
11
+ response: {
12
+ 200: play_schema_1.PlayReplySchema,
13
+ 400: shared_1.RequestErrorSchema,
14
+ 403: shared_1.AccessErrorSchema,
15
+ 500: shared_1.InternalErrorSchema,
16
+ },
17
+ headers: shared_1.HeadersSchema,
18
+ },
19
+ }, async (request, reply) => handlers_helper_1.handlers.get('play').bind(fastify)(request, reply));
20
+ });
21
+ exports.default = playRouteOriginal;
22
+ //# sourceMappingURL=play.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.route.js","sourceRoot":"","sources":["../../../routes/play/play.route.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAC5D,mEAAwD;AACxD,2DAA8E;AAC9E,iDAE6B;AAE7B,MAAM,iBAAiB,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;QAClB,MAAM,EAAE;YACJ,IAAI,EAAE,+BAAiB;YACvB,QAAQ,EAAE;gBACN,GAAG,EAAE,6BAAe;gBACpB,GAAG,EAAE,2BAAkB;gBACvB,GAAG,EAAE,0BAAiB;gBACtB,GAAG,EAAE,4BAAmB;aAC3B;YACD,OAAO,EAAE,sBAAa;SACzB;KACJ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,0BAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACpF,CAAC,CAAC,CAAA;AAEF,kBAAe,iBAAiB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { TGameConfig } from '../../helpers/config.helper';
2
+ import { TStake, TStakeMode } from '../../schemas/shared';
3
+ export declare function validateStakes(stakes: TStake[], gameConfig: TGameConfig, stakesMap: Map<string, TStakeMode>): void;
4
+ export declare function validateTestData(testData: string): void;
5
+ export declare function validateChoice(choice: number, gameConfig: TGameConfig): void;
6
+ export declare function validateMeta(metaPrivate: string, metaPublic: string, gameConfig: TGameConfig): void;
7
+ export declare function validateGamble(isGambleAllowed: boolean, gameConfig: TGameConfig): void;
8
+ export declare function validateFinishedInReply(finished: boolean, gameConfig: TGameConfig): void;
9
+ export declare function validateChoicesInReply(choices: number[], gameConfig: TGameConfig): void;
10
+ export declare function validateMetaInReply(metaPrivate: string, metaPublic: string, gameConfig: TGameConfig): void;
11
+ declare const playRouteValidatePlugin: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
12
+ export default playRouteValidatePlugin;
13
+ //# sourceMappingURL=play.route.validate.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/play/play.route.validate.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAIxE,OAAO,EAAiB,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAExE,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,QAiCrC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAIhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,QAIrE;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,QAI5F;AAED,wBAAgB,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,QAI/E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,QAIjF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,QAIhF;AAED,wBAAgB,mBAAmB,CAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,WAAW,QAK1B;AAED,QAAA,MAAM,uBAAuB,mFAkC3B,CAAA;AAEF,eAAe,uBAAuB,CAAA"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateStakes = validateStakes;
4
+ exports.validateTestData = validateTestData;
5
+ exports.validateChoice = validateChoice;
6
+ exports.validateMeta = validateMeta;
7
+ exports.validateGamble = validateGamble;
8
+ exports.validateFinishedInReply = validateFinishedInReply;
9
+ exports.validateChoicesInReply = validateChoicesInReply;
10
+ exports.validateMetaInReply = validateMetaInReply;
11
+ const config_helper_1 = require("../../helpers/config.helper");
12
+ const env_helper_1 = require("../../helpers/env.helper");
13
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
14
+ function validateStakes(stakes, gameConfig, stakesMap) {
15
+ if (stakes === undefined)
16
+ return;
17
+ if (gameConfig.hasMultiStake === false && stakes.length > 1) {
18
+ throw new Error('Multiple stakes are not allowed');
19
+ }
20
+ stakes.forEach((stake) => {
21
+ if (!stakesMap.has(stake.name)) {
22
+ throw new Error(`Unknown stake name "${stake.name}"`);
23
+ }
24
+ if (!stakesMap.get(stake.name).multiple && stake.qty !== undefined) {
25
+ throw new Error(`Stake "${stake.name}" is not multiple. "qty" property is not allowed`);
26
+ }
27
+ if (gameConfig.variableLevels === undefined && stake.level !== undefined) {
28
+ throw new Error('Variable levels are not allowed');
29
+ }
30
+ if (gameConfig.variableLevels !== undefined && stake.level === undefined) {
31
+ throw new Error('Variable levels are required in stakes');
32
+ }
33
+ if (!stakesMap.get(stake.name).parametric && stake.params !== undefined) {
34
+ throw new Error(`Stake "${stake.name}" is not parametric. "params" property is not allowed`);
35
+ }
36
+ if (stakesMap.get(stake.name).parametric && stake.params === undefined) {
37
+ throw new Error(`Stake "${stake.name}" is parametric. "params" property is required`);
38
+ }
39
+ });
40
+ }
41
+ function validateTestData(testData) {
42
+ if ((0, env_helper_1.variation)(false, false, true) && testData !== undefined) {
43
+ throw new Error('Test data is not allowed on production environment');
44
+ }
45
+ }
46
+ function validateChoice(choice, gameConfig) {
47
+ if (!gameConfig.hasChoice && choice !== undefined) {
48
+ throw new Error('The game is not stepped. Choice is not allowed');
49
+ }
50
+ }
51
+ function validateMeta(metaPrivate, metaPublic, gameConfig) {
52
+ if (!gameConfig.hasMeta && (metaPrivate !== undefined || metaPublic !== undefined)) {
53
+ throw new Error('The game is not supported meta data. metaPrivate and metaPublic are not allowed');
54
+ }
55
+ }
56
+ function validateGamble(isGambleAllowed, gameConfig) {
57
+ if (!gameConfig.hasGamble && isGambleAllowed) {
58
+ throw new Error('The game is not supported gamble feature');
59
+ }
60
+ }
61
+ function validateFinishedInReply(finished, gameConfig) {
62
+ if (!gameConfig.hasChoice && !finished) {
63
+ throw new Error('The game is not stepped. Round should be finished');
64
+ }
65
+ }
66
+ function validateChoicesInReply(choices, gameConfig) {
67
+ if (!gameConfig.hasChoice && choices !== undefined) {
68
+ throw new Error('The game is not stepped. No choices!');
69
+ }
70
+ }
71
+ function validateMetaInReply(metaPrivate, metaPublic, gameConfig) {
72
+ if (!gameConfig.hasMeta && (metaPrivate !== undefined || metaPublic !== undefined)) {
73
+ throw new Error('The game doesn\'t have meta data. metaPrivate and metaPublic are not allowed');
74
+ }
75
+ }
76
+ const playRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fastify) => {
77
+ const gameConfig = (0, config_helper_1.getGameConfig)();
78
+ const stakesMap = new Map(gameConfig.stakeModes.map((stakeMode) => [stakeMode.name, stakeMode]));
79
+ fastify.addHook('preHandler', (request, reply, done) => {
80
+ const { body } = request;
81
+ try {
82
+ validateStakes(body.stakes, gameConfig, stakesMap);
83
+ validateTestData(body.test);
84
+ validateChoice(body.choice, gameConfig);
85
+ validateMeta(body.metaPrivate, body.metaPublic, gameConfig);
86
+ validateGamble(body.isGambleAllowed, gameConfig);
87
+ done();
88
+ }
89
+ catch (error) {
90
+ throw (0, fastify_helper_1.httpError)(`Advanced validation failed: ${error.message}`, 400);
91
+ }
92
+ });
93
+ fastify.addHook('preSerialization', (_request, reply, payload, done) => {
94
+ if (payload?.ok) {
95
+ try {
96
+ validateFinishedInReply(payload.finished, gameConfig);
97
+ validateChoicesInReply(payload.choices, gameConfig);
98
+ validateMetaInReply(payload.metaPrivate, payload.metaPublic, gameConfig);
99
+ }
100
+ catch (error) {
101
+ throw (0, fastify_helper_1.httpError)(`Advanced validation failed: ${error.message}`, 500);
102
+ }
103
+ }
104
+ done(null, payload);
105
+ });
106
+ });
107
+ exports.default = playRouteValidatePlugin;
108
+ //# sourceMappingURL=play.route.validate.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/play/play.route.validate.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const validateRoute: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default validateRoute;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../routes/validate/index.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,aAAa,mFAGjB,CAAA;AAEF,eAAe,aAAa,CAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
7
+ const validate_route_1 = __importDefault(require("./validate.route"));
8
+ const validate_route_validate_plugin_1 = __importDefault(require("./validate.route.validate.plugin"));
9
+ const validateRoute = (0, fastify_helper_1.registerRoute)(async (fastify) => {
10
+ fastify.register(validate_route_validate_plugin_1.default);
11
+ fastify.register(validate_route_1.default);
12
+ });
13
+ exports.default = validateRoute;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../routes/validate/index.ts"],"names":[],"mappings":";;;;;AAAA,iEAA4D;AAC5D,sEAAoD;AACpD,sGAA0E;AAE1E,MAAM,aAAa,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAClD,OAAO,CAAC,QAAQ,CAAC,wCAA2B,CAAC,CAAA;IAC7C,OAAO,CAAC,QAAQ,CAAC,wBAAqB,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEF,kBAAe,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const validateRouteOriginal: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default validateRouteOriginal;
3
+ //# sourceMappingURL=validate.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.route.d.ts","sourceRoot":"","sources":["../../../routes/validate/validate.route.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,qBAAqB,mFAazB,CAAA;AAEF,eAAe,qBAAqB,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
4
+ const handlers_helper_1 = require("../../helpers/handlers.helper");
5
+ const shared_1 = require("../../schemas/shared");
6
+ const validate_schema_1 = require("../../schemas/validate.schema");
7
+ const validateRouteOriginal = (0, fastify_helper_1.registerRoute)(async (fastify) => {
8
+ fastify.post('/validate', {
9
+ schema: {
10
+ body: validate_schema_1.ValidateRequestSchema,
11
+ response: {
12
+ 200: validate_schema_1.ValidateReplySchema,
13
+ 400: shared_1.RequestErrorSchema,
14
+ 403: shared_1.AccessErrorSchema,
15
+ 500: shared_1.InternalErrorSchema,
16
+ },
17
+ headers: shared_1.HeadersSchema,
18
+ },
19
+ }, async (request, reply) => handlers_helper_1.handlers.get('validate').bind(fastify)(request, reply));
20
+ });
21
+ exports.default = validateRouteOriginal;
22
+ //# sourceMappingURL=validate.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.route.js","sourceRoot":"","sources":["../../../routes/validate/validate.route.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAC5D,mEAAwD;AACxD,iDAE6B;AAC7B,mEAA0F;AAE1F,MAAM,qBAAqB,GAAG,IAAA,8BAAa,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QACtB,MAAM,EAAE;YACJ,IAAI,EAAE,uCAAqB;YAC3B,QAAQ,EAAE;gBACN,GAAG,EAAE,qCAAmB;gBACxB,GAAG,EAAE,2BAAkB;gBACvB,GAAG,EAAE,0BAAiB;gBACtB,GAAG,EAAE,4BAAmB;aAC3B;YACD,OAAO,EAAE,sBAAa;SACzB;KACJ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,0BAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACxF,CAAC,CAAC,CAAA;AAEF,kBAAe,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const validateRouteValidatePlugin: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
2
+ export default validateRouteValidatePlugin;
3
+ //# sourceMappingURL=validate.route.validate.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,2BAA2B,mFAkB/B,CAAA;AAEF,eAAe,2BAA2B,CAAA"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_helper_1 = require("../../helpers/config.helper");
4
+ const fastify_helper_1 = require("../../helpers/fastify.helper");
5
+ const play_route_validate_plugin_1 = require("../play/play.route.validate.plugin");
6
+ function validateAccessibility(gameConfig) {
7
+ if (!gameConfig.hasValidation) {
8
+ throw new Error('The game doesn\'t support validation');
9
+ }
10
+ }
11
+ const validateRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fastify) => {
12
+ const gameConfig = (0, config_helper_1.getGameConfig)();
13
+ const stakesMap = new Map(gameConfig.stakeModes.map((stakeMode) => [stakeMode.name, stakeMode]));
14
+ fastify.addHook('preHandler', (request, _reply, done) => {
15
+ const { body } = request;
16
+ try {
17
+ validateAccessibility(gameConfig);
18
+ (0, play_route_validate_plugin_1.validateStakes)(body.stakes, gameConfig, stakesMap);
19
+ (0, play_route_validate_plugin_1.validateMeta)(body.metaPrivate, body.metaPublic, gameConfig);
20
+ done();
21
+ }
22
+ catch (error) {
23
+ throw (0, fastify_helper_1.httpError)(`Advanced validation failed: ${error.message}`, 400);
24
+ }
25
+ });
26
+ });
27
+ exports.default = validateRouteValidatePlugin;
28
+ //# sourceMappingURL=validate.route.validate.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":";;AAAA,+DAAwE;AACxE,iEAAwE;AAExE,mFAAiF;AAEjF,SAAS,qBAAqB,CAAC,UAAuB;IAClD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IAC3D,CAAC;AACL,CAAC;AAED,MAAM,2BAA2B,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAElC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAEhG,OAAO,CAAC,OAAO,CAA4D,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC/G,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAExB,IAAI,CAAC;YACD,qBAAqB,CAAC,UAAU,CAAC,CAAA;YACjC,IAAA,2CAAc,EAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;YAClD,IAAA,yCAAY,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;YAE3D,IAAI,EAAE,CAAA;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAA,0BAAS,EAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;QACxE,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,2BAA2B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Static, Type } from 'typebox';
2
+ export declare const ClientRequestSchema: Type.TObject<{}>;
3
+ export declare const ClientReplySchema: Type.TObject<{
4
+ ok: Type.TBoolean;
5
+ data: Type.TAny;
6
+ }>;
7
+ export type TClientRequest = Static<typeof ClientRequestSchema>;
8
+ export type TClientReply = Static<typeof ClientReplySchema>;
9
+ //# sourceMappingURL=client.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.schema.d.ts","sourceRoot":"","sources":["../../schemas/client.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAItC,eAAO,MAAM,mBAAmB,kBAG9B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;EAW5B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientReplySchema = exports.ClientRequestSchema = void 0;
4
+ const typebox_1 = require("typebox");
5
+ const client_schema_examples_1 = require("./examples/client.schema.examples");
6
+ exports.ClientRequestSchema = typebox_1.Type.Object({}, {
7
+ $id: 'ClientRequest',
8
+ additionalProperties: false,
9
+ });
10
+ exports.ClientReplySchema = typebox_1.Type.Object({
11
+ ok: typebox_1.Type.Boolean({
12
+ description: 'Always true for success responses',
13
+ }),
14
+ data: typebox_1.Type.Any({
15
+ description: 'JSON object with all game client settings',
16
+ }),
17
+ }, {
18
+ $id: 'ClientReply',
19
+ additionalProperties: false,
20
+ 'x-examples': client_schema_examples_1.clientReplyExamples,
21
+ });
22
+ //# sourceMappingURL=client.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.schema.js","sourceRoot":"","sources":["../../schemas/client.schema.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,8EAAuE;AAE1D,QAAA,mBAAmB,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,EAAE;IAC/C,GAAG,EAAE,eAAe;IACpB,oBAAoB,EAAE,KAAK;CAC9B,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,cAAI,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,cAAI,CAAC,OAAO,CAAC;QACb,WAAW,EAAE,mCAAmC;KACnD,CAAC;IACF,IAAI,EAAE,cAAI,CAAC,GAAG,CAAC;QACX,WAAW,EAAE,2CAA2C;KAC3D,CAAC;CACL,EAAE;IACC,GAAG,EAAE,aAAa;IAClB,oBAAoB,EAAE,KAAK;IAC3B,YAAY,EAAE,4CAAmB;CACpC,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { Static, Type } from 'typebox';
2
+ import { ECategory, EVolatility } from './shared';
3
+ export declare const ConfigRequestSchema: Type.TObject<{}>;
4
+ export declare const ConfigReplySchema: Type.TObject<{
5
+ ok: Type.TBoolean;
6
+ name: Type.TString;
7
+ category: Type.TEnum<[ECategory.slots, ECategory.cluster, ECategory.table]>;
8
+ stakeModes: Type.TArray<Type.TObject<{
9
+ name: Type.TString;
10
+ type: Type.TEnum<[import("./shared").EStakeType.default, import("./shared").EStakeType.buy, import("./shared").EStakeType.bonusBet]>;
11
+ bets: Type.TNumber;
12
+ multiple: Type.TOptional<Type.TBoolean>;
13
+ parametric: Type.TBoolean;
14
+ maxQty: Type.TOptional<Type.TInteger>;
15
+ }>>;
16
+ rtp: Type.TNumber;
17
+ hitrate: Type.TOptional<Type.TNumber>;
18
+ volatility: Type.TOptional<Type.TEnum<[EVolatility.variable, EVolatility.low, EVolatility.medLow, EVolatility.med, EVolatility.medHigh, EVolatility.high, EVolatility.veryHigh]>>;
19
+ hasMeta: Type.TBoolean;
20
+ hasChoice: Type.TBoolean;
21
+ hasBuy: Type.TBoolean;
22
+ hasMultiStake: Type.TBoolean;
23
+ hasValidation: Type.TBoolean;
24
+ hasGamble: Type.TBoolean;
25
+ freeroundsAllowed: Type.TBoolean;
26
+ minWin: Type.TOptional<Type.TNumber>;
27
+ maxWin: Type.TNumber;
28
+ apiVersion: Type.TNumber;
29
+ variableLevels: Type.TOptional<Type.TInteger>;
30
+ coinRatio: Type.TOptional<Type.TNumber>;
31
+ }>;
32
+ export type TConfigRequest = Static<typeof ConfigRequestSchema>;
33
+ export type TConfigReply = Static<typeof ConfigReplySchema>;
34
+ //# sourceMappingURL=config.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../schemas/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,MAAM,UAAU,CAAA;AAElE,eAAO,MAAM,mBAAmB,kBAG9B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkE5B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigReplySchema = exports.ConfigRequestSchema = void 0;
4
+ const typebox_1 = require("typebox");
5
+ const config_schema_examples_1 = require("./examples/config.schema.examples");
6
+ const shared_1 = require("./shared");
7
+ exports.ConfigRequestSchema = typebox_1.Type.Object({}, {
8
+ $id: 'ConfigRequest',
9
+ additionalProperties: false,
10
+ });
11
+ exports.ConfigReplySchema = typebox_1.Type.Object({
12
+ ok: typebox_1.Type.Boolean({
13
+ description: 'Always true for success responses',
14
+ }),
15
+ name: typebox_1.Type.String({
16
+ description: 'Full game name',
17
+ }),
18
+ category: typebox_1.Type.Enum(shared_1.ECategory, {
19
+ description: 'Game category: "slots", "cluster", "table", etc.',
20
+ }),
21
+ stakeModes: typebox_1.Type.Array(shared_1.StakeModeSchema, {
22
+ description: 'Array of available stake modes',
23
+ minItems: 1,
24
+ }),
25
+ rtp: typebox_1.Type.Number({
26
+ description: 'Full RTP "xx.xx"',
27
+ }),
28
+ hitrate: typebox_1.Type.Optional(typebox_1.Type.Number({
29
+ description: 'Game hitrate "x.xx". Optional if the game does not have static hitrate',
30
+ })),
31
+ volatility: typebox_1.Type.Optional(typebox_1.Type.Enum(shared_1.EVolatility, {
32
+ description: 'Game volatility level. Optional if the game does not have static volatility',
33
+ })),
34
+ hasMeta: typebox_1.Type.Boolean({
35
+ description: 'true if the game uses meta data or has choice mechanics',
36
+ }),
37
+ hasChoice: typebox_1.Type.Boolean({
38
+ description: 'true if the game has user choice or double up mechanics',
39
+ }),
40
+ hasBuy: typebox_1.Type.Boolean({
41
+ description: 'true if the game has any buy features',
42
+ }),
43
+ hasMultiStake: typebox_1.Type.Boolean({
44
+ description: 'true if the game is able to make multiple bets',
45
+ }),
46
+ hasValidation: typebox_1.Type.Boolean({
47
+ description: 'true if Business Logic should use validation endpoint for checking meta and stakes. Needed for games with complex mechanics, that can exceed max exposure',
48
+ }),
49
+ hasGamble: typebox_1.Type.Boolean({
50
+ description: 'true if the game has “double up” mechanics',
51
+ }),
52
+ freeroundsAllowed: typebox_1.Type.Boolean({
53
+ description: 'true if freerounds for the game are allowed',
54
+ }),
55
+ minWin: typebox_1.Type.Optional(typebox_1.Type.Number({
56
+ description: 'Minimum available win in x bets. Optional if the game does not have static minWin',
57
+ exclusiveMinimum: 0,
58
+ })),
59
+ maxWin: typebox_1.Type.Number({
60
+ description: 'Maximum available win in x bets',
61
+ exclusiveMinimum: 0,
62
+ }),
63
+ apiVersion: typebox_1.Type.Number({
64
+ description: 'Major version of the TrueLab server API',
65
+ }),
66
+ variableLevels: typebox_1.Type.Optional(typebox_1.Type.Integer({
67
+ minimum: 2,
68
+ description: 'true if the game has variable number of lines, tables etc.',
69
+ })),
70
+ coinRatio: typebox_1.Type.Optional(typebox_1.Type.Number({
71
+ description: 'Game coin ratio',
72
+ })),
73
+ }, {
74
+ $id: 'ConfigReply',
75
+ additionalProperties: false,
76
+ 'x-examples': config_schema_examples_1.configReplyExamples,
77
+ });
78
+ //# sourceMappingURL=config.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../schemas/config.schema.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,8EAAuE;AACvE,qCAAkE;AAErD,QAAA,mBAAmB,GAAG,cAAI,CAAC,MAAM,CAAC,EAAE,EAAE;IAC/C,GAAG,EAAE,eAAe;IACpB,oBAAoB,EAAE,KAAK;CAC9B,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,cAAI,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,cAAI,CAAC,OAAO,CAAC;QACb,WAAW,EAAE,mCAAmC;KACnD,CAAC;IACF,IAAI,EAAE,cAAI,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,gBAAgB;KAChC,CAAC;IACF,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,kBAAS,EAAE;QAC3B,WAAW,EAAE,kDAAkD;KAClE,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,KAAK,CAAC,wBAAe,EAAE;QACpC,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,CAAC;KACd,CAAC;IACF,GAAG,EAAE,cAAI,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,kBAAkB;KAClC,CAAC;IACF,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,wEAAwE;KACxF,CAAC,CAAC;IACH,UAAU,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,oBAAW,EAAE;QAC7C,WAAW,EAAE,6EAA6E;KAC7F,CAAC,CAAC;IACH,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,yDAAyD;KACzE,CAAC;IACF,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,yDAAyD;KACzE,CAAC;IACF,MAAM,EAAE,cAAI,CAAC,OAAO,CAAC;QACjB,WAAW,EAAE,uCAAuC;KACvD,CAAC;IACF,aAAa,EAAE,cAAI,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,gDAAgD;KAChE,CAAC;IACF,aAAa,EAAE,cAAI,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,2JAA2J;KAC3K,CAAC;IACF,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,4CAA4C;KAC5D,CAAC;IACF,iBAAiB,EAAE,cAAI,CAAC,OAAO,CAAC;QAC5B,WAAW,EAAE,6CAA6C;KAC7D,CAAC;IACF,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QAC9B,WAAW,EAAE,mFAAmF;QAChG,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,iCAAiC;QAC9C,gBAAgB,EAAE,CAAC;KACtB,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,yCAAyC;KACzD,CAAC;IACF,cAAc,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC;QACvC,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,4DAA4D;KAC5E,CAAC,CAAC;IACH,SAAS,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QACjC,WAAW,EAAE,iBAAiB;KACjC,CAAC,CAAC;CACN,EAAE;IACC,GAAG,EAAE,aAAa;IAClB,oBAAoB,EAAE,KAAK;IAC3B,YAAY,EAAE,4CAAmB;CACpC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { TExamples } from '../shared';
2
+ export declare const clientReplyExamples: TExamples;
3
+ //# sourceMappingURL=client.schema.examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/client.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAyBrC,eAAO,MAAM,mBAAmB,EAAE,SAKjC,CAAA"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clientReplyExamples = void 0;
4
+ const defaultReply = {
5
+ ok: true,
6
+ data: {
7
+ lines: [
8
+ [1, 1, 1, 1, 1], [0, 0, 0, 0, 0], [2, 2, 2, 2, 2], [0, 1, 2, 1, 0], [2, 1, 0, 1, 2],
9
+ [1, 0, 0, 0, 1], [1, 2, 2, 2, 1], [0, 0, 1, 2, 2], [2, 2, 1, 0, 0], [1, 2, 1, 0, 1],
10
+ [1, 0, 1, 2, 1], [0, 2, 2, 2, 0], [2, 0, 0, 0, 2], [0, 1, 0, 1, 0], [2, 1, 2, 1, 2],
11
+ ],
12
+ paytable: [
13
+ [0, 0, 0, 6, 18, 90, 360],
14
+ [0, 0, 0, 6, 18, 90, 360],
15
+ [0, 0, 0, 6, 18, 90, 360],
16
+ [0, 0, 0, 6, 18, 90, 360],
17
+ [0, 0, 0, 9, 27, 135, 540],
18
+ [0, 0, 0, 9, 27, 135, 540],
19
+ [0, 0, 0, 15, 45, 225, 900],
20
+ [0, 0, 0, 15, 45, 225, 900],
21
+ [0, 0, 0, 36, 120, 600, 2400],
22
+ [0, 0, 0, 36, 120, 600, 2400],
23
+ ],
24
+ },
25
+ };
26
+ exports.clientReplyExamples = {
27
+ default: {
28
+ summary: 'Default reply',
29
+ value: defaultReply,
30
+ },
31
+ };
32
+ //# sourceMappingURL=client.schema.examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.schema.examples.js","sourceRoot":"","sources":["../../../schemas/examples/client.schema.examples.ts"],"names":[],"mappings":";;;AAEA,MAAM,YAAY,GAAG;IACjB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE;QACF,KAAK,EAAE;YACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACtF;QACD,QAAQ,EAAE;YACN,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;SAChC;KACJ;CACJ,CAAA;AAEY,QAAA,mBAAmB,GAAc;IAC1C,OAAO,EAAE;QACL,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,YAAY;KACtB;CACJ,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { TExamples } from '../shared';
2
+ export declare const configReplyExamples: TExamples;
3
+ //# sourceMappingURL=config.schema.examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/config.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,MAAM,WAAW,CAAA;AAgD9D,eAAO,MAAM,mBAAmB,EAAE,SAKjC,CAAA"}