@shaunlwm/pickle.ts 0.0.1 → 0.0.2
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/README.md +1 -1
- package/dist/index.d.ts +377 -7
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
- package/dist/adapters/base-adapter.d.ts +0 -39
- package/dist/adapters/base-adapter.d.ts.map +0 -1
- package/dist/adapters/base-adapter.js +0 -79
- package/dist/adapters/base-adapter.js.map +0 -1
- package/dist/adapters/cpjourney-adapter.d.ts +0 -12
- package/dist/adapters/cpjourney-adapter.d.ts.map +0 -1
- package/dist/adapters/cpjourney-adapter.js +0 -114
- package/dist/adapters/cpjourney-adapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -9
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -8
- package/dist/adapters/index.js.map +0 -1
- package/dist/client.d.ts +0 -60
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -191
- package/dist/client.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types/adapter-types.d.ts +0 -27
- package/dist/types/adapter-types.d.ts.map +0 -1
- package/dist/types/adapter-types.js +0 -2
- package/dist/types/adapter-types.js.map +0 -1
- package/dist/types/message-types.d.ts +0 -159
- package/dist/types/message-types.d.ts.map +0 -1
- package/dist/types/message-types.js +0 -2
- package/dist/types/message-types.js.map +0 -1
- package/dist/types/player-types.d.ts +0 -85
- package/dist/types/player-types.d.ts.map +0 -1
- package/dist/types/player-types.js +0 -2
- package/dist/types/player-types.js.map +0 -1
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,377 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { Socket } from 'socket.io-client';
|
|
3
|
+
|
|
4
|
+
type ServerInfo = {
|
|
5
|
+
name: string;
|
|
6
|
+
population: number;
|
|
7
|
+
};
|
|
8
|
+
type LoginOptions = {
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
secret?: string;
|
|
12
|
+
};
|
|
13
|
+
type TokenLoginOptions = {
|
|
14
|
+
username: string;
|
|
15
|
+
token: string;
|
|
16
|
+
secret?: string;
|
|
17
|
+
};
|
|
18
|
+
type LoginResult = {
|
|
19
|
+
servers: ServerInfo[];
|
|
20
|
+
key: string;
|
|
21
|
+
username: string;
|
|
22
|
+
moderator: boolean;
|
|
23
|
+
buddyWorlds: string[];
|
|
24
|
+
};
|
|
25
|
+
type QueueUpdate = {
|
|
26
|
+
userId: number;
|
|
27
|
+
position: number;
|
|
28
|
+
queueLength: number;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
type ConnectOptions = {
|
|
32
|
+
onQueueUpdate?: (update: QueueUpdate) => void;
|
|
33
|
+
};
|
|
34
|
+
declare abstract class BaseAdapter {
|
|
35
|
+
abstract readonly id: string;
|
|
36
|
+
protected socket: Socket | null;
|
|
37
|
+
abstract login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult>;
|
|
38
|
+
abstract connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket>;
|
|
39
|
+
abstract disconnect(): void;
|
|
40
|
+
abstract send(action: string, args: Record<string, unknown>): void;
|
|
41
|
+
sendMessage(message: string): void;
|
|
42
|
+
sendEmote(emote: number): void;
|
|
43
|
+
sendSafe(safe: number): void;
|
|
44
|
+
walk(x: number, y: number): void;
|
|
45
|
+
sendFrame(frame: number, set?: boolean): void;
|
|
46
|
+
snowball(x: number, y: number): void;
|
|
47
|
+
joinRoom(room: number, x?: number, y?: number): void;
|
|
48
|
+
addItem(item: number): void;
|
|
49
|
+
equipColor(item: number): void;
|
|
50
|
+
equipHead(item: number): void;
|
|
51
|
+
equipFace(item: number): void;
|
|
52
|
+
equipNeck(item: number): void;
|
|
53
|
+
equipBody(item: number): void;
|
|
54
|
+
equipHand(item: number): void;
|
|
55
|
+
equipFeet(item: number): void;
|
|
56
|
+
equipFlag(item: number): void;
|
|
57
|
+
equipPhoto(item: number): void;
|
|
58
|
+
buddyRequest(id: number): void;
|
|
59
|
+
buddyAccept(id: number): void;
|
|
60
|
+
removeBuddy(id: number): void;
|
|
61
|
+
addIgnore(id: number): void;
|
|
62
|
+
removeIgnore(id: number): void;
|
|
63
|
+
getPlayer(id: number): void;
|
|
64
|
+
getAllSlots(): void;
|
|
65
|
+
getMascots(): void;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare class CpjourneyAdapter extends BaseAdapter {
|
|
69
|
+
readonly id = "CPJourney";
|
|
70
|
+
login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult>;
|
|
71
|
+
connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket>;
|
|
72
|
+
send(action: string, args: Record<string, unknown>): void;
|
|
73
|
+
disconnect(): void;
|
|
74
|
+
private createSocket;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
declare const ADAPTERS: {
|
|
78
|
+
readonly CPJourney: typeof CpjourneyAdapter;
|
|
79
|
+
};
|
|
80
|
+
type AdapterName = keyof typeof ADAPTERS;
|
|
81
|
+
|
|
82
|
+
type PlayerAppearance = {
|
|
83
|
+
color: number;
|
|
84
|
+
hat: number;
|
|
85
|
+
head: number;
|
|
86
|
+
face: number;
|
|
87
|
+
face_mask: number;
|
|
88
|
+
neck: number;
|
|
89
|
+
neck_scarf: number;
|
|
90
|
+
body: number;
|
|
91
|
+
body_shirt: number;
|
|
92
|
+
hand: number;
|
|
93
|
+
hand_glove: number;
|
|
94
|
+
feet: number;
|
|
95
|
+
flag: number;
|
|
96
|
+
photo: number;
|
|
97
|
+
transform: number;
|
|
98
|
+
};
|
|
99
|
+
type PlayerSettings = {
|
|
100
|
+
music_volume: number;
|
|
101
|
+
sfx_volume: number;
|
|
102
|
+
hide_penguins: boolean;
|
|
103
|
+
hide_chats: boolean;
|
|
104
|
+
hide_emotes: boolean;
|
|
105
|
+
hide_ui: boolean;
|
|
106
|
+
hide_usernames: boolean;
|
|
107
|
+
quality: number;
|
|
108
|
+
silence_notifications: boolean;
|
|
109
|
+
opt_out_postcards: boolean;
|
|
110
|
+
opt_out_buddy_requests: boolean;
|
|
111
|
+
};
|
|
112
|
+
type Buddy = {
|
|
113
|
+
id: number;
|
|
114
|
+
username: string;
|
|
115
|
+
online: boolean;
|
|
116
|
+
favorite: boolean;
|
|
117
|
+
items: number[];
|
|
118
|
+
onlineServer: string;
|
|
119
|
+
};
|
|
120
|
+
type RoomUser = PlayerAppearance & {
|
|
121
|
+
id: number;
|
|
122
|
+
username: string;
|
|
123
|
+
displayName: string;
|
|
124
|
+
joinTime: string;
|
|
125
|
+
x: number;
|
|
126
|
+
y: number;
|
|
127
|
+
frame: number;
|
|
128
|
+
walking: number;
|
|
129
|
+
walkingPuffleType: number;
|
|
130
|
+
openSprite?: string;
|
|
131
|
+
mascotGiveaway?: unknown;
|
|
132
|
+
iglooOpen: number;
|
|
133
|
+
iglooBounds: number;
|
|
134
|
+
igloo_slot: number;
|
|
135
|
+
currentLayer: number;
|
|
136
|
+
fireRank: number;
|
|
137
|
+
};
|
|
138
|
+
type PlayerData = RoomUser & {
|
|
139
|
+
coins: number;
|
|
140
|
+
partyCoins: number;
|
|
141
|
+
gems: number;
|
|
142
|
+
rank: number;
|
|
143
|
+
streamer: boolean;
|
|
144
|
+
username_verified: boolean;
|
|
145
|
+
email_verified: boolean;
|
|
146
|
+
settings: PlayerSettings;
|
|
147
|
+
buddies: Buddy[];
|
|
148
|
+
buddyRequests: number[];
|
|
149
|
+
ignores: number[];
|
|
150
|
+
inventory: number[];
|
|
151
|
+
puffleInventory: unknown[];
|
|
152
|
+
igloos: unknown[];
|
|
153
|
+
furniture: unknown[];
|
|
154
|
+
flooring: unknown[];
|
|
155
|
+
inf_skill_points: number;
|
|
156
|
+
highest_floor_reached: number;
|
|
157
|
+
towerMeters: number;
|
|
158
|
+
towerExperience: number;
|
|
159
|
+
};
|
|
160
|
+
type Mascot = {
|
|
161
|
+
id: number;
|
|
162
|
+
name: string;
|
|
163
|
+
giveaway: number;
|
|
164
|
+
stamp: number;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
type ClientMessages = {
|
|
168
|
+
send_position: {
|
|
169
|
+
x: number;
|
|
170
|
+
y: number;
|
|
171
|
+
};
|
|
172
|
+
send_frame: {
|
|
173
|
+
frame: number;
|
|
174
|
+
set?: boolean;
|
|
175
|
+
};
|
|
176
|
+
send_message: {
|
|
177
|
+
message: string;
|
|
178
|
+
};
|
|
179
|
+
join_room: {
|
|
180
|
+
room: number;
|
|
181
|
+
x?: number;
|
|
182
|
+
y?: number;
|
|
183
|
+
};
|
|
184
|
+
add_item: {
|
|
185
|
+
item: number;
|
|
186
|
+
};
|
|
187
|
+
send_emote: {
|
|
188
|
+
emote: number;
|
|
189
|
+
};
|
|
190
|
+
send_safe: {
|
|
191
|
+
safe: number;
|
|
192
|
+
};
|
|
193
|
+
snowball: {
|
|
194
|
+
x: number;
|
|
195
|
+
y: number;
|
|
196
|
+
};
|
|
197
|
+
buddy_request: {
|
|
198
|
+
id: number;
|
|
199
|
+
};
|
|
200
|
+
buddy_accept: {
|
|
201
|
+
id: number;
|
|
202
|
+
};
|
|
203
|
+
remove_buddy: {
|
|
204
|
+
id: number;
|
|
205
|
+
};
|
|
206
|
+
get_player: {
|
|
207
|
+
id: number;
|
|
208
|
+
};
|
|
209
|
+
add_ignore: {
|
|
210
|
+
id: number;
|
|
211
|
+
};
|
|
212
|
+
remove_ignore: {
|
|
213
|
+
id: number;
|
|
214
|
+
};
|
|
215
|
+
update_color: {
|
|
216
|
+
item: number;
|
|
217
|
+
};
|
|
218
|
+
update_head: {
|
|
219
|
+
item: number;
|
|
220
|
+
};
|
|
221
|
+
update_face: {
|
|
222
|
+
item: number;
|
|
223
|
+
};
|
|
224
|
+
update_neck: {
|
|
225
|
+
item: number;
|
|
226
|
+
};
|
|
227
|
+
update_body: {
|
|
228
|
+
item: number;
|
|
229
|
+
};
|
|
230
|
+
update_hand: {
|
|
231
|
+
item: number;
|
|
232
|
+
};
|
|
233
|
+
update_feet: {
|
|
234
|
+
item: number;
|
|
235
|
+
};
|
|
236
|
+
update_flag: {
|
|
237
|
+
item: number;
|
|
238
|
+
};
|
|
239
|
+
update_photo: {
|
|
240
|
+
item: number;
|
|
241
|
+
};
|
|
242
|
+
get_all_slots: Record<string, never>;
|
|
243
|
+
get_mascots: Record<string, never>;
|
|
244
|
+
get_weather: Record<string, never>;
|
|
245
|
+
join_server: Record<string, never>;
|
|
246
|
+
check_puffle_sprite: {
|
|
247
|
+
puffleSprite: unknown;
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
type ServerMessages = {
|
|
251
|
+
login: {
|
|
252
|
+
success: boolean;
|
|
253
|
+
username: string;
|
|
254
|
+
key: string;
|
|
255
|
+
populations: Record<string, number>;
|
|
256
|
+
moderator: boolean;
|
|
257
|
+
buddyWorlds: string[];
|
|
258
|
+
};
|
|
259
|
+
game_auth: {
|
|
260
|
+
success: boolean;
|
|
261
|
+
token?: string;
|
|
262
|
+
};
|
|
263
|
+
load_player: {
|
|
264
|
+
user: PlayerData;
|
|
265
|
+
};
|
|
266
|
+
join_room: {
|
|
267
|
+
room: number;
|
|
268
|
+
users: RoomUser[];
|
|
269
|
+
};
|
|
270
|
+
add_player: {
|
|
271
|
+
user: RoomUser;
|
|
272
|
+
};
|
|
273
|
+
remove_player: {
|
|
274
|
+
user: number;
|
|
275
|
+
};
|
|
276
|
+
send_position: {
|
|
277
|
+
id: number;
|
|
278
|
+
x: number;
|
|
279
|
+
y: number;
|
|
280
|
+
};
|
|
281
|
+
send_frame: {
|
|
282
|
+
id: number;
|
|
283
|
+
frame: number;
|
|
284
|
+
set?: boolean;
|
|
285
|
+
};
|
|
286
|
+
send_message: {
|
|
287
|
+
id: number;
|
|
288
|
+
message: string;
|
|
289
|
+
};
|
|
290
|
+
send_emote: {
|
|
291
|
+
id: number;
|
|
292
|
+
emote: number;
|
|
293
|
+
};
|
|
294
|
+
set_weather: {
|
|
295
|
+
type: string;
|
|
296
|
+
intensity: number;
|
|
297
|
+
};
|
|
298
|
+
open_sprite: {
|
|
299
|
+
id: number;
|
|
300
|
+
sprite: string;
|
|
301
|
+
};
|
|
302
|
+
close_sprite: {
|
|
303
|
+
id: number;
|
|
304
|
+
};
|
|
305
|
+
wait_queue_update: QueueUpdate;
|
|
306
|
+
cpj_ping: Record<string, never>;
|
|
307
|
+
get_mascots: {
|
|
308
|
+
mascots: Mascot[];
|
|
309
|
+
};
|
|
310
|
+
get_player: {
|
|
311
|
+
user: RoomUser;
|
|
312
|
+
};
|
|
313
|
+
update_player: {
|
|
314
|
+
id: number;
|
|
315
|
+
item: number;
|
|
316
|
+
slot: string;
|
|
317
|
+
};
|
|
318
|
+
slot: unknown[];
|
|
319
|
+
error: {
|
|
320
|
+
error: number;
|
|
321
|
+
};
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
type ServerMessageHandler<K extends keyof ServerMessages> = (args: ServerMessages[K]) => void;
|
|
325
|
+
type LogFn = (message: string, ...args: unknown[]) => void;
|
|
326
|
+
type ClientOptions = {
|
|
327
|
+
debug?: boolean | LogFn;
|
|
328
|
+
};
|
|
329
|
+
declare class Client extends EventEmitter {
|
|
330
|
+
player: PlayerData | null;
|
|
331
|
+
room: number | null;
|
|
332
|
+
users: Map<number, RoomUser>;
|
|
333
|
+
private adapter;
|
|
334
|
+
private loginResult;
|
|
335
|
+
private log;
|
|
336
|
+
constructor(server: AdapterName, options?: ClientOptions);
|
|
337
|
+
login(options: LoginOptions | TokenLoginOptions): Promise<ServerInfo[]>;
|
|
338
|
+
connect(serverName: string, options?: ConnectOptions): Promise<void>;
|
|
339
|
+
on<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this;
|
|
340
|
+
on(event: string, listener: (...args: unknown[]) => void): this;
|
|
341
|
+
off<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this;
|
|
342
|
+
off(event: string, listener: (...args: unknown[]) => void): this;
|
|
343
|
+
once<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this;
|
|
344
|
+
once(event: string, listener: (...args: unknown[]) => void): this;
|
|
345
|
+
emit<K extends keyof ServerMessages>(event: K, args: ServerMessages[K]): boolean;
|
|
346
|
+
emit(event: string, ...args: unknown[]): boolean;
|
|
347
|
+
sendMessage(message: string): void;
|
|
348
|
+
sendEmote(emote: number): void;
|
|
349
|
+
sendSafe(safe: number): void;
|
|
350
|
+
walk(x: number, y: number): void;
|
|
351
|
+
sendFrame(frame: number, set?: boolean): void;
|
|
352
|
+
snowball(x: number, y: number): void;
|
|
353
|
+
joinRoom(room: number, x?: number, y?: number): void;
|
|
354
|
+
addItem(item: number): void;
|
|
355
|
+
equipColor(item: number): void;
|
|
356
|
+
equipHead(item: number): void;
|
|
357
|
+
equipFace(item: number): void;
|
|
358
|
+
equipNeck(item: number): void;
|
|
359
|
+
equipBody(item: number): void;
|
|
360
|
+
equipHand(item: number): void;
|
|
361
|
+
equipFeet(item: number): void;
|
|
362
|
+
equipFlag(item: number): void;
|
|
363
|
+
equipPhoto(item: number): void;
|
|
364
|
+
buddyRequest(id: number): void;
|
|
365
|
+
buddyAccept(id: number): void;
|
|
366
|
+
removeBuddy(id: number): void;
|
|
367
|
+
addIgnore(id: number): void;
|
|
368
|
+
removeIgnore(id: number): void;
|
|
369
|
+
getPlayer(id: number): void;
|
|
370
|
+
getAllSlots(): void;
|
|
371
|
+
getMascots(): void;
|
|
372
|
+
sleep(ms: number): Promise<void>;
|
|
373
|
+
disconnect(): void;
|
|
374
|
+
private handleMessage;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export { type AdapterName, BaseAdapter, type Buddy, Client, type ClientMessages, type ClientOptions, type ConnectOptions, type LogFn, type LoginOptions, type LoginResult, type Mascot, type PlayerAppearance, type PlayerData, type PlayerSettings, type QueueUpdate, type RoomUser, type ServerInfo, type ServerMessages, type TokenLoginOptions };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export { BaseAdapter } from "./adapters/base-adapter.js";
|
|
1
|
+
import{EventEmitter as w}from"events";import{io as v}from"socket.io-client";import y from"socket.io-msgpack-parser";var c=class{socket=null;sendMessage(e){this.send("send_message",{message:e})}sendEmote(e){this.send("send_emote",{emote:e})}sendSafe(e){this.send("send_safe",{safe:e})}walk(e,s){this.send("send_position",{x:e,y:s})}sendFrame(e,s){this.send("send_frame",{frame:e,set:s})}snowball(e,s){this.send("snowball",{x:e,y:s})}joinRoom(e,s,n){this.send("join_room",{room:e,x:s??0,y:n??0})}addItem(e){this.send("add_item",{item:e})}equipColor(e){this.send("update_color",{item:e})}equipHead(e){this.send("update_head",{item:e})}equipFace(e){this.send("update_face",{item:e})}equipNeck(e){this.send("update_neck",{item:e})}equipBody(e){this.send("update_body",{item:e})}equipHand(e){this.send("update_hand",{item:e})}equipFeet(e){this.send("update_feet",{item:e})}equipFlag(e){this.send("update_flag",{item:e})}equipPhoto(e){this.send("update_photo",{item:e})}buddyRequest(e){this.send("buddy_request",{id:e})}buddyAccept(e){this.send("buddy_accept",{id:e})}removeBuddy(e){this.send("remove_buddy",{id:e})}addIgnore(e){this.send("add_ignore",{id:e})}removeIgnore(e){this.send("remove_ignore",{id:e})}getPlayer(e){this.send("get_player",{id:e})}getAllSlots(){this.send("get_all_slots",{})}getMascots(){this.send("get_mascots",{})}};var b="wss://play.cpjourney.net",f="skip",m=class extends c{id="CPJourney";async login(e){let s=this.createSocket("/world/login/");return await new Promise((t,o)=>{let a=setTimeout(()=>{s.disconnect(),o(new Error("Login timed out"))},1e4);s.on("connect",()=>{let i=e.secret??f,r="token"in e?{username:e.username,token:e.token,secret:i}:{username:e.username,password:e.password,secret:i};s.emit("message",{action:"login",args:r})}),s.on("message",i=>{if(i.action!=="login")return;clearTimeout(a),s.disconnect();let r=i.args;if(!r.success){o(new Error("Login failed"));return}let u=Object.entries(r.populations).map(([l,p])=>({name:l,population:p}));t({servers:u,key:r.key,username:r.username,moderator:r.moderator,buddyWorlds:r.buddyWorlds??[]})}),s.on("connect_error",i=>{clearTimeout(a),s.disconnect(),o(new Error(`Login connection failed: ${i.message}`))})})}async connect(e,s,n){let t=this.createSocket(`/world/${e.toLowerCase()}/`);return this.socket=t,await new Promise((o,a)=>{let i=!1;t.on("connect",()=>{t.emit("message",{action:"game_auth",args:{username:s.username,key:s.key,createToken:!1,joinInvis:!1,takeoverMascot:!1,token:""}})}),t.on("message",r=>{switch(r.action){case"wait_queue_update":{n?.onQueueUpdate?.(r.args);break}case"game_auth":{if(i)break;if(i=!0,!r.args.success){t.disconnect(),a(new Error("Game auth failed"));return}t.emit("message",{action:"join_server",args:{}}),o();break}}}),t.on("connect_error",r=>{t.disconnect(),a(new Error(`Game connection failed: ${r.message}`))})}),t}send(e,s){if(!this.socket)throw new Error("Not connected");this.socket.emit("message",{action:e,args:s})}disconnect(){this.socket?.disconnect(),this.socket=null}createSocket(e){return v(b,{path:e,parser:y,transports:["polling","websocket"],reconnection:!1})}};var k={CPJourney:m};function h(d){return new k[d]}function _(d){return typeof d=="object"&&d!==null&&"action"in d&&"args"in d}var g=class extends w{player=null;room=null;users=new Map;adapter;loginResult=null;log=null;constructor(e,s){super(),this.adapter=h(e),s?.debug&&(this.log=typeof s.debug=="function"?s.debug:console.log.bind(console))}async login(e){return this.log?.("[login] logging in as",e.username),this.loginResult=await this.adapter.login(e),this.log?.("[login] success \u2014",this.loginResult.servers.length,"servers"),this.loginResult.servers}async connect(e,s){if(!this.loginResult)throw new Error("Must call login() first");this.log?.("[connect] joining",e);let n={...s,onQueueUpdate:o=>{this.log?.("[queue]",`#${o.position}/${o.queueLength}`),this.emit("wait_queue_update",o),s?.onQueueUpdate?.(o)}},t=await this.adapter.connect(e,this.loginResult,n);await new Promise((o,a)=>{let i=setTimeout(()=>{a(new Error("Waiting for load_player timed out"))},1e4),r=!1,u=!1,l=()=>{r&&u&&(clearTimeout(i),o())};t.on("message",p=>{if(_(p))switch(this.handleMessage(p),p.action){case"load_player":r=!0,l();break;case"join_room":u=!0,l();break}}),t.on("disconnect",()=>{clearTimeout(i),(!r||!u)&&a(new Error("Disconnected before fully loaded")),this.emit("disconnect")})})}on(e,s){return super.on(e,s)}off(e,s){return super.off(e,s)}once(e,s){return super.once(e,s)}emit(e,...s){return super.emit(e,...s)}sendMessage(e){this.adapter.sendMessage(e)}sendEmote(e){this.adapter.sendEmote(e)}sendSafe(e){this.adapter.sendSafe(e)}walk(e,s){this.adapter.walk(e,s)}sendFrame(e,s){this.adapter.sendFrame(e,s)}snowball(e,s){this.adapter.snowball(e,s)}joinRoom(e,s,n){this.adapter.joinRoom(e,s,n)}addItem(e){this.adapter.addItem(e)}equipColor(e){this.adapter.equipColor(e)}equipHead(e){this.adapter.equipHead(e)}equipFace(e){this.adapter.equipFace(e)}equipNeck(e){this.adapter.equipNeck(e)}equipBody(e){this.adapter.equipBody(e)}equipHand(e){this.adapter.equipHand(e)}equipFeet(e){this.adapter.equipFeet(e)}equipFlag(e){this.adapter.equipFlag(e)}equipPhoto(e){this.adapter.equipPhoto(e)}buddyRequest(e){this.adapter.buddyRequest(e)}buddyAccept(e){this.adapter.buddyAccept(e)}removeBuddy(e){this.adapter.removeBuddy(e)}addIgnore(e){this.adapter.addIgnore(e)}removeIgnore(e){this.adapter.removeIgnore(e)}getPlayer(e){this.adapter.getPlayer(e)}getAllSlots(){this.adapter.getAllSlots()}getMascots(){this.adapter.getMascots()}sleep(e){return new Promise(s=>setTimeout(s,e))}disconnect(){this.log?.("[disconnect] closing connection"),this.adapter.disconnect(),this.player=null,this.room=null,this.users.clear()}handleMessage(e){let{action:s,args:n}=e;switch(s){case"load_player":{let t=n.user;this.player=t,this.log?.("[load_player]",t.username,`id=${t.id}`);break}case"join_room":{let t=n.room,o=n.users;this.room=t,this.users.clear();for(let a of o)this.users.set(a.id,a);this.log?.("[join_room]",`room=${t}`,`users=${o.length}`);break}case"add_player":{let t=n.user;this.users.set(t.id,t),this.log?.("[add_player]",t.username,`id=${t.id}`);break}case"remove_player":{let t=n.user;this.users.delete(t),this.log?.("[remove_player]",`id=${t}`);break}case"send_position":{let t=n.id,o=this.users.get(t);o&&(o.x=n.x,o.y=n.y);break}case"send_frame":{let t=n.id,o=this.users.get(t);o&&(o.frame=n.frame);break}case"update_player":{let t=n.id,o=n.slot,a=n.item,i=this.users.get(t);i&&o in i&&(i[o]=a);break}default:{this.log?.(`[${s}]`,JSON.stringify(n));break}}this.emit(s,n)}};export{c as BaseAdapter,g as Client};
|
|
3
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkC,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,WAAW,EAAuB,MAAM,4BAA4B,CAAA"}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/adapters/cpjourney-adapter.ts","../src/adapters/base-adapter.ts","../src/adapters/index.ts"],"sourcesContent":["import { EventEmitter } from \"node:events\"\nimport { createAdapter, type AdapterName } from \"./adapters/index.js\"\nimport type { BaseAdapter, ConnectOptions } from \"./adapters/base-adapter.js\"\nimport type { LoginOptions, LoginResult, QueueUpdate, ServerInfo, TokenLoginOptions } from \"./types/adapter-types.js\"\nimport type { ServerMessages } from \"./types/message-types.js\"\nimport type { PlayerData, RoomUser } from \"./types/player-types.js\"\n\ntype ServerMessageHandler<K extends keyof ServerMessages> = (args: ServerMessages[K]) => void\n\nexport type LogFn = (message: string, ...args: unknown[]) => void\n\nexport type ClientOptions = {\n debug?: boolean | LogFn\n}\n\ntype MessagePayload = {\n action: string\n args: Record<string, unknown>\n}\n\nfunction isMessagePayload(msg: unknown): msg is MessagePayload {\n return typeof msg === \"object\" && msg !== null && \"action\" in msg && \"args\" in msg\n}\n\nexport class Client extends EventEmitter {\n player: PlayerData | null = null\n room: number | null = null\n users: Map<number, RoomUser> = new Map()\n\n private adapter: BaseAdapter\n private loginResult: LoginResult | null = null\n private log: LogFn | null = null\n\n constructor(server: AdapterName, options?: ClientOptions) {\n super()\n this.adapter = createAdapter(server)\n\n if (options?.debug) {\n this.log = typeof options.debug === \"function\"\n ? options.debug\n : console.log.bind(console)\n }\n }\n\n async login(options: LoginOptions | TokenLoginOptions): Promise<ServerInfo[]> {\n this.log?.(\"[login] logging in as\", options.username)\n this.loginResult = await this.adapter.login(options)\n this.log?.(\"[login] success —\", this.loginResult.servers.length, \"servers\")\n return this.loginResult.servers\n }\n\n async connect(serverName: string, options?: ConnectOptions): Promise<void> {\n if (!this.loginResult) throw new Error(\"Must call login() first\")\n\n this.log?.(\"[connect] joining\", serverName)\n\n const connectOptions: ConnectOptions = {\n ...options,\n onQueueUpdate: (update: QueueUpdate) => {\n this.log?.(\"[queue]\", `#${update.position}/${update.queueLength}`)\n this.emit(\"wait_queue_update\", update)\n options?.onQueueUpdate?.(update)\n },\n }\n\n const socket = await this.adapter.connect(serverName, this.loginResult, connectOptions)\n\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(\"Waiting for load_player timed out\"))\n }, 10_000)\n\n let playerLoaded = false\n let roomJoined = false\n\n const checkReady = (): void => {\n if (playerLoaded && roomJoined) {\n clearTimeout(timeout)\n resolve()\n }\n }\n\n socket.on(\"message\", (msg: unknown) => {\n if (!isMessagePayload(msg)) return\n this.handleMessage(msg)\n\n switch (msg.action) {\n case \"load_player\":\n playerLoaded = true\n checkReady()\n break\n case \"join_room\":\n roomJoined = true\n checkReady()\n break\n }\n })\n\n socket.on(\"disconnect\", () => {\n clearTimeout(timeout)\n if (!playerLoaded || !roomJoined) {\n reject(new Error(\"Disconnected before fully loaded\"))\n }\n this.emit(\"disconnect\")\n })\n })\n }\n\n on<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this\n on(event: string, listener: (...args: unknown[]) => void): this\n on(event: string, listener: (...args: unknown[]) => void): this {\n return super.on(event, listener)\n }\n\n off<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this\n off(event: string, listener: (...args: unknown[]) => void): this\n off(event: string, listener: (...args: unknown[]) => void): this {\n return super.off(event, listener)\n }\n\n once<K extends keyof ServerMessages>(event: K, listener: ServerMessageHandler<K>): this\n once(event: string, listener: (...args: unknown[]) => void): this\n once(event: string, listener: (...args: unknown[]) => void): this {\n return super.once(event, listener)\n }\n\n emit<K extends keyof ServerMessages>(event: K, args: ServerMessages[K]): boolean\n emit(event: string, ...args: unknown[]): boolean\n emit(event: string, ...args: unknown[]): boolean {\n return super.emit(event, ...args)\n }\n\n sendMessage(message: string): void { this.adapter.sendMessage(message) }\n sendEmote(emote: number): void { this.adapter.sendEmote(emote) }\n sendSafe(safe: number): void { this.adapter.sendSafe(safe) }\n walk(x: number, y: number): void { this.adapter.walk(x, y) }\n sendFrame(frame: number, set?: boolean): void { this.adapter.sendFrame(frame, set) }\n snowball(x: number, y: number): void { this.adapter.snowball(x, y) }\n joinRoom(room: number, x?: number, y?: number): void { this.adapter.joinRoom(room, x, y) }\n addItem(item: number): void { this.adapter.addItem(item) }\n equipColor(item: number): void { this.adapter.equipColor(item) }\n equipHead(item: number): void { this.adapter.equipHead(item) }\n equipFace(item: number): void { this.adapter.equipFace(item) }\n equipNeck(item: number): void { this.adapter.equipNeck(item) }\n equipBody(item: number): void { this.adapter.equipBody(item) }\n equipHand(item: number): void { this.adapter.equipHand(item) }\n equipFeet(item: number): void { this.adapter.equipFeet(item) }\n equipFlag(item: number): void { this.adapter.equipFlag(item) }\n equipPhoto(item: number): void { this.adapter.equipPhoto(item) }\n buddyRequest(id: number): void { this.adapter.buddyRequest(id) }\n buddyAccept(id: number): void { this.adapter.buddyAccept(id) }\n removeBuddy(id: number): void { this.adapter.removeBuddy(id) }\n addIgnore(id: number): void { this.adapter.addIgnore(id) }\n removeIgnore(id: number): void { this.adapter.removeIgnore(id) }\n getPlayer(id: number): void { this.adapter.getPlayer(id) }\n getAllSlots(): void { this.adapter.getAllSlots() }\n getMascots(): void { this.adapter.getMascots() }\n\n sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n }\n\n disconnect(): void {\n this.log?.(\"[disconnect] closing connection\")\n this.adapter.disconnect()\n this.player = null\n this.room = null\n this.users.clear()\n }\n\n private handleMessage(msg: MessagePayload): void {\n const { action, args } = msg\n\n switch (action) {\n case \"load_player\": {\n const user = args.user as PlayerData\n this.player = user\n this.log?.(\"[load_player]\", user.username, `id=${user.id}`)\n break\n }\n case \"join_room\": {\n const room = args.room as number\n const users = args.users as RoomUser[]\n this.room = room\n this.users.clear()\n for (const user of users) {\n this.users.set(user.id, user)\n }\n this.log?.(\"[join_room]\", `room=${room}`, `users=${users.length}`)\n break\n }\n case \"add_player\": {\n const user = args.user as RoomUser\n this.users.set(user.id, user)\n this.log?.(\"[add_player]\", user.username, `id=${user.id}`)\n break\n }\n case \"remove_player\": {\n const id = args.user as number\n this.users.delete(id)\n this.log?.(\"[remove_player]\", `id=${id}`)\n break\n }\n case \"send_position\": {\n const id = args.id as number\n const user = this.users.get(id)\n if (user) {\n user.x = args.x as number\n user.y = args.y as number\n }\n break\n }\n case \"send_frame\": {\n const id = args.id as number\n const user = this.users.get(id)\n if (user) {\n user.frame = args.frame as number\n }\n break\n }\n case \"update_player\": {\n const id = args.id as number\n const slot = args.slot as string\n const item = args.item as number\n const user = this.users.get(id)\n if (user && slot in user) {\n (user as Record<string, unknown>)[slot] = item\n }\n break\n }\n default: {\n this.log?.(`[${action}]`, JSON.stringify(args))\n break\n }\n }\n\n this.emit(action, args)\n }\n}\n","import { io, type Socket } from \"socket.io-client\"\nimport msgpackParser from \"socket.io-msgpack-parser\"\nimport type { LoginOptions, LoginResult, QueueUpdate, ServerInfo, TokenLoginOptions } from \"../types/adapter-types.js\"\nimport { BaseAdapter, type ConnectOptions } from \"./base-adapter.js\"\n\nconst BASE_URL = \"wss://play.cpjourney.net\"\nconst DEFAULT_SECRET = \"skip\"\n\ntype LoginResponse = {\n success: boolean\n username: string\n key: string\n populations: Record<string, number>\n moderator: boolean\n buddyWorlds: string[]\n}\n\ntype GameAuthResponse = {\n success: boolean\n token?: string\n}\n\ntype ServerMessage = {\n action: string\n args: Record<string, unknown>\n}\n\nexport class CpjourneyAdapter extends BaseAdapter {\n readonly id = \"CPJourney\"\n\n async login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult> {\n const loginSocket = this.createSocket(\"/world/login/\")\n\n const result = await new Promise<LoginResult>((resolve, reject) => {\n const timeout = setTimeout(() => {\n loginSocket.disconnect()\n reject(new Error(\"Login timed out\"))\n }, 10_000)\n\n loginSocket.on(\"connect\", () => {\n const secret = options.secret ?? DEFAULT_SECRET\n const args = \"token\" in options\n ? { username: options.username, token: options.token, secret }\n : { username: options.username, password: options.password, secret }\n\n loginSocket.emit(\"message\", { action: \"login\", args })\n })\n\n loginSocket.on(\"message\", (msg: ServerMessage) => {\n if (msg.action !== \"login\") return\n\n clearTimeout(timeout)\n loginSocket.disconnect()\n\n const response = msg.args as LoginResponse\n\n if (!response.success) {\n reject(new Error(\"Login failed\"))\n return\n }\n\n const servers: ServerInfo[] = Object.entries(response.populations).map(\n ([name, population]) => ({ name, population })\n )\n\n resolve({\n servers,\n key: response.key,\n username: response.username,\n moderator: response.moderator,\n buddyWorlds: response.buddyWorlds ?? [],\n })\n })\n\n loginSocket.on(\"connect_error\", (err: Error) => {\n clearTimeout(timeout)\n loginSocket.disconnect()\n reject(new Error(`Login connection failed: ${err.message}`))\n })\n })\n\n return result\n }\n\n async connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket> {\n const gameSocket = this.createSocket(`/world/${serverName.toLowerCase()}/`)\n this.socket = gameSocket\n\n await new Promise<void>((resolve, reject) => {\n let authSent = false\n\n gameSocket.on(\"connect\", () => {\n gameSocket.emit(\"message\", {\n action: \"game_auth\",\n args: {\n username: loginResult.username,\n key: loginResult.key,\n createToken: false,\n joinInvis: false,\n takeoverMascot: false,\n token: \"\",\n },\n })\n })\n\n gameSocket.on(\"message\", (msg: ServerMessage) => {\n switch (msg.action) {\n case \"wait_queue_update\": {\n options?.onQueueUpdate?.(msg.args as QueueUpdate)\n break\n }\n case \"game_auth\": {\n if (authSent) break\n authSent = true\n\n const response = msg.args as GameAuthResponse\n if (!response.success) {\n gameSocket.disconnect()\n reject(new Error(\"Game auth failed\"))\n return\n }\n\n gameSocket.emit(\"message\", { action: \"join_server\", args: {} })\n resolve()\n break\n }\n }\n })\n\n gameSocket.on(\"connect_error\", (err: Error) => {\n gameSocket.disconnect()\n reject(new Error(`Game connection failed: ${err.message}`))\n })\n })\n\n return gameSocket\n }\n\n send(action: string, args: Record<string, unknown>): void {\n if (!this.socket) throw new Error(\"Not connected\")\n this.socket.emit(\"message\", { action, args })\n }\n\n disconnect(): void {\n this.socket?.disconnect()\n this.socket = null\n }\n\n private createSocket(path: string): Socket {\n return io(BASE_URL, {\n path,\n parser: msgpackParser,\n transports: [\"polling\", \"websocket\"],\n reconnection: false,\n })\n }\n}\n","import type { Socket } from \"socket.io-client\"\nimport type { LoginOptions, LoginResult, QueueUpdate, TokenLoginOptions } from \"../types/adapter-types.js\"\n\nexport type ConnectOptions = {\n onQueueUpdate?: (update: QueueUpdate) => void\n}\n\nexport abstract class BaseAdapter {\n abstract readonly id: string\n protected socket: Socket | null = null\n\n abstract login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult>\n abstract connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket>\n abstract disconnect(): void\n abstract send(action: string, args: Record<string, unknown>): void\n\n sendMessage(message: string): void {\n this.send(\"send_message\", { message })\n }\n\n sendEmote(emote: number): void {\n this.send(\"send_emote\", { emote })\n }\n\n sendSafe(safe: number): void {\n this.send(\"send_safe\", { safe })\n }\n\n walk(x: number, y: number): void {\n this.send(\"send_position\", { x, y })\n }\n\n sendFrame(frame: number, set?: boolean): void {\n this.send(\"send_frame\", { frame, set })\n }\n\n snowball(x: number, y: number): void {\n this.send(\"snowball\", { x, y })\n }\n\n joinRoom(room: number, x?: number, y?: number): void {\n this.send(\"join_room\", { room, x: x ?? 0, y: y ?? 0 })\n }\n\n addItem(item: number): void {\n this.send(\"add_item\", { item })\n }\n\n equipColor(item: number): void {\n this.send(\"update_color\", { item })\n }\n\n equipHead(item: number): void {\n this.send(\"update_head\", { item })\n }\n\n equipFace(item: number): void {\n this.send(\"update_face\", { item })\n }\n\n equipNeck(item: number): void {\n this.send(\"update_neck\", { item })\n }\n\n equipBody(item: number): void {\n this.send(\"update_body\", { item })\n }\n\n equipHand(item: number): void {\n this.send(\"update_hand\", { item })\n }\n\n equipFeet(item: number): void {\n this.send(\"update_feet\", { item })\n }\n\n equipFlag(item: number): void {\n this.send(\"update_flag\", { item })\n }\n\n equipPhoto(item: number): void {\n this.send(\"update_photo\", { item })\n }\n\n buddyRequest(id: number): void {\n this.send(\"buddy_request\", { id })\n }\n\n buddyAccept(id: number): void {\n this.send(\"buddy_accept\", { id })\n }\n\n removeBuddy(id: number): void {\n this.send(\"remove_buddy\", { id })\n }\n\n addIgnore(id: number): void {\n this.send(\"add_ignore\", { id })\n }\n\n removeIgnore(id: number): void {\n this.send(\"remove_ignore\", { id })\n }\n\n getPlayer(id: number): void {\n this.send(\"get_player\", { id })\n }\n\n getAllSlots(): void {\n this.send(\"get_all_slots\", {})\n }\n\n getMascots(): void {\n this.send(\"get_mascots\", {})\n }\n}\n","import type { BaseAdapter } from \"./base-adapter.js\"\nimport { CpjourneyAdapter } from \"./cpjourney-adapter.js\"\n\nconst ADAPTERS = {\n CPJourney: CpjourneyAdapter,\n} as const\n\nexport type AdapterName = keyof typeof ADAPTERS\n\nexport function createAdapter(name: AdapterName): BaseAdapter {\n return new ADAPTERS[name]()\n}\n"],"mappings":"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","names":["EventEmitter","io","msgpackParser","BaseAdapter","message","emote","safe","x","y","frame","set","room","item","id","BASE_URL","DEFAULT_SECRET","CpjourneyAdapter","BaseAdapter","options","loginSocket","resolve","reject","timeout","secret","args","msg","response","servers","name","population","err","serverName","loginResult","gameSocket","authSent","action","path","io","msgpackParser","ADAPTERS","CpjourneyAdapter","createAdapter","name","isMessagePayload","msg","Client","EventEmitter","server","options","createAdapter","serverName","connectOptions","update","socket","resolve","reject","timeout","playerLoaded","roomJoined","checkReady","event","listener","args","message","emote","safe","x","y","frame","set","room","item","id","ms","action","user","users","slot"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shaunlwm/pickle.ts",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Club Penguin Private Server client library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "
|
|
16
|
-
"dev": "
|
|
15
|
+
"build": "tsup",
|
|
16
|
+
"dev": "tsup --watch",
|
|
17
17
|
"typecheck": "tsc --noEmit",
|
|
18
18
|
"prepare": "npm run build",
|
|
19
19
|
"prepublishOnly": "npm run build"
|
|
@@ -24,10 +24,15 @@
|
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "^22.0.0",
|
|
27
|
+
"tsup": "^8.5.1",
|
|
27
28
|
"typescript": "^5.7.2"
|
|
28
29
|
},
|
|
29
30
|
"files": [
|
|
30
31
|
"dist"
|
|
31
32
|
],
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/ShaunLWM/pickle.ts"
|
|
36
|
+
},
|
|
32
37
|
"license": "MIT"
|
|
33
38
|
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Socket } from "socket.io-client";
|
|
2
|
-
import type { LoginOptions, LoginResult, QueueUpdate, TokenLoginOptions } from "../types/adapter-types.js";
|
|
3
|
-
export type ConnectOptions = {
|
|
4
|
-
onQueueUpdate?: (update: QueueUpdate) => void;
|
|
5
|
-
};
|
|
6
|
-
export declare abstract class BaseAdapter {
|
|
7
|
-
abstract readonly id: string;
|
|
8
|
-
protected socket: Socket | null;
|
|
9
|
-
abstract login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult>;
|
|
10
|
-
abstract connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket>;
|
|
11
|
-
abstract disconnect(): void;
|
|
12
|
-
abstract send(action: string, args: Record<string, unknown>): void;
|
|
13
|
-
sendMessage(message: string): void;
|
|
14
|
-
sendEmote(emote: number): void;
|
|
15
|
-
sendSafe(safe: number): void;
|
|
16
|
-
walk(x: number, y: number): void;
|
|
17
|
-
sendFrame(frame: number, set?: boolean): void;
|
|
18
|
-
snowball(x: number, y: number): void;
|
|
19
|
-
joinRoom(room: number, x?: number, y?: number): void;
|
|
20
|
-
addItem(item: number): void;
|
|
21
|
-
equipColor(item: number): void;
|
|
22
|
-
equipHead(item: number): void;
|
|
23
|
-
equipFace(item: number): void;
|
|
24
|
-
equipNeck(item: number): void;
|
|
25
|
-
equipBody(item: number): void;
|
|
26
|
-
equipHand(item: number): void;
|
|
27
|
-
equipFeet(item: number): void;
|
|
28
|
-
equipFlag(item: number): void;
|
|
29
|
-
equipPhoto(item: number): void;
|
|
30
|
-
buddyRequest(id: number): void;
|
|
31
|
-
buddyAccept(id: number): void;
|
|
32
|
-
removeBuddy(id: number): void;
|
|
33
|
-
addIgnore(id: number): void;
|
|
34
|
-
removeIgnore(id: number): void;
|
|
35
|
-
getPlayer(id: number): void;
|
|
36
|
-
getAllSlots(): void;
|
|
37
|
-
getMascots(): void;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE1G,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAEtC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAC/E,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IACzG,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAElE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;IAI7C,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI7B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI7B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI3B,WAAW,IAAI,IAAI;IAInB,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
export class BaseAdapter {
|
|
2
|
-
socket = null;
|
|
3
|
-
sendMessage(message) {
|
|
4
|
-
this.send("send_message", { message });
|
|
5
|
-
}
|
|
6
|
-
sendEmote(emote) {
|
|
7
|
-
this.send("send_emote", { emote });
|
|
8
|
-
}
|
|
9
|
-
sendSafe(safe) {
|
|
10
|
-
this.send("send_safe", { safe });
|
|
11
|
-
}
|
|
12
|
-
walk(x, y) {
|
|
13
|
-
this.send("send_position", { x, y });
|
|
14
|
-
}
|
|
15
|
-
sendFrame(frame, set) {
|
|
16
|
-
this.send("send_frame", { frame, set });
|
|
17
|
-
}
|
|
18
|
-
snowball(x, y) {
|
|
19
|
-
this.send("snowball", { x, y });
|
|
20
|
-
}
|
|
21
|
-
joinRoom(room, x, y) {
|
|
22
|
-
this.send("join_room", { room, x: x ?? 0, y: y ?? 0 });
|
|
23
|
-
}
|
|
24
|
-
addItem(item) {
|
|
25
|
-
this.send("add_item", { item });
|
|
26
|
-
}
|
|
27
|
-
equipColor(item) {
|
|
28
|
-
this.send("update_color", { item });
|
|
29
|
-
}
|
|
30
|
-
equipHead(item) {
|
|
31
|
-
this.send("update_head", { item });
|
|
32
|
-
}
|
|
33
|
-
equipFace(item) {
|
|
34
|
-
this.send("update_face", { item });
|
|
35
|
-
}
|
|
36
|
-
equipNeck(item) {
|
|
37
|
-
this.send("update_neck", { item });
|
|
38
|
-
}
|
|
39
|
-
equipBody(item) {
|
|
40
|
-
this.send("update_body", { item });
|
|
41
|
-
}
|
|
42
|
-
equipHand(item) {
|
|
43
|
-
this.send("update_hand", { item });
|
|
44
|
-
}
|
|
45
|
-
equipFeet(item) {
|
|
46
|
-
this.send("update_feet", { item });
|
|
47
|
-
}
|
|
48
|
-
equipFlag(item) {
|
|
49
|
-
this.send("update_flag", { item });
|
|
50
|
-
}
|
|
51
|
-
equipPhoto(item) {
|
|
52
|
-
this.send("update_photo", { item });
|
|
53
|
-
}
|
|
54
|
-
buddyRequest(id) {
|
|
55
|
-
this.send("buddy_request", { id });
|
|
56
|
-
}
|
|
57
|
-
buddyAccept(id) {
|
|
58
|
-
this.send("buddy_accept", { id });
|
|
59
|
-
}
|
|
60
|
-
removeBuddy(id) {
|
|
61
|
-
this.send("remove_buddy", { id });
|
|
62
|
-
}
|
|
63
|
-
addIgnore(id) {
|
|
64
|
-
this.send("add_ignore", { id });
|
|
65
|
-
}
|
|
66
|
-
removeIgnore(id) {
|
|
67
|
-
this.send("remove_ignore", { id });
|
|
68
|
-
}
|
|
69
|
-
getPlayer(id) {
|
|
70
|
-
this.send("get_player", { id });
|
|
71
|
-
}
|
|
72
|
-
getAllSlots() {
|
|
73
|
-
this.send("get_all_slots", {});
|
|
74
|
-
}
|
|
75
|
-
getMascots() {
|
|
76
|
-
this.send("get_mascots", {});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=base-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Socket } from "socket.io-client";
|
|
2
|
-
import type { LoginOptions, LoginResult, TokenLoginOptions } from "../types/adapter-types.js";
|
|
3
|
-
import { BaseAdapter, type ConnectOptions } from "./base-adapter.js";
|
|
4
|
-
export declare class CpjourneyAdapter extends BaseAdapter {
|
|
5
|
-
readonly id = "CPJourney";
|
|
6
|
-
login(options: LoginOptions | TokenLoginOptions): Promise<LoginResult>;
|
|
7
|
-
connect(serverName: string, loginResult: LoginResult, options?: ConnectOptions): Promise<Socket>;
|
|
8
|
-
send(action: string, args: Record<string, unknown>): void;
|
|
9
|
-
disconnect(): void;
|
|
10
|
-
private createSocket;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=cpjourney-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cpjourney-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/cpjourney-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA2B,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACtH,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAwBpE,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,CAAC,EAAE,eAAc;IAEnB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsDtE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDtG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKzD,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,YAAY;CAQrB"}
|