@freegamestore/games 0.16.0 → 0.19.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 (114) hide show
  1. package/README.md +106 -8
  2. package/TOKENS.md +132 -0
  3. package/dist/Confetti.d.ts +18 -0
  4. package/dist/Confetti.d.ts.map +1 -0
  5. package/dist/Confetti.js +43 -0
  6. package/dist/Confetti.js.map +1 -0
  7. package/dist/GameAuth.d.ts.map +1 -1
  8. package/dist/GameAuth.js +5 -87
  9. package/dist/GameAuth.js.map +1 -1
  10. package/dist/GameButton.d.ts +2 -1
  11. package/dist/GameButton.d.ts.map +1 -1
  12. package/dist/GameButton.js +16 -67
  13. package/dist/GameButton.js.map +1 -1
  14. package/dist/GameConfirm.d.ts +1 -1
  15. package/dist/GameConfirm.d.ts.map +1 -1
  16. package/dist/GameConfirm.js +1 -7
  17. package/dist/GameConfirm.js.map +1 -1
  18. package/dist/GameModal.d.ts +3 -2
  19. package/dist/GameModal.d.ts.map +1 -1
  20. package/dist/GameModal.js +3 -40
  21. package/dist/GameModal.js.map +1 -1
  22. package/dist/GameOverScreen.d.ts +3 -2
  23. package/dist/GameOverScreen.d.ts.map +1 -1
  24. package/dist/GameOverScreen.js +3 -37
  25. package/dist/GameOverScreen.js.map +1 -1
  26. package/dist/GameResultScreen.d.ts +41 -0
  27. package/dist/GameResultScreen.d.ts.map +1 -0
  28. package/dist/GameResultScreen.js +25 -0
  29. package/dist/GameResultScreen.js.map +1 -0
  30. package/dist/GameShell.d.ts +3 -0
  31. package/dist/GameShell.d.ts.map +1 -1
  32. package/dist/GameShell.js +4 -43
  33. package/dist/GameShell.js.map +1 -1
  34. package/dist/GameTextSizeToggle.d.ts +1 -1
  35. package/dist/GameTextSizeToggle.d.ts.map +1 -1
  36. package/dist/GameTextSizeToggle.js +1 -16
  37. package/dist/GameTextSizeToggle.js.map +1 -1
  38. package/dist/GameThemeToggle.d.ts +1 -1
  39. package/dist/GameThemeToggle.d.ts.map +1 -1
  40. package/dist/GameThemeToggle.js +44 -21
  41. package/dist/GameThemeToggle.js.map +1 -1
  42. package/dist/GameTopbar.d.ts +12 -7
  43. package/dist/GameTopbar.d.ts.map +1 -1
  44. package/dist/GameTopbar.js +54 -188
  45. package/dist/GameTopbar.js.map +1 -1
  46. package/dist/GameTopbar.module.css +201 -0
  47. package/dist/Leaderboard.d.ts.map +1 -1
  48. package/dist/Leaderboard.js +2 -5
  49. package/dist/Leaderboard.js.map +1 -1
  50. package/dist/StartScreen.d.ts +41 -0
  51. package/dist/StartScreen.d.ts.map +1 -0
  52. package/dist/StartScreen.js +30 -0
  53. package/dist/StartScreen.js.map +1 -0
  54. package/dist/feel/ScorePopup.d.ts +20 -0
  55. package/dist/feel/ScorePopup.d.ts.map +1 -0
  56. package/dist/feel/ScorePopup.js +51 -0
  57. package/dist/feel/ScorePopup.js.map +1 -0
  58. package/dist/feel/easing.d.ts +14 -0
  59. package/dist/feel/easing.d.ts.map +1 -0
  60. package/dist/feel/easing.js +12 -0
  61. package/dist/feel/easing.js.map +1 -0
  62. package/dist/feel/haptics.d.ts +19 -0
  63. package/dist/feel/haptics.d.ts.map +1 -0
  64. package/dist/feel/haptics.js +24 -0
  65. package/dist/feel/haptics.js.map +1 -0
  66. package/dist/feel/index.d.ts +17 -0
  67. package/dist/feel/index.d.ts.map +1 -0
  68. package/dist/feel/index.js +17 -0
  69. package/dist/feel/index.js.map +1 -0
  70. package/dist/feel/particles.d.ts +46 -0
  71. package/dist/feel/particles.d.ts.map +1 -0
  72. package/dist/feel/particles.js +61 -0
  73. package/dist/feel/particles.js.map +1 -0
  74. package/dist/feel/reducedMotion.d.ts +6 -0
  75. package/dist/feel/reducedMotion.d.ts.map +1 -0
  76. package/dist/feel/reducedMotion.js +10 -0
  77. package/dist/feel/reducedMotion.js.map +1 -0
  78. package/dist/feel/shake.d.ts +6 -0
  79. package/dist/feel/shake.d.ts.map +1 -0
  80. package/dist/feel/shake.js +17 -0
  81. package/dist/feel/shake.js.map +1 -0
  82. package/dist/feel/tween.d.ts +9 -0
  83. package/dist/feel/tween.d.ts.map +1 -0
  84. package/dist/feel/tween.js +15 -0
  85. package/dist/feel/tween.js.map +1 -0
  86. package/dist/feel/useHaptics.d.ts +12 -0
  87. package/dist/feel/useHaptics.d.ts.map +1 -0
  88. package/dist/feel/useHaptics.js +16 -0
  89. package/dist/feel/useHaptics.js.map +1 -0
  90. package/dist/feel/useParticles.d.ts +18 -0
  91. package/dist/feel/useParticles.d.ts.map +1 -0
  92. package/dist/feel/useParticles.js +79 -0
  93. package/dist/feel/useParticles.js.map +1 -0
  94. package/dist/feel/useShake.d.ts +14 -0
  95. package/dist/feel/useShake.d.ts.map +1 -0
  96. package/dist/feel/useShake.js +17 -0
  97. package/dist/feel/useShake.js.map +1 -0
  98. package/dist/index.d.ts +5 -2
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +14 -2
  101. package/dist/index.js.map +1 -1
  102. package/dist/theme.css +93 -0
  103. package/dist/tokens.d.ts +112 -0
  104. package/dist/tokens.d.ts.map +1 -0
  105. package/dist/tokens.js +106 -0
  106. package/dist/tokens.js.map +1 -0
  107. package/dist/useGameSounds.d.ts.map +1 -1
  108. package/dist/useGameSounds.js +37 -15
  109. package/dist/useGameSounds.js.map +1 -1
  110. package/dist/useLeaderboard.d.ts +8 -1
  111. package/dist/useLeaderboard.d.ts.map +1 -1
  112. package/dist/useLeaderboard.js +21 -11
  113. package/dist/useLeaderboard.js.map +1 -1
  114. package/package.json +23 -7
