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