@gbraver-burst-network/anonymous-browser-sdk 2.3.0 → 2.5.0-beta.0

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.
Files changed (61) hide show
  1. package/lib/abort-controller/abort-error.d.ts +7 -0
  2. package/lib/abort-controller/abort-error.js +11 -0
  3. package/lib/abort-controller/abort-manager.d.ts +17 -0
  4. package/lib/abort-controller/abort-manager.js +58 -0
  5. package/lib/abort-controller/signal-container.d.ts +5 -0
  6. package/lib/abort-controller/signal-container.js +2 -0
  7. package/lib/index.d.ts +3 -3
  8. package/lib/index.js +2 -2
  9. package/lib/sdk/{guest-anonymous-sdk.d.ts → guest/guest-anonymous-sdk.d.ts} +1 -1
  10. package/lib/sdk/{guest-anonymous-sdk.js → guest/guest-anonymous-sdk.js} +39 -23
  11. package/lib/sdk/{guest-battle-sdk.d.ts → guest/guest-battle-sdk.d.ts} +4 -1
  12. package/lib/sdk/{guest-battle-sdk.js → guest/guest-battle-sdk.js} +17 -6
  13. package/lib/sdk/{guest-webrtc-connection-manager.d.ts → guest/guest-webrtc-connection-manager.d.ts} +1 -1
  14. package/lib/sdk/{guest-webrtc-connection-manager.js → guest/guest-webrtc-connection-manager.js} +2 -2
  15. package/lib/sdk/{host-anonymous-sdk.js → host/host-anonymous-sdk.js} +17 -6
  16. package/lib/sdk/{host-battle-sdk.d.ts → host/host-battle-sdk.d.ts} +4 -1
  17. package/lib/sdk/{host-battle-sdk.js → host/host-battle-sdk.js} +20 -7
  18. package/lib/sdk/{host-webrtc-connection-manager.d.ts → host/host-webrtc-connection-manager.d.ts} +1 -1
  19. package/lib/sdk/{host-webrtc-connection-manager.js → host/host-webrtc-connection-manager.js} +1 -1
  20. package/lib/sdk/{local-webrtc-room.d.ts → host/local-webrtc-room.d.ts} +6 -3
  21. package/lib/sdk/{local-webrtc-room.js → host/local-webrtc-room.js} +36 -21
  22. package/lib/webrtc/gather-all-ice-candidate.d.ts +4 -1
  23. package/lib/webrtc/gather-all-ice-candidate.js +17 -2
  24. package/lib/webrtc/guest/guest-message.d.ts +9 -1
  25. package/lib/webrtc/guest/guest-message.js +5 -1
  26. package/lib/webrtc/guest/guest-ping-pong-check.d.ts +12 -0
  27. package/lib/webrtc/guest/guest-ping-pong-check.js +47 -0
  28. package/lib/webrtc/guest/receive-battle-progressed.d.ts +7 -2
  29. package/lib/webrtc/guest/receive-battle-progressed.js +18 -3
  30. package/lib/webrtc/guest/receive-battle-start.d.ts +7 -2
  31. package/lib/webrtc/guest/receive-battle-start.js +18 -3
  32. package/lib/webrtc/guest/receive-request-selected-player.d.ts +7 -2
  33. package/lib/webrtc/guest/receive-request-selected-player.js +18 -3
  34. package/lib/webrtc/guest/wait-until-data-channel.d.ts +4 -1
  35. package/lib/webrtc/guest/wait-until-data-channel.js +23 -5
  36. package/lib/webrtc/host/host-message.d.ts +9 -1
  37. package/lib/webrtc/host/host-message.js +5 -1
  38. package/lib/webrtc/host/host-ping-pong-check.d.ts +12 -0
  39. package/lib/webrtc/host/host-ping-pong-check.js +47 -0
  40. package/lib/webrtc/host/receive-send-command.d.ts +10 -4
  41. package/lib/webrtc/host/receive-send-command.js +20 -5
  42. package/lib/webrtc/host/request-selected-player.d.ts +9 -3
  43. package/lib/webrtc/host/request-selected-player.js +19 -4
  44. package/lib/webrtc/wait-until-connected.d.ts +4 -1
  45. package/lib/webrtc/wait-until-connected.js +17 -2
  46. package/lib/webrtc/wait-until-data-channel-ready.d.ts +4 -1
  47. package/lib/webrtc/wait-until-data-channel-ready.js +17 -2
  48. package/lib/websocket-api/connect-ws-signal.d.ts +3 -1
  49. package/lib/websocket-api/connect-ws-signal.js +15 -1
  50. package/lib/websocket-api/create-room.d.ts +7 -1
  51. package/lib/websocket-api/create-room.js +18 -2
  52. package/lib/websocket-api/delete-signaling-channel.d.ts +3 -1
  53. package/lib/websocket-api/delete-signaling-channel.js +15 -2
  54. package/lib/websocket-api/join-room.d.ts +3 -1
  55. package/lib/websocket-api/join-room.js +15 -2
  56. package/lib/websocket-api/wait-until-matching.d.ts +7 -2
  57. package/lib/websocket-api/wait-until-matching.js +18 -3
  58. package/lib/websocket-api/wait-until-sdp-recieve.d.ts +7 -2
  59. package/lib/websocket-api/wait-until-sdp-recieve.js +18 -2
  60. package/package.json +7 -7
  61. /package/lib/sdk/{host-anonymous-sdk.d.ts → host/host-anonymous-sdk.d.ts} +0 -0
