@smoregg/sdk 0.6.2 → 1.0.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 (70) hide show
  1. package/README.md +29 -38
  2. package/dist/cjs/controller.cjs +299 -144
  3. package/dist/cjs/controller.cjs.map +1 -1
  4. package/dist/cjs/errors.cjs +36 -0
  5. package/dist/cjs/errors.cjs.map +1 -0
  6. package/dist/cjs/events.cjs +40 -19
  7. package/dist/cjs/events.cjs.map +1 -1
  8. package/dist/cjs/index.cjs +3 -8
  9. package/dist/cjs/index.cjs.map +1 -1
  10. package/dist/cjs/logger.cjs +75 -0
  11. package/dist/cjs/logger.cjs.map +1 -0
  12. package/dist/cjs/screen.cjs +302 -215
  13. package/dist/cjs/screen.cjs.map +1 -1
  14. package/dist/cjs/testing.cjs +265 -22
  15. package/dist/cjs/testing.cjs.map +1 -1
  16. package/dist/cjs/transport/DirectTransport.cjs.map +1 -1
  17. package/dist/cjs/transport/PostMessageTransport.cjs +11 -6
  18. package/dist/cjs/transport/PostMessageTransport.cjs.map +1 -1
  19. package/dist/cjs/transport/protocol.cjs +25 -5
  20. package/dist/cjs/transport/protocol.cjs.map +1 -1
  21. package/dist/esm/controller.js +292 -136
  22. package/dist/esm/controller.js.map +1 -1
  23. package/dist/esm/errors.js +34 -0
  24. package/dist/esm/errors.js.map +1 -0
  25. package/dist/esm/events.js +38 -18
  26. package/dist/esm/events.js.map +1 -1
  27. package/dist/esm/index.js +3 -4
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/logger.js +73 -0
  30. package/dist/esm/logger.js.map +1 -0
  31. package/dist/esm/screen.js +290 -202
  32. package/dist/esm/screen.js.map +1 -1
  33. package/dist/esm/testing.js +265 -22
  34. package/dist/esm/testing.js.map +1 -1
  35. package/dist/esm/transport/DirectTransport.js.map +1 -1
  36. package/dist/esm/transport/PostMessageTransport.js +12 -7
  37. package/dist/esm/transport/PostMessageTransport.js.map +1 -1
  38. package/dist/esm/transport/protocol.js +23 -4
  39. package/dist/esm/transport/protocol.js.map +1 -1
  40. package/dist/types/controller.d.ts +1 -14
  41. package/dist/types/controller.d.ts.map +1 -1
  42. package/dist/types/errors.d.ts +45 -0
  43. package/dist/types/errors.d.ts.map +1 -0
  44. package/dist/types/events.d.ts +52 -12
  45. package/dist/types/events.d.ts.map +1 -1
  46. package/dist/types/index.d.ts +4 -6
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/logger.d.ts +35 -0
  49. package/dist/types/logger.d.ts.map +1 -0
  50. package/dist/types/screen.d.ts +1 -14
  51. package/dist/types/screen.d.ts.map +1 -1
  52. package/dist/types/testing.d.ts +0 -1
  53. package/dist/types/testing.d.ts.map +1 -1
  54. package/dist/types/transport/DirectTransport.d.ts +2 -1
  55. package/dist/types/transport/DirectTransport.d.ts.map +1 -1
  56. package/dist/types/transport/PostMessageTransport.d.ts +17 -2
  57. package/dist/types/transport/PostMessageTransport.d.ts.map +1 -1
  58. package/dist/types/transport/index.d.ts +2 -2
  59. package/dist/types/transport/index.d.ts.map +1 -1
  60. package/dist/types/transport/protocol.d.ts +71 -23
  61. package/dist/types/transport/protocol.d.ts.map +1 -1
  62. package/dist/types/transport/types.d.ts +24 -2
  63. package/dist/types/transport/types.d.ts.map +1 -1
  64. package/dist/types/types.d.ts +298 -215
  65. package/dist/types/types.d.ts.map +1 -1
  66. package/dist/umd/smore-sdk.umd.js +950 -349
  67. package/dist/umd/smore-sdk.umd.js.map +1 -1
  68. package/dist/umd/smore-sdk.umd.min.js +1 -1
  69. package/dist/umd/smore-sdk.umd.min.js.map +1 -1
  70. package/package.json +8 -13
package/README.md CHANGED
@@ -17,14 +17,15 @@ yarn add @smoregg/sdk
17
17
  ### Screen Game (TV/Display)
18
18
 
