@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 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
- export declare enum NetworkStatus {
9
- DISCONNECTED = "disconnected",
10
- CONNECTING = "connecting",
11
- CONNECTED = "connected",
12
- READY = "ready",
13
- ERROR = "error",
14
- CLOSED = "closed"
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 tryReconnect;
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;AAU3C,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;AAO7D,oBAAY,aAAa;IACrB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAED,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,CAA8B;IAC1D,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;IA4C3B,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;YAuCvC,YAAY;IAQnB,UAAU,IAAI,IAAI;IAUlB,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;IAM3B,OAAO,CAAC,SAAS;CAOpB"}
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"}
@@ -34,6 +34,7 @@ export declare enum DisconnectType {
34
34
  INVALID_PACKET = "invalid_packet",
35
35
  ANOTHER_CONNECTION = "another_connection",
36
36
  PERMISSION_DENIED = "permission_denied",
37
+ SERVER_RESTART = "server_restart",
37
38
  SHUTDOWN = "shutdown",
38
39
  CLOSE = "close"
39
40
  }
@@ -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;IAiBnG,IAAI,MAAM,IAAI,OAAO,CAKpB;IAED,KAAK,IAAI,IAAI;IAQb,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI;CAUpF"}
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"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.13";
1
+ export declare const VERSION = "0.7.14";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export { Network, NetworkStatus } from './network.js';
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,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
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 = NetworkStatus.DISCONNECTED;
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 || reason.type === DisconnectType.CLOSE) {
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
- throw new error(reason.message);
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 === NetworkStatus.READY) {
58
+ if (this.status.type === 'ready') {
65
59
  throw new Error('Received READY packet when already ready');
66
60
  }
67
- this.setStatus(NetworkStatus.READY);
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 !== NetworkStatus.DISCONNECTED) {
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.status !== NetworkStatus.DISCONNECTED) {
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
- try {
99
- await this.connection.connect();
100
- }
101
- catch (error) {
102
- if (recconect) {
103
- await this.tryReconnect();
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
- else {
106
- throw error;
117
+ finally {
118
+ this.disconnect();
107
119
  }
108
- }
109
- this.setStatus(NetworkStatus.CONNECTING);
110
- const token = await this.tokenProvider.get(this.address, this.client.app);
111
- this.send({
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
- async tryReconnect() {
133
- if (this.status === NetworkStatus.CLOSED) {
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 === NetworkStatus.CLOSED) {
130
+ if (this.status.type === 'disconnected') {
141
131
  return;
142
132
  }
143
- this.setStatus(NetworkStatus.DISCONNECTED);
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":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/network/network.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
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":"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"}
1
+ {"version":3,"file":"websocket-connection.js","sourceRoot":"","sources":["../../../src/network/websocket-connection.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.7.13';
1
+ export const VERSION = '0.7.14';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@omujs/omu",
4
- "version": "0.7.14",
4
+ "version": "0.7.15",
5
5
  "exports": {
6
6
  ".": {
7
7
  "import": "./dist/esm/index.js",
@@ -25,17 +25,24 @@ type PacketHandler<T> = {
25
25
  event: EventEmitter<[T]>;
26
26
  };
27
27
 
28
- export enum NetworkStatus {
29
- DISCONNECTED = 'disconnected',
30
- CONNECTING = 'connecting',
31
- CONNECTED = 'connected',
32
- READY = 'ready',
33
- ERROR = 'error',
34
- CLOSED = 'closed',
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 = NetworkStatus.DISCONNECTED;
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 || reason.type === DisconnectType.CLOSE) {
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
- throw new error(reason.message);
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 === NetworkStatus.READY) {
98
+ if (this.status.type === 'ready') {
89
99
  throw new Error('Received READY packet when already ready');
90
100
  }
91
- this.setStatus(NetworkStatus.READY);
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 !== NetworkStatus.DISCONNECTED) {
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.status !== NetworkStatus.DISCONNECTED) {
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
- try {
128
- await this.connection.connect();
129
- } catch (error) {
130
- if (recconect) {
131
- await this.tryReconnect();
132
- } else {
133
- throw error;
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
- this.setStatus(NetworkStatus.CONNECTING);
137
- const token = await this.tokenProvider.get(this.address, this.client.app);
138
- this.send({
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 async tryReconnect(): Promise<void> {
162
- if (this.status === NetworkStatus.CLOSED) {
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 === NetworkStatus.CLOSED) {
176
+ if (this.status.type === 'disconnected') {
171
177
  return;
172
178
  }
173
- this.setStatus(NetworkStatus.DISCONNECTED);
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
  }
@@ -65,6 +65,7 @@ export enum DisconnectType {
65
65
  INVALID_PACKET = 'invalid_packet',
66
66
  ANOTHER_CONNECTION = 'another_connection',
67
67
  PERMISSION_DENIED = 'permission_denied',
68
+ SERVER_RESTART = 'server_restart',
68
69
  SHUTDOWN = 'shutdown',
69
70
  CLOSE = 'close',
70
71
  }
@@ -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.13';
1
+ export const VERSION = '0.7.14';