@@ -5,13 +5,25 @@ const parse_1 = require("../../json/parse");
5
5
  const guest_message_1 = require("../guest/guest-message");
6
6
  /**
7
7
  * ゲストからflowIDが一致した「SendCommand」メッセージを待ち受ける
8
- * @param dataChannel データチャネル
9
- * @param flowID フローID
10
- * @returns フローID
8
+ * @param options オプション
9
+ * @param options.dataChannel データチャネル
10
+ * @param options.flowID フローID
11
+ * @param options.signal Promise強制終了用シグナル
12
+ * @returns ゲストから送信されたSendCommandメッセージ
11
13
  */
12
- const receiveSendCommand = (dataChannel, flowID) => {
14
+ const receiveSendCommand = (options) => {
15
+ const { dataChannel, flowID, signal } = options;
13
16
  let handler = null;
14
- return new Promise((resolve) => {
17
+ let onAbort = null;
18
+ return new Promise((resolve, reject) => {
19
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
20
+ reject(signal.reason);
21
+ return;
22
+ }
23
+ onAbort = () => {
24
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
25
+ };
26
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
15
27
  handler = (event) => {
16
28
  const data = (0, parse_1.parseJSON)(event.data);
17
29
  const parsedSendCommand = guest_message_1.SendCommandSchema.safeParse(data);
@@ -26,6 +38,9 @@ const receiveSendCommand = (dataChannel, flowID) => {
26
38
  if (handler) {
27
39
  dataChannel.removeEventListener("message", handler);
28
40
  }
41
+ if (onAbort) {
42
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
43
+ }
29
44
  });
30
45
  };
31
46
  exports.receiveSendCommand = receiveSendCommand;
@@ -1,4 +1,5 @@
1
1
  import { ArmdozerId, PilotId } from "gbraver-burst-core";
2
+ import { SignalContainer } from "../../abort-controller/signal-container";
2
3
  /** ホストが選択したプレイヤーの情報 */
3
4
  type HostSelectedPlayer = {
4
5
  /** ホストが選択したアームドーザーのID */
@@ -8,9 +9,14 @@ type HostSelectedPlayer = {
8
9
  };
9
10
  /**
10
11
  * ホストに選択したプレイヤーを共有するようにリクエストする
11
- * @param dataChannel データチャンネル
12
- * @param flowID ゲームのフローID
12
+ * @param options リクエストのオプション
13
+ * @param options.dataChannel データチャンネル
14
+ * @param options.flowID ゲームのフローID
15
+ * @param options.signal Promise強制終了用シグナル
13
16
  * @returns ホストが選択したプレイヤー情報
14
17
  */
15
- export declare const requestSelectedPlayer: (dataChannel: RTCDataChannel, flowID: string) => Promise<HostSelectedPlayer>;
18
+ export declare const requestSelectedPlayer: (options: {
19
+ dataChannel: RTCDataChannel;
20
+ flowID: string;
21
+ } & Partial<SignalContainer>) => Promise<HostSelectedPlayer>;
16
22
  export {};
@@ -6,13 +6,25 @@ const guest_message_1 = require("../guest/guest-message");
6
6
  const host_message_1 = require("./host-message");
7
7
  /**
8
8
  * ホストに選択したプレイヤーを共有するようにリクエストする
9
- * @param dataChannel データチャンネル
10
- * @param flowID ゲームのフローID
9
+ * @param options リクエストのオプション
10
+ * @param options.dataChannel データチャンネル
11
+ * @param options.flowID ゲームのフローID
12
+ * @param options.signal Promise強制終了用シグナル
11
13
  * @returns ホストが選択したプレイヤー情報
12
14
  */
13
- const requestSelectedPlayer = (dataChannel, flowID) => {
15
+ const requestSelectedPlayer = (options) => {
16
+ const { dataChannel, flowID, signal } = options;
14
17
  let handler = null;
15
- return new Promise((resolve) => {
18
+ let onAbort = null;
19
+ return new Promise((resolve, reject) => {
20
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
21
+ reject(signal.reason);
22
+ return;
23
+ }
24
+ onAbort = () => {
25
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
26
+ };
27
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
16
28
  handler = (event) => {
17
29
  const data = (0, parse_1.parseJSON)(event.data);
18
30
  const parsedSendPlayer = guest_message_1.SendPlayerSchema.safeParse(data);
@@ -30,6 +42,9 @@ const requestSelectedPlayer = (dataChannel, flowID) => {
30
42
  if (handler) {
31
43
  dataChannel.removeEventListener("message", handler);
32
44
  }
45
+ if (onAbort) {
46
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
47
+ }
33
48
  });
34
49
  };
35
50
  exports.requestSelectedPlayer = requestSelectedPlayer;
@@ -1,6 +1,9 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * WebRTCコネクションが接続されるまで待機する
3
4
  * @param connection WebRTCコネクション
5
+ * @param options オプション
6
+ * @param options.signal Promise強制終了用シグナル
4
7
  * @returns 接続されたら発火するPromise
5
8
  */
6
- export declare const waitUntilConnected: (connection: RTCPeerConnection) => Promise<void>;
9
+ export declare const waitUntilConnected: (connection: RTCPeerConnection, options?: Partial<SignalContainer>) => Promise<void>;
@@ -4,11 +4,23 @@ exports.waitUntilConnected = void 0;
4
4
  /**
5
5
  * WebRTCコネクションが接続されるまで待機する
6
6
  * @param connection WebRTCコネクション
7
+ * @param options オプション
8
+ * @param options.signal Promise強制終了用シグナル
7
9
  * @returns 接続されたら発火するPromise
8
10
  */
9
- const waitUntilConnected = (connection) => {
11
+ const waitUntilConnected = (connection, options) => {
12
+ const signal = options === null || options === void 0 ? void 0 : options.signal;
10
13
  let handler = null;
11
- return new Promise((resolve) => {
14
+ let onAbort = null;
15
+ return new Promise((resolve, reject) => {
16
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
17
+ reject(signal.reason);
18
+ return;
19
+ }
20
+ onAbort = () => {
21
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
22
+ };
23
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
12
24
  if (connection.connectionState === "connected") {
13
25
  resolve();
14
26
  return;
@@ -20,6 +32,9 @@ const waitUntilConnected = (connection) => {
20
32
  };
21
33
  connection.addEventListener("connectionstatechange", handler);
22
34
  }).finally(() => {
35
+ if (onAbort) {
36
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
37
+ }
23
38
  if (handler) {
24
39
  connection.removeEventListener("connectionstatechange", handler);
25
40
  }
@@ -1,6 +1,9 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * データチャンネルが開通するのを待つ
3
4
  * @param dataChannel データチャンネル
5
+ * @param options オプション
6
+ * @param options.signal Promise強制終了用シグナル
4
7
  * @returns データチャンネルが開通したら発火するPromise
5
8
  */
6
- export declare const waitUntilDataChannelOpen: (dataChannel: RTCDataChannel) => Promise<void>;
9
+ export declare const waitUntilDataChannelOpen: (dataChannel: RTCDataChannel, options?: Partial<SignalContainer>) => Promise<void>;
@@ -4,11 +4,23 @@ exports.waitUntilDataChannelOpen = void 0;
4
4
  /**
5
5
  * データチャンネルが開通するのを待つ
6
6
  * @param dataChannel データチャンネル
7
+ * @param options オプション
8
+ * @param options.signal Promise強制終了用シグナル
7
9
  * @returns データチャンネルが開通したら発火するPromise
8
10
  */
9
- const waitUntilDataChannelOpen = (dataChannel) => {
11
+ const waitUntilDataChannelOpen = (dataChannel, options) => {
12
+ const signal = options === null || options === void 0 ? void 0 : options.signal;
10
13
  let handler = null;
11
- return new Promise((resolve) => {
14
+ let onAbort = null;
15
+ return new Promise((resolve, reject) => {
16
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
17
+ reject(signal.reason);
18
+ return;
19
+ }
20
+ onAbort = () => {
21
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
22
+ };
23
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
12
24
  if (dataChannel.readyState === "open") {
13
25
  resolve();
14
26
  return;
@@ -20,6 +32,9 @@ const waitUntilDataChannelOpen = (dataChannel) => {
20
32
  };
21
33
  dataChannel.addEventListener("open", handler);
22
34
  }).finally(() => {
35
+ if (onAbort) {
36
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
37
+ }
23
38
  if (handler) {
24
39
  dataChannel.removeEventListener("open", handler);
25
40
  }
@@ -1,7 +1,9 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * WebSocketシグナルサーバーに接続する
3
4
  * @param url 接続先のWebSocketシグナルサーバーのURL
4
5
  * @param token 認証トークン
6
+ * @param options オプション
5
7
  * @returns 接続に成功したWebSocket、接続に失敗した場合はPromiseがrejectされる
6
8
  */
7
- export declare function connectWSSignal(url: string, token: string): Promise<WebSocket>;
9
+ export declare function connectWSSignal(url: string, token: string, options?: Partial<SignalContainer>): Promise<WebSocket>;
@@ -5,20 +5,34 @@ exports.connectWSSignal = connectWSSignal;
5
5
  * WebSocketシグナルサーバーに接続する
6
6
  * @param url 接続先のWebSocketシグナルサーバーのURL
7
7
  * @param token 認証トークン
8
+ * @param options オプション
8
9
  * @returns 接続に成功したWebSocket、接続に失敗した場合はPromiseがrejectされる
9
10
  */
10
- function connectWSSignal(url, token) {
11
+ function connectWSSignal(url, token, options) {
12
+ const signal = options === null || options === void 0 ? void 0 : options.signal;
13
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
14
+ return Promise.reject(signal.reason);
15
+ }
16
+ let onAbort = null;
11
17
  let handler = null;
12
18
  let errorHandler = null;
13
19
  const websocket = new WebSocket(`${url}?token=${token}`);
14
20
  return new Promise((resolve, reject) => {
21
+ onAbort = () => {
22
+ websocket.close();
23
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
24
+ };
15
25
  handler = () => {
16
26
  resolve(websocket);
17
27
  };
18
28
  errorHandler = reject;
29
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
19
30
  websocket.addEventListener("open", handler);
20
31
  websocket.addEventListener("error", errorHandler);
21
32
  }).finally(() => {
33
+ if (onAbort) {
34
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
35
+ }
22
36
  if (handler) {
23
37
  websocket.removeEventListener("open", handler);
24
38
  }
@@ -1,6 +1,12 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * ルームを生成する
3
4
  * @param websocket WebSocketコネクション
5
+ * @param options オプション
6
+ * @param options.websocket WebSocketコネクション
7
+ * @param options.signal Promise強制終了用シグナル
4
8
  * @returns 成功したらルームID、失敗したらnull
5
9
  */
6
- export declare const createRoom: (websocket: WebSocket) => Promise<string | null>;
10
+ export declare const createRoom: (options: {
11
+ websocket: WebSocket;
12
+ } & Partial<SignalContainer>) => Promise<string | null>;
@@ -7,11 +7,24 @@ const send_to_ws_signal_1 = require("./send-to-ws-signal");
7
7
  /**
8
8
  * ルームを生成する
9
9
  * @param websocket WebSocketコネクション
10
+ * @param options オプション
11
+ * @param options.websocket WebSocketコネクション
12
+ * @param options.signal Promise強制終了用シグナル
10
13
  * @returns 成功したらルームID、失敗したらnull
11
14
  */
12
- const createRoom = (websocket) => {
15
+ const createRoom = (options) => {
16
+ const { websocket, signal } = options;
13
17
  let handler = null;
14
- return new Promise((resolve) => {
18
+ let onAbort = null;
19
+ return new Promise((resolve, reject) => {
20
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
21
+ reject(signal.reason);
22
+ return;
23
+ }
24
+ onAbort = () => {
25
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
26
+ };
27
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
15
28
  handler = (event) => {
16
29
  const parsedData = (0, parse_1.parseJSON)(event.data);
17
30
  const parsedRoomCreationSuccessSchema = room_creation_result_1.RoomCreationSuccessSchema.safeParse(parsedData);
@@ -32,6 +45,9 @@ const createRoom = (websocket) => {
32
45
  if (handler) {
33
46
  websocket.removeEventListener("message", handler);
34
47
  }
48
+ if (onAbort) {
49
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
50
+ }
35
51
  });
36
52
  };
37
53
  exports.createRoom = createRoom;
@@ -1,11 +1,13 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * シグナリングチャネルを削除する
3
4
  * @param options オプション
4
5
  * @param options.websocket WebSocketコネクション
5
6
  * @param options.signalingID 削除するシグナリングチャネルのID
7
+ * @param options.signal Promise強制終了用シグナル
6
8
  * @return シグナリングチャネルの削除に成功したらtrue、失敗したらfalse
7
9
  */
8
10
  export declare const deleteSignalingChannel: (options: {
9
11
  websocket: WebSocket;
10
12
  signalingID: string;
11
- }) => Promise<boolean>;
13
+ } & Partial<SignalContainer>) => Promise<boolean>;
@@ -10,12 +10,22 @@ const send_to_ws_signal_1 = require("./send-to-ws-signal");
10
10
  * @param options オプション
11
11
  * @param options.websocket WebSocketコネクション
12
12
  * @param options.signalingID 削除するシグナリングチャネルのID
13
+ * @param options.signal Promise強制終了用シグナル
13
14
  * @return シグナリングチャネルの削除に成功したらtrue、失敗したらfalse
14
15
  */
15
16
  const deleteSignalingChannel = (options) => {
16
- const { websocket, signalingID } = options;
17
+ const { websocket, signalingID, signal } = options;
17
18
  let handler = null;
18
- return new Promise((resolve) => {
19
+ let onAbort = null;
20
+ return new Promise((resolve, reject) => {
21
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
22
+ reject(signal.reason);
23
+ return;
24
+ }
25
+ onAbort = () => {
26
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
27
+ };
28
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
19
29
  handler = (event) => {
20
30
  const parsedData = (0, parse_1.parseJSON)(event.data);
21
31
  const deleteSignalingChannelAccepted = delete_signaling_channel_accepted_1.DeleteSignalingChannelAcceptedSchema.safeParse(parsedData);
@@ -38,6 +48,9 @@ const deleteSignalingChannel = (options) => {
38
48
  if (handler) {
39
49
  websocket.removeEventListener("message", handler);
40
50
  }
51
+ if (onAbort) {
52
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
53
+ }
41
54
  });
42
55
  };
43
56
  exports.deleteSignalingChannel = deleteSignalingChannel;
@@ -1,12 +1,14 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  import { JoinRoomAccepted } from "./response/join-room-accepted";
2
3
  /**
3
4
  * ルームに参加する
4
5
  * @param options オプション
5
6
  * @param options.websocket WebSocketコネクション
6
7
  * @param options.roomID 参加するルームのID
8
+ * @param options.signal Promise強制終了用シグナル
7
9
  * @return ルームへの参加に成功したらJoinRoomAccepted、失敗したらnull
8
10
  */
9
11
  export declare const joinRoom: (options: {
10
12
  websocket: WebSocket;
11
13
  roomID: string;
12
- }) => Promise<JoinRoomAccepted | null>;
14
+ } & Partial<SignalContainer>) => Promise<JoinRoomAccepted | null>;
@@ -10,12 +10,22 @@ const send_to_ws_signal_1 = require("./send-to-ws-signal");
10
10
  * @param options オプション
11
11
  * @param options.websocket WebSocketコネクション
12
12
  * @param options.roomID 参加するルームのID
13
+ * @param options.signal Promise強制終了用シグナル
13
14
  * @return ルームへの参加に成功したらJoinRoomAccepted、失敗したらnull
14
15
  */
15
16
  const joinRoom = (options) => {
16
- const { websocket, roomID } = options;
17
+ const { websocket, roomID, signal } = options;
17
18
  let handler = null;
18
- return new Promise((resolve) => {
19
+ let onAbort = null;
20
+ return new Promise((resolve, reject) => {
21
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
22
+ reject(signal.reason);
23
+ return;
24
+ }
25
+ onAbort = () => {
26
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
27
+ };
28
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
19
29
  handler = (event) => {
20
30
  const parsedData = (0, parse_1.parseJSON)(event.data);
21
31
  const parsedJoinRoomAccepted = join_room_accepted_1.JoinRoomAcceptedSchema.safeParse(parsedData);
@@ -35,6 +45,9 @@ const joinRoom = (options) => {
35
45
  if (handler) {
36
46
  websocket.removeEventListener("message", handler);
37
47
  }
48
+ if (onAbort) {
49
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
50
+ }
38
51
  });
39
52
  };
40
53
  exports.joinRoom = joinRoom;
@@ -1,6 +1,11 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * ホストがマッチングするまで待機する
3
- * @param websocket WebSocketコネクション
4
+ * @param options オプション
5
+ * @param options.websocket WebSocketコネクション
6
+ * @param options.signal Promise強制終了用シグナル
4
7
  * @returns シグナリングID
5
8
  */
6
- export declare const waitUntilMatching: (websocket: WebSocket) => Promise<string>;
9
+ export declare const waitUntilMatching: (options: {
10
+ websocket: WebSocket;
11
+ } & Partial<SignalContainer>) => Promise<string>;
@@ -5,12 +5,24 @@ const parse_1 = require("../json/parse");
5
5
  const matching_1 = require("./response/matching");
6
6
  /**
7
7
  * ホストがマッチングするまで待機する
8
- * @param websocket WebSocketコネクション
8
+ * @param options オプション
9
+ * @param options.websocket WebSocketコネクション
10
+ * @param options.signal Promise強制終了用シグナル
9
11
  * @returns シグナリングID
10
12
  */
11
- const waitUntilMatching = (websocket) => {
13
+ const waitUntilMatching = (options) => {
14
+ const { websocket, signal } = options;
12
15
  let handler = null;
13
- return new Promise((resolve) => {
16
+ let onAbort = null;
17
+ return new Promise((resolve, reject) => {
18
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
19
+ reject(signal.reason);
20
+ return;
21
+ }
22
+ onAbort = () => {
23
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
24
+ };
25
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
14
26
  handler = (event) => {
15
27
  const parsedData = (0, parse_1.parseJSON)(event.data);
16
28
  const parsedMatching = matching_1.MatchingSchema.safeParse(parsedData);
@@ -24,6 +36,9 @@ const waitUntilMatching = (websocket) => {
24
36
  if (handler) {
25
37
  websocket.removeEventListener("message", handler);
26
38
  }
39
+ if (onAbort) {
40
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
41
+ }
27
42
  });
28
43
  };
29
44
  exports.waitUntilMatching = waitUntilMatching;
@@ -1,6 +1,11 @@
1
+ import { SignalContainer } from "../abort-controller/signal-container";
1
2
  /**
2
3
  * 相手からSDPを受信するまで待機する
3
- * @param websocket WebSocketコネクション
4
+ * @param options オプション
5
+ * @param options.websocket WebSocketコネクション
6
+ * @param options.signal Promise強制終了用シグナル
4
7
  * @returns 受信したSDP
5
8
  */
6
- export declare const waitUntilSDPReceive: (websocket: WebSocket) => Promise<RTCSessionDescriptionInit>;
9
+ export declare const waitUntilSDPReceive: (options: {
10
+ websocket: WebSocket;
11
+ } & Partial<SignalContainer>) => Promise<RTCSessionDescriptionInit>;
@@ -6,17 +6,30 @@ const receive_remote_sdp_1 = require("./response/receive-remote-sdp");
6
6
  const send_sdp_rejected_1 = require("./response/send-sdp-rejected");
7
7
  /**
8
8
  * 相手からSDPを受信するまで待機する
9
- * @param websocket WebSocketコネクション
9
+ * @param options オプション
10
+ * @param options.websocket WebSocketコネクション
11
+ * @param options.signal Promise強制終了用シグナル
10
12
  * @returns 受信したSDP
11
13
  */
12
- const waitUntilSDPReceive = (websocket) => {
14
+ const waitUntilSDPReceive = (options) => {
15
+ const { websocket, signal } = options;
13
16
  let handler = null;
17
+ let onAbort = null;
14
18
  return new Promise((resolve, reject) => {
19
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
20
+ reject(signal.reason);
21
+ return;
22
+ }
23
+ onAbort = () => {
24
+ reject(signal === null || signal === void 0 ? void 0 : signal.reason);
25
+ };
26
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort);
15
27
  handler = (event) => {
16
28
  const parsedData = (0, parse_1.parseJSON)(event.data);
17
29
  const remoteSDP = receive_remote_sdp_1.ReceiveRemoteSDPSchema.safeParse(parsedData);
18
30
  if (remoteSDP.success) {
19
31
  resolve(remoteSDP.data.sdp);
32
+ return;
20
33
  }
21
34
  const sendSDPRejected = send_sdp_rejected_1.SendSDPRejectedSchema.safeParse(parsedData);
22
35
  if (sendSDPRejected.success) {
@@ -28,6 +41,9 @@ const waitUntilSDPReceive = (websocket) => {
28
41
  if (handler) {
29
42
  websocket.removeEventListener("message", handler);
30
43
  }
44
+ if (onAbort) {
45
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
46
+ }
31
47
  });
32
48
  };
33
49
  exports.waitUntilSDPReceive = waitUntilSDPReceive;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gbraver-burst-network/anonymous-browser-sdk",
3
3
  "description": "gbraver burst anonymous browser sdk",
4
- "version": "2.3.0",
4
+ "version": "2.5.0-beta.0",
5
5
  "author": "Y.Takeuchi",
6
6
  "bugs": {
7
7
  "url": "https://github.com/kaidouji85/gbraver-burst-network/issues",
@@ -13,15 +13,15 @@
13
13
  },
14
14
  "devDependencies": {
15
15
  "@eslint/js": "^10.0.1",
16
- "dependency-cruiser": "^18.5.0",
17
- "eslint": "^10.12.0",
16
+ "dependency-cruiser": "^18.7.0",
17
+ "eslint": "^10.13.0",
18
18
  "eslint-plugin-simple-import-sort": "^14.0.0",
19
19
  "gbraver-burst-core": "^1.45.0",
20
20
  "npm-run-all": "^4.1.5",
21
- "prettier": "^3.9.9",
21
+ "prettier": "^3.9.10",
22
22
  "rimraf": "^6.1.3",
23
- "typescript-eslint": "^8.71.1",
24
- "zod": "^4.6.5"
23
+ "typescript-eslint": "^8.72.0",
24
+ "zod": "^4.6.7"
25
25
  },
26
26
  "files": [
27
27
  "lib"
@@ -35,7 +35,7 @@
35
35
  "main": "lib/index.js",
36
36
  "peerDependencies": {
37
37
  "gbraver-burst-core": "^1.45.0",
38
- "zod": "^4.6.5"
38
+ "zod": "^4.6.7"
39
39
  },
40
40
  "repository": "https://github.com/kaidouji85/gbraver-burst-network/tree/develop/packages/anonymous-browser-sdk",
41
41
  "scripts": {