@diffenderfer-games/hub 2.0.0-next.6 → 2.0.0-next.8

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 (58) hide show
  1. package/CHANGELOG.md +58 -27
  2. package/dist/auto.d.ts +2 -2
  3. package/dist/auto.js +2 -2
  4. package/dist/avatar-pixi.js +1 -1
  5. package/dist/avatar-svg.js +1 -1
  6. package/dist/avatar.d.ts +2 -2
  7. package/dist/avatar.js +3 -3
  8. package/dist/doctor/cli.mjs +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.js +2 -2
  11. package/dist/shared/art.js +145 -3
  12. package/dist/shared/art.js.map +1 -1
  13. package/dist/shared/avatar.d.ts +3 -3
  14. package/dist/shared/client-version.gen.js +1 -1
  15. package/dist/shared/daily.js +1 -1
  16. package/dist/shared/describe.d.ts.map +1 -1
  17. package/dist/shared/describe.js +9 -1
  18. package/dist/shared/describe.js.map +1 -1
  19. package/dist/shared/index.d.ts +88 -11
  20. package/dist/shared/index.d.ts.map +1 -1
  21. package/dist/shared/live-canvas.js +1 -1
  22. package/dist/shared/overlays.js +1 -1
  23. package/dist/shared/pose-key.js +1 -1
  24. package/dist/shared/src.js +172 -28
  25. package/dist/shared/src.js.map +1 -1
  26. package/dist/shared/svg-markup.js +112 -27
  27. package/dist/shared/svg-markup.js.map +1 -1
  28. package/dist/shared/svg.js +1 -1
  29. package/dist/turns-rules.d.ts +2 -0
  30. package/dist/turns-rules.js +1 -0
  31. package/dist/turns.d.ts +23 -1
  32. package/dist/turns.d.ts.map +1 -1
  33. package/dist/turns.js +79 -13
  34. package/dist/turns.js.map +1 -1
  35. package/package.json +7 -2
  36. package/src/avatar/adapters/pixi-crowd.ts +302 -302
  37. package/src/avatar/adapters/pixi-types.ts +84 -84
  38. package/src/avatar/adapters/three.ts +126 -126
  39. package/src/avatar/art/glasses.ts +61 -3
  40. package/src/avatar/art/shape.ts +22 -3
  41. package/src/avatar/describe.ts +4 -1
  42. package/src/avatar/geom.ts +5 -0
  43. package/src/avatar/render/compose.ts +67 -22
  44. package/src/avatar/render/eyewear.ts +75 -13
  45. package/src/avatar-three.ts +18 -18
  46. package/src/avatar.ts +2 -2
  47. package/src/core/avatar/hub-avatar.ts +308 -308
  48. package/src/core/hub-progress.ts +269 -269
  49. package/src/core/page-account.ts +121 -121
  50. package/src/core/turns/hub-turns.ts +25 -4
  51. package/src/core/turns/turn-game.ts +143 -21
  52. package/src/core/turns/your-turn-buzz.ts +69 -0
  53. package/src/core/version/client-version.gen.ts +1 -1
  54. package/src/index.ts +68 -67
  55. package/src/overlay/overlay.ts +3 -3
  56. package/src/turns-kit/check-rules.ts +116 -17
  57. package/src/turns-rules.ts +12 -0
  58. package/src/turns.ts +4 -3
package/CHANGELOG.md CHANGED
@@ -1,40 +1,71 @@
1
1
  # @diffenderfer-games/hub
2
2
 
3
- ## 2.0.0-next.6
3
+ ## 2.0.0-next.8
4
4
 
5
5
  ### Minor Changes
6
6
 
7
- - 537272a: `hub.avatar`: players' avatars without the renderer. `mine()` / `mineSync()` (works offline from the device cache), `of(userId)` and `many(ids)` (batched and cached), `from(seat)` (any payload with `look`, no request), `bot(seed)` for computer players, `save(look)` (queued offline), `on('change')`, `openDesigner()` ("Make your avatar" over the game) and `load()` (the `/avatar` renderer with its art). A DOM-free `@diffenderfer-games/hub/avatar/svg` entry renders avatars as SVG on servers and in workers.
8
- - fb0a9f5: `hub.userId()`: your user id, or `null`, synchronously. It follows the account as the hub changes it (the menu's new-guest account, sign-in, sign-out, the live connection's hello) with no `hub.me()` call.
7
+ - ac6b1cd: Online games (`hub.turns`): `TurnGame.mayActNow` says this player may move now out of turn (the rules' `mayAct`: offer the jump-in, the UNO call, the catch), and `TurnGame.tournament` names the tournament match a game is. A `move()` answer that arrives after live events already brought newer moves no longer rolls the page back (nor does an older live event). `letComputerPlay()` documents the hand-over case. The rules kit `checkTurnRules` now moves every seat in `toAct` (not only the first) and seats in `mayAct` through `autoReact` (or the new `reactMove` option), fails on an illegal `autoReact` or a seat that does not exist, and reports `outOfTurn`.
8
+ - c12868a: Online games: new `@diffenderfer-games/hub/turns-rules` entry for a game's rules module (`defineTurnRules`, the rules types and the RNG, nothing else: the bundle stays a few KB instead of about 1 MB; `/turns` re-exports it with the kit). `TurnGame.canLetComputerPlay(now?)` says when "Let the computer play" may work (from `summary.handOverAt`, the seats' new `connected` and the deadline); `turn` now also fires when a seated player comes or goes or `handOverAt` changes. `refresh()` (and every other fetch) no longer rolls the game back when its answer is older than a live move that arrived meanwhile, and never replays that move twice. The rules kit `checkTurnRules` gains `revealed(state, marker)` (a planted card the rules rightly reveal, such as one played face up, stops being checked) and `shuffleHidden(state, seat, rng)` (the "twin table": shuffling what a seat can't see must not change its view).
9
9
 
10
- `hub.avatar` follows the account too: when your account appears or changes, your look is fetched and `change` fires with your `userId`; before it exists, `mine()` resolves at once with a default look. Each time the live connection (re)connects, the looks this page asked about are checked again and `change` fires for any that changed while it was down. `change` for your own look fires only when it differs from the one the page last had.
11
- - 849874f: Avatars: draw players' faces in any game. New entries: `@diffenderfer-games/hub/avatar` (`ready()`, `render.svg/element/canvas/canvasAt/bitmap/dataUrl`, `<dg-avatar>` via `defineAvatarElement()`, the `animator` with 16 expressions, gaze, blinks, talking, reactions and `feel()`, `layout()` anchors, `facingFrom`, `lookToward`, `describe`, `avatarEmoji`, overlays and `createAtlas`), `@diffenderfer-games/hub/avatar/pixi` (`pixiAvatar`, `avatarTexture`, `createCrowd`) and `@diffenderfer-games/hub/avatar/three` (`avatarCanvasTexture`, `avatarSprite`). The adapters take your PIXI or THREE namespace; no new dependencies. See "Avatars" in docs/hub.md.
12
- - 5109a42: The avatar renderer draws the new `beard.short` (a short, neat beard with a moustache) in style C, with the same beard and moustache layers and tonal outline as the full beard, in SVG, `<dg-avatar>` and the Pixi and three.js adapters. `describe()` calls it "a short beard".
13
- - e86bfb4: "Your turn" alerts and quiet hours. The contract adds the `your_turn` notice and preference kind, `NotifyPrefs.yourTurn`/`yourTurnOff`/`yourTurnAsked`/`quiet`, `QuietHours` and `PUT /social/notify/quiet` (`setQuietHours`), plus `POST /turns/:id/share` (`shareTurnGame`) and `autoStart` on `createTurnGame`. The client adds `TurnGame.share({ link?, public? })`, `hub.turns.create({ autoStart })`, `TURN_RESYNC_EVENT` (an open online game fetches what it missed when the live connection comes back; `turn` also fires on a `chatMode` or `link` change), and `hub.saved.onOpen(handler, { kinds })`. A second Rematch joins the first one's game.
14
- - e0e38da: Daily challenges in progress. A started day is now a saved game: starting it again (the calendar, a `?daily=` link, Your games) picks it up where the player left it, at any age, and winning it any time later gives that day's credit. `hub.daily` adds `save({ state, progress, title?, version? })`, `resume(instanceId)`, `discard()` and `inProgress()`; `challenge.saved`/`savedVersion`/`instanceId`/`resumed` in `play(challenge)`; the `hub:daily-resumed`, `hub:daily-paused` and `hub:daily-discarded` events. `hub.daily.cancel()` now pauses the day (it stays in progress) instead of dropping it. `hub.resume.save()` during a daily saves to the day instead of being ignored (`blockedBy` no longer reports `'daily'`), so games that already use `hub.resume` get mid-daily saves for free; `hub.resume.clear()` during a daily restarts the day. Works offline (a day started offline lands as the one saved game for that day). The contract adds `StartedDailyChallenge` (start answers `instanceId`, `saved`, `savedVersion`, `resumed`), `POST /daily/instances/:id/resume`, `inProgress` days in `GET /daily` and `GET /games/:slug/daily`, and 409 `too_many_dailies` (60 per game).
15
- - ce80c33: Saved games (foundations). New `hub.saved`: `list()` (this game's games in progress: daily challenges, the saved run, online games), `listAll()`, `opened` (the instance the page was opened for, `?hub_open=<id>&hub_kind=<kind>`), `onOpen(handler)` (switch to a game picked from the hub menu without a reload), `open(id)`, `discard(id)`, `counts()` and `on('change', cb)`. Works offline from the device's copies. The contract adds `api/saved.ts` (`GET /saved`, `GET /saved/:id`, `PUT /saved/:id/state`, `POST /saved/:id/discard`, `POST /games/:slug/saved/discard`), the `saved` socket event, `TurnSummary`, the error codes `instance_closed` and `too_many_dailies`, and the pure `compareSaved`/`countSaved`. `hub.resume` is unchanged for games; saved runs never expire any more (`RESUME_RETENTION_MS` is deprecated and unused).
16
- - 0c5c833: Online games played over days. A game declares `game.turns` (`rules`, `players`, `bots`, `modes`, `maxApplyMs`) and ships its rules as one self-contained ES module (the `TurnRules` contract: `setup`, `view`, `toAct`, `apply`, `eventView`, `outcome`, `progress`, `autoMove`, `migrate`); the hub runs it on the server, so hands and decks never reach another player. New `hub.turns` (`create`, `join`, `open`, `list`, `openLobbies`, `link`) and `TurnGame` (`summary`, `view`, `mySeat`, `outcome`, `chat`, `chatMode`, `link`, `start`, `move`, `history`, `leave`, `nudge`, `setNotify`, `rematch`, `invite`, `letComputerPlay`, `say`, `refresh`, `close`, events `move`, `turn`, `ended`, `chat`). `@diffenderfer-games/hub/turns` exports the rules types, `defineTurnRules`, the seeded RNG and the `checkTurnRules` conformance kit for a game's own tests. `HubError.rule` carries a rules refusal's code; `hub.resume.blockedBy` can be `'turns'`. The contract adds `api/turns.ts`, the `turn` and `turn.chat` events, the turn error codes, `ErrorBody.rule`, Play online's `yourTurn`/`turns`/`openTurns`/`turnGames`, and the `turn_chat` report kind.
10
+ `TurnGame.move()` fetches the game again after a 500 `rules_error` or 503 `rules_busy` (the hub now makes a move all or nothing, so such a move was not made).
11
+
12
+ The "your turn" buzz: every online game's page gives a short vibration when the player becomes due on a live update (never for their own next step, a move out of turn, a game just opened or a catch-up; never when they turned it off, ask for less motion, or the device can't vibrate). `hub.turns.setYourTurnBuzz(false)` and `TurnGame.setYourTurnBuzz(false)` opt a page or game out; `hub.turns.playerYourTurnBuzz` is the player's own switch on this device (the menu's Settings show it), with `readYourTurnBuzz`, `saveYourTurnBuzz`, `isNewlyDue`, `YOUR_TURN_BUZZ` and `YOUR_TURN_BUZZ_KEY` exported. A visible page waiting on another player's move that hears nothing for `TURN_QUIET_MS` (15 s) fetches the game again, so games need no polling of their own.
17
13
 
