@gbraver-burst-network/offline-browser-sdk 1.18.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.
- package/LICENSE.txt +7 -0
- package/Readme.md +11 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +11 -0
- package/lib/offline-browser-sdk-impl.d.ts +26 -0
- package/lib/offline-browser-sdk-impl.js +118 -0
- package/lib/offline-browser-sdk.d.ts +522 -0
- package/lib/offline-browser-sdk.js +12 -0
- package/lib/socket-io-events/game-ended.d.ts +416 -0
- package/lib/socket-io-events/game-ended.js +9 -0
- package/lib/socket-io-events/progressed.d.ts +419 -0
- package/lib/socket-io-events/progressed.js +10 -0
- package/package.json +54 -0
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2025 Y.Takeuchi
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/Readme.md
ADDED
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OfflineBrowserSDK } from "./offline-browser-sdk";
|
|
2
|
+
/** オフライン用ブラウザSDKオプション */
|
|
3
|
+
export type OfflineBrowserSDKOptions = {
|
|
4
|
+
/** バックエンドURL */
|
|
5
|
+
backendURL: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* オフライン用ブラウザSDKを生成する
|
|
9
|
+
* @param options オプション
|
|
10
|
+
* @returns オフライン用ブラウザSDK
|
|
11
|
+
*/
|
|
12
|
+
export declare const createOfflineBrowserSDK: (options: OfflineBrowserSDKOptions) => OfflineBrowserSDK;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOfflineBrowserSDK = void 0;
|
|
4
|
+
const offline_browser_sdk_impl_1 = require("./offline-browser-sdk-impl");
|
|
5
|
+
/**
|
|
6
|
+
* オフライン用ブラウザSDKを生成する
|
|
7
|
+
* @param options オプション
|
|
8
|
+
* @returns オフライン用ブラウザSDK
|
|
9
|
+
*/
|
|
10
|
+
const createOfflineBrowserSDK = (options) => new offline_browser_sdk_impl_1.OfflineBrowserSDKImpl(options);
|
|
11
|
+
exports.createOfflineBrowserSDK = createOfflineBrowserSDK;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ArmdozerId, Command, GameState, PilotId } from "gbraver-burst-core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { BattleInfo, OfflineBrowserSDK } from "./offline-browser-sdk";
|
|
4
|
+
/** オフライン用ブラウザSDK実装 */
|
|
5
|
+
export declare class OfflineBrowserSDKImpl implements OfflineBrowserSDK {
|
|
6
|
+
#private;
|
|
7
|
+
/**
|
|
8
|
+
* コンストラクタ
|
|
9
|
+
* @param options オプション
|
|
10
|
+
* @param options.backendURL バックエンドURL
|
|
11
|
+
*/
|
|
12
|
+
constructor(options: {
|
|
13
|
+
backendURL: string;
|
|
14
|
+
});
|
|
15
|
+
/** @override */
|
|
16
|
+
enterRoom(options: {
|
|
17
|
+
armdozerId: ArmdozerId;
|
|
18
|
+
pilotId: PilotId;
|
|
19
|
+
}): Promise<BattleInfo>;
|
|
20
|
+
/** @override */
|
|
21
|
+
sendCommand(command: Command): Promise<GameState[]>;
|
|
22
|
+
/** @override */
|
|
23
|
+
closeConnection(): void;
|
|
24
|
+
/** @override */
|
|
25
|
+
notifyError(): Observable<unknown>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
12
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
13
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
14
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
20
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
+
};
|
|
22
|
+
var _OfflineBrowserSDKImpl_instances, _OfflineBrowserSDKImpl_backendURL, _OfflineBrowserSDKImpl_socket, _OfflineBrowserSDKImpl_flowId, _OfflineBrowserSDKImpl_error, _OfflineBrowserSDKImpl_ensureSocket;
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.OfflineBrowserSDKImpl = void 0;
|
|
25
|
+
const rxjs_1 = require("rxjs");
|
|
26
|
+
const socket_io_client_1 = require("socket.io-client");
|
|
27
|
+
const offline_browser_sdk_1 = require("./offline-browser-sdk");
|
|
28
|
+
const game_ended_1 = require("./socket-io-events/game-ended");
|
|
29
|
+
const progressed_1 = require("./socket-io-events/progressed");
|
|
30
|
+
/** オフライン用ブラウザSDK実装 */
|
|
31
|
+
class OfflineBrowserSDKImpl {
|
|
32
|
+
/**
|
|
33
|
+
* コンストラクタ
|
|
34
|
+
* @param options オプション
|
|
35
|
+
* @param options.backendURL バックエンドURL
|
|
36
|
+
*/
|
|
37
|
+
constructor(options) {
|
|
38
|
+
_OfflineBrowserSDKImpl_instances.add(this);
|
|
39
|
+
/** バックエンドURL */
|
|
40
|
+
_OfflineBrowserSDKImpl_backendURL.set(this, void 0);
|
|
41
|
+
/** ソケット接続、未作成の場合はnull */
|
|
42
|
+
_OfflineBrowserSDKImpl_socket.set(this, null);
|
|
43
|
+
/** 現在のフローID、バトル以外ではnullがセットされる */
|
|
44
|
+
_OfflineBrowserSDKImpl_flowId.set(this, null);
|
|
45
|
+
/** エラー通知のSubject */
|
|
46
|
+
_OfflineBrowserSDKImpl_error.set(this, void 0);
|
|
47
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_backendURL, options.backendURL, "f");
|
|
48
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_error, new rxjs_1.Subject(), "f");
|
|
49
|
+
}
|
|
50
|
+
/** @override */
|
|
51
|
+
enterRoom(options) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const socket = __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_instances, "m", _OfflineBrowserSDKImpl_ensureSocket).call(this);
|
|
54
|
+
socket.emit("enterRoom", options);
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
socket.once("matched", (data) => {
|
|
57
|
+
const parsedBattleInfo = offline_browser_sdk_1.BattleInfoSchema.safeParse(data);
|
|
58
|
+
if (parsedBattleInfo.success) {
|
|
59
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, parsedBattleInfo.data.flowId, "f");
|
|
60
|
+
resolve(parsedBattleInfo.data);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/** @override */
|
|
67
|
+
sendCommand(command) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
if (!__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_flowId, "f")) {
|
|
70
|
+
throw new Error("Not in battle");
|
|
71
|
+
}
|
|
72
|
+
const socket = __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_instances, "m", _OfflineBrowserSDKImpl_ensureSocket).call(this);
|
|
73
|
+
socket.emit("sendCommand", { command, flowId: __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_flowId, "f") });
|
|
74
|
+
return new Promise((resolve) => {
|
|
75
|
+
socket.once("progressed", (data) => {
|
|
76
|
+
const parsedResult = progressed_1.ProgressedSchema.safeParse(data);
|
|
77
|
+
if (!parsedResult.success) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, parsedResult.data.flowId, "f");
|
|
81
|
+
resolve(parsedResult.data.updatedStateHistory);
|
|
82
|
+
});
|
|
83
|
+
socket.once("gameEnded", (data) => {
|
|
84
|
+
const parsedResult = game_ended_1.GameEndedSchema.safeParse(data);
|
|
85
|
+
if (!parsedResult.success) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, null, "f");
|
|
89
|
+
resolve(parsedResult.data.updatedStateHistory);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** @override */
|
|
95
|
+
closeConnection() {
|
|
96
|
+
if (!__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f")) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f").disconnect();
|
|
100
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_socket, null, "f");
|
|
101
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_flowId, null, "f");
|
|
102
|
+
}
|
|
103
|
+
/** @override */
|
|
104
|
+
notifyError() {
|
|
105
|
+
return __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_error, "f");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.OfflineBrowserSDKImpl = OfflineBrowserSDKImpl;
|
|
109
|
+
_OfflineBrowserSDKImpl_backendURL = new WeakMap(), _OfflineBrowserSDKImpl_socket = new WeakMap(), _OfflineBrowserSDKImpl_flowId = new WeakMap(), _OfflineBrowserSDKImpl_error = new WeakMap(), _OfflineBrowserSDKImpl_instances = new WeakSet(), _OfflineBrowserSDKImpl_ensureSocket = function _OfflineBrowserSDKImpl_ensureSocket() {
|
|
110
|
+
if (__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f")) {
|
|
111
|
+
return __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f");
|
|
112
|
+
}
|
|
113
|
+
__classPrivateFieldSet(this, _OfflineBrowserSDKImpl_socket, (0, socket_io_client_1.io)(__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_backendURL, "f")), "f");
|
|
114
|
+
__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f").on("error", (err) => {
|
|
115
|
+
__classPrivateFieldGet(this, _OfflineBrowserSDKImpl_error, "f").next(err);
|
|
116
|
+
});
|
|
117
|
+
return __classPrivateFieldGet(this, _OfflineBrowserSDKImpl_socket, "f");
|
|
118
|
+
};
|