@remix-gg/sdk 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -86
- package/dist/index.js +195 -316
- package/dist/index.min.js +30 -114
- package/dist/index.min.js.map +3 -3
- package/dist/index.mjs +129 -255
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -42,52 +42,19 @@ type GameInfo = {
|
|
|
42
42
|
id: string;
|
|
43
43
|
gameState: GameState;
|
|
44
44
|
} | null;
|
|
45
|
-
levelBased?: {
|
|
46
|
-
levelCount: number;
|
|
47
|
-
/**
|
|
48
|
-
* Score-derived level progression for this player. Platform-owned and kept
|
|
49
|
-
* fully separate from `gameState` — never read progression out of gameState.
|
|
50
|
-
*/
|
|
51
|
-
progress: LevelProgressState;
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
/** Score-derived, platform-owned progression for a level-based game. */
|
|
55
|
-
type LevelProgressState = {
|
|
56
|
-
currentLevelIndex: number;
|
|
57
|
-
highestUnlockedLevel: number;
|
|
58
|
-
levelStars: Record<string, LevelStars>;
|
|
59
45
|
};
|
|
60
46
|
type ReadyEvent = {
|
|
61
47
|
type: 'ready';
|
|
62
|
-
data:
|
|
63
|
-
instanceId: string;
|
|
64
|
-
} | undefined;
|
|
48
|
+
data: undefined;
|
|
65
49
|
};
|
|
66
50
|
type PlayAgainEvent = {
|
|
67
51
|
type: 'play_again';
|
|
68
|
-
data
|
|
69
|
-
levelIndex?: number;
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
type LevelStars = 1 | 2 | 3;
|
|
73
|
-
type LevelOutcome = 'level_complete' | 'level_failed' | 'all_complete';
|
|
74
|
-
/**
|
|
75
|
-
* One level attempt reported with game_over. Games report only what happened
|
|
76
|
-
* in the attempt; the host owns and derives all cumulative progression
|
|
77
|
-
* (star maps, unlock state) — see `LevelProgressState` for the host→game snapshot.
|
|
78
|
-
*/
|
|
79
|
-
type LevelAttempt = {
|
|
80
|
-
/** 1-based index of the level that was just played. */
|
|
81
|
-
levelIndex: number;
|
|
82
|
-
/** Stars earned this attempt. Omit for star-less games; a completion counts as 1. */
|
|
83
|
-
stars?: LevelStars;
|
|
84
|
-
outcome: LevelOutcome;
|
|
52
|
+
data: undefined;
|
|
85
53
|
};
|
|
86
54
|
type SinglePlayerGameOverEvent = {
|
|
87
55
|
type: 'game_over';
|
|
88
56
|
data: {
|
|
89
57
|
score: number;
|
|
90
|
-
levelAttempt?: LevelAttempt;
|
|
91
58
|
};
|
|
92
59
|
};
|
|
93
60
|
type MultiplayerGameOverEvent = {
|
|
@@ -120,7 +87,6 @@ type GameErrorEvent = {
|
|
|
120
87
|
lineno?: number;
|
|
121
88
|
colno?: number;
|
|
122
89
|
error?: Error;
|
|
123
|
-
stack?: string;
|
|
124
90
|
};
|
|
125
91
|
};
|
|
126
92
|
type GameInfoEvent = {
|
|
@@ -173,56 +139,28 @@ type GameEventMessage<T extends GameEvent['type']> = {
|
|
|
173
139
|
type: T;
|
|
174
140
|
}>;
|
|
175
141
|
};
|
|
176
|
-
/**
|
|
177
|
-
* Build a game_event envelope for sending over postMessage. Hosts and the SDK
|
|
178
|
-
* share this so the wire format is defined in one place.
|
|
179
|
-
*/
|
|
180
|
-
declare const createGameEventMessage: <T extends GameEvent["type"]>(type: T, data: Extract<GameEvent, {
|
|
181
|
-
type: T;
|
|
182
|
-
}>["data"]) => GameEventMessage<T>;
|
|
183
|
-
/**
|
|
184
|
-
* Parse an unknown postMessage payload into a GameEvent, or null when the
|
|
185
|
-
* payload is not a well-formed game_event envelope.
|
|
186
|
-
*/
|
|
187
|
-
declare const parseGameEventMessage: (value: unknown) => GameEvent | null;
|
|
188
142
|
/**
|
|
189
143
|
* Messages from the game host to the game client
|
|
190
144
|
*/
|
|
191
145
|
type IncomingGameEvent = GameEventMessage<'play_again' | 'toggle_mute' | 'game_info' | 'game_state_updated' | 'purchase_complete'>;
|
|
192
146
|
type OutgoingGameEvent = GameEventMessage<'game_over' | 'ready' | 'haptic_feedback' | 'error' | 'save_game_state' | 'refute_game_state' | 'multiplayer_game_over' | 'multiplayer_save_game_state' | 'purchase'>;
|
|
193
|
-
type
|
|
194
|
-
type IncomingGameEventData<T extends IncomingGameEventType> = Extract<GameEvent, {
|
|
195
|
-
type: T;
|
|
196
|
-
}>['data'];
|
|
147
|
+
type EventCallback = (data: unknown) => void;
|
|
197
148
|
declare class RemixSDK {
|
|
198
149
|
private isClient;
|
|
199
150
|
private target;
|
|
200
151
|
private eventListeners;
|
|
201
|
-
private readyPromise;
|
|
202
152
|
private readyPromiseResolve;
|
|
203
|
-
private
|
|
204
|
-
private readyResendTimer;
|
|
205
|
-
private readonly instanceId;
|
|
153
|
+
private purchasePromiseResolve;
|
|
206
154
|
private _gameInfo?;
|
|
207
155
|
private _gameState?;
|
|
208
|
-
private _levelStars;
|
|
209
156
|
constructor();
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
* the production next-level button). `data` may be omitted for a plain restart.
|
|
218
|
-
*/
|
|
219
|
-
onPlay(callback: (data?: PlayAgainEvent['data']) => void): () => void;
|
|
220
|
-
/** @deprecated Use {@link onPlay}. Retained for backward compatibility. */
|
|
221
|
-
onPlayAgain(callback: (data?: PlayAgainEvent['data']) => void): () => void;
|
|
222
|
-
onToggleMute(callback: (data: ToggleMuteEvent['data']) => void): () => void;
|
|
223
|
-
onGameStateUpdated(callback: (data: GameStateUpdatedEvent['data']) => void): () => void;
|
|
224
|
-
onGameInfo(callback: (data: GameInfoEvent['data']) => void): () => void;
|
|
225
|
-
onPurchaseComplete(callback: (data: PurchaseCompleteEvent['data']) => void): () => void;
|
|
157
|
+
on(eventType: IncomingGameEvent['event']['type'], callback: EventCallback): void;
|
|
158
|
+
off(eventType: IncomingGameEvent['event']['type'], callback: EventCallback): void;
|
|
159
|
+
onPlayAgain(callback: () => void): void;
|
|
160
|
+
onToggleMute(callback: (data: ToggleMuteEvent['data']) => void): void;
|
|
161
|
+
onGameStateUpdated(callback: (data: GameStateUpdatedEvent['data']) => void): void;
|
|
162
|
+
onGameInfo(callback: (data: GameInfoEvent['data']) => void): void;
|
|
163
|
+
onPurchaseComplete(callback: (data: PurchaseCompleteEvent['data']) => void): void;
|
|
226
164
|
setTarget(target: Window): void;
|
|
227
165
|
get purchasedItems(): string[];
|
|
228
166
|
get inventory(): InventoryItem[];
|
|
@@ -232,18 +170,6 @@ declare class RemixSDK {
|
|
|
232
170
|
get players(): Player[] | undefined;
|
|
233
171
|
get player(): Player | undefined;
|
|
234
172
|
get isReady(): boolean;
|
|
235
|
-
/** True when the host configured this game with a fixed level count. */
|
|
236
|
-
get isLevelBased(): boolean;
|
|
237
|
-
/** Total levels for level-based games (from host metadata). */
|
|
238
|
-
get levelCount(): number | undefined;
|
|
239
|
-
/** 1-based level index from score-derived progression, defaulting to 1. */
|
|
240
|
-
get currentLevelIndex(): number;
|
|
241
|
-
/** Best stars earned per level from score-derived progression. Keys are 1-based level indices. */
|
|
242
|
-
get levelStars(): Record<string, LevelStars>;
|
|
243
|
-
/** Highest unlocked level from score-derived progression, defaulting to 1. */
|
|
244
|
-
get highestUnlockedLevel(): number;
|
|
245
|
-
/** Sum of best stars across all completed levels. */
|
|
246
|
-
get totalStars(): number;
|
|
247
173
|
ready: () => Promise<GameInfo>;
|
|
248
174
|
purchase: (data: PurchaseEvent["data"]) => Promise<PurchaseCompleteEvent["data"]>;
|
|
249
175
|
reportError: (data: GameErrorEvent["data"]) => void;
|
|
@@ -281,4 +207,4 @@ declare class RemixSDK {
|
|
|
281
207
|
}
|
|
282
208
|
declare const sdk: RemixSDK;
|
|
283
209
|
|
|
284
|
-
export { type GameErrorEvent, type GameEvent, type GameEventMessage, type GameInfo, type GameInfoEvent, type GameState, type GameStateUpdatedEvent, type HapticFeedbackEvent, type HapticFeedbackType, type IncomingGameEvent, type
|
|
210
|
+
export { type GameErrorEvent, type GameEvent, type GameEventMessage, type GameInfo, type GameInfoEvent, type GameState, type GameStateUpdatedEvent, type HapticFeedbackEvent, type HapticFeedbackType, type IncomingGameEvent, type InventoryItem, type MultiplayerGameOverEvent, type MultiplayerSaveGameStateEvent, type OutgoingGameEvent, type PlayAgainEvent, type Player, type PurchaseCompleteEvent, type PurchaseEvent, type ReadyEvent, type RefuteGameStateEvent, RemixSDK, type SafeAreaInset, type SaveGameStateEvent, type ShopItem, type SinglePlayerGameOverEvent, type ToggleMuteEvent, type ViewContext, ZERO_SAFE_AREA_INSET, sdk };
|