@volorio/games-core 0.2.0
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/README.md +20 -0
- package/dist/src/index.d.ts +122 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +123 -0
- package/dist/src/index.js.map +1 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @volorio/games-core
|
|
2
|
+
|
|
3
|
+
Shared Volorio Games protocol and domain contract types.
|
|
4
|
+
|
|
5
|
+
This package is provider-free and renderer-free. It defines the stable envelopes used by Volorio game clients, gateways, runtimes, and SDK packages.
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { createGameActionEnvelope, createGameEventEnvelope } from "@volorio/games-core";
|
|
9
|
+
|
|
10
|
+
const action = createGameActionEnvelope({
|
|
11
|
+
actionId: "act_1",
|
|
12
|
+
gameInstanceId: "game_1",
|
|
13
|
+
playerId: "player_1",
|
|
14
|
+
type: "ROLL_DICE",
|
|
15
|
+
payload: {},
|
|
16
|
+
});
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Client actions are intents only. Server-side runtime remains authoritative for random numbers, state versions, scores, and results.
|
|
20
|
+
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export declare const VOLORIO_GAME_PROTOCOL_VERSION: "2026-08-22";
|
|
2
|
+
export type VolorioGameProtocolVersion = typeof VOLORIO_GAME_PROTOCOL_VERSION;
|
|
3
|
+
export type VolorioGameRole = "PLAYER" | "SPECTATOR" | "HOST" | "MODERATOR";
|
|
4
|
+
export type VolorioGameSessionStatus = "CREATED" | "WAITING_FOR_PLAYERS" | "READY" | "STARTING" | "RUNNING" | "PAUSED" | "FINISHED" | "ABORTED" | "EXPIRED";
|
|
5
|
+
export type VolorioGameRendererType = "HTML5" | "REACT_NATIVE" | "UNITY" | "UNREAL";
|
|
6
|
+
export type VolorioGameRendererEngine = "PHASER" | "CANVAS" | "NATIVE" | "UNITY" | "UNREAL";
|
|
7
|
+
export type VolorioGameErrorCode = "UNAUTHENTICATED" | "FORBIDDEN" | "RATE_LIMITED" | "STATE_CONFLICT" | "DUPLICATE_ACTION" | "INVALID_ACTION" | "SESSION_NOT_RUNNING" | "PAYLOAD_TOO_LARGE" | "SERVER_ERROR";
|
|
8
|
+
export declare const volorioGameProductIds: readonly ["games_catalog", "games_session", "games_minute", "games_premium", "games_leaderboard"];
|
|
9
|
+
export type VolorioGameProductId = (typeof volorioGameProductIds)[number];
|
|
10
|
+
export interface VolorioGameManifest {
|
|
11
|
+
gameId: string;
|
|
12
|
+
version: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
rendererType: VolorioGameRendererType;
|
|
16
|
+
rendererEngine: VolorioGameRendererEngine;
|
|
17
|
+
minPlayers: number;
|
|
18
|
+
maxPlayers: number;
|
|
19
|
+
orientation: "portrait" | "landscape" | "adaptive";
|
|
20
|
+
capabilities: {
|
|
21
|
+
voice?: boolean;
|
|
22
|
+
chat?: boolean;
|
|
23
|
+
gifts?: boolean;
|
|
24
|
+
spectators?: boolean;
|
|
25
|
+
};
|
|
26
|
+
platforms: Array<"web" | "ios" | "android" | "react_native">;
|
|
27
|
+
assets?: string[];
|
|
28
|
+
bundleUrl?: string;
|
|
29
|
+
status: "DRAFT" | "INTERNAL" | "BETA" | "ACTIVE" | "DEPRECATED" | "DISABLED";
|
|
30
|
+
}
|
|
31
|
+
export interface VolorioGameTokenClaims {
|
|
32
|
+
subject: string;
|
|
33
|
+
projectId: string;
|
|
34
|
+
roomId: string;
|
|
35
|
+
gameInstanceId: string;
|
|
36
|
+
role: VolorioGameRole;
|
|
37
|
+
permissions: string[];
|
|
38
|
+
issuedAt: number;
|
|
39
|
+
expiresAt: number;
|
|
40
|
+
tokenId: string;
|
|
41
|
+
}
|
|
42
|
+
export interface VolorioGameActionEnvelope<TPayload = unknown> {
|
|
43
|
+
protocolVersion: VolorioGameProtocolVersion;
|
|
44
|
+
actionId: string;
|
|
45
|
+
gameInstanceId: string;
|
|
46
|
+
playerId: string;
|
|
47
|
+
type: string;
|
|
48
|
+
expectedVersion?: number;
|
|
49
|
+
sequence?: number;
|
|
50
|
+
sentAt: string;
|
|
51
|
+
payload: TPayload;
|
|
52
|
+
}
|
|
53
|
+
export interface VolorioGameEventEnvelope<TPayload = unknown> {
|
|
54
|
+
protocolVersion: VolorioGameProtocolVersion;
|
|
55
|
+
eventId: string;
|
|
56
|
+
projectId: string;
|
|
57
|
+
roomId: string;
|
|
58
|
+
gameId: string;
|
|
59
|
+
gameVersion: string;
|
|
60
|
+
gameInstanceId: string;
|
|
61
|
+
type: string;
|
|
62
|
+
stateVersion: number;
|
|
63
|
+
occurredAt: string;
|
|
64
|
+
payload: TPayload;
|
|
65
|
+
}
|
|
66
|
+
export interface VolorioGameSnapshot<TState = unknown> {
|
|
67
|
+
protocolVersion: VolorioGameProtocolVersion;
|
|
68
|
+
gameInstanceId: string;
|
|
69
|
+
stateVersion: number;
|
|
70
|
+
createdAt: string;
|
|
71
|
+
state: TState;
|
|
72
|
+
}
|
|
73
|
+
export interface VolorioGameProtocolError {
|
|
74
|
+
protocolVersion: VolorioGameProtocolVersion;
|
|
75
|
+
code: VolorioGameErrorCode;
|
|
76
|
+
message: string;
|
|
77
|
+
actionId?: string;
|
|
78
|
+
gameInstanceId?: string;
|
|
79
|
+
stateVersion?: number;
|
|
80
|
+
retryable: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface CreateVolorioGameActionEnvelopeInput<TPayload> {
|
|
83
|
+
actionId: string;
|
|
84
|
+
gameInstanceId: string;
|
|
85
|
+
playerId: string;
|
|
86
|
+
type: string;
|
|
87
|
+
expectedVersion?: number;
|
|
88
|
+
sequence?: number;
|
|
89
|
+
sentAt?: string;
|
|
90
|
+
payload: TPayload;
|
|
91
|
+
}
|
|
92
|
+
export interface CreateVolorioGameEventEnvelopeInput<TPayload> {
|
|
93
|
+
eventId: string;
|
|
94
|
+
projectId: string;
|
|
95
|
+
roomId: string;
|
|
96
|
+
gameId: string;
|
|
97
|
+
gameVersion: string;
|
|
98
|
+
gameInstanceId: string;
|
|
99
|
+
type: string;
|
|
100
|
+
stateVersion: number;
|
|
101
|
+
occurredAt?: string;
|
|
102
|
+
payload: TPayload;
|
|
103
|
+
}
|
|
104
|
+
export declare function createGameActionEnvelope<TPayload>(input: CreateVolorioGameActionEnvelopeInput<TPayload>): VolorioGameActionEnvelope<TPayload>;
|
|
105
|
+
export declare function createGameEventEnvelope<TPayload>(input: CreateVolorioGameEventEnvelopeInput<TPayload>): VolorioGameEventEnvelope<TPayload>;
|
|
106
|
+
export declare function createGameSnapshot<TState>(input: {
|
|
107
|
+
gameInstanceId: string;
|
|
108
|
+
stateVersion: number;
|
|
109
|
+
createdAt?: string;
|
|
110
|
+
state: TState;
|
|
111
|
+
}): VolorioGameSnapshot<TState>;
|
|
112
|
+
export declare function createGameProtocolError(input: {
|
|
113
|
+
code: VolorioGameErrorCode;
|
|
114
|
+
message: string;
|
|
115
|
+
actionId?: string;
|
|
116
|
+
gameInstanceId?: string;
|
|
117
|
+
stateVersion?: number;
|
|
118
|
+
retryable?: boolean;
|
|
119
|
+
}): VolorioGameProtocolError;
|
|
120
|
+
export declare function isGameActionEnvelope(value: unknown): value is VolorioGameActionEnvelope;
|
|
121
|
+
export declare function parseGameActionEnvelope<TPayload = unknown>(value: string | Uint8Array | unknown): VolorioGameActionEnvelope<TPayload>;
|
|
122
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
export const VOLORIO_GAME_PROTOCOL_VERSION = "2026-08-22";
|
|
2
|
+
export const volorioGameProductIds = [
|
|
3
|
+
"games_catalog",
|
|
4
|
+
"games_session",
|
|
5
|
+
"games_minute",
|
|
6
|
+
"games_premium",
|
|
7
|
+
"games_leaderboard",
|
|
8
|
+
];
|
|
9
|
+
export function createGameActionEnvelope(input) {
|
|
10
|
+
assertNonEmpty(input.actionId, "actionId");
|
|
11
|
+
assertNonEmpty(input.gameInstanceId, "gameInstanceId");
|
|
12
|
+
assertNonEmpty(input.playerId, "playerId");
|
|
13
|
+
assertNonEmpty(input.type, "type");
|
|
14
|
+
if (input.expectedVersion !== undefined) {
|
|
15
|
+
assertNonNegativeInteger(input.expectedVersion, "expectedVersion");
|
|
16
|
+
}
|
|
17
|
+
if (input.sequence !== undefined) {
|
|
18
|
+
assertNonNegativeInteger(input.sequence, "sequence");
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
protocolVersion: VOLORIO_GAME_PROTOCOL_VERSION,
|
|
22
|
+
actionId: input.actionId,
|
|
23
|
+
gameInstanceId: input.gameInstanceId,
|
|
24
|
+
playerId: input.playerId,
|
|
25
|
+
type: input.type,
|
|
26
|
+
expectedVersion: input.expectedVersion,
|
|
27
|
+
sequence: input.sequence,
|
|
28
|
+
sentAt: input.sentAt ?? new Date().toISOString(),
|
|
29
|
+
payload: input.payload,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function createGameEventEnvelope(input) {
|
|
33
|
+
assertNonEmpty(input.eventId, "eventId");
|
|
34
|
+
assertNonEmpty(input.projectId, "projectId");
|
|
35
|
+
assertNonEmpty(input.roomId, "roomId");
|
|
36
|
+
assertNonEmpty(input.gameId, "gameId");
|
|
37
|
+
assertNonEmpty(input.gameVersion, "gameVersion");
|
|
38
|
+
assertNonEmpty(input.gameInstanceId, "gameInstanceId");
|
|
39
|
+
assertNonEmpty(input.type, "type");
|
|
40
|
+
assertPositiveInteger(input.stateVersion, "stateVersion");
|
|
41
|
+
return {
|
|
42
|
+
protocolVersion: VOLORIO_GAME_PROTOCOL_VERSION,
|
|
43
|
+
eventId: input.eventId,
|
|
44
|
+
projectId: input.projectId,
|
|
45
|
+
roomId: input.roomId,
|
|
46
|
+
gameId: input.gameId,
|
|
47
|
+
gameVersion: input.gameVersion,
|
|
48
|
+
gameInstanceId: input.gameInstanceId,
|
|
49
|
+
type: input.type,
|
|
50
|
+
stateVersion: input.stateVersion,
|
|
51
|
+
occurredAt: input.occurredAt ?? new Date().toISOString(),
|
|
52
|
+
payload: input.payload,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function createGameSnapshot(input) {
|
|
56
|
+
assertNonEmpty(input.gameInstanceId, "gameInstanceId");
|
|
57
|
+
assertPositiveInteger(input.stateVersion, "stateVersion");
|
|
58
|
+
return {
|
|
59
|
+
protocolVersion: VOLORIO_GAME_PROTOCOL_VERSION,
|
|
60
|
+
gameInstanceId: input.gameInstanceId,
|
|
61
|
+
stateVersion: input.stateVersion,
|
|
62
|
+
createdAt: input.createdAt ?? new Date().toISOString(),
|
|
63
|
+
state: input.state,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function createGameProtocolError(input) {
|
|
67
|
+
assertNonEmpty(input.message, "message");
|
|
68
|
+
if (input.stateVersion !== undefined) {
|
|
69
|
+
assertNonNegativeInteger(input.stateVersion, "stateVersion");
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
protocolVersion: VOLORIO_GAME_PROTOCOL_VERSION,
|
|
73
|
+
code: input.code,
|
|
74
|
+
message: input.message,
|
|
75
|
+
actionId: input.actionId,
|
|
76
|
+
gameInstanceId: input.gameInstanceId,
|
|
77
|
+
stateVersion: input.stateVersion,
|
|
78
|
+
retryable: input.retryable ?? defaultRetryable(input.code),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function isGameActionEnvelope(value) {
|
|
82
|
+
if (!isRecord(value))
|
|
83
|
+
return false;
|
|
84
|
+
return value.protocolVersion === VOLORIO_GAME_PROTOCOL_VERSION &&
|
|
85
|
+
typeof value.actionId === "string" &&
|
|
86
|
+
typeof value.gameInstanceId === "string" &&
|
|
87
|
+
typeof value.playerId === "string" &&
|
|
88
|
+
typeof value.type === "string" &&
|
|
89
|
+
"payload" in value;
|
|
90
|
+
}
|
|
91
|
+
export function parseGameActionEnvelope(value) {
|
|
92
|
+
const parsed = typeof value === "string" || value instanceof Uint8Array ? parseJson(value) : value;
|
|
93
|
+
if (!isGameActionEnvelope(parsed)) {
|
|
94
|
+
throw new Error("invalid_game_action_envelope");
|
|
95
|
+
}
|
|
96
|
+
return parsed;
|
|
97
|
+
}
|
|
98
|
+
function parseJson(value) {
|
|
99
|
+
const text = value instanceof Uint8Array ? new TextDecoder().decode(value) : value;
|
|
100
|
+
return JSON.parse(text);
|
|
101
|
+
}
|
|
102
|
+
function isRecord(value) {
|
|
103
|
+
return typeof value === "object" && value !== null;
|
|
104
|
+
}
|
|
105
|
+
function defaultRetryable(code) {
|
|
106
|
+
return code === "RATE_LIMITED" || code === "STATE_CONFLICT" || code === "SERVER_ERROR";
|
|
107
|
+
}
|
|
108
|
+
function assertNonEmpty(value, field) {
|
|
109
|
+
if (value.trim().length === 0) {
|
|
110
|
+
throw new Error(`${field}_required`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function assertPositiveInteger(value, field) {
|
|
114
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
115
|
+
throw new Error(`${field}_must_be_positive_integer`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function assertNonNegativeInteger(value, field) {
|
|
119
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
120
|
+
throw new Error(`${field}_must_be_non_negative_integer`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@volorio/games-core",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Volorio Games shared protocol, state, role, snapshot, and error types.",
|
|
6
|
+
"main": "dist/src/index.js",
|
|
7
|
+
"types": "dist/src/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/src/index.d.ts",
|
|
11
|
+
"default": "./dist/src/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/src",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public",
|
|
20
|
+
"registry": "https://registry.npmjs.org/"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
24
|
+
"test": "pnpm build && rm -rf dist-test && tsc -p tsconfig.json --outDir dist-test && node --test dist-test/test/*.js",
|
|
25
|
+
"pack:local": "pnpm build && npm pack --pack-destination dist"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@volorio/core": "^0.2.0"
|
|
29
|
+
}
|
|
30
|
+
}
|