@omujs/omu 0.7.14 → 0.7.15
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/CHANGELOG.md +11 -0
- package/dist/dts/network/network.d.ts +10 -9
- package/dist/dts/network/network.d.ts.map +1 -1
- package/dist/dts/network/packet/packet-types.d.ts +1 -0
- package/dist/dts/network/packet/packet-types.d.ts.map +1 -1
- package/dist/dts/network/websocket-connection.d.ts.map +1 -1
- package/dist/dts/version.d.ts +1 -1
- package/dist/esm/network/index.js +1 -1
- package/dist/esm/network/index.js.map +1 -1
- package/dist/esm/network/network.js +49 -60
- package/dist/esm/network/network.js.map +1 -1
- package/dist/esm/network/packet/packet-types.js +1 -0
- package/dist/esm/network/packet/packet-types.js.map +1 -1
- package/dist/esm/network/websocket-connection.js +8 -1
- package/dist/esm/network/websocket-connection.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/network/network.ts +64 -59
- package/src/network/packet/packet-types.ts +1 -0
- package/src/network/websocket-connection.ts +8 -1
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 0.7.15 (2024-12-23)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **omu, dash:** 接続に正常に失敗しても再接続しないように ([a7b294c](https://github.com/OMUAPPS/omuapps/commit/a7b294c07cdcd97892a013d8ca4ab85ef219b627))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## 0.7.14 (2024-10-27)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { Address } from '../address.js';
|
|
2
2
|
import type { Client } from '../client.js';
|
|
3
|
+
import type { OmuError } from '../errors.js';
|
|
3
4
|
import { EventEmitter } from '../event-emitter.js';
|
|
4
5
|
import type { TokenProvider } from '../token.js';
|
|
5
6
|
import type { Connection } from './connection.js';
|
|
6
7
|
import type { DisconnectPacket } from './packet/packet-types.js';
|
|
7
8
|
import type { Packet, PacketType } from './packet/packet.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
9
|
+
type StatusType<T> = {
|
|
10
|
+
type: T;
|
|
11
|
+
};
|
|
12
|
+
export type NetworkStatus = StatusType<'disconnected'> | StatusType<'connecting'> | StatusType<'connected'> | StatusType<'ready'> | {
|
|
13
|
+
type: 'error';
|
|
14
|
+
error: OmuError;
|
|
15
|
+
} | StatusType<'closed'>;
|
|
16
16
|
export declare class Network {
|
|
17
17
|
private readonly client;
|
|
18
18
|
readonly address: Address;
|
|
@@ -33,7 +33,7 @@ export declare class Network {
|
|
|
33
33
|
registerPacket(...packetTypes: PacketType<unknown>[]): void;
|
|
34
34
|
addPacketHandler<T>(type: PacketType<T>, handler: (packet: T) => void): void;
|
|
35
35
|
connect(recconect?: boolean): Promise<void>;
|
|
36
|
-
private
|
|
36
|
+
private isState;
|
|
37
37
|
disconnect(): void;
|
|
38
38
|
send(packet: Packet): void;
|
|
39
39
|
private listen;
|
|
@@ -43,4 +43,5 @@ export declare class Network {
|
|
|
43
43
|
private dispatchTasks;
|
|
44
44
|
private setStatus;
|
|
45
45
|
}
|
|
46
|
+
export {};
|
|
46
47
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/network/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/network/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAS7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAe7D,KAAK,UAAU,CAAC,CAAC,IAAI;IACjB,IAAI,EAAE,CAAC,CAAC;CACX,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG;IAChI,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;CACnB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEzB,qBAAa,OAAO;IAaZ,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,OAAO,EAAE,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,UAAU;IAff,MAAM,EAAE,aAAa,CAA0B;IACtD,SAAgB,KAAK;;;;;MAKnB;IACF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;gBAGzD,MAAM,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EACf,aAAa,EAAE,aAAa,EACrC,UAAU,EAAE,UAAU;IA8C3B,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAO3C,cAAc,CAAC,GAAG,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAU3D,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAQtE,OAAO,CAAC,SAAS,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCrD,OAAO,CAAC,OAAO;IAIR,UAAU,IAAI,IAAI;IASlB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAOnB,MAAM;YAUN,cAAc;IASrB,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAO/C,UAAU,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;YAI3C,aAAa;YAMb,SAAS;CAO1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-types.d.ts","sourceRoot":"","sources":["../../../../src/network/packet/packet-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,KAAK,YAAY,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,qBAAa,aAAc,YAAW,KAAK,CAAC,iBAAiB,CAAC;IAC1D,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,WAAW,CAAC,EAAE,OAAO,CAAC;gBAE1B,OAAO,EAAE;QACjB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EAAE,YAAY,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KAC1B;WAOa,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa;IASvD,MAAM,IAAI,iBAAiB;CAQrC;AAED,oBAAY,cAAc;IACtB,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,QAAQ,aAAa;IACrB,KAAK,UAAU;CAClB;AAED,KAAK,oBAAoB,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,qBAAa,gBAAiB,YAAW,KAAK,CAAC,oBAAoB,CAAC;IAChE,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;gBAE3B,OAAO,EAAE;QACjB,IAAI,EAAE,cAAc,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;IAKD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB;IAO7D,MAAM,IAAI,oBAAoB;CAMjC;AAED,eAAO,MAAM,YAAY;;;;;CAexB,CAAC"}
|
|
1
|
+
{"version":3,"file":"packet-types.d.ts","sourceRoot":"","sources":["../../../../src/network/packet/packet-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,KAAK,YAAY,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,qBAAa,aAAc,YAAW,KAAK,CAAC,iBAAiB,CAAC;IAC1D,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,WAAW,CAAC,EAAE,OAAO,CAAC;gBAE1B,OAAO,EAAE;QACjB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EAAE,YAAY,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KAC1B;WAOa,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa;IASvD,MAAM,IAAI,iBAAiB;CAQrC;AAED,oBAAY,cAAc;IACtB,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,QAAQ,aAAa;IACrB,KAAK,UAAU;CAClB;AAED,KAAK,oBAAoB,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,qBAAa,gBAAiB,YAAW,KAAK,CAAC,oBAAoB,CAAC;IAChE,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;gBAE3B,OAAO,EAAE;QACjB,IAAI,EAAE,cAAc,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;IAKD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB;IAO7D,MAAM,IAAI,oBAAoB;CAMjC;AAED,eAAO,MAAM,YAAY;;;;;CAexB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-connection.d.ts","sourceRoot":"","sources":["../../../src/network/websocket-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,mBAAoB,YAAW,UAAU;IAO9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANrB,SAAS,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,aAAa,CAA6B;gBAG7B,OAAO,EAAE,OAAO;IAMrC,OAAO,KAAK,UAAU,GAIrB;IAEM,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBjB,SAAS;IAeV,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket-connection.d.ts","sourceRoot":"","sources":["../../../src/network/websocket-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,mBAAoB,YAAW,UAAU;IAO9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANrB,SAAS,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,aAAa,CAA6B;gBAG7B,OAAO,EAAE,OAAO;IAMrC,OAAO,KAAK,UAAU,GAIrB;IAEM,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBjB,SAAS;IAeV,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBnG,IAAI,MAAM,IAAI,OAAO,CAKpB;IAED,KAAK,IAAI,IAAI;IAYb,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI;CAUpF"}
|
package/dist/dts/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.7.
|
|
1
|
+
export declare const VERSION = "0.7.14";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Network
|
|
1
|
+
export { Network } from './network.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAC"}
|
|
@@ -4,21 +4,12 @@ import { IdentifierMap } from '../identifier.js';
|
|
|
4
4
|
import { VERSION } from '../version.js';
|
|
5
5
|
import { PacketMapper } from './connection.js';
|
|
6
6
|
import { ConnectPacket, DisconnectType, PACKET_TYPES } from './packet/packet-types.js';
|
|
7
|
-
export var NetworkStatus;
|
|
8
|
-
(function (NetworkStatus) {
|
|
9
|
-
NetworkStatus["DISCONNECTED"] = "disconnected";
|
|
10
|
-
NetworkStatus["CONNECTING"] = "connecting";
|
|
11
|
-
NetworkStatus["CONNECTED"] = "connected";
|
|
12
|
-
NetworkStatus["READY"] = "ready";
|
|
13
|
-
NetworkStatus["ERROR"] = "error";
|
|
14
|
-
NetworkStatus["CLOSED"] = "closed";
|
|
15
|
-
})(NetworkStatus || (NetworkStatus = {}));
|
|
16
7
|
export class Network {
|
|
17
8
|
client;
|
|
18
9
|
address;
|
|
19
10
|
tokenProvider;
|
|
20
11
|
connection;
|
|
21
|
-
status =
|
|
12
|
+
status = { type: 'disconnected' };
|
|
22
13
|
event = {
|
|
23
14
|
connected: new EventEmitter(),
|
|
24
15
|
disconnected: new EventEmitter(),
|
|
@@ -39,10 +30,11 @@ export class Network {
|
|
|
39
30
|
});
|
|
40
31
|
this.addPacketHandler(PACKET_TYPES.DISCONNECT, async (reason) => {
|
|
41
32
|
await this.event.disconnected.emit(reason);
|
|
42
|
-
if (reason.type === DisconnectType.SHUTDOWN
|
|
33
|
+
if (reason.type === DisconnectType.SHUTDOWN
|
|
34
|
+
|| reason.type === DisconnectType.CLOSE
|
|
35
|
+
|| reason.type === DisconnectType.SERVER_RESTART) {
|
|
43
36
|
return;
|
|
44
37
|
}
|
|
45
|
-
this.setStatus(NetworkStatus.ERROR);
|
|
46
38
|
const ERROR_MAP = {
|
|
47
39
|
[DisconnectType.ANOTHER_CONNECTION]: AnotherConnection,
|
|
48
40
|
[DisconnectType.PERMISSION_DENIED]: PermissionDenied,
|
|
@@ -52,25 +44,26 @@ export class Network {
|
|
|
52
44
|
[DisconnectType.INVALID_PACKET]: InvalidPacket,
|
|
53
45
|
[DisconnectType.INVALID_PACKET_TYPE]: InvalidPacket,
|
|
54
46
|
[DisconnectType.INVALID_PACKET_DATA]: InvalidPacket,
|
|
47
|
+
[DisconnectType.SERVER_RESTART]: undefined,
|
|
55
48
|
[DisconnectType.CLOSE]: undefined,
|
|
56
49
|
[DisconnectType.SHUTDOWN]: undefined,
|
|
57
50
|
};
|
|
58
51
|
const error = ERROR_MAP[reason.type];
|
|
59
52
|
if (error) {
|
|
60
|
-
|
|
53
|
+
const omuError = new error(reason.message);
|
|
54
|
+
await this.setStatus({ type: 'error', error: omuError });
|
|
61
55
|
}
|
|
62
56
|
});
|
|
63
57
|
this.addPacketHandler(PACKET_TYPES.READY, () => {
|
|
64
|
-
if (this.status ===
|
|
58
|
+
if (this.status.type === 'ready') {
|
|
65
59
|
throw new Error('Received READY packet when already ready');
|
|
66
60
|
}
|
|
67
|
-
this.setStatus(
|
|
68
|
-
this.event.status.emit(NetworkStatus.READY);
|
|
61
|
+
this.setStatus({ type: 'ready' });
|
|
69
62
|
this.client.event.ready.emit();
|
|
70
63
|
});
|
|
71
64
|
}
|
|
72
65
|
setConnection(connection) {
|
|
73
|
-
if (this.status !==
|
|
66
|
+
if (this.status.type !== 'disconnected') {
|
|
74
67
|
throw new Error('Cannot change connection while connected');
|
|
75
68
|
}
|
|
76
69
|
this.connection = connection;
|
|
@@ -92,56 +85,52 @@ export class Network {
|
|
|
92
85
|
listeners.event.listen(handler);
|
|
93
86
|
}
|
|
94
87
|
async connect(recconect = true) {
|
|
95
|
-
if (this.
|
|
96
|
-
throw new Error(`Cannot connect while ${this.status}`);
|
|
88
|
+
if (!this.isState('disconnected')) {
|
|
89
|
+
throw new Error(`Cannot connect while ${this.status.type}`);
|
|
97
90
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
91
|
+
while (true) {
|
|
92
|
+
try {
|
|
93
|
+
await this.connection.connect();
|
|
94
|
+
await this.setStatus({ type: 'connecting' });
|
|
95
|
+
const token = await this.tokenProvider.get(this.address, this.client.app);
|
|
96
|
+
this.send({
|
|
97
|
+
type: PACKET_TYPES.CONNECT,
|
|
98
|
+
data: new ConnectPacket({
|
|
99
|
+
app: this.client.app,
|
|
100
|
+
protocol: { version: VERSION },
|
|
101
|
+
token,
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
const listenPromise = this.listen();
|
|
105
|
+
await this.setStatus({ type: 'connected' });
|
|
106
|
+
await this.event.connected.emit();
|
|
107
|
+
await this.dispatchTasks();
|
|
108
|
+
this.send({
|
|
109
|
+
type: PACKET_TYPES.READY,
|
|
110
|
+
data: null,
|
|
111
|
+
});
|
|
112
|
+
await listenPromise;
|
|
113
|
+
if (this.status.type === 'error') {
|
|
114
|
+
throw this.status.error;
|
|
115
|
+
}
|
|
104
116
|
}
|
|
105
|
-
|
|
106
|
-
|
|
117
|
+
finally {
|
|
118
|
+
this.disconnect();
|
|
107
119
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
type: PACKET_TYPES.CONNECT,
|
|
113
|
-
data: new ConnectPacket({
|
|
114
|
-
app: this.client.app,
|
|
115
|
-
protocol: { version: VERSION },
|
|
116
|
-
token,
|
|
117
|
-
}),
|
|
118
|
-
});
|
|
119
|
-
const listenPromise = this.listen();
|
|
120
|
-
await this.event.status.emit(NetworkStatus.CONNECTED);
|
|
121
|
-
await this.event.connected.emit();
|
|
122
|
-
await this.dispatchTasks();
|
|
123
|
-
this.send({
|
|
124
|
-
type: PACKET_TYPES.READY,
|
|
125
|
-
data: null,
|
|
126
|
-
});
|
|
127
|
-
await listenPromise;
|
|
128
|
-
if (recconect) {
|
|
129
|
-
await this.tryReconnect();
|
|
120
|
+
if (!recconect) {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
130
124
|
}
|
|
131
125
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
137
|
-
await this.connect();
|
|
126
|
+
isState(state) {
|
|
127
|
+
return this.status.type === state;
|
|
138
128
|
}
|
|
139
129
|
disconnect() {
|
|
140
|
-
if (this.status ===
|
|
130
|
+
if (this.status.type === 'disconnected') {
|
|
141
131
|
return;
|
|
142
132
|
}
|
|
143
|
-
this.setStatus(
|
|
144
|
-
this.event.status.emit(NetworkStatus.DISCONNECTED);
|
|
133
|
+
this.setStatus({ type: 'disconnected' });
|
|
145
134
|
this.connection.close();
|
|
146
135
|
this.event.disconnected.emit(null);
|
|
147
136
|
}
|
|
@@ -182,12 +171,12 @@ export class Network {
|
|
|
182
171
|
await task();
|
|
183
172
|
}
|
|
184
173
|
}
|
|
185
|
-
setStatus(status) {
|
|
174
|
+
async setStatus(status) {
|
|
186
175
|
if (this.status === status) {
|
|
187
176
|
throw new Error(`Cannot set status to ${status} when already ${status}`);
|
|
188
177
|
}
|
|
189
178
|
this.status = status;
|
|
190
|
-
this.event.status.emit(status);
|
|
179
|
+
await this.event.status.emit(status);
|
|
191
180
|
}
|
|
192
181
|
}
|
|
193
182
|
//# sourceMappingURL=network.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/network/network.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/network/network.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAwBvF,MAAM,OAAO,OAAO;IAaK;IACD;IACC;IACT;IAfL,MAAM,GAAkB,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC;IACtC,KAAK,GAAG;QACpB,SAAS,EAAE,IAAI,YAAY,EAAM;QACjC,YAAY,EAAE,IAAI,YAAY,EAA6B;QAC3D,MAAM,EAAE,IAAI,YAAY,EAAY;QACpC,MAAM,EAAE,IAAI,YAAY,EAAmB;KAC9C,CAAC;IACe,KAAK,GAAsC,EAAE,CAAC;IAC9C,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,cAAc,GAAG,IAAI,aAAa,EAA0B,CAAC;IAE9E,YACqB,MAAc,EACf,OAAgB,EACf,aAA4B,EACrC,UAAsB;QAHb,WAAM,GAAN,MAAM,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;QACf,kBAAa,GAAb,aAAa,CAAe;QACrC,eAAU,GAAV,UAAU,CAAY;QAE9B,IAAI,CAAC,cAAc,CACf,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,KAAK,CACrB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;YAC9D,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;mBACrC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;mBACpC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE,CAAC;gBAClD,OAAO;YACX,CAAC;YACD,MAAM,SAAS,GAAwD;gBACnE,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,iBAAiB;gBACtD,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;gBACpD,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,YAAY;gBAC5C,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,aAAa;gBAC9C,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,cAAc;gBAChD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,aAAa;gBAC9C,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,aAAa;gBACnD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,aAAa;gBACnD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS;gBAC1C,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS;gBACjC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,SAAS;aACvC,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,aAAa,CAAC,UAAsB;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,cAAc,CAAC,GAAG,WAAkC;QACvD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC7B,IAAI;gBACJ,KAAK,EAAE,IAAI,YAAY,EAAE;aAC5B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAI,IAAmB,EAAE,OAA4B;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAuC,CAAC;QACzF,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnE,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAoC,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1E,IAAI,CAAC,IAAI,CAAC;oBACN,IAAI,EAAE,YAAY,CAAC,OAAO;oBAC1B,IAAI,EAAE,IAAI,aAAa,CAAC;wBACpB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;wBACpB,QAAQ,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC;wBAC5B,KAAK;qBACR,CAAC;iBACL,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC;oBACN,IAAI,EAAE,YAAY,CAAC,KAAK;oBACxB,IAAI,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,MAAM,aAAa,CAAC;gBACpB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,CAAC;YACL,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,MAAM;YACV,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,KAA4B;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;IACtC,CAAC;IAEM,UAAU;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAEM,IAAI,CAAC,MAAc;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,MAAM;QAChB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAc;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QACD,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,OAAO,CAAC,IAAgC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,UAAU,CAAC,IAAgC;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,aAAa;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,MAAqB;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACJ"}
|
|
@@ -41,6 +41,7 @@ export var DisconnectType;
|
|
|
41
41
|
DisconnectType["INVALID_PACKET"] = "invalid_packet";
|
|
42
42
|
DisconnectType["ANOTHER_CONNECTION"] = "another_connection";
|
|
43
43
|
DisconnectType["PERMISSION_DENIED"] = "permission_denied";
|
|
44
|
+
DisconnectType["SERVER_RESTART"] = "server_restart";
|
|
44
45
|
DisconnectType["SHUTDOWN"] = "shutdown";
|
|
45
46
|
DisconnectType["CLOSE"] = "close";
|
|
46
47
|
})(DisconnectType || (DisconnectType = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-types.js","sourceRoot":"","sources":["../../../../src/network/packet/packet-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAapD,MAAM,OAAO,aAAa;IACN,GAAG,CAAM;IACT,QAAQ,CAAe;IACvB,KAAK,CAAU;IACf,WAAW,CAAW;IAEtC,YAAY,OAKX;QACG,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAuB;QAC1C,OAAO,IAAI,aAAa,CAAC;YACrB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM;QACT,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,WAAW;SACjC,CAAC;IACN,CAAC;CACJ;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"packet-types.js","sourceRoot":"","sources":["../../../../src/network/packet/packet-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,11 +52,14 @@ export class WebsocketConnection {
|
|
|
52
52
|
if (!this.connected || !this.socket) {
|
|
53
53
|
return null;
|
|
54
54
|
}
|
|
55
|
-
while (this.packetQueue.length === 0) {
|
|
55
|
+
while (this.packetQueue.length === 0 && this.connected) {
|
|
56
56
|
await new Promise((resolve) => {
|
|
57
57
|
this.receiveWaiter = () => resolve();
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
+
if (!this.connected) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
60
63
|
const packet = serializer.deserialize(this.packetQueue.shift());
|
|
61
64
|
this.receiveWaiter = null;
|
|
62
65
|
return packet;
|
|
@@ -73,6 +76,10 @@ export class WebsocketConnection {
|
|
|
73
76
|
this.socket.close();
|
|
74
77
|
this.socket = null;
|
|
75
78
|
}
|
|
79
|
+
if (this.receiveWaiter) {
|
|
80
|
+
this.receiveWaiter();
|
|
81
|
+
this.receiveWaiter = null;
|
|
82
|
+
}
|
|
76
83
|
}
|
|
77
84
|
send(packet, serializer) {
|
|
78
85
|
if (!this.connected || !this.socket) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-connection.js","sourceRoot":"","sources":["../../../src/network/websocket-connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM1D,MAAM,OAAO,mBAAmB;IAOP;IANd,SAAS,CAAU;IAClB,MAAM,CAAmB;IAChB,WAAW,GAAsB,EAAE,CAAC;IAC7C,aAAa,GAAwB,IAAI,CAAC;IAElD,YACqB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAEjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAY,UAAU;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,OAAO,GAAG,QAAQ,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC;IAC9C,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,EAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAS,EAAE;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAkC;QACtD,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;YACzB,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAAqD;QACtE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket-connection.js","sourceRoot":"","sources":["../../../src/network/websocket-connection.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.7.
|
|
1
|
+
export const VERSION = '0.7.14';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
package/src/network/network.ts
CHANGED
|
@@ -25,17 +25,24 @@ type PacketHandler<T> = {
|
|
|
25
25
|
event: EventEmitter<[T]>;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
export enum NetworkStatus {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
28
|
+
// export enum NetworkStatus {
|
|
29
|
+
// DISCONNECTED = 'disconnected',
|
|
30
|
+
// CONNECTING = 'connecting',
|
|
31
|
+
// CONNECTED = 'connected',
|
|
32
|
+
// READY = 'ready',
|
|
33
|
+
// ERROR = 'error',
|
|
34
|
+
// CLOSED = 'closed',
|
|
35
|
+
// }
|
|
36
|
+
type StatusType<T> = {
|
|
37
|
+
type: T,
|
|
38
|
+
};
|
|
39
|
+
export type NetworkStatus = StatusType<'disconnected'> | StatusType<'connecting'> | StatusType<'connected'> | StatusType<'ready'> | {
|
|
40
|
+
type: 'error',
|
|
41
|
+
error: OmuError,
|
|
42
|
+
} | StatusType<'closed'>;
|
|
36
43
|
|
|
37
44
|
export class Network {
|
|
38
|
-
public status: NetworkStatus =
|
|
45
|
+
public status: NetworkStatus = {type: 'disconnected'};
|
|
39
46
|
public readonly event = {
|
|
40
47
|
connected: new EventEmitter<[]>(),
|
|
41
48
|
disconnected: new EventEmitter<[DisconnectPacket | null]>(),
|
|
@@ -63,10 +70,11 @@ export class Network {
|
|
|
63
70
|
});
|
|
64
71
|
this.addPacketHandler(PACKET_TYPES.DISCONNECT, async (reason) => {
|
|
65
72
|
await this.event.disconnected.emit(reason);
|
|
66
|
-
if (reason.type === DisconnectType.SHUTDOWN
|
|
73
|
+
if (reason.type === DisconnectType.SHUTDOWN
|
|
74
|
+
||reason.type === DisconnectType.CLOSE
|
|
75
|
+
||reason.type === DisconnectType.SERVER_RESTART) {
|
|
67
76
|
return;
|
|
68
77
|
}
|
|
69
|
-
this.setStatus(NetworkStatus.ERROR);
|
|
70
78
|
const ERROR_MAP: Record<DisconnectType, typeof OmuError | undefined> = {
|
|
71
79
|
[DisconnectType.ANOTHER_CONNECTION]: AnotherConnection,
|
|
72
80
|
[DisconnectType.PERMISSION_DENIED]: PermissionDenied,
|
|
@@ -76,26 +84,27 @@ export class Network {
|
|
|
76
84
|
[DisconnectType.INVALID_PACKET]: InvalidPacket,
|
|
77
85
|
[DisconnectType.INVALID_PACKET_TYPE]: InvalidPacket,
|
|
78
86
|
[DisconnectType.INVALID_PACKET_DATA]: InvalidPacket,
|
|
87
|
+
[DisconnectType.SERVER_RESTART]: undefined,
|
|
79
88
|
[DisconnectType.CLOSE]: undefined,
|
|
80
89
|
[DisconnectType.SHUTDOWN]: undefined,
|
|
81
90
|
};
|
|
82
91
|
const error = ERROR_MAP[reason.type];
|
|
83
92
|
if (error) {
|
|
84
|
-
|
|
93
|
+
const omuError = new error(reason.message);
|
|
94
|
+
await this.setStatus({type: 'error', error: omuError});
|
|
85
95
|
}
|
|
86
96
|
});
|
|
87
97
|
this.addPacketHandler(PACKET_TYPES.READY, () => {
|
|
88
|
-
if (this.status ===
|
|
98
|
+
if (this.status.type === 'ready') {
|
|
89
99
|
throw new Error('Received READY packet when already ready');
|
|
90
100
|
}
|
|
91
|
-
this.setStatus(
|
|
92
|
-
this.event.status.emit(NetworkStatus.READY);
|
|
101
|
+
this.setStatus({type: 'ready'});
|
|
93
102
|
this.client.event.ready.emit();
|
|
94
103
|
});
|
|
95
104
|
}
|
|
96
105
|
|
|
97
106
|
public setConnection(connection: Connection): void {
|
|
98
|
-
if (this.status !==
|
|
107
|
+
if (this.status.type !== 'disconnected') {
|
|
99
108
|
throw new Error('Cannot change connection while connected');
|
|
100
109
|
}
|
|
101
110
|
this.connection = connection;
|
|
@@ -120,58 +129,54 @@ export class Network {
|
|
|
120
129
|
}
|
|
121
130
|
|
|
122
131
|
public async connect(recconect = true): Promise<void> {
|
|
123
|
-
if (this.
|
|
124
|
-
throw new Error(`Cannot connect while ${this.status}`);
|
|
132
|
+
if (!this.isState('disconnected')) {
|
|
133
|
+
throw new Error(`Cannot connect while ${this.status.type}`);
|
|
125
134
|
}
|
|
126
135
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
await this.
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
while (true) {
|
|
137
|
+
try {
|
|
138
|
+
await this.connection.connect();
|
|
139
|
+
await this.setStatus({type: 'connecting'});
|
|
140
|
+
const token = await this.tokenProvider.get(this.address, this.client.app);
|
|
141
|
+
this.send({
|
|
142
|
+
type: PACKET_TYPES.CONNECT,
|
|
143
|
+
data: new ConnectPacket({
|
|
144
|
+
app: this.client.app,
|
|
145
|
+
protocol: {version: VERSION},
|
|
146
|
+
token,
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
const listenPromise = this.listen();
|
|
150
|
+
await this.setStatus({type: 'connected'});
|
|
151
|
+
await this.event.connected.emit();
|
|
152
|
+
await this.dispatchTasks();
|
|
153
|
+
this.send({
|
|
154
|
+
type: PACKET_TYPES.READY,
|
|
155
|
+
data: null,
|
|
156
|
+
});
|
|
157
|
+
await listenPromise;
|
|
158
|
+
if (this.status.type === 'error') {
|
|
159
|
+
throw this.status.error;
|
|
160
|
+
}
|
|
161
|
+
} finally {
|
|
162
|
+
this.disconnect();
|
|
134
163
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
type: PACKET_TYPES.CONNECT,
|
|
140
|
-
data: new ConnectPacket({
|
|
141
|
-
app: this.client.app,
|
|
142
|
-
protocol: {version: VERSION},
|
|
143
|
-
token,
|
|
144
|
-
}),
|
|
145
|
-
});
|
|
146
|
-
const listenPromise = this.listen();
|
|
147
|
-
await this.event.status.emit(NetworkStatus.CONNECTED);
|
|
148
|
-
await this.event.connected.emit();
|
|
149
|
-
await this.dispatchTasks();
|
|
150
|
-
this.send({
|
|
151
|
-
type: PACKET_TYPES.READY,
|
|
152
|
-
data: null,
|
|
153
|
-
});
|
|
154
|
-
await listenPromise;
|
|
155
|
-
|
|
156
|
-
if (recconect) {
|
|
157
|
-
await this.tryReconnect();
|
|
164
|
+
if (!recconect) {
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
158
168
|
}
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
private
|
|
162
|
-
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
166
|
-
await this.connect();
|
|
171
|
+
private isState(state: NetworkStatus['type']): boolean {
|
|
172
|
+
return this.status.type === state;
|
|
167
173
|
}
|
|
168
174
|
|
|
169
175
|
public disconnect(): void {
|
|
170
|
-
if (this.status ===
|
|
176
|
+
if (this.status.type === 'disconnected') {
|
|
171
177
|
return;
|
|
172
178
|
}
|
|
173
|
-
this.setStatus(
|
|
174
|
-
this.event.status.emit(NetworkStatus.DISCONNECTED);
|
|
179
|
+
this.setStatus({type: 'disconnected'});
|
|
175
180
|
this.connection.close();
|
|
176
181
|
this.event.disconnected.emit(null);
|
|
177
182
|
}
|
|
@@ -219,11 +224,11 @@ export class Network {
|
|
|
219
224
|
}
|
|
220
225
|
}
|
|
221
226
|
|
|
222
|
-
private setStatus(status: NetworkStatus): void {
|
|
227
|
+
private async setStatus(status: NetworkStatus): Promise<void> {
|
|
223
228
|
if (this.status === status) {
|
|
224
229
|
throw new Error(`Cannot set status to ${status} when already ${status}`);
|
|
225
230
|
}
|
|
226
231
|
this.status = status;
|
|
227
|
-
this.event.status.emit(status);
|
|
232
|
+
await this.event.status.emit(status);
|
|
228
233
|
}
|
|
229
234
|
}
|
|
@@ -64,11 +64,14 @@ export class WebsocketConnection implements Connection {
|
|
|
64
64
|
if (!this.connected || !this.socket) {
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
67
|
-
while (this.packetQueue.length === 0) {
|
|
67
|
+
while (this.packetQueue.length === 0 && this.connected) {
|
|
68
68
|
await new Promise<void>((resolve) => {
|
|
69
69
|
this.receiveWaiter = (): void => resolve();
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
+
if (!this.connected) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
72
75
|
const packet = serializer.deserialize(this.packetQueue.shift()!);
|
|
73
76
|
this.receiveWaiter = null;
|
|
74
77
|
return packet;
|
|
@@ -87,6 +90,10 @@ export class WebsocketConnection implements Connection {
|
|
|
87
90
|
this.socket.close();
|
|
88
91
|
this.socket = null;
|
|
89
92
|
}
|
|
93
|
+
if (this.receiveWaiter) {
|
|
94
|
+
this.receiveWaiter();
|
|
95
|
+
this.receiveWaiter = null;
|
|
96
|
+
}
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
send(packet: Packet, serializer: Serializable<Packet<unknown>, PacketData>): void {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.7.
|
|
1
|
+
export const VERSION = '0.7.14';
|