@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.
- package/CHANGELOG.md +34 -0
- package/MIGRATION.md +206 -1
- package/README.md +38 -16
- package/dist/helpers/config.helper.d.ts +8 -3
- package/dist/helpers/config.helper.d.ts.map +1 -1
- package/dist/helpers/config.helper.js +11 -8
- package/dist/helpers/config.helper.js.map +1 -1
- package/dist/helpers/errors.helper.d.ts +1 -0
- package/dist/helpers/errors.helper.d.ts.map +1 -1
- package/dist/helpers/errors.helper.js +1 -0
- package/dist/helpers/errors.helper.js.map +1 -1
- package/dist/helpers/money.helper.d.ts +13 -0
- package/dist/helpers/money.helper.d.ts.map +1 -0
- package/dist/helpers/money.helper.js +29 -0
- package/dist/helpers/money.helper.js.map +1 -0
- package/dist/helpers/pkg-version.helper.d.ts +1 -1
- package/dist/helpers/pkg-version.helper.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/sentry.plugin.d.ts.map +1 -1
- package/dist/plugins/sentry.plugin.js +0 -1
- package/dist/plugins/sentry.plugin.js.map +1 -1
- package/dist/plugins/swagger.plugin.js +1 -1
- package/dist/plugins/swagger.plugin.js.map +1 -1
- package/dist/routes/config/config.route.validate.plugin.d.ts.map +1 -1
- package/dist/routes/config/config.route.validate.plugin.js +15 -10
- package/dist/routes/config/config.route.validate.plugin.js.map +1 -1
- package/dist/routes/play/play.route.validate.plugin.d.ts +5 -4
- package/dist/routes/play/play.route.validate.plugin.d.ts.map +1 -1
- package/dist/routes/play/play.route.validate.plugin.js +21 -14
- package/dist/routes/play/play.route.validate.plugin.js.map +1 -1
- package/dist/routes/validate/validate.route.validate.plugin.d.ts.map +1 -1
- package/dist/routes/validate/validate.route.validate.plugin.js +2 -7
- package/dist/routes/validate/validate.route.validate.plugin.js.map +1 -1
- package/dist/schemas/config.schema.d.ts +3 -3
- package/dist/schemas/config.schema.js +8 -8
- package/dist/schemas/config.schema.js.map +1 -1
- package/dist/schemas/examples/config.schema.examples.d.ts.map +1 -1
- package/dist/schemas/examples/config.schema.examples.js +48 -12
- package/dist/schemas/examples/config.schema.examples.js.map +1 -1
- package/dist/schemas/examples/play.schema.examples.d.ts.map +1 -1
- package/dist/schemas/examples/play.schema.examples.js +41 -13
- package/dist/schemas/examples/play.schema.examples.js.map +1 -1
- package/dist/schemas/examples/validate.schema.examples.d.ts.map +1 -1
- package/dist/schemas/examples/validate.schema.examples.js +51 -39
- package/dist/schemas/examples/validate.schema.examples.js.map +1 -1
- package/dist/schemas/play.schema.d.ts +11 -11
- package/dist/schemas/play.schema.d.ts.map +1 -1
- package/dist/schemas/play.schema.js +22 -21
- package/dist/schemas/play.schema.js.map +1 -1
- package/dist/schemas/shared.d.ts +1 -1
- package/dist/schemas/shared.js +4 -4
- package/dist/schemas/shared.js.map +1 -1
- package/dist/schemas/validate.schema.d.ts +12 -7
- package/dist/schemas/validate.schema.d.ts.map +1 -1
- package/dist/schemas/validate.schema.js +17 -16
- package/dist/schemas/validate.schema.js.map +1 -1
- package/dist/test-utils.d.ts +1 -1
- package/dist/test-utils.js +1 -1
- 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,
|
|
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.
|
|
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,
|
|
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,
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
45
|
-
|
|
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":";;AAAA,+DAA2D;AAC3D,+DAAwD;AACxD,iEAAwE;AAIxE,MAAM,yBAAyB,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAA;IAElC,OAAO,CAAC,OAAO,CAAe,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC;gBACD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;oBACrC,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACvD,MAAM,IAAI,KAAK,CAAC,oEAAoE,SAAS,CAAC,IAAI,GAAG,CAAC,CAAA;oBAC1G,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACxD,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,CAAC,IAAI,yCAAyC,CAAC,CAAA;oBAC3F,CAAC;gBACL,CAAC,CAAC,CAAA;gBAEF,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBAC3D,CAAC;gBAED,IAAI,OAAO,CAAC,
|
|
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,
|
|
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.
|
|
45
|
-
throw new CodedError('Variable levels are not allowed when
|
|
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.
|
|
48
|
-
throw new CodedError('"level" is required in stakes when
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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('
|
|
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.
|
|
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
|
|
143
|
+
if (payload) {
|
|
138
144
|
try {
|
|
139
|
-
validateFinishedInReply(payload.
|
|
140
|
-
validateChoicesInReply(payload.
|
|
141
|
-
validateMetaInReply(payload.
|
|
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":";;AAkBA,wCAqDC;AAED,4CAIC;AAED,oEAqBC;AAED,wCAIC;AAED,oCAIC;AAED,0DAcC;AAED,wDAOC;AAED,kDAIC;
|
|
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":"
|
|
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.
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
43
|
-
description: 'true if the
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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;
|
|
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
|
|
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
|
-
|
|
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
|
|
36
|
-
...
|
|
37
|
-
|
|
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
|
-
|
|
44
|
-
summary: 'Fixed-
|
|
45
|
-
value:
|
|
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
|
-
|
|
48
|
-
summary: '
|
|
49
|
-
value:
|
|
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,
|
|
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;
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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,
|
|
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;
|
|
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"}
|