pw-js-api 0.1.2-dev.e6a840d → 0.1.2-dev.eaf846c

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.
@@ -11,6 +11,10 @@ export default class PWGameClient {
11
11
  private prevWorldId?;
12
12
  protected totalBucket: Bucket;
13
13
  protected chatBucket: Bucket;
14
+ protected connectAttempts: {
15
+ time: number;
16
+ count: number;
17
+ };
14
18
  /**
15
19
  * NOTE: After constructing, you must then run .init() to connect the API IF you're using email/password.
16
20
  */
@@ -35,9 +39,7 @@ export default class PWGameClient {
35
39
  static joinWorld(joinKey: string, obj?: {
36
40
  joinData?: WorldJoinData;
37
41
  gameSettings?: Partial<GameClientSettings>;
38
- }): Promise<unknown>;
39
- protected onSocketClose(evt: CloseEvent): Promise<number> | Promise<PWGameClient> | undefined;
40
- protected onSocketMessage(evt: MessageEvent): Promise<number> | undefined;
42
+ }): Promise<PWGameClient>;
41
43
  /**
42
44
  * For faster performance (even if it seems insignificant),
43
45
  * direct functions are used instead of events which are also inconsistent with browsers/nodejs etc.
@@ -3,14 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const world_pb_js_1 = require("../gen/world_pb.js");
5
5
  const Constants_js_1 = require("../util/Constants.js");
6
+ const Errors_js_1 = require("../util/Errors.js");
6
7
  const isows_1 = require("isows");
7
8
  const protobuf_1 = require("@bufbuild/protobuf");
8
9
  const Bucket_js_1 = tslib_1.__importDefault(require("../util/Bucket.js"));
9
10
  class PWGameClient {
10
11
  constructor(api, settings) {
11
- var _a, _b, _c, _d;
12
+ var _a, _b, _c, _d, _e;
12
13
  this.totalBucket = new Bucket_js_1.default(100, 1000);
13
14
  this.chatBucket = new Bucket_js_1.default(10, 1000);
15
+ this.connectAttempts = {
16
+ time: -1,
17
+ count: 0,
18
+ };
14
19
  // listen<Event extends keyof WorldEvents>(type: Event) {
15
20
  // type === ""
16
21
  // }
@@ -30,9 +35,10 @@ class PWGameClient {
30
35
  }
31
36
  this.settings = {
32
37
  reconnectable: (_a = settings === null || settings === void 0 ? void 0 : settings.reconnectable) !== null && _a !== void 0 ? _a : true,
33
- reconnectCount: (_b = settings === null || settings === void 0 ? void 0 : settings.reconnectCount) !== null && _b !== void 0 ? _b : 3,
34
- reconnectInterval: (_c = settings === null || settings === void 0 ? void 0 : settings.reconnectInterval) !== null && _c !== void 0 ? _c : 5500,
35
- handlePackets: (_d = settings === null || settings === void 0 ? void 0 : settings.handlePackets) !== null && _d !== void 0 ? _d : ["PING"]
38
+ reconnectCount: (_b = settings === null || settings === void 0 ? void 0 : settings.reconnectCount) !== null && _b !== void 0 ? _b : 5,
39
+ reconnectInterval: (_c = settings === null || settings === void 0 ? void 0 : settings.reconnectInterval) !== null && _c !== void 0 ? _c : 4000,
40
+ reconnectTimeGap: (_d = settings === null || settings === void 0 ? void 0 : settings.reconnectTimeGap) !== null && _d !== void 0 ? _d : 10000,
41
+ handlePackets: (_e = settings === null || settings === void 0 ? void 0 : settings.handlePackets) !== null && _e !== void 0 ? _e : ["PING"],
36
42
  };
37
43
  }
38
44
  get connected() {
@@ -46,7 +52,7 @@ class PWGameClient {
46
52
  */
