@truelab/trueserver 0.0.6 → 0.1.1

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 (62) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/MIGRATION.md +206 -1
  3. package/README.md +38 -16
  4. package/dist/helpers/config.helper.d.ts +8 -3
  5. package/dist/helpers/config.helper.d.ts.map +1 -1
  6. package/dist/helpers/config.helper.js +11 -8
  7. package/dist/helpers/config.helper.js.map +1 -1
  8. package/dist/helpers/errors.helper.d.ts +1 -0
  9. package/dist/helpers/errors.helper.d.ts.map +1 -1
  10. package/dist/helpers/errors.helper.js +1 -0
  11. package/dist/helpers/errors.helper.js.map +1 -1
  12. package/dist/helpers/money.helper.d.ts +13 -0
  13. package/dist/helpers/money.helper.d.ts.map +1 -0
  14. package/dist/helpers/money.helper.js +29 -0
  15. package/dist/helpers/money.helper.js.map +1 -0
  16. package/dist/helpers/pkg-version.helper.d.ts +1 -1
  17. package/dist/helpers/pkg-version.helper.js +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/plugins/sentry.plugin.d.ts.map +1 -1
  23. package/dist/plugins/sentry.plugin.js +0 -1
  24. package/dist/plugins/sentry.plugin.js.map +1 -1
  25. package/dist/plugins/swagger.plugin.js +1 -1
  26. package/dist/plugins/swagger.plugin.js.map +1 -1
  27. package/dist/routes/config/config.route.validate.plugin.d.ts.map +1 -1
  28. package/dist/routes/config/config.route.validate.plugin.js +15 -10
  29. package/dist/routes/config/config.route.validate.plugin.js.map +1 -1
  30. package/dist/routes/play/play.route.validate.plugin.d.ts +5 -4
  31. package/dist/routes/play/play.route.validate.plugin.d.ts.map +1 -1
  32. package/dist/routes/play/play.route.validate.plugin.js +21 -14
  33. package/dist/routes/play/play.route.validate.plugin.js.map +1 -1
  34. package/dist/routes/validate/validate.route.validate.plugin.d.ts.map +1 -1
  35. package/dist/routes/validate/validate.route.validate.plugin.js +2 -7
  36. package/dist/routes/validate/validate.route.validate.plugin.js.map +1 -1
  37. package/dist/schemas/config.schema.d.ts +3 -3
  38. package/dist/schemas/config.schema.js +8 -8
  39. package/dist/schemas/config.schema.js.map +1 -1
  40. package/dist/schemas/examples/config.schema.examples.d.ts.map +1 -1
  41. package/dist/schemas/examples/config.schema.examples.js +48 -12
  42. package/dist/schemas/examples/config.schema.examples.js.map +1 -1
  43. package/dist/schemas/examples/play.schema.examples.d.ts.map +1 -1
  44. package/dist/schemas/examples/play.schema.examples.js +41 -13
  45. package/dist/schemas/examples/play.schema.examples.js.map +1 -1
  46. package/dist/schemas/examples/validate.schema.examples.d.ts.map +1 -1
  47. package/dist/schemas/examples/validate.schema.examples.js +51 -39
  48. package/dist/schemas/examples/validate.schema.examples.js.map +1 -1
  49. package/dist/schemas/play.schema.d.ts +11 -11
  50. package/dist/schemas/play.schema.d.ts.map +1 -1
  51. package/dist/schemas/play.schema.js +22 -21
  52. package/dist/schemas/play.schema.js.map +1 -1
  53. package/dist/schemas/shared.d.ts +1 -1
  54. package/dist/schemas/shared.js +4 -4
  55. package/dist/schemas/shared.js.map +1 -1
  56. package/dist/schemas/validate.schema.d.ts +12 -7
  57. package/dist/schemas/validate.schema.d.ts.map +1 -1
  58. package/dist/schemas/validate.schema.js +17 -16
  59. package/dist/schemas/validate.schema.js.map +1 -1
  60. package/dist/test-utils.d.ts +1 -1
  61. package/dist/test-utils.js +1 -1
  62. package/package.json +7 -9
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.plugin.js","sourceRoot":"","sources":["../../plugins/sentry.plugin.ts"],"names":[],"mappings":";;;;;AAAA,qFAA2D;AAE3D,4DAAwD;AACxD,sDAAyD;AACzD,8DAA0D;AAE1D,MAAM,YAAY,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAElC,OAAO,CAAC,QAAQ,CAAC,wBAAa,EAAE;QAC5B,GAAG,EAAE,IAAA,mBAAM,EAAC,YAAY,EAAE,SAAS,CAAC;QACpC,WAAW,EAAE,IAAA,sBAAS,EAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC;QAC9D,gBAAgB,EAAE,UAAU,CAAC,IAAA,mBAAM,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,gBAAgB;QAC7E,eAAe,EAAE,KAAK;KACzB,CAAC,CAAA;IAEF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;QACzD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"sentry.plugin.js","sourceRoot":"","sources":["../../plugins/sentry.plugin.ts"],"names":[],"mappings":";;;;;AAAA,qFAA2D;AAE3D,4DAAwD;AACxD,sDAAyD;AACzD,8DAA0D;AAE1D,MAAM,YAAY,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAElC,OAAO,CAAC,QAAQ,CAAC,wBAAa,EAAE;QAC5B,GAAG,EAAE,IAAA,mBAAM,EAAC,YAAY,EAAE,SAAS,CAAC;QACpC,WAAW,EAAE,IAAA,sBAAS,EAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC;QAC9D,gBAAgB,EAAE,UAAU,CAAC,IAAA,mBAAM,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,gBAAgB;QAC7E,eAAe,EAAE,KAAK;KACzB,CAAC,CAAA;IAEF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,YAAY,CAAA"}
@@ -38,7 +38,7 @@ const swaggerPlugin = (0, fastify_helper_1.registerPlugin)(async (fastify) => {
38
38
  deepLinking: false,
39
39
  },
40
40
  theme: {
41
- title: `Swagger - ${gameConfig.gameTitle}`,
41
+ title: `Swagger - ${gameConfig.gameId}`,
42
42
  },
43
43
  });