19
19
  ```tsx
20
- import { SmoreScreen } from '@smoregg/sdk';
20
+ import { createScreen } from '@smoregg/sdk';
21
21
 
22
22
  function MyGame() {
23
- const screen = new SmoreScreen({
23
+ const screen = createScreen({
24
24
  gameId: 'my-game',
25
25
  listeners: {
26
26
  tap: (playerIndex, data) => {
27
27
  console.log(`Player ${playerIndex} tapped!`);
28
+ screen.broadcast('score-update', { playerIndex, score: 10 });
28
29
  }
29
30
  }
30
31
  });
@@ -36,10 +37,10 @@ function MyGame() {
36
37
  ### Controller App (Mobile)
37
38
 
38
39
  ```tsx
39
- import { SmoreController } from '@smoregg/sdk';
40
+ import { createController } from '@smoregg/sdk';
40
41
 
41
42
  function MyController() {
42
- const controller = new SmoreController({
43
+ const controller = createController({
43
44
  gameId: 'my-game',
44
45
  listeners: {
45
46
  'state-update': (state) => {
@@ -59,7 +60,6 @@ function MyController() {
59
60
  ## Features
60
61
 
61
62
  - **Screen/Controller Communication**: Simple event-based messaging
62
- - **React Hooks**: `useGameHost`, `useGamePlayer` for React apps
63
63
  - **TypeScript Support**: Full type definitions included
64
64
  - **Testing Utilities**: Mock Screen and Controller for unit testing
65
65
  - **Multiple Formats**: ESM, CJS, and UMD builds
@@ -67,29 +67,38 @@ function MyController() {
67
67
 
68
68
  ## API Reference
69
69
 
70
- ### SmoreScreen
70
+ ### createScreen()
71
71
 
72
- Screen-side game controller.
72
+ Create a screen-side game instance.
73
73
 
74
74
  ```typescript
75
- const screen = new SmoreScreen({
75
+ import { createScreen } from '@smoregg/sdk';
76
+
77
+ const screen = createScreen({
76
78
  gameId: string;
77
79
  listeners?: Record<string, (playerIndex: number, data: any) => void>;
78
80
  });
79
81
 
80
82
  // Methods
81
83
  screen.broadcast(event: string, data: any): void
82
- screen.sendToPlayer(playerIndex: number, event: string, data: any): void
84
+ screen.sendToController(playerIndex: number, event: string, data: any): void
85
+ screen.gameOver(results: GameResults): void
83
86
  screen.on(event: string, callback: Function): void
84
87
  screen.off(event: string, callback: Function): void
88
+
89
+ // Properties
90
+ screen.controllers: Array<{ playerIndex: number; nickname: string; connected: boolean }>
91
+ screen.myIndex: number
85
92
  ```
86
93
 
87
- ### SmoreController
94
+ ### createController()
88
95
 
89
- Controller-side app.
96
+ Create a controller-side game instance.
90
97
 
91
98
  ```typescript
92
- const controller = new SmoreController({
99
+ import { createController } from '@smoregg/sdk';
100
+
101
+ const controller = createController({
93
102
  gameId: string;
94
103
  listeners?: Record<string, (data: any) => void>;
95
104
  });
@@ -98,40 +107,22 @@ const controller = new SmoreController({
98
107
  controller.send(event: string, data: any): void
99
108
  controller.on(event: string, callback: Function): void
100
109
  controller.off(event: string, callback: Function): void
101
- ```
102
-
103
- ### React Hooks
104
110
 
105
- ```typescript
106
- import { useGameHost, useGamePlayer } from '@smoregg/sdk';
107
-
108
- // Screen
109
- const { room, broadcast, sendToPlayer } = useGameHost({
110
- gameId: 'my-game',
111
- onInput: {
112
- tap: (playerIndex, data) => { /* ... */ }
113
- }
114
- });
115
-
116
- // Controller
117
- const { emit, room } = useGamePlayer({
118
- gameId: 'my-game',
119
- listeners: {
120
- 'state-update': (state) => { /* ... */ }
121
- }
122
- });
111
+ // Properties
112
+ controller.myIndex: number
113
+ controller.isLeader: boolean
123
114
  ```
124
115
 
125
116
  ## Backward Compatibility
126
117
 
127
- The old `SmoreHost` and `SmorePlayer` names are still available as aliases:
118
+ The old type aliases are still available:
128
119
 
129
120
  ```typescript
130
- // These still work (deprecated)
131
- import { SmoreHost, SmorePlayer } from '@smoregg/sdk';
121
+ // Old names (deprecated)
122
+ import type { SmoreHost, SmorePlayer } from '@smoregg/sdk';
132
123
 
133
- // Prefer the new names
134
- import { SmoreScreen, SmoreController } from '@smoregg/sdk';
124
+ // New names (preferred)
125
+ import type { SmoreScreen, SmoreController } from '@smoregg/sdk';
135
126
  ```
136
127
 
137
128
  ## Testing