@spawnco/sdk-types 0.0.8 → 0.0.9
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 +11 -1
- package/dist/index.d.ts +133 -96
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/v1.ts +21 -29
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
}
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
114
|
+
id: string;
|
115
|
+
username: string;
|
116
|
+
avatarUrl?: string;
|
117
|
+
isGuest: boolean;
|
98
118
|
}
|
99
119
|
interface Room {
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
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
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
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
|
-
|
118
|
-
|
137
|
+
id: string;
|
138
|
+
data?: Record<string, any>;
|
119
139
|
}
|
120
|
-
type SpawnClientSDK__V0 = Omit<
|
121
|
-
|
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 {
|
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
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:
|
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:
|
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 =
|
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:
|
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
|
-
|
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'>;
|