44
44
  fastify.addSchema(shared_1.StakeSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"swagger.plugin.js","sourceRoot":"","sources":["../../plugins/swagger.plugin.ts"],"names":[],"mappings":";;;;;AAAA,+DAA6C;AAC7C,qEAAkD;AAElD,4DAAwD;AACxD,sDAAiD;AACjD,8DAA0D;AAC1D,sEAAiE;AACjE,gEAAuF;AACvF,4DAAiF;AACjF,4DAAiF;AACjF,wDAA2E;AAC3E,8CAE0B;AAC1B,gEAAuF;AAEvF,MAAM,aAAa,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACnD,IAAI,IAAA,sBAAS,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAAE,OAAM;IAExC,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAClC,MAAM,WAAW,GAAG,OAAO,CAAA;IAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACjC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAc,EAAE;QAC7B,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,IAAA,sCAAiB,GAAE;aAC/B;SACJ;KACJ,CAAC,CAAA;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAgB,EAAE;QAC/B,WAAW;QACX,QAAQ,EAAE;YACN,YAAY,EAAE,MAAM;YACpB,WAAW,EAAE,KAAK;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,aAAa,UAAU,CAAC,SAAS,EAAE;SAC7C;KACJ,CAAC,CAAA;IAEF,OAAO,CAAC,SAAS,CAAC,oBAAW,CAAC,CAAA;IAC9B,OAAO,CAAC,SAAS,CAAC,wBAAe,CAAC,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,mBAAU,CAAC,CAAA;IAC7B,OAAO,CAAC,SAAS,CAAC,2BAAkB,CAAC,CAAA;IACrC,OAAO,CAAC,SAAS,CAAC,0BAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,4BAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,+BAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,6BAAe,CAAC,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,uCAAqB,CAAC,CAAA;IACxC,OAAO,CAAC,SAAS,CAAC,qCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,mCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,iCAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,mCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,iCAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,uCAAqB,CAAC,CAAA;IACxC,OAAO,CAAC,SAAS,CAAC,qCAAmB,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA;AAEF,kBAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"swagger.plugin.js","sourceRoot":"","sources":["../../plugins/swagger.plugin.ts"],"names":[],"mappings":";;;;;AAAA,+DAA6C;AAC7C,qEAAkD;AAElD,4DAAwD;AACxD,sDAAiD;AACjD,8DAA0D;AAC1D,sEAAiE;AACjE,gEAAuF;AACvF,4DAAiF;AACjF,4DAAiF;AACjF,wDAA2E;AAC3E,8CAE0B;AAC1B,gEAAuF;AAEvF,MAAM,aAAa,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACnD,IAAI,IAAA,sBAAS,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAAE,OAAM;IAExC,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAClC,MAAM,WAAW,GAAG,OAAO,CAAA;IAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACjC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAc,EAAE;QAC7B,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,IAAA,sCAAiB,GAAE;aAC/B;SACJ;KACJ,CAAC,CAAA;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAgB,EAAE;QAC/B,WAAW;QACX,QAAQ,EAAE;YACN,YAAY,EAAE,MAAM;YACpB,WAAW,EAAE,KAAK;SACrB;QACD,KAAK,EAAE;YACH,KAAK,EAAE,aAAa,UAAU,CAAC,MAAM,EAAE;SAC1C;KACJ,CAAC,CAAA;IAEF,OAAO,CAAC,SAAS,CAAC,oBAAW,CAAC,CAAA;IAC9B,OAAO,CAAC,SAAS,CAAC,wBAAe,CAAC,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,mBAAU,CAAC,CAAA;IAC7B,OAAO,CAAC,SAAS,CAAC,2BAAkB,CAAC,CAAA;IACrC,OAAO,CAAC,SAAS,CAAC,0BAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,4BAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,+BAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,6BAAe,CAAC,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,uCAAqB,CAAC,CAAA;IACxC,OAAO,CAAC,SAAS,CAAC,qCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,mCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,iCAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,mCAAmB,CAAC,CAAA;IACtC,OAAO,CAAC,SAAS,CAAC,iCAAiB,CAAC,CAAA;IACpC,OAAO,CAAC,SAAS,CAAC,uCAAqB,CAAC,CAAA;IACxC,OAAO,CAAC,SAAS,CAAC,qCAAmB,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA;AAEF,kBAAe,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/config/config.route.validate.plugin.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,yBAAyB,mFAiE7B,CAAA;AAEF,eAAe,yBAAyB,CAAA"}
1
+ {"version":3,"file":"config.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/config/config.route.validate.plugin.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,yBAAyB,mFAuE7B,CAAA;AAEF,eAAe,yBAAyB,CAAA"}
@@ -19,32 +19,37 @@ const configRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fa
19
19
  if (payload.hasChoice && !payload.hasMeta) {
20
20
  throw new Error('hasChoice=true requires hasMeta=true');
21
21
  }
22
- if (payload.hasVariableLines) {
22
+ if (payload.hasMultiStake && payload.freeroundsAllowed !== false) {
23
+ throw new Error('freeroundsAllowed must be false when hasMultiStake=true');
24
+ }
25
+ if (payload.hasMultiStake && payload.hasValidate !== true) {
26
+ throw new Error('hasValidate must be true when hasMultiStake=true');
27
+ }
28
+ if (payload.hasVariableLevels) {
23
29
  if (!Array.isArray(payload.variableLevels) || payload.variableLevels.length === 0) {
24
- throw new Error('variableLevels must be a non-empty array when hasVariableLines=true');
30
+ throw new Error('variableLevels must be a non-empty array when hasVariableLevels=true');
25
31
  }
26
32
  if (payload.defaultLevel === undefined || !payload.variableLevels.includes(payload.defaultLevel)) {
27
- throw new Error('defaultLevel must be one of variableLevels when hasVariableLines=true');
33
+ throw new Error('defaultLevel must be one of variableLevels when hasVariableLevels=true');
28
34
  }
29
35
  if (payload.coinRatio !== undefined) {
30
- throw new Error('coinRatio must not be set when hasVariableLines=true');
36
+ throw new Error('coinRatio must not be set when hasVariableLevels=true');
31
37
  }
32
38
  }
33
39
  else {
34
40
  if (payload.coinRatio === undefined) {
35
- throw new Error('coinRatio is required when hasVariableLines=false');
41
+ throw new Error('coinRatio is required when hasVariableLevels=false');
36
42
  }
37
43
  if (payload.variableLevels !== undefined || payload.defaultLevel !== undefined) {
38
- throw new Error('variableLevels/defaultLevel must not be set when hasVariableLines=false');
44
+ throw new Error('variableLevels/defaultLevel must not be set when hasVariableLevels=false');
39
45
  }
40
46
  }
41
47
  if (payload.gameId !== gameConfig.gameId) {
42
48
  throw new Error('gameId in reply must match gameConfig.gameId');
43
49
  }
44
- if (payload.gameTitle !== gameConfig.gameTitle) {
45
- throw new Error('gameTitle in reply must match gameConfig.gameTitle');
46
- }
47
- if (payload.rtpVersion !== gameConfig.rtpVersion) {
50
+ // For single-RTP deployments gameConfig.rtpVersion is set and must match.
51
+ // Multi-RTP deployments omit it and rely on the path segment check below.
52
+ if (gameConfig.rtpVersion !== undefined && payload.rtpVersion !== gameConfig.rtpVersion) {
48
53
  throw new Error(`rtpVersion in reply ("${payload.rtpVersion}") must match gameConfig.rtpVersion ("${gameConfig.rtpVersion}")`);
49
54
  }
50
55
  const pathParams = request.params;
@@ -1 +1 @@
1
- {"version":3,"file":"config.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/config/config.route.validate.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/config/config.route.validate.plugin.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,13 @@ import { TGameConfig } from '../../helpers/config.helper';
2
2
  import { TMeta, TStake, TStakeMode } from '../../schemas/shared';
3
3
  export declare function validateStakes(stakes: TStake[] | undefined, gameConfig: TGameConfig, stakesMap: Map<string, TStakeMode>): void;
4
4
  export declare function validateTestData(testData: string | undefined): void;
5
- export declare function validateStepIndexConsistency(stepIndex: number, stakes: TStake[] | undefined, choice: number | undefined, gameConfig: TGameConfig): void;
6
- export declare function validateChoice(choice: number | undefined, gameConfig: TGameConfig): void;
5
+ export declare function validateStepIndexConsistency(stepIndex: number, stakes: TStake[] | undefined, choice: number | string | undefined, gameConfig: TGameConfig): void;
6
+ export declare function validateChoice(choice: number | string | undefined, gameConfig: TGameConfig): void;
7
7
  export declare function validateMeta(meta: TMeta | undefined, gameConfig: TGameConfig): void;
8
- export declare function validateFinishedInReply(finished: boolean, choices: number[] | undefined, gameConfig: TGameConfig): void;
9
- export declare function validateChoicesInReply(choices: number[] | undefined, gameConfig: TGameConfig): void;
8
+ export declare function validateFinishedInReply(finished: boolean, choices: (number | string)[] | undefined, gameConfig: TGameConfig): void;
9
+ export declare function validateChoicesInReply(choices: (number | string)[] | undefined, gameConfig: TGameConfig): void;
10
10
  export declare function validateMetaInReply(meta: TMeta | undefined, gameConfig: TGameConfig): void;
11
+ export declare function validateMaxWinInReply(hasMaxWin: boolean, finished: boolean): void;
11
12
  declare const playRouteValidatePlugin: (fastify: import("../../helpers/fastify.helper").FastifyTypebox) => Promise<void>;
12
13
  export default playRouteValidatePlugin;
13
14
  //# sourceMappingURL=play.route.validate.plugin.d.ts.map
@@ -1 +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;AAKxE,OAAO,EACH,KAAK,EAAiB,MAAM,EAAE,UAAU,EAC3C,MAAM,sBAAsB,CAAA;AAW7B,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,QAkDrC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,QAI5D;AAED,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,WAAW,QAiB1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAIjF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAI5E;AAED,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,UAAU,EAAE,WAAW,QAW1B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAO5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAInF;AAED,QAAA,MAAM,uBAAuB,mFAoC3B,CAAA;AAEF,eAAe,uBAAuB,CAAA"}
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;AAKxE,OAAO,EACH,KAAK,EAAiB,MAAM,EAAE,UAAU,EAC3C,MAAM,sBAAsB,CAAA;AAW7B,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,QAkDrC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,QAI5D;AAED,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,WAAW,QAiB1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAI1F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAI5E;AAED,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,EACxC,UAAU,EAAE,WAAW,QAW1B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAOvG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,QAInF;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,QAI1E;AAED,QAAA,MAAM,uBAAuB,mFAqC3B,CAAA;AAEF,eAAe,uBAAuB,CAAA"}
@@ -8,6 +8,7 @@ exports.validateMeta = validateMeta;
8
8
  exports.validateFinishedInReply = validateFinishedInReply;
9
9
  exports.validateChoicesInReply = validateChoicesInReply;
10
10
  exports.validateMetaInReply = validateMetaInReply;
11
+ exports.validateMaxWinInReply = validateMaxWinInReply;
11
12
  const config_helper_1 = require("../../helpers/config.helper");
12
13
  const env_helper_1 = require("../../helpers/env.helper");
13
14
  const errors_helper_1 = require("../../helpers/errors.helper");
@@ -41,13 +42,13 @@ function validateStakes(stakes, gameConfig, stakesMap) {
41
42
  if (stakeMode.multiple && stakeMode.maxQty !== undefined && stake.qty !== undefined && stake.qty > stakeMode.maxQty) {
42
43
  throw new CodedError(`Stake "${stake.name}" exceeds maxQty=${stakeMode.maxQty}`, errors_helper_1.EErrorCode.ValidationStakes);
43
44
  }
44
- if (!gameConfig.hasVariableLines && stake.level !== undefined) {
45
- throw new CodedError('Variable levels are not allowed when hasVariableLines=false', errors_helper_1.EErrorCode.ValidationStakes);
45
+ if (!gameConfig.hasVariableLevels && stake.level !== undefined) {
46
+ throw new CodedError('Variable levels are not allowed when hasVariableLevels=false', errors_helper_1.EErrorCode.ValidationStakes);
46
47
  }
47
- if (gameConfig.hasVariableLines && stake.level === undefined) {
48
- throw new CodedError('"level" is required in stakes when hasVariableLines=true', errors_helper_1.EErrorCode.ValidationStakes);
48
+ if (gameConfig.hasVariableLevels && stake.level === undefined) {
49
+ throw new CodedError('"level" is required in stakes when hasVariableLevels=true', errors_helper_1.EErrorCode.ValidationStakes);
49
50
  }
50
- if (gameConfig.hasVariableLines && !gameConfig.variableLevels.includes(stake.level)) {
51
+ if (gameConfig.hasVariableLevels && !gameConfig.variableLevels.includes(stake.level)) {
51
52
  throw new CodedError(`Stake "${stake.name}" level=${stake.level} is not in variableLevels`, errors_helper_1.EErrorCode.ValidationStakes);
52
53
  }
53
54
  if (!stakeMode.parametric && stake.params !== undefined) {
@@ -96,23 +97,28 @@ function validateFinishedInReply(finished, choices, gameConfig) {
96
97
  throw new CodedError('The game is not stepped. Round should be finished', errors_helper_1.EErrorCode.BusinessFinishedMismatch);
97
98
  }
98
99
  if (finished && choices !== undefined) {
99
- throw new CodedError('"choices" must be absent when results.finished=true', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
100
+ throw new CodedError('"choices" must be absent when finished=true', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
100
101
  }
101
102
  if (!finished && gameConfig.hasChoice && (choices === undefined || choices.length === 0)) {
102
- throw new CodedError('"choices" must be a non-empty array when results.finished=false', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
103
+ throw new CodedError('"choices" must be a non-empty array when finished=false', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
103
104
  }
104
105
  }
105
106
  function validateChoicesInReply(choices, gameConfig) {
106
107
  if (!gameConfig.hasChoice && choices !== undefined) {
107
- throw new CodedError('The game is not stepped. results.choices must be absent', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
108
+ throw new CodedError('The game is not stepped. choices must be absent', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
108
109
  }
109
110
  if (choices !== undefined && choices.length === 0) {
110
- throw new CodedError('results.choices must be a non-empty array (never [] or null)', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
111
+ throw new CodedError('choices must be a non-empty array (never [] or null)', errors_helper_1.EErrorCode.BusinessChoicesMismatch);
111
112
  }
112
113
  }
113
114
  function validateMetaInReply(meta, gameConfig) {
114
115
  if (!gameConfig.hasMeta && meta !== undefined) {
115
- throw new CodedError('The game does not have meta data. results.meta is not allowed', errors_helper_1.EErrorCode.ValidationMeta);
116
+ throw new CodedError('The game does not have meta data. meta is not allowed', errors_helper_1.EErrorCode.ValidationMeta);
117
+ }
118
+ }
119
+ function validateMaxWinInReply(hasMaxWin, finished) {
120
+ if (hasMaxWin && !finished) {
121
+ throw new CodedError('"finished" must be true when hasMaxWin=true (max-win closes the round)', errors_helper_1.EErrorCode.BusinessMaxWinMismatch);
116
122
  }
117
123
  }
118
124
  const playRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fastify) => {
@@ -134,11 +140,12 @@ const playRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fast
134
140
  }
135
141
  });
136
142
  fastify.addHook('preSerialization', (_request, _reply, payload, done) => {
137
- if (payload?.results) {
143
+ if (payload) {
138
144
  try {
139
- validateFinishedInReply(payload.results.finished, payload.results.choices, gameConfig);
140
- validateChoicesInReply(payload.results.choices, gameConfig);
141
- validateMetaInReply(payload.results.meta, gameConfig);
145
+ validateFinishedInReply(payload.finished, payload.choices, gameConfig);
146
+ validateChoicesInReply(payload.choices, gameConfig);
147
+ validateMetaInReply(payload.meta, gameConfig);
148
+ validateMaxWinInReply(payload.hasMaxWin, payload.finished);
142
149
  }
143
150
  catch (error) {
144
151
  const code = error instanceof CodedError ? error.code : errors_helper_1.EErrorCode.Unhandled;
@@ -1 +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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"}
1
+ {"version":3,"file":"play.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/play/play.route.validate.plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,2BAA2B,mFAkB/B,CAAA;AAEF,eAAe,2BAA2B,CAAA"}
1
+ {"version":3,"file":"validate.route.validate.plugin.d.ts","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,2BAA2B,mFAkB/B,CAAA;AAEF,eAAe,2BAA2B,CAAA"}
@@ -5,15 +5,10 @@ const errors_helper_1 = require("../../helpers/errors.helper");
5
5
  const fastify_helper_1 = require("../../helpers/fastify.helper");
6
6
  const play_route_validate_plugin_1 = require("../play/play.route.validate.plugin");
7
7
  function validateAccessibility(gameConfig) {
8
- if (!gameConfig.hasValidation) {
8
+ if (!gameConfig.hasValidate) {
9
9
  throw new Error("The game doesn't support validation");
10
10
  }
11
11
  }
12
- function validateLegacyMeta(metaPrivate, metaPublic, gameConfig) {
13
- if (!gameConfig.hasMeta && (metaPrivate !== undefined || metaPublic !== undefined)) {
14
- throw new Error('The game does not support meta data. metaPrivate and metaPublic are not allowed');
15
- }
16
- }
17
12
  const validateRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (fastify) => {
18
13
  const gameConfig = (0, config_helper_1.getGameConfig)();
19
14
  const stakesMap = new Map(gameConfig.stakeModes.map((stakeMode) => [stakeMode.name, stakeMode]));
@@ -22,7 +17,7 @@ const validateRouteValidatePlugin = (0, fastify_helper_1.registerPlugin)(async (
22
17
  try {
23
18
  validateAccessibility(gameConfig);
24
19
  (0, play_route_validate_plugin_1.validateStakes)(body.stakes, gameConfig, stakesMap);
25
- validateLegacyMeta(body.metaPrivate, body.metaPublic, gameConfig);
20
+ (0, play_route_validate_plugin_1.validateMeta)(body.meta, gameConfig);
26
21
  done();
27
22
  }
28
23
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":";;AAAA,+DAAwE;AACxE,+DAAwD;AACxD,iEAAwE;AAExE,mFAAmE;AAEnE,SAAS,qBAAqB,CAAC,UAAuB;IAClD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAC1D,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,WAA+B,EAAE,UAA8B,EAAE,UAAuB;IAChH,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;IACtG,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,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;YAEjE,IAAI,EAAE,CAAA;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAA,0BAAS,EAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,0BAAU,CAAC,cAAc,CAAC,CAAA;QACnG,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,2BAA2B,CAAA"}
1
+ {"version":3,"file":"validate.route.validate.plugin.js","sourceRoot":"","sources":["../../../routes/validate/validate.route.validate.plugin.ts"],"names":[],"mappings":";;AAAA,+DAAwE;AACxE,+DAAwD;AACxD,iEAAwE;AAExE,mFAAiF;AAEjF,SAAS,qBAAqB,CAAC,UAAuB;IAClD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAC1D,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,IAAI,EAAE,UAAU,CAAC,CAAA;YAEnC,IAAI,EAAE,CAAA;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAA,0BAAS,EAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,0BAAU,CAAC,cAAc,CAAC,CAAA;QACnG,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,kBAAe,2BAA2B,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import { Static, Type } from 'typebox';
2
2
  export declare const ConfigRequestSchema: Type.TObject<{}>;
3
3
  export declare const ConfigReplySchema: Type.TObject<{
4
- gameTitle: Type.TString;
5
4
  gameId: Type.TString;
6
5
  volatility: Type.TNumber;
7
6
  rtp: Type.TString;
@@ -10,20 +9,21 @@ export declare const ConfigReplySchema: Type.TObject<{
10
9
  hasChoice: Type.TBoolean;
11
10
  hasRestore: Type.TBoolean;
12
11
  hasMultiStake: Type.TBoolean;
13
- hasVariableLines: Type.TBoolean;
12
+ hasVariableLevels: Type.TBoolean;
14
13
  variableLevels: Type.TOptional<Type.TArray<Type.TNumber>>;
15
14
  defaultLevel: Type.TOptional<Type.TNumber>;
16
15
  coinRatio: Type.TOptional<Type.TNumber>;
17
16
  minWin: Type.TNumber;
18
17
  maxWin: Type.TNumber;
19
18
  freeroundsAllowed: Type.TBoolean;
19
+ hasValidate: Type.TBoolean;
20
20
  stakeModes: Type.TArray<Type.TObject<{
21
21
  name: Type.TString;
22
22
  type: Type.TEnum<[import("./shared").EStakeType.default, import("./shared").EStakeType.buy, import("./shared").EStakeType.bonusBet]>;
23
23
  bets: Type.TNumber;
24
24
  multiple: Type.TOptional<Type.TBoolean>;
25
25
  maxQty: Type.TOptional<Type.TInteger>;
26
- parametric: Type.TBoolean;
26
+ parametric: Type.TOptional<Type.TBoolean>;
27
27
  }>>;
28
28
  }>;
29
29
  export type TConfigRequest = Static<typeof ConfigRequestSchema>;
@@ -9,9 +9,6 @@ exports.ConfigRequestSchema = typebox_1.Type.Object({}, {
9
9
  additionalProperties: false,
10
10
  });
11
11
  exports.ConfigReplySchema = typebox_1.Type.Object({
12
- gameTitle: typebox_1.Type.String({
13
- description: 'Human-readable name of the game',
14
- }),
15
12
  gameId: typebox_1.Type.String({
16
13
  description: 'Unique game identifier, shared across all RTP versions of this game (e.g. "book-of-odin")',
17
14
  }),
@@ -39,19 +36,19 @@ exports.ConfigReplySchema = typebox_1.Type.Object({
39
36
  hasMultiStake: typebox_1.Type.Boolean({
40
37
  description: 'true if the game accepts more than one stake at once',
41
38
  }),
42
- hasVariableLines: typebox_1.Type.Boolean({
43
- description: 'true if the player can pick a number of paylines per spin',
39
+ hasVariableLevels: typebox_1.Type.Boolean({
40
+ description: 'true if the game has selectable bet levels e.g. paylines for slots, table id for roulette',
44
41
  }),
45
42
  variableLevels: typebox_1.Type.Optional(typebox_1.Type.Array(typebox_1.Type.Number({ exclusiveMinimum: 0 }), {
46
- description: 'Required when hasVariableLines=true; omit otherwise. Available payline numbers (literal values, e.g. [10, 20, 30, 40, 50])',
43
+ description: 'Required when hasVariableLevels=true; omit otherwise. Available bet levels the player can choose between (literal values, e.g. [10, 20, 30, 40, 50])',
47
44
  minItems: 1,
48
45
  })),
49
46
  defaultLevel: typebox_1.Type.Optional(typebox_1.Type.Number({
50
- description: 'Required when hasVariableLines=true; omit otherwise. Default selected line number (must be one of variableLevels)',
47
+ description: 'Required when hasVariableLevels=true; omit otherwise. Default selected bet level (must be one of variableLevels)',
51
48
  exclusiveMinimum: 0,
52
49
  })),
53
50
  coinRatio: typebox_1.Type.Optional(typebox_1.Type.Number({
54
- description: 'Required when hasVariableLines=false; omit otherwise. Ratio converting coins to currency units',
51
+ description: 'Required when hasVariableLevels=false; omit otherwise. Ratio converting coins to currency units',
55
52
  exclusiveMinimum: 0,
56
53
  })),
57
54
  minWin: typebox_1.Type.Number({
@@ -65,6 +62,9 @@ exports.ConfigReplySchema = typebox_1.Type.Object({
65
62
  freeroundsAllowed: typebox_1.Type.Boolean({
66
63
  description: 'true if the game supports free-rounds bonuses',
67
64
  }),
65
+ hasValidate: typebox_1.Type.Boolean({
66
+ description: 'true if RGS must call /validate before opening a round. Must be true when hasMultiStake=true',
67
+ }),
68
68
  stakeModes: typebox_1.Type.Array(shared_1.StakeModeSchema, {
69
69
  description: 'List of stake modes the game accepts in /play',
70
70
  minItems: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../schemas/config.schema.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,8EAAuE;AACvE,qCAA0C;AAE7B,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,SAAS,EAAE,cAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,iCAAiC;KACjD,CAAC;IACF,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,2FAA2F;KAC3G,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACjD,CAAC;IACF,GAAG,EAAE,cAAI,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,4EAA4E;QACzF,OAAO,EAAE,kBAAkB;KAC9B,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,8IAA8I;QAC3J,SAAS,EAAE,CAAC;KACf,CAAC;IACF,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,2EAA2E;KAC3F,CAAC;IACF,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,2EAA2E;KAC3F,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,2FAA2F;KAC3G,CAAC;IACF,aAAa,EAAE,cAAI,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,sDAAsD;KACtE,CAAC;IACF,gBAAgB,EAAE,cAAI,CAAC,OAAO,CAAC;QAC3B,WAAW,EAAE,2DAA2D;KAC3E,CAAC;IACF,cAAc,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,KAAK,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE;QAC3E,WAAW,EAAE,4HAA4H;QACzI,QAAQ,EAAE,CAAC;KACd,CAAC,CAAC;IACH,YAAY,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,mHAAmH;QAChI,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,SAAS,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QACjC,WAAW,EAAE,gGAAgG;QAC7G,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,CAAC;KACb,CAAC;IACF,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,oEAAoE;QACjF,gBAAgB,EAAE,CAAC;KACtB,CAAC;IACF,iBAAiB,EAAE,cAAI,CAAC,OAAO,CAAC;QAC5B,WAAW,EAAE,+CAA+C;KAC/D,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,KAAK,CAAC,wBAAe,EAAE;QACpC,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,CAAC;KACd,CAAC;CACL,EAAE;IACC,GAAG,EAAE,aAAa;IAClB,oBAAoB,EAAE,KAAK;IAC3B,YAAY,EAAE,4CAAmB;CACpC,CAAC,CAAA"}
1
+ {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../schemas/config.schema.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,8EAAuE;AACvE,qCAA0C;AAE7B,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,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,2FAA2F;KAC3G,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACjD,CAAC;IACF,GAAG,EAAE,cAAI,CAAC,MAAM,CAAC;QACb,WAAW,EAAE,4EAA4E;QACzF,OAAO,EAAE,kBAAkB;KAC9B,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,8IAA8I;QAC3J,SAAS,EAAE,CAAC;KACf,CAAC;IACF,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE,2EAA2E;KAC3F,CAAC;IACF,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,2EAA2E;KAC3F,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,2FAA2F;KAC3G,CAAC;IACF,aAAa,EAAE,cAAI,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,sDAAsD;KACtE,CAAC;IACF,iBAAiB,EAAE,cAAI,CAAC,OAAO,CAAC;QAC5B,WAAW,EAAE,6FAA6F;KAC7G,CAAC;IACF,cAAc,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,KAAK,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE;QAC3E,WAAW,EAAE,sJAAsJ;QACnK,QAAQ,EAAE,CAAC;KACd,CAAC,CAAC;IACH,YAAY,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,kHAAkH;QAC/H,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,SAAS,EAAE,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,MAAM,CAAC;QACjC,WAAW,EAAE,iGAAiG;QAC9G,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,CAAC;KACb,CAAC;IACF,MAAM,EAAE,cAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,oEAAoE;QACjF,gBAAgB,EAAE,CAAC;KACtB,CAAC;IACF,iBAAiB,EAAE,cAAI,CAAC,OAAO,CAAC;QAC5B,WAAW,EAAE,+CAA+C;KAC/D,CAAC;IACF,WAAW,EAAE,cAAI,CAAC,OAAO,CAAC;QACtB,WAAW,EAAE,8FAA8F;KAC9G,CAAC;IACF,UAAU,EAAE,cAAI,CAAC,KAAK,CAAC,wBAAe,EAAE;QACpC,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,CAAC;KACd,CAAC;CACL,EAAE;IACC,GAAG,EAAE,aAAa;IAClB,oBAAoB,EAAE,KAAK;IAC3B,YAAY,EAAE,4CAAmB;CACpC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/config.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,WAAW,CAAA;AAyCjD,eAAO,MAAM,mBAAmB,EAAE,SASjC,CAAA"}
1
+ {"version":3,"file":"config.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/config.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,WAAW,CAAA;AA0EjD,eAAO,MAAM,mBAAmB,EAAE,SAajC,CAAA"}
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.configReplyExamples = void 0;
4
4
  const shared_1 = require("../shared");
5
- const fixedLinesReply = {
6
- gameTitle: 'Book of Odin',
5
+ const fixedLevelsReply = {
7
6
  gameId: 'book-of-odin',
8
7
  volatility: 2.5,
9
8
  rtp: '96.17',
@@ -12,11 +11,12 @@ const fixedLinesReply = {
12
11
  hasChoice: true,
13
12
  hasRestore: true,
14
13
  hasMultiStake: false,
15
- hasVariableLines: false,
14
+ hasVariableLevels: false,
16
15
  coinRatio: 20,
17
16
  minWin: 0.1,
18
17
  maxWin: 10000,
19
18
  freeroundsAllowed: true,
19
+ hasValidate: false,
20
20
  stakeModes: [
21
21
  {
22
22
  name: 'default',
@@ -32,21 +32,57 @@ const fixedLinesReply = {
32
32
  },
33
33
  ],
34
34
  };
35
- const variableLinesReply = {
36
- ...fixedLinesReply,
37
- hasVariableLines: true,
35
+ const variableLevelsReply = {
36
+ ...fixedLevelsReply,
37
+ hasVariableLevels: true,
38
38
  variableLevels: [1, 3, 5, 7, 9, 10],
39
39
  defaultLevel: 9,
40
40
  coinRatio: undefined,
41
41
  };
42
+ // Per-contract invariants: hasMultiStake=true requires freeroundsAllowed=false and hasValidate=true
43
+ const multiStakeReply = {
44
+ gameId: 'roulette-classic',
45
+ volatility: 1,
46
+ rtp: '97.30',
47
+ rtpVersion: '97',
48
+ hasMeta: false,
49
+ hasChoice: false,
50
+ hasRestore: false,
51
+ hasMultiStake: true,
52
+ hasVariableLevels: false,
53
+ coinRatio: 1,
54
+ minWin: 0,
55
+ maxWin: 35,
56
+ freeroundsAllowed: false,
57
+ hasValidate: true,
58
+ stakeModes: [
59
+ {
60
+ name: 'straight',
61
+ type: shared_1.EStakeType.default,
62
+ bets: 1,
63
+ multiple: true,
64
+ maxQty: 37,
65
+ parametric: true,
66
+ },
67
+ {
68
+ name: 'red',
69
+ type: shared_1.EStakeType.default,
70
+ bets: 1,
71
+ },
72
+ ],
73
+ };
42
74
  exports.configReplyExamples = {
43
- fixedLines: {
44
- summary: 'Fixed-lines game (coinRatio)',
45
- value: fixedLinesReply,
75
+ fixedLevels: {
76
+ summary: 'Fixed-levels game (coinRatio)',
77
+ value: fixedLevelsReply,
78
+ },
79
+ variableLevels: {
80
+ summary: 'Variable-levels game (variableLevels + defaultLevel)',
81
+ value: variableLevelsReply,
46
82
  },
47
- variableLines: {
48
- summary: 'Variable-lines game (variableLevels + defaultLevel)',
49
- value: variableLinesReply,
83
+ multiStake: {
84
+ summary: 'Multi-stake game (hasMultiStake=true, freeroundsAllowed=false, hasValidate=true)',
85
+ value: multiStakeReply,
50
86
  },
51
87
  };
52
88
  //# sourceMappingURL=config.schema.examples.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.examples.js","sourceRoot":"","sources":["../../../schemas/examples/config.schema.examples.ts"],"names":[],"mappings":";;;AAAA,sCAAiD;AAEjD,MAAM,eAAe,GAAG;IACpB,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,GAAG;IACf,GAAG,EAAE,OAAO;IACZ,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;IACpB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,IAAI;IACvB,UAAU,EAAE;QACR;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,mBAAU,CAAC,OAAO;YACxB,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,KAAK;SACpB;QACD;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,mBAAU,CAAC,GAAG;YACpB,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,KAAK;SACpB;KACJ;CACJ,CAAA;AAED,MAAM,kBAAkB,GAAG;IACvB,GAAG,eAAe;IAClB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnC,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,SAAS;CACvB,CAAA;AAEY,QAAA,mBAAmB,GAAc;IAC1C,UAAU,EAAE;QACR,OAAO,EAAE,8BAA8B;QACvC,KAAK,EAAE,eAAe;KACzB;IACD,aAAa,EAAE;QACX,OAAO,EAAE,qDAAqD;QAC9D,KAAK,EAAE,kBAAkB;KAC5B;CACJ,CAAA"}
1
+ {"version":3,"file":"config.schema.examples.js","sourceRoot":"","sources":["../../../schemas/examples/config.schema.examples.ts"],"names":[],"mappings":";;;AAAA,sCAAiD;AAEjD,MAAM,gBAAgB,GAAG;IACrB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,GAAG;IACf,GAAG,EAAE,OAAO;IACZ,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE;QACR;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,mBAAU,CAAC,OAAO;YACxB,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,KAAK;SACpB;QACD;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,mBAAU,CAAC,GAAG;YACpB,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,KAAK;SACpB;KACJ;CACJ,CAAA;AAED,MAAM,mBAAmB,GAAG;IACxB,GAAG,gBAAgB;IACnB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnC,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,SAAS;CACvB,CAAA;AAED,oGAAoG;AACpG,MAAM,eAAe,GAAG;IACpB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,OAAO;IACZ,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,KAAK;IACxB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE;QACR;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,mBAAU,CAAC,OAAO;YACxB,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,mBAAU,CAAC,OAAO;YACxB,IAAI,EAAE,CAAC;SACV;KACJ;CACJ,CAAA;AAEY,QAAA,mBAAmB,GAAc;IAC1C,WAAW,EAAE;QACT,OAAO,EAAE,+BAA+B;QACxC,KAAK,EAAE,gBAAgB;KAC1B;IACD,cAAc,EAAE;QACZ,OAAO,EAAE,sDAAsD;QAC/D,KAAK,EAAE,mBAAmB;KAC7B;IACD,UAAU,EAAE;QACR,OAAO,EAAE,kFAAkF;QAC3F,KAAK,EAAE,eAAe;KACzB;CACJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"play.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/play.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AA6ErC,eAAO,MAAM,mBAAmB,EAAE,SAiBjC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,SAS/B,CAAA"}
1
+ {"version":3,"file":"play.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/play.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAmGrC,eAAO,MAAM,mBAAmB,EAAE,SAiBjC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,SAiB/B,CAAA"}
@@ -49,27 +49,47 @@ const finishedReply = {
49
49
  { value: 0.1234567 },
50
50
  { value: 0.9876543 },
51
51
  ],
52
- results: {
53
- coins: 250,
54
- cashWin: 2.5,
55
- finished: true,
56
- },
52
+ winCoins: 250,
53
+ winCash: 2.5,
54
+ finished: true,
55
+ hasMaxWin: false,
57
56
  };
58
57
  const continuesWithChoiceReply = {
59
58
  gameResponse: {},
60
59
  rng: [
61
60
  { value: 0.1234567 },
62
61
  ],
63
- results: {
64
- cashWin: 0,
65
- finished: false,
66
- choices: [1, 3, 5],
67
- meta: {
68
- public: {},
69
- private: {},
70
- },
62
+ winCash: 0,
63
+ finished: false,
64
+ hasMaxWin: false,
65
+ choices: [1, 3, 5],
66
+ meta: {
67
+ public: {},
68
+ private: {},
71
69
  },
72
70
  };
71
+ const continuationStepReply = {
72
+ gameResponse: {},
73
+ rng: [
74
+ { value: 0.5555555 },
75
+ { value: 0.2222222 },
76
+ ],
77
+ winCoins: 500,
78
+ winCash: 5.0,
79
+ finished: true,
80
+ hasMaxWin: false,
81
+ choice: 3,
82
+ };
83
+ const maxWinReply = {
84
+ gameResponse: {},
85
+ rng: [
86
+ { value: 0.0001 },
87
+ ],
88
+ winCoins: 100000,
89
+ winCash: 10000,
90
+ finished: true,
91
+ hasMaxWin: true,
92
+ };
73
93
  exports.playRequestExamples = {
74
94
  openingStep: {
75
95
  summary: 'Opening step (round open)',
@@ -97,5 +117,13 @@ exports.playReplyExamples = {
97
117
  summary: 'Round continues with a choice',
98
118
  value: continuesWithChoiceReply,
99
119
  },
120
+ continuationStep: {
121
+ summary: 'Continuation step reply (echoes choice)',
122
+ value: continuationStepReply,
123
+ },
124
+ maxWin: {
125
+ summary: 'Max-win hit (hasMaxWin=true, finished=true)',
126
+ value: maxWinReply,
127
+ },
100
128
  };
101
129
  //# sourceMappingURL=play.schema.examples.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"play.schema.examples.js","sourceRoot":"","sources":["../../../schemas/examples/play.schema.examples.ts"],"names":[],"mappings":";;;AAEA,MAAM,kBAAkB,GAAG;IACvB,MAAM,EAAE,KAAK;IACb,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,CAAC;SACX,CAAC;CACL,CAAA;AAED,MAAM,uBAAuB,GAAG;IAC5B,MAAM,EAAE,KAAK;IACb,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,IAAI,EAAE;QACF,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC5B,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;KAChC;CACJ,CAAA;AAED,MAAM,iBAAiB,GAAG;IACtB,MAAM,EAAE,KAAK;IACb,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,EAAE;YACV,GAAG,EAAE,CAAC;SACT,EAAE;YACC,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,EAAE;YACV,GAAG,EAAE,EAAE;SACV,CAAC;CACL,CAAA;AAED,MAAM,YAAY,GAAG;IACjB,GAAG,kBAAkB;IACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QACjB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;KACxC,CAAC;CACL,CAAA;AAED,MAAM,aAAa,GAAG;IAClB,YAAY,EAAE,EAAE;IAChB,GAAG,EAAE;QACD,EAAE,KAAK,EAAE,SAAS,EAAE;QACpB,EAAE,KAAK,EAAE,SAAS,EAAE;KACvB;IACD,OAAO,EAAE;QACL,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,IAAI;KACjB;CACJ,CAAA;AAED,MAAM,wBAAwB,GAAG;IAC7B,YAAY,EAAE,EAAE;IAChB,GAAG,EAAE;QACD,EAAE,KAAK,EAAE,SAAS,EAAE;KACvB;IACD,OAAO,EAAE;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACd;KACJ;CACJ,CAAA;AAEY,QAAA,mBAAmB,GAAc;IAC1C,WAAW,EAAE;QACT,OAAO,EAAE,2BAA2B;QACpC,KAAK,EAAE,kBAAkB;KAC5B;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE,qCAAqC;QAC9C,KAAK,EAAE,uBAAuB;KACjC;IACD,UAAU,EAAE;QACR,OAAO,EAAE,kCAAkC;QAC3C,KAAK,EAAE,iBAAiB;KAC3B;IACD,KAAK,EAAE;QACH,OAAO,EAAE,kCAAkC;QAC3C,KAAK,EAAE,YAAY;KACtB;CACJ,CAAA;AAEY,QAAA,iBAAiB,GAAc;IACxC,QAAQ,EAAE;QACN,OAAO,EAAE,4BAA4B;QACrC,KAAK,EAAE,aAAa;KACvB;IACD,mBAAmB,EAAE;QACjB,OAAO,EAAE,+BAA+B;QACxC,KAAK,EAAE,wBAAwB;KAClC;CACJ,CAAA"}
1
+ {"version":3,"file":"play.schema.examples.js","sourceRoot":"","sources":["../../../schemas/examples/play.schema.examples.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/validate.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AA0ErC,eAAO,MAAM,uBAAuB,EAAE,SAqBrC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,SAKnC,CAAA"}
1
+ {"version":3,"file":"validate.schema.examples.d.ts","sourceRoot":"","sources":["../../../schemas/examples/validate.schema.examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAmFrC,eAAO,MAAM,uBAAuB,EAAE,SAqBrC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,SASnC,CAAA"}