18
14
  ### Patch Changes
19
15
 
20
- - 4a03d21: The avatar adapters take the engines' real types and give them back: `pixiAvatar`, `avatarTexture` and `createCrowd` (`/avatar/pixi`) accept `import * as PIXI from 'pixi.js'` or an object of the named imports, and `face.view` is pixi's own `Sprite` (it goes into a `Container` with no cast). `avatarSprite` and `avatarCanvasTexture` (`/avatar/three`) do the same for three.js, returning three's `Sprite` and `CanvasTexture`; `avatarCanvasTexture` needs only `CanvasTexture` (the new `ThreeTextureNs`). `PixiNs`, `PixiSprite`, `PixiContainer`, `PixiAvatar`, `CrowdOptions`, `ThreeNs` and `ThreeAvatarTexture` are generic over the game's classes, with defaults, so existing annotations keep compiling. No runtime change.
21
- - bcb10f1: `hub.resume.clear()` during a daily challenge now reaches the hub (the day starts over from its seed on every device instead of the old state coming back), and `hub.resume.get()`/`load()` dropping an older-version saved run no longer restarts the daily being played.
22
- - ac2884e: `hub.input.autoNavigateTarget()` returns the game's current `autoNavigate` target (its query and back action), so hub dialogs that borrow the gamepad give the game's menu navigation back when they close. Fixes gamepad menu navigation being lost after a social dialog (a confirm, the share sheet) closed.
23
- - b2e9e64: Saved runs (`hub.resume`) are now saved games of their own kind and never expire; the API is unchanged. The menu's Reset game also offers to discard the game's daily challenges in progress.
24
- - 93af853: `hub.input.setInsets` also publishes the insets as `--hub-inset-top` (and right, bottom, left) on the page, so the hub's toasts sit below a game's top bar (without it, the hub looks for a top bar in the page itself).
25
- - 06f827c: `TurnGame` fires `turn` when a seated player changes their avatar (the seat's `look`), not only when statuses or players change.
26
- - Updated dependencies [91ca7f9]
27
- - Updated dependencies [46fa584]
28
- - Updated dependencies [5109a42]
29
- - Updated dependencies [bf6445c]
30
- - Updated dependencies [508531a]
31
- - Updated dependencies [e86bfb4]
32
- - Updated dependencies [e0e38da]
33
- - Updated dependencies [ce80c33]
34
- - Updated dependencies [0c5c833]
35
- - Updated dependencies [17cf0af]
36
- - @diffenderfer-games/hub-contract@2.0.0-next.6
16
+ - Updated dependencies [3a67590]
17
+ - Updated dependencies [70dcfa1]
18
+ - Updated dependencies [c77830f]
19
+ - Updated dependencies [ac6b1cd]
20
+ - Updated dependencies [c12868a]
21
+ - @diffenderfer-games/hub-contract@2.0.0-next.8
37
22
 
23
+ ## 2.0.0-next.7
24
+
25
+ ### Minor Changes
26
+
27
+ - 99d0932: Avatars: long hair now hangs behind the body. The parts of a hair style below the shoulders are drawn before the body (in SVG, Canvas, `<dg-avatar>`, the Pixi atlas and the three.js adapter) while the fringe and anything over the face stay over the head; back views keep the hair over the back. The renderer draws the eight new glasses in style C with any frame colour (light frames, and frames close to the skin, get a dark edge) and tinted lenses for sunglasses, sport and hearts (a mirror finish for `p:lens-mirror`); winks and sleepy eyes show through the lenses. `describe()` names them. The `/avatar` entry re-exports `FRAME_PRESETS`, `isTinted` and `SECOND_COLOUR_CODE`.
28
+
29
+ ### Patch Changes
30
+
31
+ - Updated dependencies [99d0932]
32
+ - @diffenderfer-games/hub-contract@2.0.0-next.7
33
+
34
+ ## 2.0.0-next.6
35
+
36
+ ### Minor Changes
37
+
38
+ - 537272a: `hub.avatar`: players' avatars without the renderer. `mine()` / `mineSync()` (works offline from the device cache), `of(userId)` and `many(ids)` (batched and cached), `from(seat)` (any payload with `look`, no request), `bot(seed)` for computer players, `save(look)` (queued offline), `on('change')`, `openDesigner()` ("Make your avatar" over the game) and `load()` (the `/avatar` renderer with its art). A DOM-free `@diffenderfer-games/hub/avatar/svg` entry renders avatars as SVG on servers and in workers.
39
+ - fb0a9f5: `hub.userId()`: your user id, or `null`, synchronously. It follows the account as the hub changes it (the menu's new-guest account, sign-in, sign-out, the live connection's hello) with no `hub.me()` call.
40
+
41
+ `hub.avatar` follows the account too: when your account appears or changes, your look is fetched and `change` fires with your `userId`; before it exists, `mine()` resolves at once with a default look. Each time the live connection (re)connects, the looks this page asked about are checked again and `change` fires for any that changed while it was down. `change` for your own look fires only when it differs from the one the page last had.
42
+ - 849874f: Avatars: draw players' faces in any game. New entries: `@diffenderfer-games/hub/avatar` (`ready()`, `render.svg/element/canvas/canvasAt/bitmap/dataUrl`, `<dg-avatar>` via `defineAvatarElement()`, the `animator` with 16 expressions, gaze, blinks, talking, reactions and `feel()`, `layout()` anchors, `facingFrom`, `lookToward`, `describe`, `avatarEmoji`, overlays and `createAtlas`), `@diffenderfer-games/hub/avatar/pixi` (`pixiAvatar`, `avatarTexture`, `createCrowd`) and `@diffenderfer-games/hub/avatar/three` (`avatarCanvasTexture`, `avatarSprite`). The adapters take your PIXI or THREE namespace; no new dependencies. See "Avatars" in docs/hub.md.
43
+ - 5109a42: The avatar renderer draws the new `beard.short` (a short, neat beard with a moustache) in style C, with the same beard and moustache layers and tonal outline as the full beard, in SVG, `<dg-avatar>` and the Pixi and three.js adapters. `describe()` calls it "a short beard".
44
+ - e86bfb4: "Your turn" alerts and quiet hours. The contract adds the `your_turn` notice and preference kind, `NotifyPrefs.yourTurn`/`yourTurnOff`/`yourTurnAsked`/`quiet`, `QuietHours` and `PUT /social/notify/quiet` (`setQuietHours`), plus `POST /turns/:id/share` (`shareTurnGame`) and `autoStart` on `createTurnGame`. The client adds `TurnGame.share({ link?, public? })`, `hub.turns.create({ autoStart })`, `TURN_RESYNC_EVENT` (an open online game fetches what it missed when the live connection comes back; `turn` also fires on a `chatMode` or `link` change), and `hub.saved.onOpen(handler, { kinds })`. A second Rematch joins the first one's game.
45
+ - e0e38da: Daily challenges in progress. A started day is now a saved game: starting it again (the calendar, a `?daily=` link, Your games) picks it up where the player left it, at any age, and winning it any time later gives that day's credit. `hub.daily` adds `save({ state, progress, title?, version? })`, `resume(instanceId)`, `discard()` and `inProgress()`; `challenge.saved`/`savedVersion`/`instanceId`/`resumed` in `play(challenge)`; the `hub:daily-resumed`, `hub:daily-paused` and `hub:daily-discarded` events. `hub.daily.cancel()` now pauses the day (it stays in progress) instead of dropping it. `hub.resume.save()` during a daily saves to the day instead of being ignored (`blockedBy` no longer reports `'daily'`), so games that already use `hub.resume` get mid-daily saves for free; `hub.resume.clear()` during a daily restarts the day. Works offline (a day started offline lands as the one saved game for that day). The contract adds `StartedDailyChallenge` (start answers `instanceId`, `saved`, `savedVersion`, `resumed`), `POST /daily/instances/:id/resume`, `inProgress` days in `GET /daily` and `GET /games/:slug/daily`, and 409 `too_many_dailies` (60 per game).
46
+ - ce80c33: Saved games (foundations). New `hub.saved`: `list()` (this game's games in progress: daily challenges, the saved run, online games), `listAll()`, `opened` (the instance the page was opened for, `?hub_open=<id>&hub_kind=<kind>`), `onOpen(handler)` (switch to a game picked from the hub menu without a reload), `open(id)`, `discard(id)`, `counts()` and `on('change', cb)`. Works offline from the device's copies. The contract adds `api/saved.ts` (`GET /saved`, `GET /saved/:id`, `PUT /saved/:id/state`, `POST /saved/:id/discard`, `POST /games/:slug/saved/discard`), the `saved` socket event, `TurnSummary`, the error codes `instance_closed` and `too_many_dailies`, and the pure `compareSaved`/`countSaved`. `hub.resume` is unchanged for games; saved runs never expire any more (`RESUME_RETENTION_MS` is deprecated and unused).
47
+ - 0c5c833: Online games played over days. A game declares `game.turns` (`rules`, `players`, `bots`, `modes`, `maxApplyMs`) and ships its rules as one self-contained ES module (the `TurnRules` contract: `setup`, `view`, `toAct`, `apply`, `eventView`, `outcome`, `progress`, `autoMove`, `migrate`); the hub runs it on the server, so hands and decks never reach another player. New `hub.turns` (`create`, `join`, `open`, `list`, `openLobbies`, `link`) and `TurnGame` (`summary`, `view`, `mySeat`, `outcome`, `chat`, `chatMode`, `link`, `start`, `move`, `history`, `leave`, `nudge`, `setNotify`, `rematch`, `invite`, `letComputerPlay`, `say`, `refresh`, `close`, events `move`, `turn`, `ended`, `chat`). `@diffenderfer-games/hub/turns` exports the rules types, `defineTurnRules`, the seeded RNG and the `checkTurnRules` conformance kit for a game's own tests. `HubError.rule` carries a rules refusal's code; `hub.resume.blockedBy` can be `'turns'`. The contract adds `api/turns.ts`, the `turn` and `turn.chat` events, the turn error codes, `ErrorBody.rule`, Play online's `yourTurn`/`turns`/`openTurns`/`turnGames`, and the `turn_chat` report kind.
48
+
49
+ ### Patch Changes
50
+
51
+ - 4a03d21: The avatar adapters take the engines' real types and give them back: `pixiAvatar`, `avatarTexture` and `createCrowd` (`/avatar/pixi`) accept `import * as PIXI from 'pixi.js'` or an object of the named imports, and `face.view` is pixi's own `Sprite` (it goes into a `Container` with no cast). `avatarSprite` and `avatarCanvasTexture` (`/avatar/three`) do the same for three.js, returning three's `Sprite` and `CanvasTexture`; `avatarCanvasTexture` needs only `CanvasTexture` (the new `ThreeTextureNs`). `PixiNs`, `PixiSprite`, `PixiContainer`, `PixiAvatar`, `CrowdOptions`, `ThreeNs` and `ThreeAvatarTexture` are generic over the game's classes, with defaults, so existing annotations keep compiling. No runtime change.
52
+ - bcb10f1: `hub.resume.clear()` during a daily challenge now reaches the hub (the day starts over from its seed on every device instead of the old state coming back), and `hub.resume.get()`/`load()` dropping an older-version saved run no longer restarts the daily being played.
53
+ - ac2884e: `hub.input.autoNavigateTarget()` returns the game's current `autoNavigate` target (its query and back action), so hub dialogs that borrow the gamepad give the game's menu navigation back when they close. Fixes gamepad menu navigation being lost after a social dialog (a confirm, the share sheet) closed.
54
+ - b2e9e64: Saved runs (`hub.resume`) are now saved games of their own kind and never expire; the API is unchanged. The menu's Reset game also offers to discard the game's daily challenges in progress.
55
+ - 93af853: `hub.input.setInsets` also publishes the insets as `--hub-inset-top` (and right, bottom, left) on the page, so the hub's toasts sit below a game's top bar (without it, the hub looks for a top bar in the page itself).
56
+ - 06f827c: `TurnGame` fires `turn` when a seated player changes their avatar (the seat's `look`), not only when statuses or players change.
57
+ - Updated dependencies [91ca7f9]
58
+ - Updated dependencies [46fa584]
59
+ - Updated dependencies [5109a42]
60
+ - Updated dependencies [bf6445c]
61
+ - Updated dependencies [508531a]
62
+ - Updated dependencies [e86bfb4]
63
+ - Updated dependencies [e0e38da]
64
+ - Updated dependencies [ce80c33]
65
+ - Updated dependencies [0c5c833]
66
+ - Updated dependencies [17cf0af]
67
+ - @diffenderfer-games/hub-contract@2.0.0-next.6
68
+
38
69
  ## 2.0.0-next.5
39
70
 
40
71
  ### Patch Changes
package/dist/auto.d.ts CHANGED
@@ -8,7 +8,7 @@ import { a as RaceHistoryQuery, c as RaceRuntimeApi, i as RaceEvents, l as RaceS
8
8
  import { f as raceForwarder } from "./shared/race.js";
9
9
  import { n as roomsForwarder } from "./shared/rooms.js";
10
10
  import { $ as RuntimeAvatarApi, A as RacerState, B as SuggestionStatus, C as RaceRecord, D as RaceStats, E as RaceState, F as ReportReason, G as REALTIME_READY_EVENT, H as isRealtimeApi, I as RoomInfo, J as SESSION_EVENT, K as REALTIME_SINGLETON_API, L as SocialConfig, M as Relation, N as ReportInput, O as Racer, P as ReportKind, Q as OpenDesignerOptions, R as SocialMe, S as RaceParams, T as RaceStatValue, U as REALTIME_FAILED_EVENT, V as findRealtimeApi, W as REALTIME_FEATURE_VERSION, X as AvatarRef, Y as AvatarChange, Z as DesignerResult, _ as PlayerLite, a as ErrorBody, at as HubNotifyApi, b as PresenceKind, c as JoinInfo, ct as OpenInviteOptions, d as Message, dt as SocialCounts, et as RealtimeHubLink, f as MessagesPage, ft as SocialEvents, g as PlayerCard, h as Party, i as Counts, it as socialForwarder, j as RecentPlayer, k as RacerResult, l as Launch, lt as PlayOnlineMethods, m as NotifyPrefs, n as ChatMode, nt as notifyForwarder, o as FriendEntry, ot as HubPresenceApi, p as NotifyChange, q as RealtimeApi, r as Conversation, rt as presenceForwarder, s as Invite, st as HubSocialApi, t as Audience, tt as linkRealtimeToHub, u as LaunchTicket, ut as PlayerRef, v as Presence, w as RaceResult, x as RaceOutcome, y as PresenceInput, z as Suggestion } from "./shared/social.js";
11
- import { $ as OfflineApi, A as SavedChangeListener, At as MeResponse, B as ResumeRun, Bt as SubmitScoreResult, C as TURN_RESYNC_EVENT, Ct as HubOptions, D as TurnOutcome, Dt as Json, E as TurnMoveEvent, Et as InventorySnapshot, F as RESUME_MAX_STATE_BYTES, Ft as SaveMeta, G as TradeId, Gt as AvatarHost, H as HubMenuControl, Ht as EndpointFields, I as ResumeBlocker, It as SnapshotResponse, J as AuthResponse, Jt as CarriesLook, K as TradeListOptions, Kt as AvatarModule, L as ResumeEntry, Lt as SortDir, M as SavedOpenHandler, Mt as Profile, N as HubResume, Nt as ProfileSummary, O as HubSaved, Ot as LeaderboardEntry, P as RESUME_DEBOUNCE_MS, Pt as Save, Q as SyncResult, R as ResumeLoadOptions, Rt as Stats, S as TURN_POLL_MS, St as GlobalAnalytics, T as TurnGameEvents, Tt as Inventory, U as GrantBundle, Ut as EndpointName, V as ResumeSaveInput, Vt as User, W as TradeBundle, Wt as EndpointReply, X as StatResult, Y as ProfileUpdate, Z as SyncConflict, _ as HubTurns, _t as BoardWithTop, a as HUB_CLIENT_VERSION, at as OUTBOX_MAX_CHARS, b as TURN_CHAT_EVENT, bt as GameLeaderboards, c as HubErrorCode, ct as OfflineKindDefinition, d as SAVE_UNKNOWN_CODE, dt as ProfilePatch, et as OUTBOX_FULL_CODE, f as UNSUPPORTED_BY_HUB, ft as QueueOp, g as ClientSupport, gt as Board, h as hub, ht as BufferedEvent, i as TurnGameView, it as OfflineOp, j as SavedOpenDetail, jt as Metrics, k as SAVED_CHANGE_QUIET_MS, kt as LeaderboardResult, l as HubErrorDetails, lt as ReplayContext, m as createHub, mt as QueuedScoreOptions, n as TurnChatLine, nt as OfflineEventName, o as ContentRejectedError, ot as OUTBOX_MAX_ENTRIES, p as Hub, pt as QueueOpInput, q as TradeNoteOptions, qt as HubAvatar, r as TurnDeadline, rt as OfflineListener, s as HubError, st as OfflineHandler, t as OpenTurnGame, tt as OfflineEventDetails, u as OfflineError, ut as CLIENT_VERSION_HEADER, v as TURN_LINK_PARAM, vt as GameAnalytics, w as TurnGame, wt as HubStatus, x as TURN_EVENT, xt as GameRecords, y as TurnCreateOptions, yt as GameInfo, z as ResumeProgress, zt as SubmitScoreOptions } from "./shared/index.js";
11
+ import { $ as TradeListOptions, $t as AvatarModule, A as TurnGame, At as HubOptions, B as HubResume, Bt as ProfileSummary, C as TURN_LINK_PARAM, Ct as Board, D as TURN_POLL_MS, Dt as GameLeaderboards, E as TURN_EVENT, Et as GameInfo, F as HubSaved, Ft as LeaderboardEntry, G as ResumeLoadOptions, Gt as Stats, H as RESUME_MAX_STATE_BYTES, Ht as SaveMeta, I as SAVED_CHANGE_QUIET_MS, It as LeaderboardResult, J as ResumeSaveInput, Jt as User, K as ResumeProgress, Kt as SubmitScoreOptions, L as SavedChangeListener, Lt as MeResponse, M as TurnGameOptions, Mt as Inventory, N as TurnMoveEvent, Nt as InventorySnapshot, O as TURN_QUIET_MS, Ot as GameRecords, P as TurnOutcome, Pt as Json, Q as TradeId, Qt as AvatarHost, R as SavedOpenDetail, Rt as Metrics, S as HubTurns, St as BufferedEvent, T as TURN_CHAT_EVENT, Tt as GameAnalytics, U as ResumeBlocker, Ut as SnapshotResponse, V as RESUME_DEBOUNCE_MS, Vt as Save, W as ResumeEntry, Wt as SortDir, X as GrantBundle, Xt as EndpointName, Y as HubMenuControl, Yt as EndpointFields, Z as TradeBundle, Zt as EndpointReply, _ as UNSUPPORTED_BY_HUB, _t as CLIENT_VERSION_HEADER, a as HUB_CLIENT_VERSION, at as SyncResult, b as hub, bt as QueueOpInput, c as isNewlyDue, ct as OfflineEventDetails, d as ContentRejectedError, dt as OfflineOp, en as HubAvatar, et as TradeNoteOptions, f as HubError, ft as OUTBOX_MAX_CHARS, g as SAVE_UNKNOWN_CODE, gt as ReplayContext, h as OfflineError, ht as OfflineKindDefinition, i as TurnGameView, it as SyncConflict, j as TurnGameEvents, jt as HubStatus, k as TURN_RESYNC_EVENT, kt as GlobalAnalytics, l as readYourTurnBuzz, lt as OfflineEventName, m as HubErrorDetails, mt as OfflineHandler, n as TurnChatLine, nt as ProfileUpdate, o as YOUR_TURN_BUZZ, ot as OfflineApi, p as HubErrorCode, pt as OUTBOX_MAX_ENTRIES, q as ResumeRun, qt as SubmitScoreResult, r as TurnDeadline, rt as StatResult, s as YOUR_TURN_BUZZ_KEY, st as OUTBOX_FULL_CODE, t as OpenTurnGame, tn as CarriesLook, tt as AuthResponse, u as saveYourTurnBuzz, ut as OfflineListener, v as Hub, vt as ProfilePatch, w as TurnCreateOptions, wt as BoardWithTop, x as ClientSupport, xt as QueuedScoreOptions, y as createHub, yt as QueueOp, z as SavedOpenHandler, zt as Profile } from "./shared/index.js";
12
12
  //#region src/auto.d.ts
13
13
  /** What `window.HubSDK` holds. */
14
14
  export interface HubSdkGlobal {
@@ -32,5 +32,5 @@ declare global {
32
32
  }
33
33
  }
34
34
  //#endregion
35
- export { type Anchor, type Audience, type AuthResponse, type AutoNavigateTarget, type AutoPauseOptions, type AvatarChange, type AvatarHost, type AvatarModule, type AvatarRef, type AxisDef, type AxisSide, type Board, type BoardWithTop, type BufferedEvent, type BusyOptions, CLIENT_VERSION_HEADER, type CarriesLook, type ChatMode, type ClientSupport, ContentRejectedError, type Conversation, type Counts, DAILY_SINGLETON_API, DAILY_START_EVENT, type DailyAll, type DailyChallenge, type DailyCompleteResponse, type DailyCompletion, type DailyCompletionMeta, type DailyCompletions, type DailyDefinition, type DailyEventDetail, type DailyGameStatus, type DailyHost, type DailySaveInput, type DailyStartResponse, type DailyStatus, DailySystem, type DesignerResult, type DraggedSpot, type EdgeOffsets, type EndpointFields, type EndpointName, type EndpointReply, type ErrorBody, FOCUS_RING_SHADOW, type FriendEntry, type GameAnalytics, type GameInfo, type GameLeaderboards, type GamePayload, type GameRecords, type GamepadMapping, type GlobalAnalytics, type GrantBundle, type GroupDef, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, type HubErrorCode, type HubErrorDetails, type HubMenuControl, type HubMpApi, type HubNotifyApi, type HubOptions, type HubPresenceApi, type HubRaceApi, HubResume, type HubRoom, type HubRoomsApi, HubSaved, type HubSocialApi, type HubStatus, HubTurns, INPUT_SINGLETON_API, type InputConfig, type InputDef, type InputEvents, type InputHost, type InputModality, type InputOptions, type InputOverrides, type InputReading, type InputSource, InputSystem, type InputSystemOptions, type Insets, type Inventory, type InventorySnapshot, type Invite, type InviteCreated, type InviteLink, type InviteLinkMethods, type InviteOptions, type InviteResult, type JoinInfo, type JoinInfoEvent, type JoinOptions, type Json, type Launch, type LaunchTicket, type LayoutBox, type LayoutItem, type LayoutOptions, type LeaderboardEntry, type LeaderboardResult, MODALITY_ATTRIBUTE, type MeResponse, type MenuBridge, type Message, type MessagesPage, type Metrics, type MouseMapping, type NavBlurEvent, type NavElement, type NavElementKind, type NavFocusEvent, type NavTarget, type NavigableDef, type Notice, type NotifyChange, type NotifyPrefs, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, type OfflineEventDetails, type OfflineEventName, type OfflineHandler, type OfflineKindDefinition, type OfflineListener, type OfflineOp, type OpenDesignerOptions, type OpenInviteOptions, type OpenTurnGame, Overlay, type OverlayEdge, type OverlayEvent, type OverlayListener, type OverlayReason, type PageInputControl, type Party, type PlayOnlineMethods, type PlayerCard, type PlayerLite, type PlayerRef, type Presence, type PresenceInput, type PresenceKind, type Profile, type ProfilePatch, type ProfileSummary, type ProfileUpdate, type QueueOp, type QueueOpInput, type QueuedScoreOptions, type REALTIME_FAILED_EVENT, type REALTIME_FEATURE_VERSION, type REALTIME_READY_EVENT, type REALTIME_SINGLETON_API, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, type RaceCreateOptions, type RaceDefinition, type RaceEvents, type RaceHistory, type RaceHistoryQuery, type RaceHistoryViewOptions, type RaceHudPlace, type RaceOutcome, type RaceParams, type RaceRecord, type RaceRecordPlayer, type RaceResult, type RaceResultPlayer, type RaceRuntimeApi, type RaceStart, type RaceStatValue, type RaceState, type RaceStats, type RaceStatusEvent, type Racer, type RacerResult, type RacerState, type RealtimeApi, type RealtimeErrorShape, type RealtimeHubLink, type RecentPlayer, type Rect, type Relation, type ReplayContext, type ReportInput, type ReportKind, type ReportReason, type ResumeBlocker, type ResumeEntry, type ResumeLoadOptions, type ResumeProgress, type ResumeRun, type ResumeSaveInput, type RoomChatLine, type RoomCreateOptions, type RoomEvents, type RoomInfo, type RoomListOptions, type RoomMessage, type RoomReclaimMethods, type RoomSeat, type RoomSeatChange, type RoomSelf, type RoomSendOptions, type RoomState, type RoomStateChange, type RoomStateOptions, type RuntimeAvatarApi, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, type SESSION_EVENT, type Save, type SaveMeta, type SavedChangeListener, type SavedCounts, type SavedDaily, type SavedEntry, type SavedKind, type SavedListOptions, type SavedOpenDetail, type SavedOpenHandler, type SavedOpened, type SavedProgress, type SavedStatus, type SchemaOutput, type ServerEvents, type Snapshot, type SnapshotResponse, type SocialConfig, type SocialCounts, type SocialEvents, type SocialMe, type SortDir, type StatResult, type Stats, type SubmitScoreOptions, type SubmitScoreResult, type Suggestion, type SuggestionStatus, type SyncConflict, type SyncResult, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_RESYNC_EVENT, type TouchMapping, type TradeBundle, type TradeId, type TradeListOptions, type TradeNoteOptions, type TurnChatLine, type TurnCreateOptions, type TurnDeadline, TurnGame, type TurnGameEvents, type TurnGameView, type TurnMoveEvent, type TurnOutcome, type TurnSummary, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, type UiStack, type UiStackHandoff, type User, type Vector, type VirtualControlType, type VirtualDef, type VirtualInputs, type VirtualOverride, boxesTouch, controlSize, createHub, type findRealtimeApi, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isPageInputControl, type isRealtimeApi, isUiStack, layoutControls, type linkRealtimeToHub, type multiplayerForwarder as mp, type notifyForwarder as notify, parseInputOverrides, type presenceForwarder as presence, type raceForwarder as race, type roomsForwarder as rooms, savedGameUrl, type socialForwarder as social, trackInputModality };
35
+ export { type Anchor, type Audience, type AuthResponse, type AutoNavigateTarget, type AutoPauseOptions, type AvatarChange, type AvatarHost, type AvatarModule, type AvatarRef, type AxisDef, type AxisSide, type Board, type BoardWithTop, type BufferedEvent, type BusyOptions, CLIENT_VERSION_HEADER, type CarriesLook, type ChatMode, type ClientSupport, ContentRejectedError, type Conversation, type Counts, DAILY_SINGLETON_API, DAILY_START_EVENT, type DailyAll, type DailyChallenge, type DailyCompleteResponse, type DailyCompletion, type DailyCompletionMeta, type DailyCompletions, type DailyDefinition, type DailyEventDetail, type DailyGameStatus, type DailyHost, type DailySaveInput, type DailyStartResponse, type DailyStatus, DailySystem, type DesignerResult, type DraggedSpot, type EdgeOffsets, type EndpointFields, type EndpointName, type EndpointReply, type ErrorBody, FOCUS_RING_SHADOW, type FriendEntry, type GameAnalytics, type GameInfo, type GameLeaderboards, type GamePayload, type GameRecords, type GamepadMapping, type GlobalAnalytics, type GrantBundle, type GroupDef, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, type HubErrorCode, type HubErrorDetails, type HubMenuControl, type HubMpApi, type HubNotifyApi, type HubOptions, type HubPresenceApi, type HubRaceApi, HubResume, type HubRoom, type HubRoomsApi, HubSaved, type HubSocialApi, type HubStatus, HubTurns, INPUT_SINGLETON_API, type InputConfig, type InputDef, type InputEvents, type InputHost, type InputModality, type InputOptions, type InputOverrides, type InputReading, type InputSource, InputSystem, type InputSystemOptions, type Insets, type Inventory, type InventorySnapshot, type Invite, type InviteCreated, type InviteLink, type InviteLinkMethods, type InviteOptions, type InviteResult, type JoinInfo, type JoinInfoEvent, type JoinOptions, type Json, type Launch, type LaunchTicket, type LayoutBox, type LayoutItem, type LayoutOptions, type LeaderboardEntry, type LeaderboardResult, MODALITY_ATTRIBUTE, type MeResponse, type MenuBridge, type Message, type MessagesPage, type Metrics, type MouseMapping, type NavBlurEvent, type NavElement, type NavElementKind, type NavFocusEvent, type NavTarget, type NavigableDef, type Notice, type NotifyChange, type NotifyPrefs, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, type OfflineEventDetails, type OfflineEventName, type OfflineHandler, type OfflineKindDefinition, type OfflineListener, type OfflineOp, type OpenDesignerOptions, type OpenInviteOptions, type OpenTurnGame, Overlay, type OverlayEdge, type OverlayEvent, type OverlayListener, type OverlayReason, type PageInputControl, type Party, type PlayOnlineMethods, type PlayerCard, type PlayerLite, type PlayerRef, type Presence, type PresenceInput, type PresenceKind, type Profile, type ProfilePatch, type ProfileSummary, type ProfileUpdate, type QueueOp, type QueueOpInput, type QueuedScoreOptions, type REALTIME_FAILED_EVENT, type REALTIME_FEATURE_VERSION, type REALTIME_READY_EVENT, type REALTIME_SINGLETON_API, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, type RaceCreateOptions, type RaceDefinition, type RaceEvents, type RaceHistory, type RaceHistoryQuery, type RaceHistoryViewOptions, type RaceHudPlace, type RaceOutcome, type RaceParams, type RaceRecord, type RaceRecordPlayer, type RaceResult, type RaceResultPlayer, type RaceRuntimeApi, type RaceStart, type RaceStatValue, type RaceState, type RaceStats, type RaceStatusEvent, type Racer, type RacerResult, type RacerState, type RealtimeApi, type RealtimeErrorShape, type RealtimeHubLink, type RecentPlayer, type Rect, type Relation, type ReplayContext, type ReportInput, type ReportKind, type ReportReason, type ResumeBlocker, type ResumeEntry, type ResumeLoadOptions, type ResumeProgress, type ResumeRun, type ResumeSaveInput, type RoomChatLine, type RoomCreateOptions, type RoomEvents, type RoomInfo, type RoomListOptions, type RoomMessage, type RoomReclaimMethods, type RoomSeat, type RoomSeatChange, type RoomSelf, type RoomSendOptions, type RoomState, type RoomStateChange, type RoomStateOptions, type RuntimeAvatarApi, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, type SESSION_EVENT, type Save, type SaveMeta, type SavedChangeListener, type SavedCounts, type SavedDaily, type SavedEntry, type SavedKind, type SavedListOptions, type SavedOpenDetail, type SavedOpenHandler, type SavedOpened, type SavedProgress, type SavedStatus, type SchemaOutput, type ServerEvents, type Snapshot, type SnapshotResponse, type SocialConfig, type SocialCounts, type SocialEvents, type SocialMe, type SortDir, type StatResult, type Stats, type SubmitScoreOptions, type SubmitScoreResult, type Suggestion, type SuggestionStatus, type SyncConflict, type SyncResult, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_QUIET_MS, TURN_RESYNC_EVENT, type TouchMapping, type TradeBundle, type TradeId, type TradeListOptions, type TradeNoteOptions, type TurnChatLine, type TurnCreateOptions, type TurnDeadline, TurnGame, type TurnGameEvents, type TurnGameOptions, type TurnGameView, type TurnMoveEvent, type TurnOutcome, type TurnSummary, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, type UiStack, type UiStackHandoff, type User, type Vector, type VirtualControlType, type VirtualDef, type VirtualInputs, type VirtualOverride, YOUR_TURN_BUZZ, YOUR_TURN_BUZZ_KEY, boxesTouch, controlSize, createHub, type findRealtimeApi, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isNewlyDue, isPageInputControl, type isRealtimeApi, isUiStack, layoutControls, type linkRealtimeToHub, type multiplayerForwarder as mp, type notifyForwarder as notify, parseInputOverrides, type presenceForwarder as presence, type raceForwarder as race, readYourTurnBuzz, type roomsForwarder as rooms, saveYourTurnBuzz, savedGameUrl, type socialForwarder as social, trackInputModality };
36
36
  //# sourceMappingURL=auto.d.ts.map
package/dist/auto.js CHANGED
@@ -2,7 +2,7 @@ import { a as DailySystem, i as DAILY_START_EVENT, n as getDaily, r as isDailySy
2
2
  import { t as HUB_CLIENT_VERSION } from "./shared/client-version.gen.js";
3
3
  import { a as isPageInputControl, c as layoutControls, d as MODALITY_ATTRIBUTE, f as trackInputModality, i as parseInputOverrides, l as boxesTouch, n as getInput, o as InputSystem, p as FOCUS_RING_SHADOW, r as isInputSystem, s as Overlay, t as INPUT_SINGLETON_API, u as controlSize } from "./shared/input.js";
4
4
  import { n as isUiStack, r as UI_STACK_VERSION, t as getUiStack } from "./shared/page-stack.js";
5
- import { A as UNSUPPORTED_BY_HUB, C as OUTBOX_MAX_CHARS, D as HubError, E as ContentRejectedError, O as OfflineError, S as OUTBOX_FULL_CODE, T as OfflineApi, _ as savedGameUrl, a as TURN_LINK_PARAM, b as RESUME_MAX_STATE_BYTES, c as TURN_POLL_MS, d as HubSaved, f as SAVED_CHANGE_QUIET_MS, g as SAVED_OPEN_PARAM, h as SAVED_OPEN_EVENT, i as HubTurns, j as HubAvatar, k as SAVE_UNKNOWN_CODE, l as TURN_RESYNC_EVENT, m as SAVED_KIND_PARAM, n as createHub, o as TURN_CHAT_EVENT, p as SAVED_CHANGE_EVENT, r as hub, s as TURN_EVENT, t as Hub, u as TurnGame, v as HubResume, w as OUTBOX_MAX_ENTRIES, x as CLIENT_VERSION_HEADER, y as RESUME_DEBOUNCE_MS } from "./shared/src.js";
5
+ import { A as OUTBOX_MAX_ENTRIES, C as savedGameUrl, D as CLIENT_VERSION_HEADER, E as RESUME_MAX_STATE_BYTES, F as SAVE_UNKNOWN_CODE, I as UNSUPPORTED_BY_HUB, L as HubAvatar, M as ContentRejectedError, N as HubError, O as OUTBOX_FULL_CODE, P as OfflineError, S as SAVED_OPEN_PARAM, T as RESUME_DEBOUNCE_MS, _ as HubSaved, a as TURN_LINK_PARAM, b as SAVED_KIND_PARAM, c as TURN_POLL_MS, d as TurnGame, f as YOUR_TURN_BUZZ, g as saveYourTurnBuzz, h as readYourTurnBuzz, i as HubTurns, j as OfflineApi, k as OUTBOX_MAX_CHARS, l as TURN_QUIET_MS, m as isNewlyDue, n as createHub, o as TURN_CHAT_EVENT, p as YOUR_TURN_BUZZ_KEY, r as hub, s as TURN_EVENT, t as Hub, u as TURN_RESYNC_EVENT, v as SAVED_CHANGE_QUIET_MS, w as HubResume, x as SAVED_OPEN_EVENT, y as SAVED_CHANGE_EVENT } from "./shared/src.js";
6
6
  //#region src/auto.ts
7
7
  /**
8
8
  * `@diffenderfer-games/hub/auto`: everything the main entry exports, plus a
@@ -22,6 +22,6 @@ if (typeof window !== "undefined") window.HubSDK = {
22
22
  ContentRejectedError
23
23
  };
24
24
  //#endregion
25
- export { CLIENT_VERSION_HEADER, ContentRejectedError, DAILY_SINGLETON_API, DAILY_START_EVENT, DailySystem, FOCUS_RING_SHADOW, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, HubResume, HubSaved, HubTurns, INPUT_SINGLETON_API, InputSystem, MODALITY_ATTRIBUTE, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, Overlay, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_RESYNC_EVENT, TurnGame, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, boxesTouch, controlSize, createHub, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isPageInputControl, isUiStack, layoutControls, parseInputOverrides, savedGameUrl, trackInputModality };
25
+ export { CLIENT_VERSION_HEADER, ContentRejectedError, DAILY_SINGLETON_API, DAILY_START_EVENT, DailySystem, FOCUS_RING_SHADOW, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, HubResume, HubSaved, HubTurns, INPUT_SINGLETON_API, InputSystem, MODALITY_ATTRIBUTE, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, Overlay, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_QUIET_MS, TURN_RESYNC_EVENT, TurnGame, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, YOUR_TURN_BUZZ, YOUR_TURN_BUZZ_KEY, boxesTouch, controlSize, createHub, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isNewlyDue, isPageInputControl, isUiStack, layoutControls, parseInputOverrides, readYourTurnBuzz, saveYourTurnBuzz, savedGameUrl, trackInputModality };
26
26
 
27
27
  //# sourceMappingURL=auto.js.map
@@ -1,4 +1,4 @@
1
- import { N as toCode, p as expressionFromEmote } from "./shared/svg-markup.js";
1
+ import { P as toCode, m as expressionFromEmote } from "./shared/svg-markup.js";
2
2
  import { a as paintNodes, n as defaultLayer } from "./shared/pose-key.js";
3
3
  import { c as drawToCanvas, o as animator, r as layout, t as overlays } from "./shared/overlays.js";
4
4
  import { t as liveCanvas } from "./shared/live-canvas.js";
@@ -1,4 +1,4 @@
1
- import { f as EXPRESSION_NAMES, h as isExpression, v as ready } from "./shared/svg-markup.js";
1
+ import { g as isExpression, p as EXPRESSION_NAMES, y as ready } from "./shared/svg-markup.js";
2
2
  import { n as renderSvg } from "./shared/svg.js";
3
3
  import { n as describe } from "./shared/describe.js";
4
4
  import { decodeLook, defaultLook, encodeLook } from "@diffenderfer-games/hub-contract/avatar";
package/dist/avatar.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { A as partById, B as lightness, C as defaultLook, D as isValidLook, E as isLookCode, F as resolveColour, G as overlaySvg, H as toLook, I as sameLook, J as facingFrom, K as paintOverlay, L as seededRng, M as partsOf, N as randomLook, O as lookProblem, P as render, Q as CanvasPlacement, R as contrast, S as decodeLook, T as encodeLook, U as sceneToSvg, V as toCode, W as catalog, X as lookToward, Y as layout, Z as AvatarElement, _ as Preset, a as CATALOG_REVISION, c as DecodedLook, d as LookColour, f as LookPart, g as PartCategory, h as PaletteName, i as CATALOG, j as partName, k as normaliseHex, l as LOOK_CODE_PREFIX, m as PALETTES, n as AccessorySlot, o as CatalogEntry, p as LookProblem, q as defineAvatarElement, r as AvatarLook, s as DEFAULT_GEN, t as ACCESSORY_SLOTS, u as LookAccessory, v as RandomLookOptions, w as distinctLooks, x as canonicalLook, y as Rng, z as deltaE } from "./shared/avatar.js";
1
+ import { $ as lookToward, A as isValidLook, B as seededRng, C as canonicalLook, D as encodeLook, E as distinctLooks, F as partsOf, G as toLook, H as deltaE, I as randomLook, J as overlaySvg, K as sceneToSvg, L as render, M as normaliseHex, N as partById, O as isLookCode, P as partName, Q as layout, R as resolveColour, T as defaultLook, U as lightness, V as contrast, W as toCode, X as defineAvatarElement, Y as paintOverlay, Z as facingFrom, _ as PartCategory, a as CATALOG_REVISION, b as Rng, c as DecodedLook, d as LookAccessory, et as AvatarElement, f as LookColour, g as PaletteName, h as PALETTES, i as CATALOG, j as lookProblem, k as isTinted, l as FRAME_PRESETS, m as LookProblem, n as AccessorySlot, o as CatalogEntry, p as LookPart, q as catalog, r as AvatarLook, s as DEFAULT_GEN, t as ACCESSORY_SLOTS, tt as CanvasPlacement, u as LOOK_CODE_PREFIX, v as Preset, w as decodeLook, x as SECOND_COLOUR_CODE, y as RandomLookOptions, z as sameLook } from "./shared/avatar.js";
2
2
  import { _ as FaceParams, a as LookDir, b as isExpression, c as Pose, d as View, f as BrowParams, g as FaceExtra, h as Expression, i as Frame, l as RenderOptions, m as EXPRESSION_NAMES, n as BodyPose, o as LookLike, p as EXPRESSIONS, r as Facing, s as Point, t as Anchor, u as StatusProp, v as MouthParams, x as mix, y as expressionFromEmote } from "./shared/types.js";
3
3
  import { t as SceneNode } from "./shared/scene.js";
4
4
  import { a as ActivityIcon, c as overlays, i as createAtlas, l as Ctx2D, n as AtlasOptions, o as Overlay, r as AvatarAtlas, s as ReactionGlyph, t as AtlasFrame, u as paintNodes } from "./shared/atlas.js";
5
5
  import { c as composeAvatar, i as ready, n as describe, o as Composed, r as onArtReady, s as HEAD_Y, t as avatarEmoji } from "./shared/describe.js";
6
6
  import { a as animator, i as Feeling, n as AnimatorOptions, o as REACTIONS, r as At, s as Reaction, t as Animator } from "./shared/animator.js";
7
- export { ACCESSORY_SLOTS, type AccessorySlot, type ActivityIcon, type Anchor, Animator, type AnimatorOptions, type At, type AtlasFrame, type AtlasOptions, AvatarAtlas, type AvatarElement, type AvatarLook, type BodyPose, type BrowParams, CATALOG, CATALOG_REVISION, type CanvasPlacement, type CatalogEntry, type Composed, type Ctx2D, DEFAULT_GEN, type DecodedLook, EXPRESSIONS, EXPRESSION_NAMES, type Expression, type FaceExtra, type FaceParams, type Facing, type Feeling, type Frame, HEAD_Y, LOOK_CODE_PREFIX, type LookAccessory, type LookColour, type LookDir, type LookLike, type LookPart, type LookProblem, type MouthParams, type Overlay, PALETTES, type PaletteName, type PartCategory, type Point, type Pose, type Preset, REACTIONS, type RandomLookOptions, type Reaction, type ReactionGlyph, type RenderOptions, type Rng, type SceneNode, type StatusProp, type View, animator, avatarEmoji, canonicalLook, catalog, composeAvatar, contrast, createAtlas, decodeLook, defaultLook, defineAvatarElement, deltaE, describe, distinctLooks, encodeLook, expressionFromEmote, facingFrom, isExpression, isLookCode, isValidLook, layout, lightness, lookProblem, lookToward, mix, normaliseHex, onArtReady, overlaySvg, overlays, paintNodes, paintOverlay, partById, partName, partsOf, randomLook, ready, render, resolveColour, sameLook, sceneToSvg, seededRng, toCode, toLook };
7
+ export { ACCESSORY_SLOTS, type AccessorySlot, type ActivityIcon, type Anchor, Animator, type AnimatorOptions, type At, type AtlasFrame, type AtlasOptions, AvatarAtlas, type AvatarElement, type AvatarLook, type BodyPose, type BrowParams, CATALOG, CATALOG_REVISION, type CanvasPlacement, type CatalogEntry, type Composed, type Ctx2D, DEFAULT_GEN, type DecodedLook, EXPRESSIONS, EXPRESSION_NAMES, type Expression, FRAME_PRESETS, type FaceExtra, type FaceParams, type Facing, type Feeling, type Frame, HEAD_Y, LOOK_CODE_PREFIX, type LookAccessory, type LookColour, type LookDir, type LookLike, type LookPart, type LookProblem, type MouthParams, type Overlay, PALETTES, type PaletteName, type PartCategory, type Point, type Pose, type Preset, REACTIONS, type RandomLookOptions, type Reaction, type ReactionGlyph, type RenderOptions, type Rng, SECOND_COLOUR_CODE, type SceneNode, type StatusProp, type View, animator, avatarEmoji, canonicalLook, catalog, composeAvatar, contrast, createAtlas, decodeLook, defaultLook, defineAvatarElement, deltaE, describe, distinctLooks, encodeLook, expressionFromEmote, facingFrom, isExpression, isLookCode, isTinted, isValidLook, layout, lightness, lookProblem, lookToward, mix, normaliseHex, onArtReady, overlaySvg, overlays, paintNodes, paintOverlay, partById, partName, partsOf, randomLook, ready, render, resolveColour, sameLook, sceneToSvg, seededRng, toCode, toLook };
package/dist/avatar.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { t as _defineProperty } from "./shared/defineProperty.js";
2
- import { A as contrast, M as lightness, N as toCode, P as toLook, _ as onArtReady, a as composeAvatar, c as n, d as EXPRESSIONS, f as EXPRESSION_NAMES, g as mix, h as isExpression, i as HEAD_Y, j as deltaE, p as expressionFromEmote, r as sceneToSvg, v as ready } from "./shared/svg-markup.js";
2
+ import { F as toLook, M as deltaE, N as lightness, P as toCode, _ as mix, a as composeAvatar, f as EXPRESSIONS, g as isExpression, i as HEAD_Y, j as contrast, l as n, m as expressionFromEmote, p as EXPRESSION_NAMES, r as sceneToSvg, v as onArtReady, y as ready } from "./shared/svg-markup.js";
3
3
  import { a as paintNodes, i as renderCanvasAt, n as defaultLayer, r as renderCanvas, t as renderKey } from "./shared/pose-key.js";
4
4
  import { n as renderSvg, t as nextPrefix } from "./shared/svg.js";
5
5
  import { a as Animator, i as lookToward, l as renderBitmap, n as facingFrom, o as animator, r as layout, s as REACTIONS, t as overlays, u as renderDataUrl } from "./shared/overlays.js";
6
6
  import { n as describe, t as avatarEmoji } from "./shared/describe.js";
7
- import { ACCESSORY_SLOTS, CATALOG, CATALOG_REVISION, CATALOG_REVISION as CATALOG_REVISION$1, DEFAULT_GEN, LOOK_CODE_PREFIX, PALETTES, PALETTES as PALETTES$1, canonicalLook, decodeLook, defaultLook, distinctLooks, encodeLook, isLookCode, isValidLook, lookProblem, normaliseHex, partById, partName, partsOf, partsOf as partsOf$1, randomLook, resolveColour, sameLook, seededRng } from "@diffenderfer-games/hub-contract/avatar";
7
+ import { ACCESSORY_SLOTS, CATALOG, CATALOG_REVISION, CATALOG_REVISION as CATALOG_REVISION$1, DEFAULT_GEN, FRAME_PRESETS, LOOK_CODE_PREFIX, PALETTES, PALETTES as PALETTES$1, SECOND_COLOUR_CODE, canonicalLook, decodeLook, defaultLook, distinctLooks, encodeLook, isLookCode, isTinted, isValidLook, lookProblem, normaliseHex, partById, partName, partsOf, partsOf as partsOf$1, randomLook, resolveColour, sameLook, seededRng } from "@diffenderfer-games/hub-contract/avatar";
8
8
  //#region src/avatar/outputs/element.ts
9
9
  /**
10
10
  * `render.element`: a live DOM avatar. `update(pose)` re-renders only when
@@ -482,6 +482,6 @@ const render = {
482
482
  dataUrl: renderDataUrl
483
483
  };
484
484
  //#endregion
485
- export { ACCESSORY_SLOTS, Animator, AvatarAtlas, CATALOG, CATALOG_REVISION, DEFAULT_GEN, EXPRESSIONS, EXPRESSION_NAMES, HEAD_Y, LOOK_CODE_PREFIX, PALETTES, REACTIONS, animator, avatarEmoji, canonicalLook, catalog, composeAvatar, contrast, createAtlas, decodeLook, defaultLook, defineAvatarElement, deltaE, describe, distinctLooks, encodeLook, expressionFromEmote, facingFrom, isExpression, isLookCode, isValidLook, layout, lightness, lookProblem, lookToward, mix, normaliseHex, onArtReady, overlaySvg, overlays, paintNodes, paintOverlay, partById, partName, partsOf, randomLook, ready, render, resolveColour, sameLook, sceneToSvg, seededRng, toCode, toLook };
485
+ export { ACCESSORY_SLOTS, Animator, AvatarAtlas, CATALOG, CATALOG_REVISION, DEFAULT_GEN, EXPRESSIONS, EXPRESSION_NAMES, FRAME_PRESETS, HEAD_Y, LOOK_CODE_PREFIX, PALETTES, REACTIONS, SECOND_COLOUR_CODE, animator, avatarEmoji, canonicalLook, catalog, composeAvatar, contrast, createAtlas, decodeLook, defaultLook, defineAvatarElement, deltaE, describe, distinctLooks, encodeLook, expressionFromEmote, facingFrom, isExpression, isLookCode, isTinted, isValidLook, layout, lightness, lookProblem, lookToward, mix, normaliseHex, onArtReady, overlaySvg, overlays, paintNodes, paintOverlay, partById, partName, partsOf, randomLook, ready, render, resolveColour, sameLook, sceneToSvg, seededRng, toCode, toLook };
486
486
 
487
487
  //# sourceMappingURL=avatar.js.map
@@ -5,7 +5,7 @@ import { parseArgs } from "node:util";
5
5
  import { GAME_LABELS, GamePackageJson, HubVersion, splitGameLabels } from "@diffenderfer-games/hub-contract";
6
6
  //#region src/core/version/client-version.gen.ts
7
7
  /** This client's package version, sent as `x-hub-client` on REST calls and `client` in `hello`. */
8
- const HUB_CLIENT_VERSION = "2.0.0-next.6";
8
+ const HUB_CLIENT_VERSION = "2.0.0-next.8";
9
9
  //#endregion
10
10
  //#region src/core/version/semver.ts
11
11
  const VERSION_PATTERN = /^v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
package/dist/index.d.ts CHANGED
@@ -8,5 +8,5 @@ import { a as RaceHistoryQuery, c as RaceRuntimeApi, i as RaceEvents, l as RaceS
8
8
  import { f as raceForwarder } from "./shared/race.js";
9
9
  import { n as roomsForwarder } from "./shared/rooms.js";
10
10
  import { $ as RuntimeAvatarApi, A as RacerState, B as SuggestionStatus, C as RaceRecord, D as RaceStats, E as RaceState, F as ReportReason, G as REALTIME_READY_EVENT, H as isRealtimeApi, I as RoomInfo, J as SESSION_EVENT, K as REALTIME_SINGLETON_API, L as SocialConfig, M as Relation, N as ReportInput, O as Racer, P as ReportKind, Q as OpenDesignerOptions, R as SocialMe, S as RaceParams, T as RaceStatValue, U as REALTIME_FAILED_EVENT, V as findRealtimeApi, W as REALTIME_FEATURE_VERSION, X as AvatarRef, Y as AvatarChange, Z as DesignerResult, _ as PlayerLite, a as ErrorBody, at as HubNotifyApi, b as PresenceKind, c as JoinInfo, ct as OpenInviteOptions, d as Message, dt as SocialCounts, et as RealtimeHubLink, f as MessagesPage, ft as SocialEvents, g as PlayerCard, h as Party, i as Counts, it as socialForwarder, j as RecentPlayer, k as RacerResult, l as Launch, lt as PlayOnlineMethods, m as NotifyPrefs, n as ChatMode, nt as notifyForwarder, o as FriendEntry, ot as HubPresenceApi, p as NotifyChange, q as RealtimeApi, r as Conversation, rt as presenceForwarder, s as Invite, st as HubSocialApi, t as Audience, tt as linkRealtimeToHub, u as LaunchTicket, ut as PlayerRef, v as Presence, w as RaceResult, x as RaceOutcome, y as PresenceInput, z as Suggestion } from "./shared/social.js";
11
- import { $ as OfflineApi, A as SavedChangeListener, At as MeResponse, B as ResumeRun, Bt as SubmitScoreResult, C as TURN_RESYNC_EVENT, Ct as HubOptions, D as TurnOutcome, Dt as Json, E as TurnMoveEvent, Et as InventorySnapshot, F as RESUME_MAX_STATE_BYTES, Ft as SaveMeta, G as TradeId, Gt as AvatarHost, H as HubMenuControl, Ht as EndpointFields, I as ResumeBlocker, It as SnapshotResponse, J as AuthResponse, Jt as CarriesLook, K as TradeListOptions, Kt as AvatarModule, L as ResumeEntry, Lt as SortDir, M as SavedOpenHandler, Mt as Profile, N as HubResume, Nt as ProfileSummary, O as HubSaved, Ot as LeaderboardEntry, P as RESUME_DEBOUNCE_MS, Pt as Save, Q as SyncResult, R as ResumeLoadOptions, Rt as Stats, S as TURN_POLL_MS, St as GlobalAnalytics, T as TurnGameEvents, Tt as Inventory, U as GrantBundle, Ut as EndpointName, V as ResumeSaveInput, Vt as User, W as TradeBundle, Wt as EndpointReply, X as StatResult, Y as ProfileUpdate, Z as SyncConflict, _ as HubTurns, _t as BoardWithTop, a as HUB_CLIENT_VERSION, at as OUTBOX_MAX_CHARS, b as TURN_CHAT_EVENT, bt as GameLeaderboards, c as HubErrorCode, ct as OfflineKindDefinition, d as SAVE_UNKNOWN_CODE, dt as ProfilePatch, et as OUTBOX_FULL_CODE, f as UNSUPPORTED_BY_HUB, ft as QueueOp, g as ClientSupport, gt as Board, h as hub, ht as BufferedEvent, i as TurnGameView, it as OfflineOp, j as SavedOpenDetail, jt as Metrics, k as SAVED_CHANGE_QUIET_MS, kt as LeaderboardResult, l as HubErrorDetails, lt as ReplayContext, m as createHub, mt as QueuedScoreOptions, n as TurnChatLine, nt as OfflineEventName, o as ContentRejectedError, ot as OUTBOX_MAX_ENTRIES, p as Hub, pt as QueueOpInput, q as TradeNoteOptions, qt as HubAvatar, r as TurnDeadline, rt as OfflineListener, s as HubError, st as OfflineHandler, t as OpenTurnGame, tt as OfflineEventDetails, u as OfflineError, ut as CLIENT_VERSION_HEADER, v as TURN_LINK_PARAM, vt as GameAnalytics, w as TurnGame, wt as HubStatus, x as TURN_EVENT, xt as GameRecords, y as TurnCreateOptions, yt as GameInfo, z as ResumeProgress, zt as SubmitScoreOptions } from "./shared/index.js";
12
- export { type Anchor, type Audience, type AuthResponse, type AutoNavigateTarget, type AutoPauseOptions, type AvatarChange, type AvatarHost, type AvatarModule, type AvatarRef, type AxisDef, type AxisSide, type Board, type BoardWithTop, type BufferedEvent, type BusyOptions, CLIENT_VERSION_HEADER, type CarriesLook, type ChatMode, type ClientSupport, ContentRejectedError, type Conversation, type Counts, DAILY_SINGLETON_API, DAILY_START_EVENT, type DailyAll, type DailyChallenge, type DailyCompleteResponse, type DailyCompletion, type DailyCompletionMeta, type DailyCompletions, type DailyDefinition, type DailyEventDetail, type DailyGameStatus, type DailyHost, type DailySaveInput, type DailyStartResponse, type DailyStatus, DailySystem, type DesignerResult, type DraggedSpot, type EdgeOffsets, type EndpointFields, type EndpointName, type EndpointReply, type ErrorBody, FOCUS_RING_SHADOW, type FriendEntry, type GameAnalytics, type GameInfo, type GameLeaderboards, type GamePayload, type GameRecords, type GamepadMapping, type GlobalAnalytics, type GrantBundle, type GroupDef, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, type HubErrorCode, type HubErrorDetails, type HubMenuControl, type HubMpApi, type HubNotifyApi, type HubOptions, type HubPresenceApi, type HubRaceApi, HubResume, type HubRoom, type HubRoomsApi, HubSaved, type HubSocialApi, type HubStatus, HubTurns, INPUT_SINGLETON_API, type InputConfig, type InputDef, type InputEvents, type InputHost, type InputModality, type InputOptions, type InputOverrides, type InputReading, type InputSource, InputSystem, type InputSystemOptions, type Insets, type Inventory, type InventorySnapshot, type Invite, type InviteCreated, type InviteLink, type InviteLinkMethods, type InviteOptions, type InviteResult, type JoinInfo, type JoinInfoEvent, type JoinOptions, type Json, type Launch, type LaunchTicket, type LayoutBox, type LayoutItem, type LayoutOptions, type LeaderboardEntry, type LeaderboardResult, MODALITY_ATTRIBUTE, type MeResponse, type MenuBridge, type Message, type MessagesPage, type Metrics, type MouseMapping, type NavBlurEvent, type NavElement, type NavElementKind, type NavFocusEvent, type NavTarget, type NavigableDef, type Notice, type NotifyChange, type NotifyPrefs, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, type OfflineEventDetails, type OfflineEventName, type OfflineHandler, type OfflineKindDefinition, type OfflineListener, type OfflineOp, type OpenDesignerOptions, type OpenInviteOptions, type OpenTurnGame, Overlay, type OverlayEdge, type OverlayEvent, type OverlayListener, type OverlayReason, type PageInputControl, type Party, type PlayOnlineMethods, type PlayerCard, type PlayerLite, type PlayerRef, type Presence, type PresenceInput, type PresenceKind, type Profile, type ProfilePatch, type ProfileSummary, type ProfileUpdate, type QueueOp, type QueueOpInput, type QueuedScoreOptions, type REALTIME_FAILED_EVENT, type REALTIME_FEATURE_VERSION, type REALTIME_READY_EVENT, type REALTIME_SINGLETON_API, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, type RaceCreateOptions, type RaceDefinition, type RaceEvents, type RaceHistory, type RaceHistoryQuery, type RaceHistoryViewOptions, type RaceHudPlace, type RaceOutcome, type RaceParams, type RaceRecord, type RaceRecordPlayer, type RaceResult, type RaceResultPlayer, type RaceRuntimeApi, type RaceStart, type RaceStatValue, type RaceState, type RaceStats, type RaceStatusEvent, type Racer, type RacerResult, type RacerState, type RealtimeApi, type RealtimeErrorShape, type RealtimeHubLink, type RecentPlayer, type Rect, type Relation, type ReplayContext, type ReportInput, type ReportKind, type ReportReason, type ResumeBlocker, type ResumeEntry, type ResumeLoadOptions, type ResumeProgress, type ResumeRun, type ResumeSaveInput, type RoomChatLine, type RoomCreateOptions, type RoomEvents, type RoomInfo, type RoomListOptions, type RoomMessage, type RoomReclaimMethods, type RoomSeat, type RoomSeatChange, type RoomSelf, type RoomSendOptions, type RoomState, type RoomStateChange, type RoomStateOptions, type RuntimeAvatarApi, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, type SESSION_EVENT, type Save, type SaveMeta, type SavedChangeListener, type SavedCounts, type SavedDaily, type SavedEntry, type SavedKind, type SavedListOptions, type SavedOpenDetail, type SavedOpenHandler, type SavedOpened, type SavedProgress, type SavedStatus, type SchemaOutput, type ServerEvents, type Snapshot, type SnapshotResponse, type SocialConfig, type SocialCounts, type SocialEvents, type SocialMe, type SortDir, type StatResult, type Stats, type SubmitScoreOptions, type SubmitScoreResult, type Suggestion, type SuggestionStatus, type SyncConflict, type SyncResult, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_RESYNC_EVENT, type TouchMapping, type TradeBundle, type TradeId, type TradeListOptions, type TradeNoteOptions, type TurnChatLine, type TurnCreateOptions, type TurnDeadline, TurnGame, type TurnGameEvents, type TurnGameView, type TurnMoveEvent, type TurnOutcome, type TurnSummary, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, type UiStack, type UiStackHandoff, type User, type Vector, type VirtualControlType, type VirtualDef, type VirtualInputs, type VirtualOverride, boxesTouch, controlSize, createHub, type findRealtimeApi, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isPageInputControl, type isRealtimeApi, isUiStack, layoutControls, type linkRealtimeToHub, type multiplayerForwarder as mp, type notifyForwarder as notify, parseInputOverrides, type presenceForwarder as presence, type raceForwarder as race, type roomsForwarder as rooms, savedGameUrl, type socialForwarder as social, trackInputModality };
11
+ import { $ as TradeListOptions, $t as AvatarModule, A as TurnGame, At as HubOptions, B as HubResume, Bt as ProfileSummary, C as TURN_LINK_PARAM, Ct as Board, D as TURN_POLL_MS, Dt as GameLeaderboards, E as TURN_EVENT, Et as GameInfo, F as HubSaved, Ft as LeaderboardEntry, G as ResumeLoadOptions, Gt as Stats, H as RESUME_MAX_STATE_BYTES, Ht as SaveMeta, I as SAVED_CHANGE_QUIET_MS, It as LeaderboardResult, J as ResumeSaveInput, Jt as User, K as ResumeProgress, Kt as SubmitScoreOptions, L as SavedChangeListener, Lt as MeResponse, M as TurnGameOptions, Mt as Inventory, N as TurnMoveEvent, Nt as InventorySnapshot, O as TURN_QUIET_MS, Ot as GameRecords, P as TurnOutcome, Pt as Json, Q as TradeId, Qt as AvatarHost, R as SavedOpenDetail, Rt as Metrics, S as HubTurns, St as BufferedEvent, T as TURN_CHAT_EVENT, Tt as GameAnalytics, U as ResumeBlocker, Ut as SnapshotResponse, V as RESUME_DEBOUNCE_MS, Vt as Save, W as ResumeEntry, Wt as SortDir, X as GrantBundle, Xt as EndpointName, Y as HubMenuControl, Yt as EndpointFields, Z as TradeBundle, Zt as EndpointReply, _ as UNSUPPORTED_BY_HUB, _t as CLIENT_VERSION_HEADER, a as HUB_CLIENT_VERSION, at as SyncResult, b as hub, bt as QueueOpInput, c as isNewlyDue, ct as OfflineEventDetails, d as ContentRejectedError, dt as OfflineOp, en as HubAvatar, et as TradeNoteOptions, f as HubError, ft as OUTBOX_MAX_CHARS, g as SAVE_UNKNOWN_CODE, gt as ReplayContext, h as OfflineError, ht as OfflineKindDefinition, i as TurnGameView, it as SyncConflict, j as TurnGameEvents, jt as HubStatus, k as TURN_RESYNC_EVENT, kt as GlobalAnalytics, l as readYourTurnBuzz, lt as OfflineEventName, m as HubErrorDetails, mt as OfflineHandler, n as TurnChatLine, nt as ProfileUpdate, o as YOUR_TURN_BUZZ, ot as OfflineApi, p as HubErrorCode, pt as OUTBOX_MAX_ENTRIES, q as ResumeRun, qt as SubmitScoreResult, r as TurnDeadline, rt as StatResult, s as YOUR_TURN_BUZZ_KEY, st as OUTBOX_FULL_CODE, t as OpenTurnGame, tn as CarriesLook, tt as AuthResponse, u as saveYourTurnBuzz, ut as OfflineListener, v as Hub, vt as ProfilePatch, w as TurnCreateOptions, wt as BoardWithTop, x as ClientSupport, xt as QueuedScoreOptions, y as createHub, yt as QueueOp, z as SavedOpenHandler, zt as Profile } from "./shared/index.js";
12
+ export { type Anchor, type Audience, type AuthResponse, type AutoNavigateTarget, type AutoPauseOptions, type AvatarChange, type AvatarHost, type AvatarModule, type AvatarRef, type AxisDef, type AxisSide, type Board, type BoardWithTop, type BufferedEvent, type BusyOptions, CLIENT_VERSION_HEADER, type CarriesLook, type ChatMode, type ClientSupport, ContentRejectedError, type Conversation, type Counts, DAILY_SINGLETON_API, DAILY_START_EVENT, type DailyAll, type DailyChallenge, type DailyCompleteResponse, type DailyCompletion, type DailyCompletionMeta, type DailyCompletions, type DailyDefinition, type DailyEventDetail, type DailyGameStatus, type DailyHost, type DailySaveInput, type DailyStartResponse, type DailyStatus, DailySystem, type DesignerResult, type DraggedSpot, type EdgeOffsets, type EndpointFields, type EndpointName, type EndpointReply, type ErrorBody, FOCUS_RING_SHADOW, type FriendEntry, type GameAnalytics, type GameInfo, type GameLeaderboards, type GamePayload, type GameRecords, type GamepadMapping, type GlobalAnalytics, type GrantBundle, type GroupDef, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, type HubErrorCode, type HubErrorDetails, type HubMenuControl, type HubMpApi, type HubNotifyApi, type HubOptions, type HubPresenceApi, type HubRaceApi, HubResume, type HubRoom, type HubRoomsApi, HubSaved, type HubSocialApi, type HubStatus, HubTurns, INPUT_SINGLETON_API, type InputConfig, type InputDef, type InputEvents, type InputHost, type InputModality, type InputOptions, type InputOverrides, type InputReading, type InputSource, InputSystem, type InputSystemOptions, type Insets, type Inventory, type InventorySnapshot, type Invite, type InviteCreated, type InviteLink, type InviteLinkMethods, type InviteOptions, type InviteResult, type JoinInfo, type JoinInfoEvent, type JoinOptions, type Json, type Launch, type LaunchTicket, type LayoutBox, type LayoutItem, type LayoutOptions, type LeaderboardEntry, type LeaderboardResult, MODALITY_ATTRIBUTE, type MeResponse, type MenuBridge, type Message, type MessagesPage, type Metrics, type MouseMapping, type NavBlurEvent, type NavElement, type NavElementKind, type NavFocusEvent, type NavTarget, type NavigableDef, type Notice, type NotifyChange, type NotifyPrefs, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, type OfflineEventDetails, type OfflineEventName, type OfflineHandler, type OfflineKindDefinition, type OfflineListener, type OfflineOp, type OpenDesignerOptions, type OpenInviteOptions, type OpenTurnGame, Overlay, type OverlayEdge, type OverlayEvent, type OverlayListener, type OverlayReason, type PageInputControl, type Party, type PlayOnlineMethods, type PlayerCard, type PlayerLite, type PlayerRef, type Presence, type PresenceInput, type PresenceKind, type Profile, type ProfilePatch, type ProfileSummary, type ProfileUpdate, type QueueOp, type QueueOpInput, type QueuedScoreOptions, type REALTIME_FAILED_EVENT, type REALTIME_FEATURE_VERSION, type REALTIME_READY_EVENT, type REALTIME_SINGLETON_API, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, type RaceCreateOptions, type RaceDefinition, type RaceEvents, type RaceHistory, type RaceHistoryQuery, type RaceHistoryViewOptions, type RaceHudPlace, type RaceOutcome, type RaceParams, type RaceRecord, type RaceRecordPlayer, type RaceResult, type RaceResultPlayer, type RaceRuntimeApi, type RaceStart, type RaceStatValue, type RaceState, type RaceStats, type RaceStatusEvent, type Racer, type RacerResult, type RacerState, type RealtimeApi, type RealtimeErrorShape, type RealtimeHubLink, type RecentPlayer, type Rect, type Relation, type ReplayContext, type ReportInput, type ReportKind, type ReportReason, type ResumeBlocker, type ResumeEntry, type ResumeLoadOptions, type ResumeProgress, type ResumeRun, type ResumeSaveInput, type RoomChatLine, type RoomCreateOptions, type RoomEvents, type RoomInfo, type RoomListOptions, type RoomMessage, type RoomReclaimMethods, type RoomSeat, type RoomSeatChange, type RoomSelf, type RoomSendOptions, type RoomState, type RoomStateChange, type RoomStateOptions, type RuntimeAvatarApi, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, type SESSION_EVENT, type Save, type SaveMeta, type SavedChangeListener, type SavedCounts, type SavedDaily, type SavedEntry, type SavedKind, type SavedListOptions, type SavedOpenDetail, type SavedOpenHandler, type SavedOpened, type SavedProgress, type SavedStatus, type SchemaOutput, type ServerEvents, type Snapshot, type SnapshotResponse, type SocialConfig, type SocialCounts, type SocialEvents, type SocialMe, type SortDir, type StatResult, type Stats, type SubmitScoreOptions, type SubmitScoreResult, type Suggestion, type SuggestionStatus, type SyncConflict, type SyncResult, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_QUIET_MS, TURN_RESYNC_EVENT, type TouchMapping, type TradeBundle, type TradeId, type TradeListOptions, type TradeNoteOptions, type TurnChatLine, type TurnCreateOptions, type TurnDeadline, TurnGame, type TurnGameEvents, type TurnGameOptions, type TurnGameView, type TurnMoveEvent, type TurnOutcome, type TurnSummary, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, type UiStack, type UiStackHandoff, type User, type Vector, type VirtualControlType, type VirtualDef, type VirtualInputs, type VirtualOverride, YOUR_TURN_BUZZ, YOUR_TURN_BUZZ_KEY, boxesTouch, controlSize, createHub, type findRealtimeApi, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isNewlyDue, isPageInputControl, type isRealtimeApi, isUiStack, layoutControls, type linkRealtimeToHub, type multiplayerForwarder as mp, type notifyForwarder as notify, parseInputOverrides, type presenceForwarder as presence, type raceForwarder as race, readYourTurnBuzz, type roomsForwarder as rooms, saveYourTurnBuzz, savedGameUrl, type socialForwarder as social, trackInputModality };
package/dist/index.js CHANGED
@@ -2,5 +2,5 @@ import { a as DailySystem, i as DAILY_START_EVENT, n as getDaily, r as isDailySy
2
2
  import { t as HUB_CLIENT_VERSION } from "./shared/client-version.gen.js";
3
3
  import { a as isPageInputControl, c as layoutControls, d as MODALITY_ATTRIBUTE, f as trackInputModality, i as parseInputOverrides, l as boxesTouch, n as getInput, o as InputSystem, p as FOCUS_RING_SHADOW, r as isInputSystem, s as Overlay, t as INPUT_SINGLETON_API, u as controlSize } from "./shared/input.js";
4
4
  import { n as isUiStack, r as UI_STACK_VERSION, t as getUiStack } from "./shared/page-stack.js";
5
- import { A as UNSUPPORTED_BY_HUB, C as OUTBOX_MAX_CHARS, D as HubError, E as ContentRejectedError, O as OfflineError, S as OUTBOX_FULL_CODE, T as OfflineApi, _ as savedGameUrl, a as TURN_LINK_PARAM, b as RESUME_MAX_STATE_BYTES, c as TURN_POLL_MS, d as HubSaved, f as SAVED_CHANGE_QUIET_MS, g as SAVED_OPEN_PARAM, h as SAVED_OPEN_EVENT, i as HubTurns, j as HubAvatar, k as SAVE_UNKNOWN_CODE, l as TURN_RESYNC_EVENT, m as SAVED_KIND_PARAM, n as createHub, o as TURN_CHAT_EVENT, p as SAVED_CHANGE_EVENT, r as hub, s as TURN_EVENT, t as Hub, u as TurnGame, v as HubResume, w as OUTBOX_MAX_ENTRIES, x as CLIENT_VERSION_HEADER, y as RESUME_DEBOUNCE_MS } from "./shared/src.js";
6
- export { CLIENT_VERSION_HEADER, ContentRejectedError, DAILY_SINGLETON_API, DAILY_START_EVENT, DailySystem, FOCUS_RING_SHADOW, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, HubResume, HubSaved, HubTurns, INPUT_SINGLETON_API, InputSystem, MODALITY_ATTRIBUTE, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, Overlay, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_RESYNC_EVENT, TurnGame, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, boxesTouch, controlSize, createHub, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isPageInputControl, isUiStack, layoutControls, parseInputOverrides, savedGameUrl, trackInputModality };
5
+ import { A as OUTBOX_MAX_ENTRIES, C as savedGameUrl, D as CLIENT_VERSION_HEADER, E as RESUME_MAX_STATE_BYTES, F as SAVE_UNKNOWN_CODE, I as UNSUPPORTED_BY_HUB, L as HubAvatar, M as ContentRejectedError, N as HubError, O as OUTBOX_FULL_CODE, P as OfflineError, S as SAVED_OPEN_PARAM, T as RESUME_DEBOUNCE_MS, _ as HubSaved, a as TURN_LINK_PARAM, b as SAVED_KIND_PARAM, c as TURN_POLL_MS, d as TurnGame, f as YOUR_TURN_BUZZ, g as saveYourTurnBuzz, h as readYourTurnBuzz, i as HubTurns, j as OfflineApi, k as OUTBOX_MAX_CHARS, l as TURN_QUIET_MS, m as isNewlyDue, n as createHub, o as TURN_CHAT_EVENT, p as YOUR_TURN_BUZZ_KEY, r as hub, s as TURN_EVENT, t as Hub, u as TURN_RESYNC_EVENT, v as SAVED_CHANGE_QUIET_MS, w as HubResume, x as SAVED_OPEN_EVENT, y as SAVED_CHANGE_EVENT } from "./shared/src.js";
6
+ export { CLIENT_VERSION_HEADER, ContentRejectedError, DAILY_SINGLETON_API, DAILY_START_EVENT, DailySystem, FOCUS_RING_SHADOW, HUB_CLIENT_VERSION, Hub, HubAvatar, HubError, HubResume, HubSaved, HubTurns, INPUT_SINGLETON_API, InputSystem, MODALITY_ATTRIBUTE, OUTBOX_FULL_CODE, OUTBOX_MAX_CHARS, OUTBOX_MAX_ENTRIES, OfflineApi, OfflineError, Overlay, RESUME_DEBOUNCE_MS, RESUME_MAX_STATE_BYTES, SAVED_CHANGE_EVENT, SAVED_CHANGE_QUIET_MS, SAVED_KIND_PARAM, SAVED_OPEN_EVENT, SAVED_OPEN_PARAM, SAVE_UNKNOWN_CODE, TURN_CHAT_EVENT, TURN_EVENT, TURN_LINK_PARAM, TURN_POLL_MS, TURN_QUIET_MS, TURN_RESYNC_EVENT, TurnGame, UI_STACK_VERSION, UNSUPPORTED_BY_HUB, YOUR_TURN_BUZZ, YOUR_TURN_BUZZ_KEY, boxesTouch, controlSize, createHub, getDaily, getInput, getUiStack, hub, isDailySystem, isInputSystem, isNewlyDue, isPageInputControl, isUiStack, layoutControls, parseInputOverrides, readYourTurnBuzz, saveYourTurnBuzz, savedGameUrl, trackInputModality };
@@ -1,4 +1,4 @@
1
- import { l as roundedRect, o as arc, s as blob, u as scallop } from "./svg-markup.js";
1
+ import { c as blob, d as scallop, o as Path, s as arc, u as roundedRect } from "./svg-markup.js";
2
2
  /** Every facial-hair part by name. */
3
3
  const BEARD_ART = {
4
4
  none: {},
@@ -320,11 +320,17 @@ const BEARD_ART = {
320
320
  };
321
321
  //#endregion
322
322
  //#region src/avatar/art/glasses.ts
323
- /** Glasses (catalog `glasses.*`), one lens shape drawn at each eye. */
323
+ /**
324
+ * Glasses (catalog `glasses.*`). A lens is drawn at each eye (centred on it,
325
+ * authored for the viewer's right eye); `sport` is one visor across both
326
+ * eyes and the monocle is one lens. Lenses are big enough to cover the eye
327
+ * whites (about 21 × 25), so winks and sleepy eyes show through.
328
+ */
329
+ const ring = (r) => blob(arc(0, 0, r, r, 0, 330, 11));
324
330
  /** Every glasses part by name. */
325
331
  const GLASSES_ART = {
326
332
  round: {
327
- lens: blob(arc(0, 0, 13, 13, 0, 330, 11)),
333
+ lens: ring(13),
328
334
  bridge: blob([
329
335
  [-4, 0],
330
336
  [0, -3],
@@ -338,6 +344,142 @@ const GLASSES_ART = {
338
344
  [0, -4],
339
345
  [3.5, -2]
340
346
  ], false)
347
+ },
348
+ owl: {
349
+ lens: ring(16.5),
350
+ bridge: blob([
351
+ [-1.5, -1],
352
+ [0, -2.5],
353
+ [1.5, -1]
354
+ ], false),
355
+ frame: 4.4
356
+ },
357
+ "cat-eye": {
358
+ lens: blob([
359
+ [-13, -8],
360
+ [-4, -12],
361
+ [9, -12.5],
362
+ [
363
+ 18,
364
+ -17,
365
+ "c"
366
+ ],
367
+ [15.5, 1],
368
+ [9, 11],
369
+ [-3, 13],
370
+ [-11.5, 8]
371
+ ]),
372
+ bridge: blob([
373
+ [-4, -3],
374
+ [0, -5],
375
+ [4, -3]
376
+ ], false),
377
+ isMirrored: true,
378
+ frame: 3.6
379
+ },
380
+ "half-rim": {
381
+ lens: roundedRect(-14, -11, 28, 22, 6),
382
+ bar: blob([
383
+ [-14.6, -4],
384
+ [-13.4, -11.2],
385
+ [13.4, -11.2],
386
+ [14.6, -4]
387
+ ], false),
388
+ bridge: new Path().m(-4, -6).l(4, -6),
389
+ frame: 1.5
390
+ },
391
+ aviator: {
392
+ lens: blob([
393
+ [-12, -11],
394
+ [13, -11.5],
395
+ [15.5, -3],
396
+ [11.5, 9],
397
+ [3, 14],
398
+ [-6, 12.5],
399
+ [-12.5, 3]
400
+ ]),
401
+ bridge: new Path().m(-5, -9.5).l(5, -9.5).m(-4.5, -2).q(0, -5, 4.5, -2),
402
+ isMirrored: true,
403
+ frame: 2.6
404
+ },
405
+ sunglasses: {
406
+ lens: blob([
407
+ [
408
+ -14.5,
409
+ -12.5,
410
+ "c"
411
+ ],
412
+ [
413
+ 15.5,
414
+ -13.5,
415
+ "c"
416
+ ],
417
+ [15, 1],
418
+ [10.5, 11.5],
419
+ [-8.5, 11.5],
420
+ [-14, 3]
421
+ ]),
422
+ bridge: blob([
423
+ [-3.5, -6],
424
+ [0, -8],
425
+ [3.5, -6]
426
+ ], false),
427
+ isMirrored: true,
428
+ frame: 4.2,
429
+ tint: "#262a33"
430
+ },
431
+ sport: {
432
+ visor: blob([
433
+ [-40, -8],
434
+ [-20, -12],
435
+ [0, -10],
436
+ [20, -12],
437
+ [40, -8],
438
+ [38, 6],
439
+ [26, 15],
440
+ [9, 14],
441
+ [0, 9],
442
+ [-9, 14],
443
+ [-26, 15],
444
+ [-38, 6]
445
+ ]),
446
+ frame: 3,
447
+ tint: "#2d6fd6"
448
+ },
449
+ hearts: {
450
+ lens: blob([
451
+ [
452
+ 0,
453
+ -6,
454
+ "c"
455
+ ],
456
+ [6, -13],
457
+ [13, -12.5],
458
+ [16.5, -4],
459
+ [11.5, 6],
460
+ [
461
+ 0,
462
+ 15.5,
463
+ "c"
464
+ ],
465
+ [-11.5, 6],
466
+ [-16.5, -4],
467
+ [-13, -12.5],
468
+ [-6, -13]
469
+ ]),
470
+ bridge: blob([
471
+ [-1.5, -4],
472
+ [0, -6],
473
+ [1.5, -4]
474
+ ], false),
475
+ frame: 3,
476
+ tint: "#e0708f"
477
+ },
478
+ monocle: {
479
+ lens: ring(13.5),
480
+ isSingle: true,
481
+ chain: new Path().m(26, 16).c(32, 30, 38, 38, 46, 44),
482
+ frame: 2.8
341
483
  }
342
484
  };
343
485
  //#endregion