@spawnco/sdk-types 0.0.8 → 0.0.10

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.mts CHANGED
@@ -57,6 +57,7 @@ interface SpawnServerSDK__V1 {
57
57
  valid: true;
58
58
  user: User;
59
59
  expires: Date;
60
+ payload: TokenPayload;
60
61
  }>;
61
62
  };
62
63
  };
@@ -89,6 +90,15 @@ interface SpawnServerSDK__V1 {
89
90
  };
90
91
  };
91
92
  }
93
+ interface TokenPayload {
94
+ sub: string;
95
+ variantId: string;
96
+ email?: string;
97
+ username?: string;
98
+ isGuest: boolean;
99
+ iat: number;
100
+ exp: number;
101
+ }
92
102
  type RoomVisibility = "public" | "private" | "friends";
93
103
  interface User {
94
104
  id: string;
@@ -120,4 +130,4 @@ interface Item {
120
130
  type SpawnClientSDK__V0 = Omit<SpawnClientSDK__V1, "economy" | "inventory" | "storage">;
121
131
  type SpawnServerSDK__V0 = Omit<SpawnServerSDK__V1, "economy" | "inventory" | "storage" | "room">;
122
132
 
123
- export type { Item, Room, RoomInfo, RoomVisibility, SpawnClientSDK__V0, SpawnClientSDK__V1, SpawnServerSDK__V0, SpawnServerSDK__V1, User };
133
+ export type { Item, Room, RoomInfo, RoomVisibility, SpawnClientSDK__V0, SpawnClientSDK__V1, SpawnServerSDK__V0, SpawnServerSDK__V1, TokenPayload, User };
package/dist/index.d.ts CHANGED
@@ -5,119 +5,156 @@
5
5
  * Future modules: friends, achievements, chat, ai, leaderboards, tournaments
6
6
  */
7
7
  interface SpawnClientSDK__V1 {
8
- ready(): Promise<void>;
9
- user: {
10
- me(): Promise<User>;
11
- upgradeGuest(): Promise<void>;
12
- };
13
- room: {
14
- connect(options?: {
15
- query?: Record<string, string>;
16
- headers?: Record<string, string>;
17
- }): Promise<Room>;
18
- };
19
- economy: {
20
- balance(): Promise<{
21
- amount: number;
22
- }>;
23
- purchase(options: {
24
- sku: string;
25
- price: number;
26
- description: string;
27
- data?: Record<string, any>;
28
- }): Promise<{
29
- success: boolean;
30
- token?: string;
31
- }>;
32
- on(event: "update", handler: (balance: number) => void): void;
8
+ ready(): Promise<void>;
9
+ user: {
10
+ me(): Promise<User>;
11
+ upgradeGuest(): Promise<void>;
12
+ };
13
+ room: {
14
+ connect(options?: {
15
+ roomId: string;
16
+ query?: Record<string, string>;
17
+ headers?: Record<string, string>;
18
+ }): Promise<Room>;
19
+ };
20
+ economy: {
21
+ balance(): Promise<{
22
+ amount: number;
23
+ }>;
24
+ purchase(options: {
25
+ sku: string;
26
+ price: number;
27
+ description: string;
28
+ data?: Record<string, any>;
29
+ }): Promise<{
30
+ success: boolean;
31
+ token?: string;
32
+ }>;
33
+ on(event: "update", handler: (balance: number) => void): void;
34
+ };
35
+ inventory: {
36
+ currencies: {
37
+ get(): Promise<Record<string, number>>;
38
+ on(
39
+ event: "update",
40
+ handler: (balances: Record<string, number>) => void
41
+ ): void;
33
42
  };
34
- inventory: {
35
- currencies: {
36
- get(): Promise<Record<string, number>>;
37
- on(event: "update", handler: (balances: Record<string, number>) => void): void;
38
- };
39
- items: {
40
- list(): Promise<Item[]>;
41
- on(event: "update", handler: (items: Item[]) => void): void;
42
- };
43
+ items: {
44
+ list(): Promise<Item[]>;
45
+ on(event: "update", handler: (items: Item[]) => void): void;
43
46
  };
44
- storage: {
45
- user: {
46
- get(key: string): Promise<any>;
47
- set(key: string, value: any): Promise<void>;
48
- };
47
+ };
48
+ storage: {
49
+ user: {
50
+ get(key: string): Promise<any>;
51
+ set(key: string, value: any): Promise<void>;
49
52
  };
53
+ };
50
54
  }
51
55
  interface SpawnServerSDK__V1 {
52
- user: {
53
- token: {
54
- verify(token: string): Promise<{
55
- valid: false;
56
- } | {
57
- valid: true;
58
- user: User;
59
- expires: Date;
60
- }>;
61
- };
56
+ user: {
57
+ token: {
58
+ verify(token: string): Promise<
59
+ | {
60
+ valid: false;
61
+ }
62
+ | {
63
+ valid: true;
64
+ user: User;
65
+ expires: Date;
66
+ payload: TokenPayload;
67
+ }
68
+ >;
62
69
  };
63
- economy: {
64
- redeemPurchase(token: string): Promise<{
65
- success: boolean;
66
- sku: string;
67
- data?: Record<string, any>;
68
- userId: string;
69
- }>;
70
+ };
71
+ economy: {
72
+ redeemPurchase(token: string): Promise<{
73
+ success: boolean;
74
+ sku: string;
75
+ data?: Record<string, any>;
76
+ userId: string;
77
+ }>;
78
+ };
79
+ inventory: {
80
+ currencies: {
81
+ credit(userId: string, currency: string, amount: number): Promise<void>;
82
+ debit(userId: string, currency: string, amount: number): Promise<boolean>;
83
+ exchange(
84
+ userId: string,
85
+ tx: {
86
+ debit: Record<string, number>;
87
+ credit: Record<string, number>;
88
+ }
89
+ ): Promise<boolean>;
70
90
  };
71
- inventory: {
72
- currencies: {
73
- credit(userId: string, currency: string, amount: number): Promise<void>;
74
- debit(userId: string, currency: string, amount: number): Promise<boolean>;
75
- exchange(userId: string, tx: {
76
- debit: Record<string, number>;
77
- credit: Record<string, number>;
78
- }): Promise<boolean>;
79
- };
80
- items: {
81
- grant(userId: string, items: Item[]): Promise<void>;
82
- consume(userId: string, itemId: string): Promise<boolean>;
83
- };
91
+ items: {
92
+ grant(userId: string, items: Item[]): Promise<void>;
93
+ consume(userId: string, itemId: string): Promise<boolean>;
84
94
  };
85
- storage: {
86
- room: {
87
- get(key: string): Promise<any>;
88
- set(key: string, value: any): Promise<void>;
89
- };
95
+ };
96
+ storage: {
97
+ room: {
98
+ get(key: string): Promise<any>;
99
+ set(key: string, value: any): Promise<void>;
90
100
  };
101
+ };
102
+ }
103
+ interface TokenPayload {
104
+ sub: string;
105
+ variantId: string;
106
+ email?: string;
107
+ username?: string;
108
+ isGuest: boolean;
109
+ iat: number;
110
+ exp: number;
91
111
  }
92
112
  type RoomVisibility = "public" | "private" | "friends";
93
113
  interface User {
94
- id: string;
95
- username: string;
96
- avatarUrl?: string;
97
- isGuest: boolean;
114
+ id: string;
115
+ username: string;
116
+ avatarUrl?: string;
117
+ isGuest: boolean;
98
118
  }
99
119
  interface Room {
100
- id: string;
101
- send(type: string, data: any): void;
102
- on(event: string, handler: (data: any) => void): void;
103
- on(event: "disconnect", handler: () => void): void;
104
- leave(): void;
120
+ id: string;
121
+ send(type: string, data: any): void;
122
+ on(event: string, handler: (data: any) => void): void;
123
+ on(event: "disconnect", handler: () => void): void;
124
+ leave(): void;
105
125
  }
106
126
  interface RoomInfo {
107
- roomId: string;
108
- gameMode?: string;
109
- visibility: RoomVisibility;
110
- playerCount: number;
111
- maxPlayers: number;
112
- isFull: boolean;
113
- lastActive: Date;
114
- activeFriends: User[];
127
+ roomId: string;
128
+ gameMode?: string;
129
+ visibility: RoomVisibility;
130
+ playerCount: number;
131
+ maxPlayers: number;
132
+ isFull: boolean;
133
+ lastActive: Date;
134
+ activeFriends: User[];
115
135
  }
116
136
  interface Item {
117
- id: string;
118
- data?: Record<string, any>;
137
+ id: string;
138
+ data?: Record<string, any>;
119
139
  }
120
- type SpawnClientSDK__V0 = Omit<SpawnClientSDK__V1, "economy" | "inventory" | "storage">;
121
- type SpawnServerSDK__V0 = Omit<SpawnServerSDK__V1, "economy" | "inventory" | "storage" | "room">;
140
+ type SpawnClientSDK__V0 = Omit<
141
+ SpawnClientSDK__V1,
142
+ "economy" | "inventory" | "storage"
143
+ >;
144
+ type SpawnServerSDK__V0 = Omit<
145
+ SpawnServerSDK__V1,
146
+ "economy" | "inventory" | "storage" | "room"
147
+ >;
122
148
 
123
- export type { Item, Room, RoomInfo, RoomVisibility, SpawnClientSDK__V0, SpawnClientSDK__V1, SpawnServerSDK__V0, SpawnServerSDK__V1, User };
149
+ export type {
150
+ Item,
151
+ Room,
152
+ RoomInfo,
153
+ RoomVisibility,
154
+ SpawnClientSDK__V0,
155
+ SpawnClientSDK__V1,
156
+ SpawnServerSDK__V0,
157
+ SpawnServerSDK__V1,
158
+ TokenPayload,
159
+ User,
160
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spawnco/sdk-types",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "TypeScript type definitions for Spawn SDK",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export * from './v1';
1
+ export * from './v1';
package/src/v1.ts CHANGED
@@ -16,40 +16,29 @@ export interface SpawnClientSDK__V1 {
16
16
 
17
17
  room: {
18
18
  // only one room per game for v1
19
- connect(options?: {
20
- query?: Record<string, string>;
21
- headers?: Record<string, string>;
22
- }): Promise<Room>;
19
+ connect(options: { roomId: string; query?: Record<string, string>; headers?: Record<string, string> }): Promise<Room>;
23
20
  };
24
21
 
25
22
  economy: {
26
23
  balance(): Promise<{ amount: number }>;
27
24
 
28
- purchase(options: {
29
- sku: string;
30
- price: number;
31
- description: string;
32
- data?: Record<string, any>;
33
- }): Promise<{
25
+ purchase(options: { sku: string; price: number; description: string; data?: Record<string, any> }): Promise<{
34
26
  success: boolean;
35
27
  token?: string; // Contains signed purchase details
36
28
  }>;
37
29
 
38
- on(event: "update", handler: (balance: number) => void): void;
30
+ on(event: 'update', handler: (balance: number) => void): void;
39
31
  };
40
32
 
41
33
  inventory: {
42
34
  currencies: {
43
35
  get(): Promise<Record<string, number>>;
44
- on(
45
- event: "update",
46
- handler: (balances: Record<string, number>) => void
47
- ): void;
36
+ on(event: 'update', handler: (balances: Record<string, number>) => void): void;
48
37
  };
49
38
 
50
39
  items: {
51
40
  list(): Promise<Item[]>;
52
- on(event: "update", handler: (items: Item[]) => void): void;
41
+ on(event: 'update', handler: (items: Item[]) => void): void;
53
42
  };
54
43
  };
55
44
 
@@ -65,9 +54,7 @@ export interface SpawnClientSDK__V1 {
65
54
  export interface SpawnServerSDK__V1 {
66
55
  user: {
67
56
  token: {
68
- verify(
69
- token: string
70
- ): Promise<{ valid: false } | { valid: true; user: User; expires: Date }>;
57
+ verify(token: string): Promise<{ valid: false } | { valid: true; user: User; expires: Date; payload: TokenPayload }>;
71
58
  };
72
59
  };
73
60
 
@@ -109,8 +96,19 @@ export interface SpawnServerSDK__V1 {
109
96
  };
110
97
  }
111
98
 
99
+ // Token types
100
+ export interface TokenPayload {
101
+ sub: string; // user ID
102
+ variantId: string;
103
+ email?: string;
104
+ username?: string;
105
+ isGuest: boolean;
106
+ iat: number;
107
+ exp: number;
108
+ }
109
+
112
110
  // Supporting types
113
- export type RoomVisibility = "public" | "private" | "friends";
111
+ export type RoomVisibility = 'public' | 'private' | 'friends';
114
112
 
115
113
  export interface User {
116
114
  id: string;
@@ -123,7 +121,7 @@ export interface Room {
123
121
  id: string;
124
122
  send(type: string, data: any): void;
125
123
  on(event: string, handler: (data: any) => void): void;
126
- on(event: "disconnect", handler: () => void): void;
124
+ on(event: 'disconnect', handler: () => void): void;
127
125
  leave(): void;
128
126
  }
129
127
 
@@ -145,11 +143,5 @@ export interface Item {
145
143
 
146
144
  // v0 sdk types for testing
147
145
 
148
- export type SpawnClientSDK__V0 = Omit<
149
- SpawnClientSDK__V1,
150
- "economy" | "inventory" | "storage"
151
- >;
152
- export type SpawnServerSDK__V0 = Omit<
153
- SpawnServerSDK__V1,
154
- "economy" | "inventory" | "storage" | "room"
155
- >;
146
+ export type SpawnClientSDK__V0 = Omit<SpawnClientSDK__V1, 'economy' | 'inventory' | 'storage'>;
147
+ export type SpawnServerSDK__V0 = Omit<SpawnServerSDK__V1, 'economy' | 'inventory' | 'storage' | 'room'>;