@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 CHANGED
@@ -7,7 +7,7 @@ Built with TypeScript, Socket.IO, and msgpack. Supports multiple CPPS backends t
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install pickle.ts
10
+ npm install @shaunlwm/pickle.ts
11
11
  ```
12
12
 
13
13
  ## Quick Start
package/dist/index.d.ts CHANGED
@@ -1,7 +1,377 @@
1
- export { Client, type ClientOptions, type LogFn } from "./client.js";
2
- export { BaseAdapter, type ConnectOptions } from "./adapters/base-adapter.js";
3
- export type { AdapterName } from "./adapters/index.js";
4
- export type { PlayerData, RoomUser, Buddy, PlayerAppearance, PlayerSettings, Mascot } from "./types/player-types.js";
5
- export type { ClientMessages, ServerMessages } from "./types/message-types.js";
6
- export type { LoginOptions, TokenLoginOptions, ServerInfo, LoginResult, QueueUpdate } from "./types/adapter-types.js";
7
- //# sourceMappingURL=index.d.ts.map
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
- export { Client } from "./client.js";
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.1",
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": "tsc",
16
- "dev": "tsc --watch",
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"}