@flayerlabs/gamemode-gate 0.1.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.
Files changed (65) hide show
  1. package/README.md +81 -2
  2. package/dist/bearer.d.ts +3 -0
  3. package/dist/bearer.d.ts.map +1 -0
  4. package/dist/bearer.js +8 -0
  5. package/dist/bearer.js.map +1 -0
  6. package/dist/demo.d.ts.map +1 -1
  7. package/dist/demo.js +6 -1
  8. package/dist/demo.js.map +1 -1
  9. package/dist/economy.d.ts +9 -0
  10. package/dist/economy.d.ts.map +1 -1
  11. package/dist/economy.js +2 -2
  12. package/dist/economy.js.map +1 -1
  13. package/dist/game-registry.d.ts.map +1 -1
  14. package/dist/game-registry.js +6 -8
  15. package/dist/game-registry.js.map +1 -1
  16. package/dist/game-server-awards.d.ts +76 -0
  17. package/dist/game-server-awards.d.ts.map +1 -0
  18. package/dist/game-server-awards.js +172 -0
  19. package/dist/game-server-awards.js.map +1 -0
  20. package/dist/index.d.ts +5 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/ledger.d.ts +0 -2
  25. package/dist/ledger.d.ts.map +1 -1
  26. package/dist/ledger.js +0 -7
  27. package/dist/ledger.js.map +1 -1
  28. package/dist/player-join-tickets.d.ts +29 -0
  29. package/dist/player-join-tickets.d.ts.map +1 -0
  30. package/dist/player-join-tickets.js +112 -0
  31. package/dist/player-join-tickets.js.map +1 -0
  32. package/dist/registry.d.ts +5 -9
  33. package/dist/registry.d.ts.map +1 -1
  34. package/dist/registry.js +24 -4
  35. package/dist/registry.js.map +1 -1
  36. package/dist/room.d.ts +8 -2
  37. package/dist/room.d.ts.map +1 -1
  38. package/dist/room.js +50 -9
  39. package/dist/room.js.map +1 -1
  40. package/dist/server.d.ts +16 -3
  41. package/dist/server.d.ts.map +1 -1
  42. package/dist/server.js +162 -10
  43. package/dist/server.js.map +1 -1
  44. package/dist/sessions.d.ts +2 -0
  45. package/dist/sessions.d.ts.map +1 -1
  46. package/dist/sessions.js +4 -0
  47. package/dist/sessions.js.map +1 -1
  48. package/dist/store.d.ts +1 -1
  49. package/dist/store.d.ts.map +1 -1
  50. package/dist/store.js +53 -0
  51. package/dist/store.js.map +1 -1
  52. package/package.json +2 -2
  53. package/src/bearer.ts +8 -0
  54. package/src/demo.ts +6 -1
  55. package/src/economy.ts +11 -2
  56. package/src/game-registry.ts +12 -10
  57. package/src/game-server-awards.ts +285 -0
  58. package/src/index.ts +13 -0
  59. package/src/ledger.ts +0 -10
  60. package/src/player-join-tickets.ts +151 -0
  61. package/src/registry.ts +34 -10
  62. package/src/room.ts +70 -9
  63. package/src/server.ts +231 -22
  64. package/src/sessions.ts +5 -0
  65. package/src/store.ts +53 -0
package/dist/server.d.ts CHANGED
@@ -17,9 +17,8 @@ import type { Settlement } from './settlement.js';
17
17
  * low thousands of players in one room; deltas are the fix, and adding them before there is a room
18
18
  * that size would be guessing at the shape of a problem nobody has.
19
19
  */
