@flayerlabs/gamemode-client 0.2.0 → 0.3.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 +19 -6
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/live.d.ts +8 -1
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +81 -2
- package/dist/live.js.map +1 -1
- package/dist/mock.d.ts +6 -1
- package/dist/mock.d.ts.map +1 -1
- package/dist/mock.js +33 -0
- package/dist/mock.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +14 -0
- package/src/live.ts +92 -1
- package/src/mock.ts +39 -0
package/README.md
CHANGED
|
@@ -86,14 +86,23 @@ const gameMode = await joinEconomy({
|
|
|
86
86
|
})
|
|
87
87
|
|
|
88
88
|
const stop = gameMode.economy.subscribe(renderAllowance)
|
|
89
|
+
const { ticket } = await gameMode.joinTicket()
|
|
90
|
+
|
|
91
|
+
const socket = new WebSocket('wss://gate.example/game/live')
|
|
92
|
+
socket.addEventListener('open', () => {
|
|
93
|
+
socket.send(JSON.stringify({ type: 'join', ticket }))
|
|
94
|
+
})
|
|
89
95
|
```
|
|
90
96
|
|
|
91
97
|
`joinEconomy()` signs the player into the SDK gate and provides launch and spending capabilities.
|
|
92
98
|
It does not send gameplay to your server or let the browser add points. Your game server must
|
|
93
|
-
|
|
99
|
+
verify the short-lived join ticket, run authoritative gameplay and use the gate's internal award
|
|
100
|
+
route.
|
|
94
101
|
|
|
95
|
-
The
|
|
96
|
-
|
|
102
|
+
The default ticket audience is the gate origin. Pass an explicitly registered game-server origin to
|
|
103
|
+
`joinTicket()` only when the socket runs on another origin. Send the ticket in the first socket
|
|
104
|
+
message, not in the URL. It proves the wallet without exposing the SDK gate session or the server's
|
|
105
|
+
award token.
|
|
97
106
|
|
|
98
107
|
Call `stop()`, `gameMode.dispose()` and `embedded.dispose()` when the iframe closes.
|
|
99
108
|
|
|
@@ -105,12 +114,14 @@ Call `stop()`, `gameMode.dispose()` and `embedded.dispose()` when the iframe clo
|
|
|
105
114
|
- `send` for proposed game actions
|
|
106
115
|
- `now` for the server-corrected clock
|
|
107
116
|
- `launch` for fixed launch details
|
|
117
|
+
- `terms` for the round's fixed point ceiling, wallet cap, point rate and dollar pricing
|
|
108
118
|
- `economy` for earned, held, spent and available allowance
|
|
109
119
|
- `market` and `identity` for data supplied by the trusted parent
|
|
110
120
|
- `presence` and `social` for connected-player counts and cosmetic reactions
|
|
111
121
|
|
|
112
|
-
`EconomyRoom` provides the same launch, connection, economy, market, identity, presence and
|
|
113
|
-
capabilities. It leaves out gameplay views and
|
|
122
|
+
`EconomyRoom` provides the same launch, terms, connection, economy, market, identity, presence and
|
|
123
|
+
social capabilities, plus `joinTicket()` for a creator game server. It leaves out gameplay views and
|
|
124
|
+
`send()`.
|
|
114
125
|
|
|
115
126
|
Use [`replayMarket`](https://github.com/flayerlabs/gamemode-sdk/blob/main/packages/client/src/replay-market.ts)
|
|
116
127
|
to build market presentation without a live chain.
|
|
@@ -121,7 +132,9 @@ Read the [trusted platform integration guide](https://github.com/flayerlabs/game
|
|
|
121
132
|
before implementing `serveEmbeddedGame`, `Host` or a production `joinRoom` call.
|
|
122
133
|
|
|
123
134
|
The [quiz example](https://github.com/flayerlabs/gamemode-sdk/tree/main/examples/quiz) shows a live
|
|
124
|
-
room
|
|
135
|
+
rules room. The [external-server example](https://github.com/flayerlabs/gamemode-sdk/tree/main/examples/external-server)
|
|
136
|
+
shows two browser players connecting to a creator WebSocket and receiving allowance through the
|
|
137
|
+
authenticated awards route.
|
|
125
138
|
|
|
126
139
|
The [generated game source](https://github.com/flayerlabs/gamemode-sdk/blob/main/packages/cli/src/scaffold.ts)
|
|
127
140
|
shows the offline room.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GameModule, PlayerId } from '@flayerlabs/gamemode-spec';
|
|
2
|
-
import type { BuyFailure, ConnectionState, EconomyBalance, LaunchContext, MarketState, PlayerIdentity, PresenceState, Reaction } from '@flayerlabs/gamemode-spec/live';
|
|
3
|
-
export type { BuyFailure, ConnectionState, EconomyBalance, LaunchContext, MarketPrice, MarketState, MarketTrade, PlayerIdentity, PresenceState, Reaction, } from '@flayerlabs/gamemode-spec/live';
|
|
2
|
+
import type { BuyFailure, ConnectionState, EconomyBalance, LaunchContext, MarketState, PlayerJoinTicket, PlayerIdentity, PresenceState, Reaction, RoundTerms } from '@flayerlabs/gamemode-spec/live';
|
|
3
|
+
export type { BuyFailure, ConnectionState, EconomyBalance, LaunchContext, MarketPrice, MarketState, MarketTrade, PlayerJoinTicket, PlayerIdentity, PresenceState, Reaction, RoundTerms, } from '@flayerlabs/gamemode-spec/live';
|
|
4
4
|
export { joinEconomy, joinRoom, NoWallet } from './live.js';
|
|
5
5
|
export { connectEmbeddedGame, serveEmbeddedGame } from './embed.js';
|
|
6
6
|
export type { ConnectEmbeddedGameOptions, EmbeddedGameConnection, ServeEmbeddedGameOptions, } from './embed.js';
|
|
@@ -29,6 +29,8 @@ export interface Room<PublicView, PlayerView, Action> {
|
|
|
29
29
|
now(): number;
|
|
30
30
|
/** Fixed launch facts. Live rooms do not resolve until these have arrived. */
|
|
31
31
|
readonly launch: Readable<LaunchContext>;
|
|
32
|
+
/** The round's fixed economic ceilings and rate. Also settled before a live room resolves. */
|
|
33
|
+
readonly terms: Readable<RoundTerms>;
|
|
32
34
|
readonly connection: Readable<ConnectionState>;
|
|
33
35
|
readonly economy: Economy;
|
|
34
36
|
readonly market: Readable<MarketState>;
|
|
@@ -40,7 +42,10 @@ export interface Room<PublicView, PlayerView, Action> {
|
|
|
40
42
|
/** Platform and spending capabilities for a game that owns its gameplay server. */
|
|
41
43
|
export interface EconomyRoom {
|
|
42
44
|
now(): number;
|
|
45
|
+
/** Prove this signed-in wallet to the authoritative game server without exposing the gate session. */
|
|
46
|
+
joinTicket(audience?: string): Promise<PlayerJoinTicket>;
|
|
43
47
|
readonly launch: Readable<LaunchContext>;
|
|
48
|
+
readonly terms: Readable<RoundTerms>;
|
|
44
49
|
readonly connection: Readable<ConnectionState>;
|
|
45
50
|
readonly economy: Economy;
|
|
46
51
|
readonly market: Readable<MarketState>;
|
|
@@ -139,6 +144,10 @@ export interface MockOptions<Config> {
|
|
|
139
144
|
player?: PlayerId;
|
|
140
145
|
/** Points-to-wei, only so the buy button has something to show. */
|
|
141
146
|
weiPerPoint?: bigint;
|
|
147
|
+
/** The launch's per-wallet ceiling. Defaults to exactly what a flawless round would earn. */
|
|
148
|
+
walletCapWei?: bigint;
|
|
149
|
+
/** The creator's one economic knob. The mock derives a matching ETH price from `weiPerPoint`. */
|
|
150
|
+
pointsPerDollar?: number;
|
|
142
151
|
launch?: LaunchContext;
|
|
143
152
|
platform?: ClientPlatform;
|
|
144
153
|
/** The same cosmetic catalogue as live. Omitted disables reactions. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAiBrC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsJ/D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAsE,EACtE,OAA4B;IAE5B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/live.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BuyResult, ClientPlatform, EconomyRoom, Room } from './index.js';
|
|
2
2
|
import type { SpendAuthorisation } from '@flayerlabs/gamemode-spec/embed';
|
|
3
|
-
import { type LaunchContext, type MarketState } from '@flayerlabs/gamemode-spec/live';
|
|
3
|
+
import { type LaunchContext, type MarketState, type RoundTerms } from '@flayerlabs/gamemode-spec/live';
|
|
4
4
|
/**
|
|
5
5
|
* The page the game is embedded in, as far as the game is concerned.
|
|
6
6
|
*
|
|
@@ -52,6 +52,13 @@ export interface LiveOptions {
|
|
|
52
52
|
export declare function joinRoom<PublicView, PlayerView, Action>(options: LiveOptions): Promise<Room<PublicView, PlayerView, Action>>;
|
|
53
53
|
/** Join the SDK economy without exposing its gameplay action and view methods. */
|
|
54
54
|
export declare function joinEconomy(options: LiveOptions): Promise<EconomyRoom>;
|
|
55
|
+
/**
|
|
56
|
+
* Exported for its unit test, not for consumers — `index.ts` deliberately does not re-export it.
|
|
57
|
+
*
|
|
58
|
+
* Zero is rejected rather than carried, exactly as `economyFrom` rejects a zero rate: the gate
|
|
59
|
+
* sends zero only when it could not read a round, and a rate of zero is a failure, not a price.
|
|
60
|
+
*/
|
|
61
|
+
export declare function termsFrom(input: unknown): RoundTerms | null;
|
|
55
62
|
export declare function marketFrom(input: unknown): MarketState | null;
|
|
56
63
|
export declare function immutableLaunch(launch: LaunchContext): LaunchContext;
|
|
57
64
|
/** No wallet is connected to the page. A game should ask the player to connect one. */
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,cAAc,EAEd,WAAW,EAEX,IAAI,EAIL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,cAAc,EAEd,WAAW,EAEX,IAAI,EAIL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,WAAW,EAIhB,KAAK,UAAU,EAIhB,MAAM,gCAAgC,CAAC;AAIxC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,IAAI;IACnB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtD,iGAAiG;IACjG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IACtE,wFAAwF;IACxF,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,2FAA2F;IAC3F,GAAG,CACD,aAAa,EAAE,aAAa,EAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,EAC3C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,gGAAgG;AAChG,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,iGAAiG;IACjG,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAMD,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAC3D,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAE/C;AAeD,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAe5E;AAscD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAmC3D;AAqBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAgD7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAEpE;AAQD,uFAAuF;AACvF,qBAAa,QAAS,SAAQ,KAAK;;CAKlC"}
|
package/dist/live.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { LIVE_PROTOCOL_VERSION, isReactionId, isLaunchContext, } from '@flayerlabs/gamemode-spec/live';
|
|
1
|
+
import { LIVE_PROTOCOL_VERSION, isPlayerJoinTicket, isReactionId, isLaunchContext, } from '@flayerlabs/gamemode-spec/live';
|
|
2
2
|
import { Signal } from './signal.js';
|
|
3
3
|
import { CachedIdentityResolver } from './identity.js';
|
|
4
4
|
/** Long enough not to hammer a gate that is restarting, short enough to feel instant. */
|
|
5
5
|
const RECONNECT_MS = 1_000;
|
|
6
6
|
const FIRST_SNAPSHOT_TIMEOUT_MS = 15_000;
|
|
7
7
|
export async function joinRoom(options) {
|
|
8
|
+
return startRoom(options);
|
|
9
|
+
}
|
|
10
|
+
async function startRoom(options) {
|
|
8
11
|
const room = new LiveRoom(options);
|
|
9
12
|
try {
|
|
10
13
|
await room.start();
|
|
@@ -17,10 +20,12 @@ export async function joinRoom(options) {
|
|
|
17
20
|
}
|
|
18
21
|
/** Join the SDK economy without exposing its gameplay action and view methods. */
|
|
19
22
|
export async function joinEconomy(options) {
|
|
20
|
-
const room = await
|
|
23
|
+
const room = await startRoom(options);
|
|
21
24
|
return {
|
|
22
25
|
now: () => room.now(),
|
|
26
|
+
joinTicket: (audience) => room.playerJoinTicket(audience),
|
|
23
27
|
launch: room.launch,
|
|
28
|
+
terms: room.terms,
|
|
24
29
|
connection: room.connection,
|
|
25
30
|
economy: room.economy,
|
|
26
31
|
market: room.market,
|
|
@@ -47,6 +52,7 @@ class LiveRoom {
|
|
|
47
52
|
rejectInitialSnapshot;
|
|
48
53
|
connectionSignal = new Signal('connecting');
|
|
49
54
|
launchSignal;
|
|
55
|
+
termsSignal = new Signal(null);
|
|
50
56
|
economySignal = new Signal(emptyEconomy());
|
|
51
57
|
marketSignal;
|
|
52
58
|
presenceSignal = new Signal({ connectedCount: 1 });
|
|
@@ -95,6 +101,11 @@ class LiveRoom {
|
|
|
95
101
|
if (this.launchSignal.current() === null) {
|
|
96
102
|
throw new Error('the room did not provide launch context');
|
|
97
103
|
}
|
|
104
|
+
// Terms only ever come from the gate, so unlike launch there is no parent-supplied fallback.
|
|
105
|
+
// Failing here beats throwing later from whatever menu first reads the round's ceiling.
|
|
106
|
+
if (this.termsSignal.current() === null) {
|
|
107
|
+
throw new Error('the room did not provide round terms');
|
|
108
|
+
}
|
|
98
109
|
}
|
|
99
110
|
catch (error) {
|
|
100
111
|
this.dispose();
|
|
@@ -185,6 +196,13 @@ class LiveRoom {
|
|
|
185
196
|
if (this.launchSignal.current() === null && isLaunchContext(frame.launch)) {
|
|
186
197
|
this.launchSignal.set(immutableLaunch(frame.launch));
|
|
187
198
|
}
|
|
199
|
+
// Set once: terms are immutable for the round, so a later malformed frame cannot corrupt a
|
|
200
|
+
// value that has already arrived.
|
|
201
|
+
if (this.termsSignal.current() === null) {
|
|
202
|
+
const terms = termsFrom(frame.terms);
|
|
203
|
+
if (terms)
|
|
204
|
+
this.termsSignal.set(terms);
|
|
205
|
+
}
|
|
188
206
|
const presence = presenceFrom(frame.presence);
|
|
189
207
|
if (presence)
|
|
190
208
|
this.presenceSignal.set(presence);
|
|
@@ -223,6 +241,13 @@ class LiveRoom {
|
|
|
223
241
|
listener(value);
|
|
224
242
|
}),
|
|
225
243
|
};
|
|
244
|
+
terms = {
|
|
245
|
+
current: () => this.requiredTerms(),
|
|
246
|
+
subscribe: (listener) => this.termsSignal.subscribe((value) => {
|
|
247
|
+
if (value)
|
|
248
|
+
listener(value);
|
|
249
|
+
}),
|
|
250
|
+
};
|
|
226
251
|
connection = {
|
|
227
252
|
current: () => this.connectionSignal.current(),
|
|
228
253
|
subscribe: (listener) => this.connectionSignal.subscribe(listener),
|
|
@@ -249,6 +274,12 @@ class LiveRoom {
|
|
|
249
274
|
now() {
|
|
250
275
|
return Date.now() + this.skew;
|
|
251
276
|
}
|
|
277
|
+
async playerJoinTicket(audience) {
|
|
278
|
+
const response = await this.post(`/rounds/${this.options.roundId}/join-ticket`, audience === undefined ? {} : { audience });
|
|
279
|
+
if (!isPlayerJoinTicket(response))
|
|
280
|
+
throw new Error('the gate returned an invalid player join ticket');
|
|
281
|
+
return response;
|
|
282
|
+
}
|
|
252
283
|
economy = {
|
|
253
284
|
current: () => this.economySignal.current(),
|
|
254
285
|
subscribe: (listener) => this.economySignal.subscribe(listener),
|
|
@@ -366,6 +397,7 @@ class LiveRoom {
|
|
|
366
397
|
this.reactionListeners.clear();
|
|
367
398
|
this.connectionSignal.clear();
|
|
368
399
|
this.launchSignal.clear();
|
|
400
|
+
this.termsSignal.clear();
|
|
369
401
|
this.economySignal.clear();
|
|
370
402
|
this.marketSignal.clear();
|
|
371
403
|
this.presenceSignal.clear();
|
|
@@ -391,6 +423,12 @@ class LiveRoom {
|
|
|
391
423
|
throw new Error('launch context is not ready');
|
|
392
424
|
return launch;
|
|
393
425
|
}
|
|
426
|
+
requiredTerms() {
|
|
427
|
+
const terms = this.termsSignal.current();
|
|
428
|
+
if (terms === null)
|
|
429
|
+
throw new Error('round terms are not ready');
|
|
430
|
+
return terms;
|
|
431
|
+
}
|
|
394
432
|
/** Claims are idempotent by request id, so a lost response can be retried exactly once. */
|
|
395
433
|
async postClaim(path, body) {
|
|
396
434
|
try {
|
|
@@ -445,6 +483,47 @@ function economyFrom(input) {
|
|
|
445
483
|
return null;
|
|
446
484
|
}
|
|
447
485
|
}
|
|
486
|
+
/**
|
|
487
|
+
* Exported for its unit test, not for consumers — `index.ts` deliberately does not re-export it.
|
|
488
|
+
*
|
|
489
|
+
* Zero is rejected rather than carried, exactly as `economyFrom` rejects a zero rate: the gate
|
|
490
|
+
* sends zero only when it could not read a round, and a rate of zero is a failure, not a price.
|
|
491
|
+
*/
|
|
492
|
+
export function termsFrom(input) {
|
|
493
|
+
if (typeof input !== 'object' || input === null)
|
|
494
|
+
return null;
|
|
495
|
+
const value = input;
|
|
496
|
+
const decimal = /^(0|[1-9][0-9]*)$/;
|
|
497
|
+
if (typeof value.walletCapWei !== 'string' ||
|
|
498
|
+
!decimal.test(value.walletCapWei) ||
|
|
499
|
+
typeof value.weiPerPoint !== 'string' ||
|
|
500
|
+
!decimal.test(value.weiPerPoint))
|
|
501
|
+
return null;
|
|
502
|
+
try {
|
|
503
|
+
const walletCapWei = BigInt(value.walletCapWei);
|
|
504
|
+
const weiPerPoint = BigInt(value.weiPerPoint);
|
|
505
|
+
const { maxPointsPerPlayer, pointsPerDollar, usdPerEth } = value;
|
|
506
|
+
if (walletCapWei <= 0n ||
|
|
507
|
+
weiPerPoint <= 0n ||
|
|
508
|
+
typeof maxPointsPerPlayer !== 'number' ||
|
|
509
|
+
!Number.isSafeInteger(maxPointsPerPlayer) ||
|
|
510
|
+
maxPointsPerPlayer <= 0 ||
|
|
511
|
+
// Prices, not counts, so these are finite rather than integral. Both are still positive: a
|
|
512
|
+
// round priced at zero dollars an ETH is a round whose rate cannot mean anything.
|
|
513
|
+
typeof pointsPerDollar !== 'number' ||
|
|
514
|
+
!Number.isFinite(pointsPerDollar) ||
|
|
515
|
+
pointsPerDollar <= 0 ||
|
|
516
|
+
typeof usdPerEth !== 'number' ||
|
|
517
|
+
!Number.isFinite(usdPerEth) ||
|
|
518
|
+
usdPerEth <= 0) {
|
|
519
|
+
return null;
|
|
520
|
+
}
|
|
521
|
+
return Object.freeze({ maxPointsPerPlayer, walletCapWei, weiPerPoint, pointsPerDollar, usdPerEth });
|
|
522
|
+
}
|
|
523
|
+
catch {
|
|
524
|
+
return null;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
448
527
|
function presenceFrom(input) {
|
|
449
528
|
if (typeof input !== 'object' || input === null)
|
|
450
529
|
return null;
|
package/dist/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
package/dist/mock.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type GameModule } from '@flayerlabs/gamemode-spec';
|
|
2
2
|
import type { Economy, MockOptions, Room, SendResult, Snapshot, Social } from './index.js';
|
|
3
|
-
import { type ConnectionState, type LaunchContext, type MarketState, type PresenceState } from '@flayerlabs/gamemode-spec/live';
|
|
3
|
+
import { type ConnectionState, type LaunchContext, type MarketState, type PresenceState, type RoundTerms } from '@flayerlabs/gamemode-spec/live';
|
|
4
4
|
import { CachedIdentityResolver } from './identity.js';
|
|
5
5
|
export declare class MockRoom<Config, State, Event, Action, PublicView, PlayerView> implements Room<PublicView, PlayerView, Action> {
|
|
6
6
|
private readonly game;
|
|
@@ -19,6 +19,7 @@ export declare class MockRoom<Config, State, Event, Action, PublicView, PlayerVi
|
|
|
19
19
|
private disposed;
|
|
20
20
|
private readonly connectionSignal;
|
|
21
21
|
private readonly launchSignal;
|
|
22
|
+
private readonly termsSignal;
|
|
22
23
|
private readonly presenceSignal;
|
|
23
24
|
private readonly marketSignal;
|
|
24
25
|
private readonly stopMarket;
|
|
@@ -32,6 +33,10 @@ export declare class MockRoom<Config, State, Event, Action, PublicView, PlayerVi
|
|
|
32
33
|
current: () => LaunchContext;
|
|
33
34
|
subscribe: (listener: (value: LaunchContext) => void) => () => void;
|
|
34
35
|
};
|
|
36
|
+
readonly terms: {
|
|
37
|
+
current: () => RoundTerms;
|
|
38
|
+
subscribe: (listener: (value: RoundTerms) => void) => () => void;
|
|
39
|
+
};
|
|
35
40
|
readonly connection: {
|
|
36
41
|
current: () => ConnectionState;
|
|
37
42
|
subscribe: (listener: (value: ConnectionState) => void) => () => void;
|
package/dist/mock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AACtF,OAAO,KAAK,EAA0B,OAAO,EAAgB,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACjI,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AACtF,OAAO,KAAK,EAA0B,OAAO,EAAgB,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACjI,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAElB,KAAK,UAAU,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAavD,qBAAa,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CACxE,YAAW,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;IAuB7C,OAAO,CAAC,QAAQ,CAAC,IAAI;IArBvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8D;IACpF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4D;IACtF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,OAAO,CAAM;IACrB,+FAA+F;IAC/F,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4C;IAC7E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoD;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAGrB,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EACvF,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC;IAiE9B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;IASZ,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ/E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAW/C,GAAG,IAAI,MAAM;IAMb,QAAQ,CAAC,MAAM;;8BAES,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;MACpD;IAEF,QAAQ,CAAC,KAAK;;8BAEU,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;MACjD;IAEF,QAAQ,CAAC,UAAU;;8BAEK,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;MACtD;IAEF,QAAQ,CAAC,MAAM;;8BAES,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI;MAClD;IAEF,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAE1C,QAAQ,CAAC,QAAQ;;8BAEO,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;MACpD;IAEF,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAQ3B;IAEH,OAAO,CAAC,cAAc;IAItB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAkDvB;IAEF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAUrB;IAEF,OAAO,IAAI,IAAI;CAchB"}
|
package/dist/mock.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Signal } from './signal.js';
|
|
|
5
5
|
import { CachedIdentityResolver } from './identity.js';
|
|
6
6
|
/** How often the mock looks for a deadline that has fallen due. */
|
|
7
7
|
const TICK_MS = 100;
|
|
8
|
+
const WEI_PER_ETH = 1000000000000000000n;
|
|
8
9
|
/** Long enough to see a spinner, short enough not to be annoying while building. */
|
|
9
10
|
const FAKE_SIGN_MS = 150;
|
|
10
11
|
const FAKE_PENDING_MS = 250;
|
|
@@ -27,6 +28,7 @@ export class MockRoom {
|
|
|
27
28
|
disposed = false;
|
|
28
29
|
connectionSignal = new Signal('connected');
|
|
29
30
|
launchSignal;
|
|
31
|
+
termsSignal;
|
|
30
32
|
presenceSignal = new Signal({ connectedCount: 1 });
|
|
31
33
|
marketSignal;
|
|
32
34
|
stopMarket;
|
|
@@ -55,6 +57,32 @@ export class MockRoom {
|
|
|
55
57
|
booksCloseAt: opensAt + (options.roundMs ?? 120_000),
|
|
56
58
|
};
|
|
57
59
|
this.launchSignal = new Signal(Object.freeze({ ...launch }));
|
|
60
|
+
// The real gate refuses to adopt a launch whose flawless round would earn more than one wallet
|
|
61
|
+
// may spend. Defaulting the cap to exactly that payout, and refusing anything under it, keeps
|
|
62
|
+
// the mock from letting a game pass locally on numbers the gate would reject.
|
|
63
|
+
const maxPointsPerPlayer = game.rewardBounds(options.config).maxPointsPerPlayer;
|
|
64
|
+
const flawlessRoundWei = BigInt(maxPointsPerPlayer) * this.weiPerPoint;
|
|
65
|
+
const walletCapWei = options.walletCapWei ?? flawlessRoundWei;
|
|
66
|
+
if (walletCapWei < flawlessRoundWei) {
|
|
67
|
+
throw new RangeError('walletCapWei must cover a flawless round, or the gate would refuse this launch');
|
|
68
|
+
}
|
|
69
|
+
// The gate derives its rate from these two, so the mock runs the identity backwards from
|
|
70
|
+
// whatever rate it was given. Reporting three numbers that do not agree would let a menu built
|
|
71
|
+
// against the mock show a price the live gate never produces.
|
|
72
|
+
const pointsPerDollar = options.pointsPerDollar ?? 100;
|
|
73
|
+
if (!Number.isFinite(pointsPerDollar) || pointsPerDollar <= 0) {
|
|
74
|
+
throw new RangeError('pointsPerDollar must be a positive finite number');
|
|
75
|
+
}
|
|
76
|
+
const pointsPerEth = WEI_PER_ETH / this.weiPerPoint;
|
|
77
|
+
if (pointsPerEth <= 0n || pointsPerEth > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
78
|
+
throw new RangeError('weiPerPoint does not produce representable round terms');
|
|
79
|
+
}
|
|
80
|
+
const usdPerEth = Number(pointsPerEth) / pointsPerDollar;
|
|
81
|
+
const roundTrip = WEI_PER_ETH / BigInt(Math.round(usdPerEth * pointsPerDollar));
|
|
82
|
+
if (roundTrip !== this.weiPerPoint) {
|
|
83
|
+
throw new RangeError('weiPerPoint must round-trip through gate pricing terms');
|
|
84
|
+
}
|
|
85
|
+
this.termsSignal = new Signal(Object.freeze({ maxPointsPerPlayer, walletCapWei, weiPerPoint: this.weiPerPoint, pointsPerDollar, usdPerEth }));
|
|
58
86
|
this.marketSignal = new Signal(options.platform?.market?.current() ?? { status: 'unavailable', prices: [], trades: [], marketCapUsd: null });
|
|
59
87
|
this.stopMarket = options.platform?.market?.subscribe((state) => this.marketSignal.set(state)) ?? (() => { });
|
|
60
88
|
this.identity = new CachedIdentityResolver(options.platform?.identity);
|
|
@@ -101,6 +129,10 @@ export class MockRoom {
|
|
|
101
129
|
current: () => this.launchSignal.current(),
|
|
102
130
|
subscribe: (listener) => this.launchSignal.subscribe(listener),
|
|
103
131
|
};
|
|
132
|
+
terms = {
|
|
133
|
+
current: () => this.termsSignal.current(),
|
|
134
|
+
subscribe: (listener) => this.termsSignal.subscribe(listener),
|
|
135
|
+
};
|
|
104
136
|
connection = {
|
|
105
137
|
current: () => this.connectionSignal.current(),
|
|
106
138
|
subscribe: (listener) => this.connectionSignal.subscribe(listener),
|
|
@@ -207,6 +239,7 @@ export class MockRoom {
|
|
|
207
239
|
this.connectionSignal.set('ended');
|
|
208
240
|
this.connectionSignal.clear();
|
|
209
241
|
this.launchSignal.clear();
|
|
242
|
+
this.termsSignal.clear();
|
|
210
243
|
this.presenceSignal.clear();
|
|
211
244
|
this.stopMarket();
|
|
212
245
|
this.marketSignal.clear();
|
package/dist/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flayerlabs/gamemode-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Browser and mock-room client for Flaunch Game Modes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Flayer Labs",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"ws": "^8.21.3"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@flayerlabs/gamemode-spec": "^0.
|
|
36
|
+
"@flayerlabs/gamemode-spec": "^0.3.0"
|
|
37
37
|
},
|
|
38
38
|
"types": "./dist/index.d.ts",
|
|
39
39
|
"exports": {
|
package/src/index.ts
CHANGED
|
@@ -5,9 +5,11 @@ import type {
|
|
|
5
5
|
EconomyBalance,
|
|
6
6
|
LaunchContext,
|
|
7
7
|
MarketState,
|
|
8
|
+
PlayerJoinTicket,
|
|
8
9
|
PlayerIdentity,
|
|
9
10
|
PresenceState,
|
|
10
11
|
Reaction,
|
|
12
|
+
RoundTerms,
|
|
11
13
|
} from '@flayerlabs/gamemode-spec/live';
|
|
12
14
|
import { MockRoom } from './mock.js';
|
|
13
15
|
|
|
@@ -19,9 +21,11 @@ export type {
|
|
|
19
21
|
MarketPrice,
|
|
20
22
|
MarketState,
|
|
21
23
|
MarketTrade,
|
|
24
|
+
PlayerJoinTicket,
|
|
22
25
|
PlayerIdentity,
|
|
23
26
|
PresenceState,
|
|
24
27
|
Reaction,
|
|
28
|
+
RoundTerms,
|
|
25
29
|
} from '@flayerlabs/gamemode-spec/live';
|
|
26
30
|
|
|
27
31
|
export { joinEconomy, joinRoom, NoWallet } from './live.js';
|
|
@@ -60,6 +64,8 @@ export interface Room<PublicView, PlayerView, Action> {
|
|
|
60
64
|
|
|
61
65
|
/** Fixed launch facts. Live rooms do not resolve until these have arrived. */
|
|
62
66
|
readonly launch: Readable<LaunchContext>;
|
|
67
|
+
/** The round's fixed economic ceilings and rate. Also settled before a live room resolves. */
|
|
68
|
+
readonly terms: Readable<RoundTerms>;
|
|
63
69
|
readonly connection: Readable<ConnectionState>;
|
|
64
70
|
readonly economy: Economy;
|
|
65
71
|
readonly market: Readable<MarketState>;
|
|
@@ -74,7 +80,11 @@ export interface Room<PublicView, PlayerView, Action> {
|
|
|
74
80
|
export interface EconomyRoom {
|
|
75
81
|
now(): number;
|
|
76
82
|
|
|
83
|
+
/** Prove this signed-in wallet to the authoritative game server without exposing the gate session. */
|
|
84
|
+
joinTicket(audience?: string): Promise<PlayerJoinTicket>;
|
|
85
|
+
|
|
77
86
|
readonly launch: Readable<LaunchContext>;
|
|
87
|
+
readonly terms: Readable<RoundTerms>;
|
|
78
88
|
readonly connection: Readable<ConnectionState>;
|
|
79
89
|
readonly economy: Economy;
|
|
80
90
|
readonly market: Readable<MarketState>;
|
|
@@ -165,6 +175,10 @@ export interface MockOptions<Config> {
|
|
|
165
175
|
player?: PlayerId;
|
|
166
176
|
/** Points-to-wei, only so the buy button has something to show. */
|
|
167
177
|
weiPerPoint?: bigint;
|
|
178
|
+
/** The launch's per-wallet ceiling. Defaults to exactly what a flawless round would earn. */
|
|
179
|
+
walletCapWei?: bigint;
|
|
180
|
+
/** The creator's one economic knob. The mock derives a matching ETH price from `weiPerPoint`. */
|
|
181
|
+
pointsPerDollar?: number;
|
|
168
182
|
launch?: LaunchContext;
|
|
169
183
|
platform?: ClientPlatform;
|
|
170
184
|
/** The same cosmetic catalogue as live. Omitted disables reactions. */
|
package/src/live.ts
CHANGED
|
@@ -15,16 +15,20 @@ import type { PlayerId } from '@flayerlabs/gamemode-spec';
|
|
|
15
15
|
import type { SpendAuthorisation } from '@flayerlabs/gamemode-spec/embed';
|
|
16
16
|
import {
|
|
17
17
|
LIVE_PROTOCOL_VERSION,
|
|
18
|
+
isPlayerJoinTicket,
|
|
18
19
|
isReactionId,
|
|
19
20
|
isLaunchContext,
|
|
20
21
|
type ConnectionState,
|
|
21
22
|
type LaunchContext,
|
|
22
23
|
type LiveClientFrame,
|
|
23
24
|
type MarketState,
|
|
25
|
+
type PlayerJoinTicket,
|
|
24
26
|
type PresenceState,
|
|
25
27
|
type Reaction,
|
|
28
|
+
type RoundTerms,
|
|
26
29
|
type WireEconomyBalance,
|
|
27
30
|
type WireMarketState,
|
|
31
|
+
type WireRoundTerms,
|
|
28
32
|
} from '@flayerlabs/gamemode-spec/live';
|
|
29
33
|
import { Signal } from './signal.js';
|
|
30
34
|
import { CachedIdentityResolver } from './identity.js';
|
|
@@ -86,6 +90,12 @@ const FIRST_SNAPSHOT_TIMEOUT_MS = 15_000;
|
|
|
86
90
|
export async function joinRoom<PublicView, PlayerView, Action>(
|
|
87
91
|
options: LiveOptions,
|
|
88
92
|
): Promise<Room<PublicView, PlayerView, Action>> {
|
|
93
|
+
return startRoom<PublicView, PlayerView, Action>(options);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function startRoom<PublicView, PlayerView, Action>(
|
|
97
|
+
options: LiveOptions,
|
|
98
|
+
): Promise<LiveRoom<PublicView, PlayerView, Action>> {
|
|
89
99
|
const room = new LiveRoom<PublicView, PlayerView, Action>(options);
|
|
90
100
|
try {
|
|
91
101
|
await room.start();
|
|
@@ -98,10 +108,12 @@ export async function joinRoom<PublicView, PlayerView, Action>(
|
|
|
98
108
|
|
|
99
109
|
/** Join the SDK economy without exposing its gameplay action and view methods. */
|
|
100
110
|
export async function joinEconomy(options: LiveOptions): Promise<EconomyRoom> {
|
|
101
|
-
const room = await
|
|
111
|
+
const room = await startRoom<unknown, unknown, never>(options);
|
|
102
112
|
return {
|
|
103
113
|
now: () => room.now(),
|
|
114
|
+
joinTicket: (audience) => room.playerJoinTicket(audience),
|
|
104
115
|
launch: room.launch,
|
|
116
|
+
terms: room.terms,
|
|
105
117
|
connection: room.connection,
|
|
106
118
|
economy: room.economy,
|
|
107
119
|
market: room.market,
|
|
@@ -128,6 +140,7 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
128
140
|
private rejectInitialSnapshot!: (error: Error) => void;
|
|
129
141
|
private readonly connectionSignal = new Signal<ConnectionState>('connecting');
|
|
130
142
|
private readonly launchSignal: Signal<LaunchContext | null>;
|
|
143
|
+
private readonly termsSignal = new Signal<RoundTerms | null>(null);
|
|
131
144
|
private readonly economySignal = new Signal<EconomyState>(emptyEconomy());
|
|
132
145
|
private readonly marketSignal: Signal<MarketState>;
|
|
133
146
|
private readonly presenceSignal = new Signal<PresenceState>({ connectedCount: 1 });
|
|
@@ -186,6 +199,11 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
186
199
|
if (this.launchSignal.current() === null) {
|
|
187
200
|
throw new Error('the room did not provide launch context');
|
|
188
201
|
}
|
|
202
|
+
// Terms only ever come from the gate, so unlike launch there is no parent-supplied fallback.
|
|
203
|
+
// Failing here beats throwing later from whatever menu first reads the round's ceiling.
|
|
204
|
+
if (this.termsSignal.current() === null) {
|
|
205
|
+
throw new Error('the room did not provide round terms');
|
|
206
|
+
}
|
|
189
207
|
} catch (error) {
|
|
190
208
|
this.dispose();
|
|
191
209
|
throw error;
|
|
@@ -266,6 +284,12 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
266
284
|
if (this.launchSignal.current() === null && isLaunchContext(frame.launch)) {
|
|
267
285
|
this.launchSignal.set(immutableLaunch(frame.launch));
|
|
268
286
|
}
|
|
287
|
+
// Set once: terms are immutable for the round, so a later malformed frame cannot corrupt a
|
|
288
|
+
// value that has already arrived.
|
|
289
|
+
if (this.termsSignal.current() === null) {
|
|
290
|
+
const terms = termsFrom(frame.terms);
|
|
291
|
+
if (terms) this.termsSignal.set(terms);
|
|
292
|
+
}
|
|
269
293
|
const presence = presenceFrom(frame.presence);
|
|
270
294
|
if (presence) this.presenceSignal.set(presence);
|
|
271
295
|
if (!('view' in frame)) return;
|
|
@@ -304,6 +328,14 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
304
328
|
}),
|
|
305
329
|
};
|
|
306
330
|
|
|
331
|
+
readonly terms = {
|
|
332
|
+
current: () => this.requiredTerms(),
|
|
333
|
+
subscribe: (listener: (value: RoundTerms) => void) =>
|
|
334
|
+
this.termsSignal.subscribe((value) => {
|
|
335
|
+
if (value) listener(value);
|
|
336
|
+
}),
|
|
337
|
+
};
|
|
338
|
+
|
|
307
339
|
readonly connection = {
|
|
308
340
|
current: () => this.connectionSignal.current(),
|
|
309
341
|
subscribe: (listener: (value: ConnectionState) => void) => this.connectionSignal.subscribe(listener),
|
|
@@ -333,6 +365,15 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
333
365
|
return Date.now() + this.skew;
|
|
334
366
|
}
|
|
335
367
|
|
|
368
|
+
async playerJoinTicket(audience?: string): Promise<PlayerJoinTicket> {
|
|
369
|
+
const response = await this.post<unknown>(
|
|
370
|
+
`/rounds/${this.options.roundId}/join-ticket`,
|
|
371
|
+
audience === undefined ? {} : { audience },
|
|
372
|
+
);
|
|
373
|
+
if (!isPlayerJoinTicket(response)) throw new Error('the gate returned an invalid player join ticket');
|
|
374
|
+
return response;
|
|
375
|
+
}
|
|
376
|
+
|
|
336
377
|
readonly economy: Economy = {
|
|
337
378
|
current: () => this.economySignal.current(),
|
|
338
379
|
subscribe: (listener) => this.economySignal.subscribe(listener),
|
|
@@ -446,6 +487,7 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
446
487
|
this.reactionListeners.clear();
|
|
447
488
|
this.connectionSignal.clear();
|
|
448
489
|
this.launchSignal.clear();
|
|
490
|
+
this.termsSignal.clear();
|
|
449
491
|
this.economySignal.clear();
|
|
450
492
|
this.marketSignal.clear();
|
|
451
493
|
this.presenceSignal.clear();
|
|
@@ -475,6 +517,12 @@ class LiveRoom<PublicView, PlayerView, Action> implements Room<PublicView, Playe
|
|
|
475
517
|
return launch;
|
|
476
518
|
}
|
|
477
519
|
|
|
520
|
+
private requiredTerms(): RoundTerms {
|
|
521
|
+
const terms = this.termsSignal.current();
|
|
522
|
+
if (terms === null) throw new Error('round terms are not ready');
|
|
523
|
+
return terms;
|
|
524
|
+
}
|
|
525
|
+
|
|
478
526
|
/** Claims are idempotent by request id, so a lost response can be retried exactly once. */
|
|
479
527
|
private async postClaim<T>(path: string, body: unknown): Promise<T> {
|
|
480
528
|
try {
|
|
@@ -528,6 +576,49 @@ function economyFrom(input: unknown): Omit<EconomyState, 'buy'> | null {
|
|
|
528
576
|
}
|
|
529
577
|
}
|
|
530
578
|
|
|
579
|
+
/**
|
|
580
|
+
* Exported for its unit test, not for consumers — `index.ts` deliberately does not re-export it.
|
|
581
|
+
*
|
|
582
|
+
* Zero is rejected rather than carried, exactly as `economyFrom` rejects a zero rate: the gate
|
|
583
|
+
* sends zero only when it could not read a round, and a rate of zero is a failure, not a price.
|
|
584
|
+
*/
|
|
585
|
+
export function termsFrom(input: unknown): RoundTerms | null {
|
|
586
|
+
if (typeof input !== 'object' || input === null) return null;
|
|
587
|
+
const value = input as Partial<WireRoundTerms>;
|
|
588
|
+
const decimal = /^(0|[1-9][0-9]*)$/;
|
|
589
|
+
if (
|
|
590
|
+
typeof value.walletCapWei !== 'string' ||
|
|
591
|
+
!decimal.test(value.walletCapWei) ||
|
|
592
|
+
typeof value.weiPerPoint !== 'string' ||
|
|
593
|
+
!decimal.test(value.weiPerPoint)
|
|
594
|
+
) return null;
|
|
595
|
+
try {
|
|
596
|
+
const walletCapWei = BigInt(value.walletCapWei);
|
|
597
|
+
const weiPerPoint = BigInt(value.weiPerPoint);
|
|
598
|
+
const { maxPointsPerPlayer, pointsPerDollar, usdPerEth } = value;
|
|
599
|
+
if (
|
|
600
|
+
walletCapWei <= 0n ||
|
|
601
|
+
weiPerPoint <= 0n ||
|
|
602
|
+
typeof maxPointsPerPlayer !== 'number' ||
|
|
603
|
+
!Number.isSafeInteger(maxPointsPerPlayer) ||
|
|
604
|
+
maxPointsPerPlayer <= 0 ||
|
|
605
|
+
// Prices, not counts, so these are finite rather than integral. Both are still positive: a
|
|
606
|
+
// round priced at zero dollars an ETH is a round whose rate cannot mean anything.
|
|
607
|
+
typeof pointsPerDollar !== 'number' ||
|
|
608
|
+
!Number.isFinite(pointsPerDollar) ||
|
|
609
|
+
pointsPerDollar <= 0 ||
|
|
610
|
+
typeof usdPerEth !== 'number' ||
|
|
611
|
+
!Number.isFinite(usdPerEth) ||
|
|
612
|
+
usdPerEth <= 0
|
|
613
|
+
) {
|
|
614
|
+
return null;
|
|
615
|
+
}
|
|
616
|
+
return Object.freeze({ maxPointsPerPlayer, walletCapWei, weiPerPoint, pointsPerDollar, usdPerEth });
|
|
617
|
+
} catch {
|
|
618
|
+
return null;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
531
622
|
function presenceFrom(input: unknown): PresenceState | null {
|
|
532
623
|
if (typeof input !== 'object' || input === null) return null;
|
|
533
624
|
const value = input as Partial<PresenceState>;
|
package/src/mock.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type MarketState,
|
|
9
9
|
type PresenceState,
|
|
10
10
|
type Reaction,
|
|
11
|
+
type RoundTerms,
|
|
11
12
|
} from '@flayerlabs/gamemode-spec/live';
|
|
12
13
|
import { Signal } from './signal.js';
|
|
13
14
|
import { CachedIdentityResolver } from './identity.js';
|
|
@@ -15,6 +16,8 @@ import { CachedIdentityResolver } from './identity.js';
|
|
|
15
16
|
/** How often the mock looks for a deadline that has fallen due. */
|
|
16
17
|
const TICK_MS = 100;
|
|
17
18
|
|
|
19
|
+
const WEI_PER_ETH = 1_000_000_000_000_000_000n;
|
|
20
|
+
|
|
18
21
|
/** Long enough to see a spinner, short enough not to be annoying while building. */
|
|
19
22
|
const FAKE_SIGN_MS = 150;
|
|
20
23
|
const FAKE_PENDING_MS = 250;
|
|
@@ -39,6 +42,7 @@ export class MockRoom<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
39
42
|
private disposed = false;
|
|
40
43
|
private readonly connectionSignal = new Signal<ConnectionState>('connected');
|
|
41
44
|
private readonly launchSignal: Signal<LaunchContext>;
|
|
45
|
+
private readonly termsSignal: Signal<RoundTerms>;
|
|
42
46
|
private readonly presenceSignal = new Signal<PresenceState>({ connectedCount: 1 });
|
|
43
47
|
private readonly marketSignal: Signal<MarketState>;
|
|
44
48
|
private readonly stopMarket: () => void;
|
|
@@ -70,6 +74,35 @@ export class MockRoom<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
70
74
|
booksCloseAt: opensAt + (options.roundMs ?? 120_000),
|
|
71
75
|
};
|
|
72
76
|
this.launchSignal = new Signal<LaunchContext>(Object.freeze({ ...launch }));
|
|
77
|
+
|
|
78
|
+
// The real gate refuses to adopt a launch whose flawless round would earn more than one wallet
|
|
79
|
+
// may spend. Defaulting the cap to exactly that payout, and refusing anything under it, keeps
|
|
80
|
+
// the mock from letting a game pass locally on numbers the gate would reject.
|
|
81
|
+
const maxPointsPerPlayer = game.rewardBounds(options.config).maxPointsPerPlayer;
|
|
82
|
+
const flawlessRoundWei = BigInt(maxPointsPerPlayer) * this.weiPerPoint;
|
|
83
|
+
const walletCapWei = options.walletCapWei ?? flawlessRoundWei;
|
|
84
|
+
if (walletCapWei < flawlessRoundWei) {
|
|
85
|
+
throw new RangeError('walletCapWei must cover a flawless round, or the gate would refuse this launch');
|
|
86
|
+
}
|
|
87
|
+
// The gate derives its rate from these two, so the mock runs the identity backwards from
|
|
88
|
+
// whatever rate it was given. Reporting three numbers that do not agree would let a menu built
|
|
89
|
+
// against the mock show a price the live gate never produces.
|
|
90
|
+
const pointsPerDollar = options.pointsPerDollar ?? 100;
|
|
91
|
+
if (!Number.isFinite(pointsPerDollar) || pointsPerDollar <= 0) {
|
|
92
|
+
throw new RangeError('pointsPerDollar must be a positive finite number');
|
|
93
|
+
}
|
|
94
|
+
const pointsPerEth = WEI_PER_ETH / this.weiPerPoint;
|
|
95
|
+
if (pointsPerEth <= 0n || pointsPerEth > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
96
|
+
throw new RangeError('weiPerPoint does not produce representable round terms');
|
|
97
|
+
}
|
|
98
|
+
const usdPerEth = Number(pointsPerEth) / pointsPerDollar;
|
|
99
|
+
const roundTrip = WEI_PER_ETH / BigInt(Math.round(usdPerEth * pointsPerDollar));
|
|
100
|
+
if (roundTrip !== this.weiPerPoint) {
|
|
101
|
+
throw new RangeError('weiPerPoint must round-trip through gate pricing terms');
|
|
102
|
+
}
|
|
103
|
+
this.termsSignal = new Signal<RoundTerms>(
|
|
104
|
+
Object.freeze({ maxPointsPerPlayer, walletCapWei, weiPerPoint: this.weiPerPoint, pointsPerDollar, usdPerEth }),
|
|
105
|
+
);
|
|
73
106
|
this.marketSignal = new Signal(
|
|
74
107
|
options.platform?.market?.current() ?? { status: 'unavailable', prices: [], trades: [], marketCapUsd: null },
|
|
75
108
|
);
|
|
@@ -124,6 +157,11 @@ export class MockRoom<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
124
157
|
subscribe: (listener: (value: LaunchContext) => void) => this.launchSignal.subscribe(listener),
|
|
125
158
|
};
|
|
126
159
|
|
|
160
|
+
readonly terms = {
|
|
161
|
+
current: () => this.termsSignal.current(),
|
|
162
|
+
subscribe: (listener: (value: RoundTerms) => void) => this.termsSignal.subscribe(listener),
|
|
163
|
+
};
|
|
164
|
+
|
|
127
165
|
readonly connection = {
|
|
128
166
|
current: () => this.connectionSignal.current(),
|
|
129
167
|
subscribe: (listener: (value: ConnectionState) => void) => this.connectionSignal.subscribe(listener),
|
|
@@ -241,6 +279,7 @@ export class MockRoom<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
241
279
|
this.connectionSignal.set('ended');
|
|
242
280
|
this.connectionSignal.clear();
|
|
243
281
|
this.launchSignal.clear();
|
|
282
|
+
this.termsSignal.clear();
|
|
244
283
|
this.presenceSignal.clear();
|
|
245
284
|
this.stopMarket();
|
|
246
285
|
this.marketSignal.clear();
|