@@ -3,7 +3,10 @@ import { useCallback, useEffect, useRef, useState } from 'react';
3
3
  // The worker also serves the unversioned paths, so games built against older
4
4
  // SDK releases keep working.
5
5
  const API_BASE = 'https://leaderboard.freegamestore.online/v1';
6
- export function useLeaderboard(gameId) {
6
+ const AUTH_BASE = 'https://auth.freegamestore.online/v1';
7
+ export function useLeaderboard(gameId, options = {}) {
8
+ const period = options.period;
9
+ const periodQuery = period ? `&period=${encodeURIComponent(period)}` : '';
7
10
  const [topScores, setTopScores] = useState([]);
8
11
  const [recentScores, setRecentScores] = useState([]);
9
12
  const [loading, setLoading] = useState(true);
@@ -24,7 +27,9 @@ export function useLeaderboard(gameId) {
24
27
  // Fire-and-forget: inner fetches each .catch() to [], so this never
25
28
  // rejects; `void` marks the intentional non-await.
26
29
  void Promise.all([
27
- fetch(`${API_BASE}/api/leaderboard/${gameId}?limit=50`, { credentials: 'include' })
30
+ fetch(`${API_BASE}/api/leaderboard/${gameId}?limit=50${periodQuery}`, {
31
+ credentials: 'include',
32
+ })
28
33
  .then(async (r) => {
29
34
  if (!r.ok)
30
35
  return [];
@@ -32,7 +37,7 @@ export function useLeaderboard(gameId) {
32
37
  return data.scores ?? [];
33
38
  })
34
39
  .catch(() => []),
35
- fetch(`${API_BASE}/api/leaderboard/${gameId}/recent?limit=50`, {
40
+ fetch(`${API_BASE}/api/leaderboard/${gameId}/recent?limit=50${periodQuery}`, {
36
41
  credentials: 'include',
37
42
  })
38
43
  .then(async (r) => {
@@ -50,20 +55,25 @@ export function useLeaderboard(gameId) {
50
55
  setRecentScores(recent);
51
56
  setLoading(false);
52
57
  });
53
- }, [gameId]);
58
+ }, [gameId, periodQuery]);
54
59
  useEffect(() => {
55
60
  load();
56
61
  }, [load]);
57
62
  const submitScore = useCallback(async (score) => {
58
63
  try {
59
- // The Worker wants `{ game, score }`. Submitting requires auth: the
60
- // player name comes from the cookie JWT, and an unauthenticated post
61
- // is rejected with 401 (handled by the `!res.ok` check below).
64
+ // Exchange the auth-origin cookie for a five-minute bearer token bound
65
+ // to THIS game. Untrusted game JS never receives a store-wide session,
66
+ // and leaderboard rejects the token for every other game id.
67
+ const handoffRes = await fetch(`${AUTH_BASE}/handoff/issue?target=${encodeURIComponent('https://leaderboard.freegamestore.online')}&game=${encodeURIComponent(gameId)}`, { method: 'POST', credentials: 'include' });
68
+ if (!handoffRes.ok)
69
+ return { ok: false };
70
+ const handoff = (await handoffRes.json());
71
+ if (!handoff.token)
72
+ return { ok: false };
62
73
  const res = await fetch(`${API_BASE}/api/scores`, {
63
74
  method: 'POST',
64
- credentials: 'include',
65
- headers: { 'Content-Type': 'application/json' },
66
- body: JSON.stringify({ game: gameId, score }),
75
+ headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${handoff.token}` },
76
+ body: JSON.stringify(period ? { game: gameId, score, period } : { game: gameId, score }),
67
77
  });
68
78
  if (!res.ok)
69
79
  return { ok: false };
@@ -78,7 +88,7 @@ export function useLeaderboard(gameId) {
78
88
  catch {
79
89
  return { ok: false };
80
90
  }
81
- }, [gameId, load]);
91
+ }, [gameId, period, load]);
82
92
  return { topScores, recentScores, submitScore, loading, refresh: load };
83
93
  }
84
94
  //# sourceMappingURL=useLeaderboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLeaderboard.js","sourceRoot":"","sources":["../src/useLeaderboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLeaderboard.js","sourceRoot":"","sources":["../src/useLeaderboard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freegamestore/games",
3
- "version": "0.16.0",
3
+ "version": "0.19.0",
4
4
  "description": "Shared React UI primitives for games on FreeGameStore — GameShell, GameTopbar, etc. Brand-consistent, scroll-free.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,7 +10,12 @@
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
12
  "import": "./dist/index.js"
13
- }
13
+ },
14
+ "./feel": {
15
+ "types": "./dist/feel/index.d.ts",
16
+ "import": "./dist/feel/index.js"
17
+ },
18
+ "./theme.css": "./dist/theme.css"
14
19
  },
15
20
  "homepage": "https://github.com/freegamestore-online/platform#readme",
16
21
  "repository": {
@@ -31,7 +36,8 @@
31
36
  ],
32
37
  "files": [
33
38
  "dist",
34
- "README.md"
39
+ "README.md",
40
+ "TOKENS.md"
35
41
  ],
36
42
  "engines": {
37
43
  "node": ">=22"
@@ -40,13 +46,23 @@
40
46
  "react": "^19.0.0"
41
47
  },
42
48
  "devDependencies": {
49
+ "@testing-library/dom": "^10.4.1",
50
+ "@testing-library/jest-dom": "^6.6.3",
51
+ "@testing-library/react": "^16.3.0",
43
52
  "@types/react": "^19.2.14",
44
- "react": "^19.2.5",
45
- "typescript": "^5.7.0"
53
+ "@types/react-dom": "^19.2.3",
54
+ "@vitejs/plugin-react": "^5.2.0",
55
+ "jsdom": "^26",
56
+ "react": "19.2.6",
57
+ "react-dom": "19.2.6",
58
+ "typescript": "^5.7.0",
59
+ "vite": "^6",
60
+ "vitest": "^2.1.0"
46
61
  },
47
62
  "sideEffects": false,
48
63
  "scripts": {
49
- "build": "tsc",
50
- "typecheck": "tsc --noEmit"
64
+ "build": "tsc && cp src/GameTopbar.module.css src/theme.css dist/",
65
+ "typecheck": "tsc --noEmit",
66
+ "test": "vitest run"
51
67
  }
52
68
  }