20
- interface GateBaseOptions<Config, State, Event, Action, PublicView, PlayerView> {
20
+ interface GateBaseOptions {
21
21
  pool: Pool;
22
- game: GameModule<Config, State, Event, Action, PublicView, PlayerView>;
23
22
  sessions: Sessions;
24
23
  claims: Claims;
25
24
  /** How many points a dollar buys. The only economic number anyone sets by hand. */
@@ -56,10 +55,23 @@ export type VerifiedLaunch = Readonly<Omit<Launch, 'poolKey'>> & {
56
55
  readonly poolKey: Readonly<PoolKey>;
57
56
  };
58
57
  export type ConfigForLaunch<Config> = (launch: VerifiedLaunch) => Promise<Config>;
59
- export type GateOptions<Config, State, Event, Action, PublicView, PlayerView> = GateBaseOptions<Config, State, Event, Action, PublicView, PlayerView> & {
58
+ export type GateOptions<Config, State, Event, Action, PublicView, PlayerView> = GateBaseOptions & {
59
+ game: GameModule<Config, State, Event, Action, PublicView, PlayerView>;
60
60
  /** A static serialisable config, or a factory resolved once after each launch is verified. */
61
61
  config: Config | ConfigForLaunch<Config>;
62
62
  };
63
+ export type MaxPointsForLaunch = (launch: VerifiedLaunch) => Promise<number>;
64
+ /** Run a gate beside a creator-owned authoritative game server. */
65
+ export interface GameServerGateOptions extends GateBaseOptions {
66
+ /** Stable game identifier used to protect durable room state from a different game module. */
67
+ gameId: string;
68
+ /** The most one wallet can earn in a round, or a value resolved once for each verified launch. */
69
+ maxPointsPerPlayer: number | MaxPointsForLaunch;
70
+ /** Dedicated server-to-server token. Never expose it to browser game code. */
71
+ awardToken: string;
72
+ /** Reviewed HTTPS origins that may receive player join tickets. The gate origin is always allowed. */
73
+ gameServerOrigins?: readonly string[];
74
+ }
63
75
  /** Where an admission check is being made. Enough to tell a sign-in from a spend. */
64
76
  export interface AdmissionRequest {
65
77
  /** `session` on sign-in, `action` on gameplay, `claim` when allowance is about to be committed. */
@@ -87,6 +99,7 @@ export type Admission = {
87
99
  export type Admit = (request: AdmissionRequest) => Admission | Promise<Admission>;
88
100
  export declare const DEFAULT_SETTLEMENT_TAIL_MS: number;
89
101
  export declare function createGate<Config, State, Event, Action, PublicView, PlayerView>(options: GateOptions<Config, State, Event, Action, PublicView, PlayerView>): FastifyInstance;
102
+ export declare function createGameServerGate(options: GameServerGateOptions): FastifyInstance;
90
103
  export { Room, Claims, Sessions };
91
104
  export type { Command };
92
105
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -8,9 +8,30 @@ import { CLAIM_AUTHORIZATION_TTL_MS, Claims, isClaimAmount, isClaimRequestId } f
8
8
  import { NotSignedIn, Sessions } from './sessions.js';
9
9
  import { resolveEconomy } from './economy.js';
10
10
  import { encodeHookData } from './chain/signer.js';
11
+ import { hasBearerToken } from './bearer.js';
12
+ import { GameServerAwards } from './game-server-awards.js';
13
+ import { issuePlayerJoinTicket } from './player-join-tickets.js';
14
+ import { gameServerOrigins } from './registry.js';
11
15
  const ADMIT_ALL = () => ({ ok: true });
12
16
  /** What the socket says, which is only the truth when nothing is proxying in front of the gate. */
13
17
  const ipOf = (request) => request.ip || null;
18
+ /** Wei has no JSON form, so terms cross as decimal strings, exactly as the economy balance does. */
19
+ const wireTerms = (terms) => ({
20
+ maxPointsPerPlayer: terms.maxPointsPerPlayer,
21
+ walletCapWei: terms.walletCapWei.toString(),
22
+ weiPerPoint: terms.weiPerPoint.toString(),
23
+ pointsPerDollar: terms.pointsPerDollar,
24
+ usdPerEth: terms.usdPerEth,
25
+ });
26
+ /** The same encoding for the per-player balance, wherever it leaves the process. */
27
+ const wireEconomy = (balance) => ({
28
+ weiPerPoint: balance.weiPerPoint.toString(),
29
+ earnedWei: balance.earnedWei.toString(),
30
+ heldWei: balance.heldWei.toString(),
31
+ spentWei: balance.spentWei.toString(),
32
+ availableWei: balance.availableWei.toString(),
33
+ holdExpiresAt: balance.holdExpiresAt,
34
+ });
14
35
  /** How often each open room is nudged so a deadline nobody is watching still fires. */
15
36
  const TICK_MS = 250;
16
37
  /**
@@ -30,7 +51,46 @@ const TERMINAL_DRAIN_DEADLINE_MS = 1_000;
30
51
  /** Reactions are also bounded across a whole room, not only per sending socket. */
31
52
  const MAX_ROOM_REACTIONS_PER_SECOND = 20;
32
53
  export const DEFAULT_SETTLEMENT_TAIL_MS = CLAIM_AUTHORIZATION_TTL_MS;
54
+ const GAME_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
55
+ function gameServerModule(id) {
56
+ return {
57
+ id,
58
+ parseAction: () => null,
59
+ initRound: () => ({}),
60
+ decide: (_state, command) => {
61
+ if (command.kind === 'action')
62
+ return { refuse: 'gameplay.external' };
63
+ return { events: [] };
64
+ },
65
+ evolve: (state) => state,
66
+ publicView: () => ({}),
67
+ playerView: () => ({}),
68
+ nextWakeAt: () => null,
69
+ rewardBounds: (config) => ({ maxPointsPerPlayer: config.maxPointsPerPlayer }),
70
+ };
71
+ }
33
72
  export function createGate(options) {
73
+ return createGateRuntime(options, 'rules');
74
+ }
75
+ export function createGameServerGate(options) {
76
+ if (typeof options.gameId !== 'string' || !GAME_ID.test(options.gameId)) {
77
+ throw new RangeError('gameId must be a valid identifier');
78
+ }
79
+ if (typeof options.awardToken !== 'string' || options.awardToken.length < 32) {
80
+ throw new RangeError('awardToken must be at least 32 characters');
81
+ }
82
+ const maximum = options.maxPointsPerPlayer;
83
+ if (typeof maximum !== 'function' && (!Number.isSafeInteger(maximum) || maximum <= 0)) {
84
+ throw new RangeError('maxPointsPerPlayer must be a positive safe integer');
85
+ }
86
+ const config = typeof maximum === 'function'
87
+ ? async (launch) => ({ maxPointsPerPlayer: await maximum(launch) })
88
+ : { maxPointsPerPlayer: maximum };
89
+ const ticketAudiences = new Set([options.sessions.origin, ...gameServerOrigins(options.gameServerOrigins)]);
90
+ const { gameId, maxPointsPerPlayer: _maximum, awardToken, gameServerOrigins: _origins, ...base } = options;
91
+ return createGateRuntime({ ...base, game: gameServerModule(gameId), config }, 'external-server', { token: awardToken, awards: new GameServerAwards(options.pool, gameId), ticketAudiences });
92
+ }
93
+ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
34
94
  const { pool, game, sessions, claims, discovery, settlement } = options;
35
95
  const admit = options.admit ?? ADMIT_ALL;
36
96
  // Rules config is persisted as JSON, so a function here can only be the documented factory.
@@ -60,6 +120,10 @@ export function createGate(options) {
60
120
  if (existing)
61
121
  return existing;
62
122
  const loaded = await Room.load(pool, game, id);
123
+ if (loaded && loaded.scoreAuthority !== scoreAuthority) {
124
+ app.log.error(`${id}: round belongs to ${loaded.scoreAuthority}, not ${scoreAuthority}`);
125
+ return null;
126
+ }
63
127
  // A durable row is history after its books close, not permission to resurrect an active
64
128
  // ticker and market stream every time somebody refreshes an old coin page. It still gets one
65
129
  // bounded catch-up through closesAt: a restart spanning the whole tail must not strand final
@@ -126,7 +190,11 @@ export function createGate(options) {
126
190
  seed: Number(BigInt(launch.poolId) % 2147483647n),
127
191
  window: { opensAt: launch.opensAt, closesAt: launch.closesAt },
128
192
  weiPerPoint: economy.economy.weiPerPoint,
193
+ pointsPerDollar: economy.economy.pointsPerDollar,
194
+ usdPerEth: economy.economy.usdPerEth,
129
195
  walletCapWei: launch.walletCapWei,
196
+ maxPointsPerPlayer,
197
+ scoreAuthority,
130
198
  poolId: launch.poolId,
131
199
  booksCloseAt: launch.closesAt + settlementTailMs,
132
200
  launch: {
@@ -247,6 +315,84 @@ export function createGate(options) {
247
315
  .code(createdByThisRequest && adopted.created ? 201 : 200)
248
316
  .send(adopted.room.launch);
249
317
  });
318
+ if (awardEndpoint) {
319
+ app.post('/rounds/:id/join-ticket', async (request, reply) => {
320
+ const who = player(request);
321
+ const id = request.params.id;
322
+ const room = await roomFor(id);
323
+ if (!room)
324
+ return reply.code(404).send({ message: 'that game is not running' });
325
+ const now = Date.now();
326
+ if (now >= room.window.closesAt) {
327
+ return reply.code(409).send({ message: 'that game has ended' });
328
+ }
329
+ const requested = request.body?.audience;
330
+ const audience = requested === undefined ? sessions.origin : requested;
331
+ if (typeof audience !== 'string' || !awardEndpoint.ticketAudiences.has(audience)) {
332
+ return reply.code(400).send({ message: 'that game server is not registered' });
333
+ }
334
+ return issuePlayerJoinTicket({
335
+ awardToken: awardEndpoint.token,
336
+ player: who,
337
+ gameId: game.id,
338
+ roundId: id,
339
+ audience,
340
+ closesAt: room.window.closesAt,
341
+ now,
342
+ });
343
+ });
344
+ app.post('/internal/rounds/:id/awards', async (request, reply) => {
345
+ if (!hasBearerToken(request.headers.authorization, awardEndpoint.token)) {
346
+ return reply.code(401).send({ message: 'game server authentication failed' });
347
+ }
348
+ const body = (request.body ?? {});
349
+ const result = await awardEndpoint.awards.record({
350
+ roundId: request.params.id,
351
+ eventId: body.eventId,
352
+ player: body.player,
353
+ points: body.points,
354
+ });
355
+ if (!result.ok) {
356
+ const status = result.refuse === 'award.invalid'
357
+ ? 400
358
+ : result.refuse === 'award.no_such_round' || result.refuse === 'award.wrong_authority'
359
+ ? 404
360
+ : 409;
361
+ return reply.code(status).send({ refuse: result.refuse });
362
+ }
363
+ announcePlayer(result.award.roundId, result.award.player);
364
+ return reply.code(result.created ? 201 : 200).send(result.award);
365
+ });
366
+ /**
367
+ * What one wallet has earned, so a game server can refuse a seat before the player sits in it.
368
+ *
369
+ * Advisory, and deliberately so. The award route still enforces the ceiling inside the
370
+ * transaction that moves the balance, so a caller that stops handling `award.limit_exceeded`
371
+ * because it checked here first has moved the check out of the only place it is atomic.
372
+ *
373
+ * Never routed through `roomFor`: that resurrects rooms, advances game state and returns
374
+ * nothing once the books close — none of which a read should do.
375
+ */
376
+ app.get('/internal/rounds/:id/players/:player', async (request, reply) => {
377
+ if (!hasBearerToken(request.headers.authorization, awardEndpoint.token)) {
378
+ return reply.code(401).send({ message: 'game server authentication failed' });
379
+ }
380
+ const params = request.params;
381
+ const result = await awardEndpoint.awards.pointsFor({
382
+ roundId: params.id,
383
+ player: params.player,
384
+ });
385
+ if (!result.ok) {
386
+ return reply.code(result.refuse === 'award.invalid' ? 400 : 404).send({ refuse: result.refuse });
387
+ }
388
+ // `heldWei` moves on its own when an authorisation expires, so this answer is only true at the
389
+ // moment it is read. Points are monotone; the wei beside them are not.
390
+ const balance = await claims.economyBalance(result.standing.roundId, result.standing.player);
391
+ return reply
392
+ .header('cache-control', 'no-store')
393
+ .send({ ...result.standing, economy: wireEconomy(balance) });
394
+ });
395
+ }
250
396
  app.get('/rounds/:id', async (request, reply) => {
251
397
  const id = request.params.id;
252
398
  const room = await roomFor(id);
@@ -256,13 +402,22 @@ export function createGate(options) {
256
402
  await room.tick(Date.now());
257
403
  if (room.sequence() !== before)
258
404
  announce(id);
259
- return { sequence: room.sequence(), view: room.publicView(), launch: room.launch };
405
+ return {
406
+ sequence: room.sequence(),
407
+ view: room.publicView(),
408
+ launch: room.launch,
409
+ terms: wireTerms(room.terms),
410
+ };
260
411
  });
261
412
  app.post('/rounds/:id/join', async (request, reply) => {
262
413
  const room = await roomFor(request.params.id);
263
414
  if (!room)
264
415
  return reply.code(404).send({ message: 'that game is not running' });
265
416
  const id = request.params.id;
417
+ if (scoreAuthority === 'external-server') {
418
+ player(request);
419
+ return { joined: true };
420
+ }
266
421
  const before = room.sequence();
267
422
  const result = await room.apply({
268
423
  kind: 'join',
@@ -299,6 +454,9 @@ export function createGate(options) {
299
454
  app.post('/rounds/:id/claim', async (request, reply) => {
300
455
  const id = request.params.id;
301
456
  const who = player(request);
457
+ const room = await roomFor(id);
458
+ if (!room)
459
+ return reply.code(404).send({ message: 'that game is not running' });
302
460
  const { maxSpendWei, requestId } = request.body;
303
461
  let upTo;
304
462
  try {
@@ -421,21 +579,14 @@ export function createGate(options) {
421
579
  const balance = viewer
422
580
  ? await claims.economyBalance(id, viewer)
423
581
  : {
424
- weiPerPoint: room.weiPerPoint,
582
+ weiPerPoint: room.terms.weiPerPoint,
425
583
  earnedWei: 0n,
426
584
  heldWei: 0n,
427
585
  spentWei: 0n,
428
586
  availableWei: 0n,
429
587
  holdExpiresAt: null,
430
588
  };
431
- const economy = {
432
- weiPerPoint: balance.weiPerPoint.toString(),
433
- earnedWei: balance.earnedWei.toString(),
434
- heldWei: balance.heldWei.toString(),
435
- spentWei: balance.spentWei.toString(),
436
- availableWei: balance.availableWei.toString(),
437
- holdExpiresAt: balance.holdExpiresAt,
438
- };
589
+ const economy = wireEconomy(balance);
439
590
  return {
440
591
  v: LIVE_PROTOCOL_VERSION,
441
592
  type: 'snapshot',
@@ -444,6 +595,7 @@ export function createGate(options) {
444
595
  view: room.publicView(),
445
596
  you: viewer ? room.playerView(viewer) : null,
446
597
  economy,
598
+ terms: wireTerms(room.terms),
447
599
  launch: room.launch,
448
600
  presence: presence(id),
449
601
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export declare class Sessions {
14
14
  domain: string,
15
15
  /** Exact configured origin of this gate. Never derive this audience from a request header. */
16
16
  gateOrigin: string, now?: () => number);
17
+ /** Exact configured gate origin, used as the default audience for a co-located game server. */
18
+ get origin(): string;
17
19
  private sign;
18
20
  private seal;
19
21
  /** Open an envelope, or null. Every field is checked; nothing is inferred from position. */
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAyB1D,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,SAAkB;CAItC;AAgBD,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBALH,MAAM,EAAE,MAAM;IAC/B,uFAAuF;IACtE,MAAM,EAAE,MAAM;IAC/B,8FAA8F;IAC7E,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,MAAiB;IAa/C,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;IAKZ,4FAA4F;IAC5F,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,OAAO;IAMf;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQ9D,OAAO,CAAC,UAAU;IAIlB,8EAA8E;IACxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBvF,OAAO,CAAC,KAAK;IAIb,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ;CAM5C"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAyB1D,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,SAAkB;CAItC;AAgBD,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBALH,MAAM,EAAE,MAAM;IAC/B,uFAAuF;IACtE,MAAM,EAAE,MAAM;IAC/B,8FAA8F;IAC7E,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,MAAiB;IAa/C,+FAA+F;IAC/F,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;IAKZ,4FAA4F;IAC5F,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,OAAO;IAMf;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQ9D,OAAO,CAAC,UAAU;IAIlB,8EAA8E;IACxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBvF,OAAO,CAAC,KAAK;IAIb,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ;CAM5C"}
package/dist/sessions.js CHANGED
@@ -52,6 +52,10 @@ export class Sessions {
52
52
  throw new Error('gate origin must be an exact http(s) origin');
53
53
  }
54
54
  }
55
+ /** Exact configured gate origin, used as the default audience for a co-located game server. */
56
+ get origin() {
57
+ return this.gateOrigin;
58
+ }
55
59
  sign(value) {
56
60
  return createHmac('sha256', this.secret).update(value).digest('base64url');
57
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Pool, PoolClient } from 'pg';
6
6
  * table is how a schema drifts: one adds a column, the other's migration never runs, and the
7
7
  * failure appears somewhere neither of them looks.
8
8
  */
9
- export declare const SCHEMA = "\ncreate table if not exists rounds (\n id text primary key,\n wei_per_point numeric(78,0) not null check (wei_per_point > 0),\n wallet_cap_wei numeric(78,0) not null check (wallet_cap_wei > 0),\n pool_id text not null,\n opens_at bigint not null,\n closes_at bigint not null,\n books_close_at bigint not null,\n coin_address text,\n coin_name text not null,\n coin_symbol text not null,\n coin_image_url text,\n -- The game's own state, opaque to the platform. Written after every command, so a restart\n -- resumes from here rather than replaying history.\n state jsonb not null,\n -- Commands applied so far. Doubles as the cursor a reconnecting client resumes from.\n seq integer not null default 0 check (seq >= 0),\n constraint rounds_window check (opens_at < closes_at),\n constraint rounds_books_tail check (books_close_at >= closes_at)\n);\n\ncreate table if not exists balances (\n round_id text not null references rounds(id) on delete cascade,\n player text not null,\n points bigint not null default 0 check (points >= 0),\n -- What the chain says this wallet has already spent on this pool. The contract keeps this and\n -- enforces it whatever we believe, so it is the only figure that is actually true.\n chain_spent_wei numeric(78,0) not null default 0 check (chain_spent_wei >= 0),\n primary key (round_id, player)\n);\n\n-- One row per authorisation ever issued. Nothing is deleted: a signature that exists in the world\n-- cannot be un-issued, so the ledger records its fate instead of forgetting it.\ncreate table if not exists claims (\n nonce bigint generated always as identity primary key,\n round_id text not null references rounds(id) on delete cascade,\n player text not null,\n request_id varchar(128) not null check (request_id <> ''),\n requested_wei numeric(78,0) not null check (requested_wei > 0),\n wei numeric(78,0) not null check (wei > 0 and wei <= requested_wei),\n -- Held or released, and nothing else. Whether a swap LANDED is the chain's to say, not ours.\n status text not null check (status in ('held', 'released')),\n deadline bigint not null,\n -- Persisted before a payload leaves the gate. Until signing completes, both values are null.\n signature text,\n signer text,\n created_at timestamptz not null default now(),\n constraint claims_by_request unique (round_id, player, request_id),\n constraint claims_signature_pair check ((signature is null) = (signer is null))\n);\n\ncreate index if not exists claims_by_player on claims (round_id, player) where status = 'held';\n\n-- Which game a coin plays. Addresses are chain-local, so the pin is one row per (chain, coin).\ncreate table if not exists registrations (\n chain_id bigint not null check (chain_id > 0),\n coin text not null check (coin <> ''),\n game_id text not null check (game_id <> ''),\n gate_origin text not null check (gate_origin <> ''),\n deploy_id text not null check (deploy_id <> ''),\n disabled_at timestamptz,\n updated_at timestamptz not null default now(),\n primary key (chain_id, coin)\n);\n\n-- What actually happened, in order. Not used to rebuild state \u2014 the snapshot does that \u2014 but it is\n-- the record of why a state looks the way it does, which is what an incident needs.\ncreate table if not exists commands (\n round_id text not null references rounds(id) on delete cascade,\n seq integer not null check (seq > 0),\n command jsonb not null,\n primary key (round_id, seq)\n);\n";
9
+ export declare const SCHEMA = "\ncreate table if not exists rounds (\n id text primary key,\n game_id text not null check (game_id <> ''),\n wei_per_point numeric(78,0) not null check (wei_per_point > 0),\n wallet_cap_wei numeric(78,0) not null check (wallet_cap_wei > 0),\n -- The two settings that produced wei_per_point, frozen beside it. They are gate-process config,\n -- so an operator who restarts with a new ETH price must not retroactively change what a round\n -- was priced at.\n points_per_dollar double precision not null check (points_per_dollar > 0),\n usd_per_eth double precision not null check (usd_per_eth > 0),\n max_points_per_player bigint not null check (max_points_per_player > 0),\n score_authority text not null check (score_authority in ('rules', 'external-server')),\n pool_id text not null,\n opens_at bigint not null,\n closes_at bigint not null,\n books_close_at bigint not null,\n coin_address text,\n coin_name text not null,\n coin_symbol text not null,\n coin_image_url text,\n -- The game's own state, opaque to the platform. Written after every command, so a restart\n -- resumes from here rather than replaying history.\n state jsonb not null,\n -- Commands applied so far. Doubles as the cursor a reconnecting client resumes from.\n seq integer not null default 0 check (seq >= 0),\n constraint rounds_window check (opens_at < closes_at),\n constraint rounds_books_tail check (books_close_at >= closes_at)\n);\n\n-- A developer may already have run the first published schema without creating any rounds. Add\n-- the new authority fields in place for that empty setup. Existing round data needs a deliberate\n-- reset because its original reward bound cannot be reconstructed safely.\nalter table rounds\n add column if not exists game_id text check (game_id <> '');\nalter table rounds\n add column if not exists max_points_per_player bigint check (max_points_per_player > 0);\nalter table rounds\n add column if not exists score_authority text check (score_authority in ('rules', 'external-server'));\nalter table rounds\n add column if not exists points_per_dollar double precision check (points_per_dollar > 0);\nalter table rounds\n add column if not exists usd_per_eth double precision check (usd_per_eth > 0);\ndo $$\nbegin\n if exists (\n select 1 from rounds\n where game_id is null or max_points_per_player is null or score_authority is null\n or points_per_dollar is null or usd_per_eth is null\n ) then\n raise exception 'pre-release round rows cannot be upgraded safely'\n using hint = 'Delete the pre-release round data, then run migrate(pool) again.';\n end if;\nend\n$$;\nalter table rounds alter column game_id set not null;\nalter table rounds alter column max_points_per_player set not null;\nalter table rounds alter column score_authority set not null;\nalter table rounds alter column points_per_dollar set not null;\nalter table rounds alter column usd_per_eth set not null;\n\ncreate table if not exists balances (\n round_id text not null references rounds(id) on delete cascade,\n player text not null,\n points bigint not null default 0 check (points >= 0),\n -- What the chain says this wallet has already spent on this pool. The contract keeps this and\n -- enforces it whatever we believe, so it is the only figure that is actually true.\n chain_spent_wei numeric(78,0) not null default 0 check (chain_spent_wei >= 0),\n primary key (round_id, player)\n);\n\n-- One row per authorisation ever issued. Nothing is deleted: a signature that exists in the world\n-- cannot be un-issued, so the ledger records its fate instead of forgetting it.\ncreate table if not exists claims (\n nonce bigint generated always as identity primary key,\n round_id text not null references rounds(id) on delete cascade,\n player text not null,\n request_id varchar(128) not null check (request_id <> ''),\n requested_wei numeric(78,0) not null check (requested_wei > 0),\n wei numeric(78,0) not null check (wei > 0 and wei <= requested_wei),\n -- Held or released, and nothing else. Whether a swap LANDED is the chain's to say, not ours.\n status text not null check (status in ('held', 'released')),\n deadline bigint not null,\n -- Persisted before a payload leaves the gate. Until signing completes, both values are null.\n signature text,\n signer text,\n created_at timestamptz not null default now(),\n constraint claims_by_request unique (round_id, player, request_id),\n constraint claims_signature_pair check ((signature is null) = (signer is null))\n);\n\ncreate index if not exists claims_by_player on claims (round_id, player) where status = 'held';\n\n-- Trusted creator servers use one stable event id for every score increment. The event and the\n-- balance update commit together, so a retry can recover the first result without paying twice.\ncreate table if not exists award_events (\n round_id text not null references rounds(id) on delete cascade,\n event_id varchar(128) not null check (event_id <> ''),\n player text not null,\n points bigint not null check (points > 0),\n total_points bigint not null check (total_points >= points),\n created_at timestamptz not null default now(),\n primary key (round_id, event_id)\n);\n\n-- Which game a coin plays. Addresses are chain-local, so the pin is one row per (chain, coin).\ncreate table if not exists registrations (\n chain_id bigint not null check (chain_id > 0),\n coin text not null check (coin <> ''),\n game_id text not null check (game_id <> ''),\n gate_origin text not null check (gate_origin <> ''),\n deploy_id text not null check (deploy_id <> ''),\n game_server_origins text[] not null default '{}'::text[],\n disabled_at timestamptz,\n updated_at timestamptz not null default now(),\n constraint registrations_game_server_origins_bounded check (cardinality(game_server_origins) <= 4),\n primary key (chain_id, coin)\n);\n\n-- What actually happened, in order. Not used to rebuild state \u2014 the snapshot does that \u2014 but it is\n-- the record of why a state looks the way it does, which is what an incident needs.\ncreate table if not exists commands (\n round_id text not null references rounds(id) on delete cascade,\n seq integer not null check (seq > 0),\n command jsonb not null,\n primary key (round_id, seq)\n);\n";
10
10
  /**
11
11
  * Run `fn` inside a transaction, committing on success and rolling back on failure.
12
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,6iHA0ElB,CAAC;AAMF;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBjG;AAED,sGAAsG;AACtG,wBAAsB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvD;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAA4B,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,i2MA+HlB,CAAC;AAMF;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBjG;AAED,sGAAsG;AACtG,wBAAsB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvD;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAA4B,CAAC"}
package/dist/store.js CHANGED
@@ -8,8 +8,16 @@
8
8
  export const SCHEMA = `
9
9
  create table if not exists rounds (
10
10
  id text primary key,
11
+ game_id text not null check (game_id <> ''),
11
12
  wei_per_point numeric(78,0) not null check (wei_per_point > 0),
12
13
  wallet_cap_wei numeric(78,0) not null check (wallet_cap_wei > 0),
14
+ -- The two settings that produced wei_per_point, frozen beside it. They are gate-process config,
15
+ -- so an operator who restarts with a new ETH price must not retroactively change what a round
16
+ -- was priced at.
17
+ points_per_dollar double precision not null check (points_per_dollar > 0),
18
+ usd_per_eth double precision not null check (usd_per_eth > 0),
19
+ max_points_per_player bigint not null check (max_points_per_player > 0),
20
+ score_authority text not null check (score_authority in ('rules', 'external-server')),
13
21
  pool_id text not null,
14
22
  opens_at bigint not null,
15
23
  closes_at bigint not null,
@@ -27,6 +35,37 @@ create table if not exists rounds (
27
35
  constraint rounds_books_tail check (books_close_at >= closes_at)
28
36
  );
29
37
 
38
+ -- A developer may already have run the first published schema without creating any rounds. Add
39
+ -- the new authority fields in place for that empty setup. Existing round data needs a deliberate
40
+ -- reset because its original reward bound cannot be reconstructed safely.
41
+ alter table rounds
42
+ add column if not exists game_id text check (game_id <> '');
43
+ alter table rounds
44
+ add column if not exists max_points_per_player bigint check (max_points_per_player > 0);
45
+ alter table rounds
46
+ add column if not exists score_authority text check (score_authority in ('rules', 'external-server'));
47
+ alter table rounds
48
+ add column if not exists points_per_dollar double precision check (points_per_dollar > 0);
49
+ alter table rounds
50
+ add column if not exists usd_per_eth double precision check (usd_per_eth > 0);
51
+ do $$
52
+ begin
53
+ if exists (
54
+ select 1 from rounds
55
+ where game_id is null or max_points_per_player is null or score_authority is null
56
+ or points_per_dollar is null or usd_per_eth is null
57
+ ) then
58
+ raise exception 'pre-release round rows cannot be upgraded safely'
59
+ using hint = 'Delete the pre-release round data, then run migrate(pool) again.';
60
+ end if;
61
+ end
62
+ $$;
63
+ alter table rounds alter column game_id set not null;
64
+ alter table rounds alter column max_points_per_player set not null;
65
+ alter table rounds alter column score_authority set not null;
66
+ alter table rounds alter column points_per_dollar set not null;
67
+ alter table rounds alter column usd_per_eth set not null;
68
+
30
69
  create table if not exists balances (
31
70
  round_id text not null references rounds(id) on delete cascade,
32
71
  player text not null,
@@ -59,6 +98,18 @@ create table if not exists claims (
59
98
 
60
99
  create index if not exists claims_by_player on claims (round_id, player) where status = 'held';
61
100
 
101
+ -- Trusted creator servers use one stable event id for every score increment. The event and the
102
+ -- balance update commit together, so a retry can recover the first result without paying twice.
103
+ create table if not exists award_events (
104
+ round_id text not null references rounds(id) on delete cascade,
105
+ event_id varchar(128) not null check (event_id <> ''),
106
+ player text not null,
107
+ points bigint not null check (points > 0),
108
+ total_points bigint not null check (total_points >= points),
109
+ created_at timestamptz not null default now(),
110
+ primary key (round_id, event_id)
111
+ );
112
+
62
113
  -- Which game a coin plays. Addresses are chain-local, so the pin is one row per (chain, coin).
63
114
  create table if not exists registrations (
64
115
  chain_id bigint not null check (chain_id > 0),
@@ -66,8 +117,10 @@ create table if not exists registrations (
66
117
  game_id text not null check (game_id <> ''),
67
118
  gate_origin text not null check (gate_origin <> ''),
68
119
  deploy_id text not null check (deploy_id <> ''),
120
+ game_server_origins text[] not null default '{}'::text[],
69
121
  disabled_at timestamptz,
70
122
  updated_at timestamptz not null default now(),
123
+ constraint registrations_game_server_origins_bounded check (cardinality(game_server_origins) <= 4),
71
124
  primary key (chain_id, coin)
72
125
  );
73
126
 
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ErB,CAAC;AAEF,MAAM,cAAc,GAAG;;EAErB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,IAAU,EAAE,EAAkC;IACnF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAU;IACtC,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyC,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HrB,CAAC;AAEF,MAAM,cAAc,GAAG;;EAErB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,IAAU,EAAE,EAAkC;IACnF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAU;IACtC,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyC,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC"}