47
53
  joinWorld(roomId, joinData) {
48
54
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
49
- var _a, _b, _c, _d;
55
+ var _a, _b, _c;
50
56
  if (!this.api)
51
57
  throw Error("This can only work if you've used APIClient to join the world in the first place.");
52
58
  if (((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === isows_1.WebSocket.CONNECTING)
@@ -59,34 +65,91 @@ class PWGameClient {
59
65
  const connectUrl = `${Constants_js_1.Endpoint.GameWS}/room/${joinReq.token}`
60
66
  + (joinData === undefined ? "" : "?joinData=" + btoa(JSON.stringify(joinData)));
61
67
  this.prevWorldId = roomId;
62
- let count = (_d = this.settings.reconnectCount) !== null && _d !== void 0 ? _d : 3;
68
+ if ((this.connectAttempts.time + this.settings.reconnectTimeGap) < Date.now()) {
69
+ this.connectAttempts = {
70
+ time: Date.now(), count: 0
71
+ };
72
+ }
63
73
  return new Promise((res, rej) => {
64
74
  var _a;
65
- const timer = setTimeout(() => {
66
- if (count-- < 0)
67
- rej(new Error("Unable to (re)connect."));
75
+ if (this.connectAttempts.count++ > this.settings.reconnectCount)
76
+ return rej(new Error("Unable to connect due to many attempts."));
77
+ const timer = setInterval(() => {
78
+ if (this.connectAttempts.count++ > this.settings.reconnectCount)
79
+ return rej(new Error("Unable to (re)connect."));
68
80
  this.invoke("debug", "Failed to reconnect, retrying.");
69
- this.socket = this.createSocket(connectUrl, timer, res);
70
- timer.refresh();
71
- }, (_a = this.settings.reconnectInterval) !== null && _a !== void 0 ? _a : 5500);
72
- this.socket = this.createSocket(connectUrl, timer, res);
81
+ this.socket = this.createSocket(connectUrl, timer, res, rej);
82
+ }, (_a = this.settings.reconnectInterval) !== null && _a !== void 0 ? _a : 4000);
83
+ this.socket = this.createSocket(connectUrl, timer, res, rej);
73
84
  });
74
85
  });
75
86
  }
76
87
  /**
77
88
  * INTERNAL
78
89
  */
79
- createSocket(url, timer, res) {
90
+ createSocket(url, timer, res, rej) {
80
91
  const socket = new isows_1.WebSocket(url);
81
92
  socket.binaryType = "arraybuffer";
82
- socket.onclose = this.onSocketClose.bind(this);
83
- socket.onmessage = this.onSocketMessage.bind(this);
93
+ // For res/rej.
94
+ let init = false;
95
+ socket.onmessage = (evt) => {
96
+ var _a;
97
+ const { packet } = (0, protobuf_1.fromBinary)(world_pb_js_1.WorldPacketSchema, evt.data instanceof ArrayBuffer ? new Uint8Array(evt.data) : evt.data);
98
+ this.invoke("debug", "Received " + packet.case);
99
+ if (packet.case === undefined) {
100
+ return this.invoke("unknown", packet.value);
101
+ }
102
+ else
103
+ this.invoke("raw", packet); //this.callbacks.raw?.(packet);;
104
+ switch (packet.case) {
105
+ case "playerInitPacket":
106
+ if (this.settings.handlePackets.findIndex(v => v === "INIT") !== -1)
107
+ this.send("playerInitReceived");
108
+ if ((_a = packet.value.playerProperties) === null || _a === void 0 ? void 0 : _a.isWorldOwner)
109
+ this.totalBucket.interval = 250;
110
+ else
111
+ this.totalBucket.interval = 100;
112
+ if (!init) {
113
+ clearInterval(timer);
114
+ init = true;
115
+ res(this);
116
+ // Give the client the init again as they might could have missed it even by a few milliseconds.
117
+ return setTimeout(() => {
118
+ this.invoke(packet.case, packet.value);
119
+ }, 1500);
120
+ }
121
+ break;
122
+ case "ping":
123
+ if (this.settings.handlePackets.findIndex(v => v === "PING") !== -1)
124
+ this.send("ping", undefined, true);
125
+ break;
126
+ }
127
+ this.invoke(packet.case, packet.value);
128
+ };
84
129
  socket.onopen = (evt) => {
85
- clearTimeout(timer);
86
- this.invoke("debug", "Connected successfully.");
87
- // console.log("Connected.");
88
- // console.log("Connected: " + new Date(ev.timeStamp));
89
- res(this);
130
+ this.invoke("debug", "Connected successfully, waiting for init packet.");
131
+ };
132
+ socket.onclose = (evt) => {
133
+ this.invoke("debug", `Server closed connection due to code ${evt.code}, reason: "${evt.reason}".`);
134
+ if (!init) {
135
+ clearInterval(timer);
136
+ rej(new Errors_js_1.AuthError(evt.reason, (evt.code)));
137
+ }
138
+ if (this.settings.reconnectable) {
139
+ if (this.api === undefined)
140
+ return this.invoke("debug", "Not attempting to reconnect as this game client was created with a join token.");
141
+ // if (evt.reason === "Failed to preload the world.") {
142
+ // return this.invoke("debug", "Not attempting to reconnect as the world don't exist.");
143
+ // }
144
+ if (this.prevWorldId) {
145
+ this.invoke("debug", "Attempting to reconnect.");
146
+ return this.joinWorld(this.prevWorldId).catch(err => {
147
+ this.invoke("debug", err);
148
+ });
149
+ }
150
+ else
151
+ this.invoke("debug", "Warning: Socket closed, attempt to reconnect was made but no previous world id was kept.");
152
+ }
90
153
  };
91
154
  return socket;
92
155
  }
@@ -96,60 +159,29 @@ class PWGameClient {
96
159
  * Useful for those wary of security.
97
160
  */
98
161
  static joinWorld(joinKey, obj) {
99
- var _a;
100
162
  const connectUrl = `${Constants_js_1.Endpoint.GameWS}/room/${joinKey}`
101
163
  + ((obj === null || obj === void 0 ? void 0 : obj.joinData) === undefined ? "" : "?joinData=" + btoa(JSON.stringify(obj.joinData)));
102
164
  const cli = new PWGameClient(obj === null || obj === void 0 ? void 0 : obj.gameSettings);
103
- let count = (_a = cli.settings.reconnectCount) !== null && _a !== void 0 ? _a : 3;
165
+ if ((cli.connectAttempts.time + cli.settings.reconnectTimeGap) < Date.now()) {
166
+ cli.connectAttempts = {
167
+ time: Date.now(), count: 0
168
+ };
169
+ }
104
170
  return new Promise((res, rej) => {
105
171
  var _a;
106
- const timer = setTimeout(() => {
107
- if (count-- < 0)
108
- rej(new Error("Unable to (re)connect."));
172
+ if (cli.connectAttempts.count++ > cli.settings.reconnectCount)
173
+ return rej(new Error("Unable to connect due to many attempts."));
174
+ const timer = setInterval(() => {
175
+ var _a;
176
+ (_a = cli.socket) === null || _a === void 0 ? void 0 : _a.close();
177
+ if (cli.connectAttempts.count++ > cli.settings.reconnectCount)
178
+ return rej(new Error("Unable to (re)connect."));
109
179
  cli.invoke("debug", "Failed to reconnect, retrying.");
110
- // I know this is impossible but anyway
111
- cli.socket = cli.createSocket(connectUrl, timer, res);
112
- timer.refresh();
113
- }, (_a = cli.settings.reconnectInterval) !== null && _a !== void 0 ? _a : 5500);
114
- cli.socket = cli.createSocket(connectUrl, timer, res);
180
+ cli.socket = cli.createSocket(connectUrl, timer, res, rej);
181
+ }, (_a = cli.settings.reconnectInterval) !== null && _a !== void 0 ? _a : 4000);
182
+ cli.socket = cli.createSocket(connectUrl, timer, res, rej);
115
183
  });
116
184
  }
117
- onSocketClose(evt) {
118
- this.invoke("debug", `Server closed connection due to code: ${evt.code}, reason: ${evt.reason}.`);
119
- if (this.settings.reconnectable) {
120
- if (this.api === undefined)
121
- return this.invoke("debug", "Not attempting to reconnect as this game client was created with a join token.");
122
- if (this.prevWorldId)
123
- return this.joinWorld(this.prevWorldId);
124
- else
125
- this.invoke("debug", "Warning: Socket closed, attempt to reconnect was made but no previous world id was kept.");
126
- }
127
- }
128
- onSocketMessage(evt) {
129
- var _a;
130
- const { packet } = (0, protobuf_1.fromBinary)(world_pb_js_1.WorldPacketSchema, evt.data instanceof ArrayBuffer ? new Uint8Array(evt.data) : evt.data);
131
- this.invoke("debug", "Received " + packet.case);
132
- if (packet.case === undefined) {
133
- return this.invoke("unknown", packet.value);
134
- }
135
- else
136
- this.invoke("raw", packet); //this.callbacks.raw?.(packet);;
137
- switch (packet.case) {
138
- case "playerInitPacket":
139
- if (this.settings.handlePackets.findIndex(v => v === "INIT") !== -1)
140
- this.send("playerInitReceived");
141
- if ((_a = packet.value.playerProperties) === null || _a === void 0 ? void 0 : _a.isWorldOwner)
142
- this.totalBucket.interval = 250;
143
- else
144
- this.totalBucket.interval = 100;
145
- break;
146
- case "ping":
147
- if (this.settings.handlePackets.findIndex(v => v === "PING") !== -1)
148
- this.send("ping", undefined, true);
149
- break;
150
- }
151
- this.invoke(packet.case, packet.value);
152
- }
153
185
  /**
154
186
  * Adds a listener for the event type, it can even be a promise too.
155
187
  *
@@ -240,4 +272,4 @@ class PWGameClient {
240
272
  }
241
273
  }
242
274
  exports.default = PWGameClient;
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFdHYW1lQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2dhbWUvUFdHYW1lQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9EQUFtSjtBQUVuSix1REFBZ0Q7QUFFaEQsaUNBQWtDO0FBQ2xDLGlEQUFrRTtBQUVsRSwwRUFBdUM7QUFHdkMsTUFBcUIsWUFBWTtJQWdCN0IsWUFBWSxHQUErQyxFQUFFLFFBQXNDOztRQVJ6RixnQkFBVyxHQUFHLElBQUksbUJBQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLElBQUksbUJBQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUF5SjVDLHlEQUF5RDtRQUN6RCxrQkFBa0I7UUFDbEIsSUFBSTtRQUVKOzs7OztXQUtHO1FBQ08sY0FBUyxHQUFHLEVBRWtGLENBQUM7UUE3SnJHLHdEQUF3RDtRQUN4RCxJQUFJLEdBQUcsSUFBSSxZQUFZLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQzFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDWCxRQUFRLEdBQUcsR0FBRyxDQUFDO1lBQ2YsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNaLGFBQWEsRUFBRSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxhQUFhLG1DQUFJLElBQUk7WUFDOUMsY0FBYyxFQUFFLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsbUNBQUksQ0FBQztZQUM3QyxpQkFBaUIsRUFBRSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxpQkFBaUIsbUNBQUksSUFBSTtZQUN0RCxhQUFhLEVBQUUsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsYUFBYSxtQ0FBSSxDQUFD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
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUFdHYW1lQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2dhbWUvUFdHYW1lQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9EQUFtSjtBQUVuSix1REFBZ0Q7QUFDaEQsaURBQThDO0FBRTlDLGlDQUFrQztBQUNsQyxpREFBa0U7QUFFbEUsMEVBQXVDO0FBR3ZDLE1BQXFCLFlBQVk7SUFxQjdCLFlBQVksR0FBK0MsRUFBRSxRQUFzQzs7UUFiekYsZ0JBQVcsR0FBRyxJQUFJLG1CQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxJQUFJLG1CQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxDLG9CQUFlLEdBQUc7WUFDeEIsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNSLEtBQUssRUFBRSxDQUFDO1NBQ1gsQ0FBQTtRQW9MRCx5REFBeUQ7UUFDekQsa0JBQWtCO1FBQ2xCLElBQUk7UUFFSjs7Ozs7V0FLRztRQUNPLGNBQVMsR0FBRyxFQUVrRixDQUFDO1FBeExyRyx3REFBd0Q7UUFDeEQsSUFBSSxHQUFHLElBQUksWUFBWSxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUMxQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1gsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLEdBQUcsR0FBRyxTQUFTLENBQUM7UUFDcEIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixhQUFhLEVBQUUsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsYUFBYSxtQ0FBSSxJQUFJO1lBQzlDLGNBQWMsRUFBRSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxjQUFjLG1DQUFJLENBQUM7WUFDN0MsaUJBQWlCLEVBQUUsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsaUJBQWlCLG1DQUFJLElBQUk7WUFDdEQsZ0JBQWdCLEVBQUUsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsZ0JBQWdCLG1DQUFJLEtBQUs7WUFDckQsYUFBYSxFQUFFLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGFBQWEsbUNBQUksQ0FBQyxNQUFNLENBQUM7U0FDckQsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLFNBQVM7O1FBQ1QsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsVUFBVSxNQUFLLGlCQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0csU0FBUyxDQUFDLE1BQWMsRUFBRSxRQUF3Qjs7O1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFBRSxNQUFNLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFDO1lBRWhILElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLFVBQVUsTUFBSyxpQkFBUyxDQUFDLFVBQVU7Z0JBQUUsTUFBTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNoRyxnR0FBZ0c7WUFFaEcsTUFBTSxRQUFRLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUywwQ0FBRyxDQUFDLENBQUMsbUNBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBHLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE1BQU0sS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFFaEksTUFBTSxVQUFVLEdBQUcsR0FBRyx1QkFBUSxDQUFDLE1BQU0sU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO2tCQUN2RCxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwRixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztZQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUM1RSxJQUFJLENBQUMsZUFBZSxHQUFHO29CQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUM3QixDQUFDO1lBQ04sQ0FBQztZQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7O2dCQUM1QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjO29CQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQztnQkFFbEksTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYzt3QkFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7b0JBQ2pILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7b0JBRXZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsS0FBMEIsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RGLENBQUMsRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLG1DQUFJLElBQUksQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQTBCLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxHQUFrQyxFQUFFLEdBQTBCO1FBQzNHLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUVsQyxlQUFlO1FBQ2YsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWpCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTs7WUFDdkIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUEscUJBQVUsRUFBQywrQkFBaUIsRUFBRSxHQUFHLENBQUMsSUFBSSxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFaEQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMvQyxDQUFDOztnQkFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBLGdDQUFnQztZQUVsRSxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxrQkFBa0I7b0JBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUVwQyxJQUFJLE1BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsMENBQUUsWUFBWTt3QkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7O3dCQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7b0JBRXJDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDUixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3JCLElBQUksR0FBRyxJQUFJLENBQUM7d0JBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV2QixnR0FBZ0c7d0JBQ2hHLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDM0MsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNiLENBQUM7b0JBQ0QsTUFBTTtnQkFDVixLQUFLLE1BQU07b0JBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3ZDLE1BQU07WUFDZCxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUE7UUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsa0RBQWtELENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsd0NBQXdDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFFbkcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNSLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsR0FBRyxDQUFDLElBQUkscUJBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUztvQkFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGdGQUFnRixDQUFDLENBQUM7Z0JBQzFJLHVEQUF1RDtnQkFDdkQsNEZBQTRGO2dCQUM1RixJQUFJO2dCQUVKLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO29CQUVqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7O29CQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLDBGQUEwRixDQUFDLENBQUM7WUFDNUgsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFlLEVBQUUsR0FBOEU7UUFDNUcsTUFBTSxVQUFVLEdBQUcsR0FBRyx1QkFBUSxDQUFDLE1BQU0sU0FBUyxPQUFPLEVBQUU7Y0FDakQsQ0FBQyxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxRQUFRLE1BQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdGLE1BQU0sR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxZQUFZLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzFFLEdBQUcsQ0FBQyxlQUFlLEdBQUc7Z0JBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDN0IsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFOztZQUM1QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjO2dCQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQztZQUVoSSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFOztnQkFDM0IsTUFBQSxHQUFHLENBQUMsTUFBTSwwQ0FBRSxLQUFLLEVBQUUsQ0FBQztnQkFFcEIsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYztvQkFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7Z0JBRXRELEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsS0FBMEIsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEYsQ0FBQyxFQUFFLE1BQUEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsbUNBQUksSUFBSSxDQUFDLENBQUM7WUFFM0MsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxLQUEwQixFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFnQkQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBbUMsSUFBVyxFQUFFLEdBQUcsR0FBb0U7UUFDOUgsNkJBQTZCO1FBRTdCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFbEUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQW1DLElBQVcsRUFBRSxFQUE2RDtRQUN2SCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksU0FBUyxLQUFLLFNBQVMsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFBQyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7YUFDN0UsQ0FBQztZQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU87SUFDWCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxNQUFNLENBQW1DLElBQVcsRUFBRSxJQUF5Qjs7WUFDM0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFZCxJQUFJLEdBQUcsS0FBSyxTQUFTO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRXBDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRS9CLEtBQUssRUFBRSxDQUFDO2dCQUVSLElBQUksR0FBRyxLQUFLLE1BQU07b0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDckMsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7S0FBQTtJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBa0MsSUFBVyxFQUFFLEtBQTZFLEVBQUUsTUFBTSxHQUFHLEtBQUs7UUFDNUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7UUFFM0gsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFOztZQUFDLE9BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLENBQ2hDLElBQUEsbUJBQVEsRUFBQywrQkFBaUIsRUFBRSxJQUFBLGlCQUFNLEVBQUMsK0JBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBOEMsRUFBRSxDQUFDLENBQUMsQ0FDeEksQ0FBQTtTQUFBLENBQUM7UUFFRixJQUFJLE1BQU07WUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLElBQUksS0FBSyxrQkFBa0I7Z0JBQUUsSUFBSSxFQUFFLENBQUE7O2dCQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsRUFBRSxJQUFJLEtBQUssa0JBQWtCLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxZQUE2QixLQUFLOztRQUN6QyxpREFBaUQ7UUFDakQsSUFBSSxTQUFTLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzs7WUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXpDLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsS0FBSyxFQUFFLENBQUM7UUFFckIsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsVUFBVSxNQUFLLGlCQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3hELENBQUM7Q0FDSjtBQTdTRCwrQkE2U0MifQ==
package/dist/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export type * from "./types/index.d.ts";
2
2
  export { default as PWApiClient } from "./api/PWApiClient.js";
3
3
  export { default as PWGameClient } from "./game/PWGameClient.js";
4
4
  export * as Constants from "./util/Constants.js";
5
+ export * as Errors from "./util/Errors.js";
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Constants = exports.PWGameClient = exports.PWApiClient = void 0;
3
+ exports.Errors = exports.Constants = exports.PWGameClient = exports.PWApiClient = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var PWApiClient_js_1 = require("./api/PWApiClient.js");
6
6
  Object.defineProperty(exports, "PWApiClient", { enumerable: true, get: function () { return tslib_1.__importDefault(PWApiClient_js_1).default; } });
7
7
  var PWGameClient_js_1 = require("./game/PWGameClient.js");
8
8
  Object.defineProperty(exports, "PWGameClient", { enumerable: true, get: function () { return tslib_1.__importDefault(PWGameClient_js_1).default; } });
9
9
  exports.Constants = tslib_1.__importStar(require("./util/Constants.js"));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHVEQUE4RDtBQUFyRCxzSUFBQSxPQUFPLE9BQWU7QUFDL0IsMERBQWlFO0FBQXhELHdJQUFBLE9BQU8sT0FBZ0I7QUFDaEMseUVBQWlEIn0=
10
+ exports.Errors = tslib_1.__importStar(require("./util/Errors.js"));
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHVEQUE4RDtBQUFyRCxzSUFBQSxPQUFPLE9BQWU7QUFDL0IsMERBQWlFO0FBQXhELHdJQUFBLE9BQU8sT0FBZ0I7QUFDaEMseUVBQWlEO0FBQ2pELG1FQUEyQyJ9
@@ -12,15 +12,25 @@ export interface GameClientSettings {
12
12
  *
13
13
  * The amount of times the client should try to reconnect before it gives up.
14
14
  *
15
- * Default: 3.
15
+ * Default: 5.
16
16
  */
17
17
  reconnectCount: number;
18
18
  /**
19
19
  * The interval (in milliseconds) it has to wait each time it's connecting before giving up and trying another one.
20
20
  *
21
- * Default: 5500.
21
+ * NOTE: 4000 is the maximum amount of time before the connection automatically closes if the server doesn't receive init recv back
22
+ *
23
+ * Default: 4000.
22
24
  */
23
25
  reconnectInterval: number;
26
+ /**
27
+ * How long (in milliseconds) before the counter for reconnect should reset.
28
+ *
29
+ * NOTE: The counter will carry over even if the bot has successfully joined a world, so if it joins and leaves the world a lot then it may stop reconnecting.
30
+ *
31
+ * Default: 10000.
32
+ */
33
+ reconnectTimeGap: number;
24
34
  /**
25
35
  * There are only 2 values in this list, they will determine whether if the client should handle them automatically or not.
26
36
  *
@@ -0,0 +1,4 @@
1
+ export declare class AuthError extends Error {
2
+ code: number;
3
+ constructor(message: string, code: number);
4
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthError = void 0;
4
+ class AuthError extends Error {
5
+ constructor(message, code) {
6
+ super(message);
7
+ this.code = code;
8
+ }
9
+ }
10
+ exports.AuthError = AuthError;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWwvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsU0FBVSxTQUFRLEtBQUs7SUFDaEMsWUFBWSxPQUFlLEVBQVMsSUFBWTtRQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEaUIsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUVoRCxDQUFDO0NBQ0o7QUFKRCw4QkFJQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pw-js-api",
3
- "version": "0.1.2-dev.e6a840d",
3
+ "version": "0.1.2-dev.eaf846c",
4
4
  "description": "A PixelWalker Library, aims to be minimal with support for browsers.",
5
5
  "exports": {
6
6
  "bun": "./dist/index.js",