floating-live 0.12.1 → 0.14.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 (63) hide show
  1. package/README.md +7 -8
  2. package/index.d.ts +2 -2
  3. package/index.js +2 -2
  4. package/package.json +4 -2
  5. package/plugin/acfun/acfunLive.d.ts +3 -3
  6. package/plugin/acfun/acfunLive.js +6 -6
  7. package/plugin/acfun/index.d.ts +1 -0
  8. package/plugin/acfun/index.js +3 -2
  9. package/plugin/bilibili/index.d.ts +1 -0
  10. package/plugin/bilibili/index.js +17 -4
  11. package/plugin/bilibili/parser.d.ts +6 -0
  12. package/plugin/bilibili/{bilibiliLive.js → parser.js} +117 -230
  13. package/plugin/bilibili/room.d.ts +77 -0
  14. package/plugin/bilibili/room.js +261 -0
  15. package/plugin/bilibili/types.d.ts +424 -0
  16. package/plugin/bilibili/utils.d.ts +16 -0
  17. package/plugin/bilibili/utils.js +140 -0
  18. package/plugin/chatPrint/chatPrint.d.ts +2 -2
  19. package/plugin/chatPrint/chatPrint.js +3 -3
  20. package/plugin/chatPrint/index.d.ts +1 -0
  21. package/plugin/chatPrint/index.js +2 -1
  22. package/plugin/consoleEvent/index.d.ts +1 -0
  23. package/plugin/consoleEvent/index.js +16 -21
  24. package/plugin/msgSave/index.d.ts +3 -1
  25. package/plugin/msgSave/index.js +25 -30
  26. package/plugin/msgSave/msgSave.d.ts +5 -5
  27. package/plugin/msgSave/msgSave.js +25 -9
  28. package/src/abstract/LiveRoom.d.ts +44 -0
  29. package/src/{lib → abstract}/LiveRoom.js +12 -7
  30. package/src/{lib → abstract}/Reglist.d.ts +2 -0
  31. package/src/{lib → abstract}/Reglist.js +4 -0
  32. package/src/index.d.ts +17 -46
  33. package/src/index.js +24 -81
  34. package/src/module/ModAuth.d.ts +8 -0
  35. package/src/module/ModAuth.js +28 -0
  36. package/src/module/ModCommand.d.ts +9 -0
  37. package/src/module/ModCommand.js +19 -0
  38. package/src/module/ModMessage.d.ts +9 -0
  39. package/src/module/ModMessage.js +16 -0
  40. package/src/module/{Plugin.d.ts → ModPlugin.d.ts} +5 -11
  41. package/src/module/ModPlugin.js +63 -0
  42. package/src/module/ModRooms.d.ts +37 -0
  43. package/src/module/ModRooms.js +159 -0
  44. package/src/module/ModState.d.ts +6 -0
  45. package/src/module/ModState.js +17 -0
  46. package/src/types/index.d.ts +1 -2
  47. package/src/types/index.js +1 -2
  48. package/src/types/message.d.ts +210 -0
  49. package/src/types/plugin.d.ts +4 -5
  50. package/src/types/room.d.ts +48 -2
  51. package/src/utils.d.ts +2 -2
  52. package/test/type/bilibili_getInfoByRoom.d.ts +492 -0
  53. package/plugin/bilibili/bilibiliLive.d.ts +0 -58
  54. package/src/lib/LiveRoom.d.ts +0 -89
  55. package/src/module/Command.d.ts +0 -3
  56. package/src/module/Command.js +0 -6
  57. package/src/module/Plugin.js +0 -82
  58. package/src/module/Room.d.ts +0 -26
  59. package/src/module/Room.js +0 -118
  60. package/src/types/message/AttributeInfo.d.ts +0 -67
  61. package/src/types/message/MessageData.d.ts +0 -167
  62. /package/{src/types/message/AttributeInfo.js → plugin/bilibili/types.js} +0 -0
  63. /package/src/types/{message/MessageData.js → message.js} +0 -0
package/src/index.d.ts CHANGED
@@ -1,59 +1,30 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from "events";
3
- import { Reglist } from "./lib/Reglist";
4
- import { LiveRoom } from "./lib/LiveRoom";
5
- import { MessageData } from "./types";
6
- import { PluginHandler } from "./module/Plugin";
7
- import { RoomController } from "./module/Room";
3
+ import { ModPlugin } from "./module/ModPlugin";
4
+ import { ModRooms } from "./module/ModRooms";
5
+ import { ModAuth } from "./module/ModAuth";
6
+ import { ModMessage } from "./module/ModMessage";
7
+ import { ModState } from "./module/ModState";
8
+ import ModCommand from "./module/ModCommand";
8
9
  export declare class FloatingLive extends EventEmitter {
9
10
  /** 房间控制模块 */
10
- room: RoomController;
11
+ rooms: ModRooms;
12
+ /** 消息处理模块 */
13
+ message: ModMessage;
14
+ /** 用户登录凭据模块 */
15
+ auth: ModAuth;
11
16
  /** 插件处理模块 */
12
- plugin: PluginHandler<this>;
13
- helper: {
14
- /** 房间生成器 */
15
- roomGenerator: Reglist<(id: string | number, open?: boolean) => LiveRoom>;
16
- /** 消息处理 */
17
- messageHandler: Reglist<(msg: MessageData) => void>;
18
- /** 插件销毁 */
19
- pluginDestory: Reglist<() => void>;
20
- /** 添加插件 */
21
- pluginAddHandler: Reglist<(name: string) => void>;
22
- /** 移除插件 */
23
- pluginRemoveHandler: Reglist<(name: string) => void>;
24
- };
17
+ plugin: ModPlugin<this>;
18
+ /** 命令模块 */
19
+ command: ModCommand;
20
+ /** 状态模块 */
21
+ state: ModState;
25
22
  /** 插件事件注册表 */
26
23
  private regEventMap;
27
- /** 状态 */
28
- private status;
29
- get started(): boolean;
30
- get timestamp(): number;
31
24
  constructor();
32
25
  /** 初始化 */
33
26
  private init;
34
- /** 开始 */
35
- start(): void;
36
- /** 结束 */
37
- end(): void;
38
- /** 添加房间 */
39
- addRoom({ platform, id }: {
40
- platform: string;
41
- id: string | number;
42
- }, open?: boolean, config?: {}): void;
43
- /** 移除房间 */
44
- removeRoom(roomKey: string): void;
45
- /** 添加房间实例 */
46
- addLiveRoom(room: LiveRoom): void;
47
- /** 打开房间 */
48
- openRoom(roomKey: string): void;
49
- /** 关闭房间 */
50
- closeRoom(roomKey: string): void;
51
- /** 打开所有房间 */
52
- openAllRooms(): void;
53
- /** 关闭所有房间 */
54
- closeAllRooms(): void;
55
- /** 更新房间信息 */
56
- updateRoomInfo(roomKey: string): void;
57
27
  /** 重写事件监听 */
58
28
  on(eventName: string, listener: (...args: any[]) => void): this;
29
+ emit(eventName: string | symbol, ...args: any[]): boolean;
59
30
  }
package/src/index.js CHANGED
@@ -1,102 +1,38 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.FloatingLive = void 0;
4
7
  const events_1 = require("events");
5
- const Reglist_1 = require("./lib/Reglist");
6
- const Plugin_1 = require("./module/Plugin");
7
- const Room_1 = require("./module/Room");
8
+ const ModPlugin_1 = require("./module/ModPlugin");
9
+ const ModRooms_1 = require("./module/ModRooms");
10
+ const ModAuth_1 = require("./module/ModAuth");
11
+ const ModMessage_1 = require("./module/ModMessage");
12
+ const ModState_1 = require("./module/ModState");
13
+ const ModCommand_1 = __importDefault(require("./module/ModCommand"));
8
14
  class FloatingLive extends events_1.EventEmitter {
9
15
  constructor() {
10
16
  super();
11
17
  /** 插件事件注册表 */
12
18
  this.regEventMap = new Map();
13
- /** 状态 */
14
- this.status = {
15
- started: false,
16
- timestamp: 0,
17
- };
18
- this.helper = {
19
- roomGenerator: new Reglist_1.Reglist(this, "roomGenerator"),
20
- messageHandler: new Reglist_1.Reglist(this, "messageHandler"),
21
- pluginDestory: new Reglist_1.Reglist(this, "pluginDestory"),
22
- pluginAddHandler: new Reglist_1.Reglist(this, "pluginAddHandler"),
23
- pluginRemoveHandler: new Reglist_1.Reglist(this, "pluginRemoveHandler"),
24
- };
25
- this.room = new Room_1.RoomController(this);
26
- this.plugin = new Plugin_1.PluginHandler(this);
19
+ this.command = new ModCommand_1.default(this);
20
+ this.state = new ModState_1.ModState(this);
21
+ this.plugin = new ModPlugin_1.ModPlugin(this);
22
+ this.rooms = new ModRooms_1.ModRooms(this);
23
+ this.message = new ModMessage_1.ModMessage(this);
24
+ this.auth = new ModAuth_1.ModAuth(this);
27
25
  this.init();
28
26
  }
29
- get started() {
30
- return this.status.started;
31
- }
32
- get timestamp() {
33
- return this.status.timestamp;
34
- }
35
27
  /** 初始化 */
36
28
  init() {
37
- // 监听到有房间打开,则开始记录
38
- this.on("room_open", () => {
39
- this.started || this.start();
40
- });
41
29
  // 设置在插件卸载时移除由插件注册的事件
42
- this.helper.pluginRemoveHandler.register("removePluginEvent", (name) => {
30
+ this.on("plugin:remove", (name) => {
43
31
  this.regEventMap.get(name)?.forEach(([eventName, listener]) => {
44
32
  this.removeListener(eventName, listener);
45
33
  });
46
34
  });
47
35
  }
48
- /** 开始 */
49
- start() {
50
- this.status.started = true;
51
- this.status.timestamp = Date.now();
52
- this.emit("start", this.timestamp);
53
- }
54
- /** 结束 */
55
- end() {
56
- this.closeAllRooms();
57
- this.status.started = false;
58
- this.emit("end", this.timestamp);
59
- this.status.timestamp = 0;
60
- }
61
- /** 添加房间 */
62
- addRoom({ platform, id }, open, config) {
63
- let generated = this.room.generate({ platform, id }, open);
64
- if (generated) {
65
- this.room.add(generated);
66
- }
67
- }
68
- /** 移除房间 */
69
- removeRoom(roomKey) {
70
- this.room.remove(roomKey);
71
- }
72
- /** 添加房间实例 */
73
- addLiveRoom(room) {
74
- this.room.add(room);
75
- }
76
- /** 打开房间 */
77
- openRoom(roomKey) {
78
- this.room.open(roomKey);
79
- }
80
- /** 关闭房间 */
81
- closeRoom(roomKey) {
82
- this.room.close(roomKey);
83
- }
84
- /** 打开所有房间 */
85
- openAllRooms() {
86
- this.room.keyList.forEach((key) => {
87
- this.room.open(key);
88
- });
89
- }
90
- /** 关闭所有房间 */
91
- closeAllRooms() {
92
- this.room.keyList.forEach((key) => {
93
- this.room.close(key);
94
- });
95
- }
96
- /** 更新房间信息 */
97
- updateRoomInfo(roomKey) {
98
- this.room.update(roomKey);
99
- }
100
36
  /** 重写事件监听 */
101
37
  on(eventName, listener) {
102
38
  super.on(eventName, listener);
@@ -105,9 +41,16 @@ class FloatingLive extends events_1.EventEmitter {
105
41
  if (!this.regEventMap.has(this.plugin.currentPlugin)) {
106
42
  this.regEventMap.set(this.plugin.currentPlugin, []);
107
43
  }
108
- this.regEventMap.get(this.plugin.currentPlugin)?.push([eventName, listener]);
44
+ this.regEventMap
45
+ .get(this.plugin.currentPlugin)
46
+ ?.push([eventName, listener]);
109
47
  }
110
48
  return this;
111
49
  }
50
+ emit(eventName, ...args) {
51
+ const result = super.emit(eventName, ...args);
52
+ super.emit("event", eventName, ...args);
53
+ return result;
54
+ }
112
55
  }
113
56
  exports.FloatingLive = FloatingLive;
@@ -0,0 +1,8 @@
1
+ import { Reglist } from "../abstract/Reglist";
2
+ import { FloatingLive } from "..";
3
+ export declare class ModAuth {
4
+ options: Reglist<object>;
5
+ main: FloatingLive;
6
+ constructor(main: FloatingLive);
7
+ set(name: string, auth: string): void;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModAuth = void 0;
4
+ const Reglist_1 = require("../abstract/Reglist");
5
+ class ModAuth {
6
+ constructor(main) {
7
+ this.options = new Reglist_1.Reglist(main, "auth.options");
8
+ this.main = main;
9
+ this.main.state.register("auth", () => {
10
+ const options = {};
11
+ this.options.forEach((val, key) => {
12
+ options[key] = val;
13
+ });
14
+ return {
15
+ options: options,
16
+ };
17
+ });
18
+ this.main.command.batchRegister({
19
+ auth: (platform, auth) => {
20
+ this.set(platform, auth);
21
+ },
22
+ });
23
+ }
24
+ set(name, auth) {
25
+ this.main.rooms.setAuth(name, auth);
26
+ }
27
+ }
28
+ exports.ModAuth = ModAuth;
@@ -0,0 +1,9 @@
1
+ import { FloatingLive } from "..";
2
+ import { Reglist } from "../abstract/Reglist";
3
+ export default class ModCommand extends Reglist<(e: any, ...args: any[]) => any> {
4
+ constructor(main: FloatingLive);
5
+ /** 批量注册命令 */
6
+ batchRegister(list: Record<string, (...args: any) => any>): void;
7
+ /** 执行命令 */
8
+ execute(name: string, ...args: any[]): any;
9
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Reglist_1 = require("../abstract/Reglist");
4
+ class ModCommand extends Reglist_1.Reglist {
5
+ constructor(main) {
6
+ super(main, "command");
7
+ }
8
+ /** 批量注册命令 */
9
+ batchRegister(list) {
10
+ for (const key in list) {
11
+ this.register(key, list[key]);
12
+ }
13
+ }
14
+ /** 执行命令 */
15
+ execute(name, ...args) {
16
+ return this.get(name)?.(null, ...args);
17
+ }
18
+ }
19
+ exports.default = ModCommand;
@@ -0,0 +1,9 @@
1
+ import { Message } from "../types/message";
2
+ import { FloatingLive } from "..";
3
+ import { Reglist } from "../abstract/Reglist";
4
+ export declare class ModMessage {
5
+ main: FloatingLive;
6
+ handler: Reglist<(msg: Message.All) => void>;
7
+ constructor(main: FloatingLive);
8
+ handle(msg: Message.All): void;
9
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModMessage = void 0;
4
+ const Reglist_1 = require("../abstract/Reglist");
5
+ class ModMessage {
6
+ constructor(main) {
7
+ this.main = main;
8
+ this.handler = new Reglist_1.Reglist(main, "message.handler");
9
+ }
10
+ handle(msg) {
11
+ this.handler.getList().forEach((handler) => {
12
+ handler(msg);
13
+ });
14
+ }
15
+ }
16
+ exports.ModMessage = ModMessage;
@@ -1,26 +1,20 @@
1
1
  import { FloatingLive } from "..";
2
2
  import { FloatingLivePlugin } from "../types/plugin";
3
- export declare class PluginHandler<T extends FloatingLive> {
3
+ export declare class ModPlugin<T extends FloatingLive> {
4
4
  private current;
5
5
  /** 插件列表 */
6
6
  private list;
7
7
  private pluginEvent;
8
8
  private main;
9
- private helper;
9
+ private exports;
10
10
  constructor(main: T);
11
11
  /** 获取当前安装插件 */
12
12
  get currentPlugin(): string | null;
13
13
  addPluginEvent(eventName: string, listener: (...args: any[]) => void): void;
14
- /** 获取插件操作对象 */
15
- get(name: string): {
16
- [key: string]: any;
17
- } | undefined;
14
+ /** 访问插件操作对象 */
15
+ access(name: string): object | undefined;
18
16
  /** 注册插件 */
19
- register(name: string, plugin: FloatingLivePlugin<T>, config?: {
20
- [key: string]: any;
21
- }): void | {
22
- [key: string]: any;
23
- };
17
+ register(pluginFunc: FloatingLivePlugin<T>): object | undefined;
24
18
  /** 移除插件 */
25
19
  unregister(name: string): void;
26
20
  }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModPlugin = void 0;
4
+ class ModPlugin {
5
+ constructor(main) {
6
+ this.current = null;
7
+ /** 插件列表 */
8
+ this.list = new Map();
9
+ this.pluginEvent = new Map();
10
+ this.exports = new Map();
11
+ this.main = main;
12
+ }
13
+ /** 获取当前安装插件 */
14
+ get currentPlugin() {
15
+ return this.current;
16
+ }
17
+ addPluginEvent(eventName, listener) {
18
+ if (this.currentPlugin) {
19
+ if (!this.pluginEvent.has(this.currentPlugin)) {
20
+ this.pluginEvent.set(this.currentPlugin, []);
21
+ }
22
+ this.pluginEvent.get(this.currentPlugin)?.push([eventName, listener]);
23
+ }
24
+ }
25
+ /** 访问插件操作对象 */
26
+ access(name) {
27
+ return this.exports.get(name);
28
+ }
29
+ /** 注册插件 */
30
+ register(pluginFunc) {
31
+ // 执行插件函数
32
+ const plugin = pluginFunc();
33
+ const name = plugin.name;
34
+ if (this.list.has(name)) {
35
+ this.main.emit("plugin:duplicate", name);
36
+ return;
37
+ }
38
+ this.list.set(name, plugin);
39
+ this.current = name;
40
+ // 调用register函数,并保存获取值
41
+ let pluginExpose = plugin.register?.(this.main) || {};
42
+ this.exports.set(name, pluginExpose);
43
+ this.main.emit("plugin:add", name);
44
+ this.current = null;
45
+ return pluginExpose;
46
+ }
47
+ /** 移除插件 */
48
+ unregister(name) {
49
+ const plugin = this.list.get(name);
50
+ // 检测插件是否存在
51
+ if (!plugin) {
52
+ this.main.emit("plugin:unexist", name);
53
+ return;
54
+ }
55
+ // 获取该插件的销毁函数
56
+ plugin.destroy?.();
57
+ // 从列表中移除插件
58
+ this.list.delete(name);
59
+ // 移除插件注册
60
+ this.main.emit("plugin:remove", name);
61
+ }
62
+ }
63
+ exports.ModPlugin = ModPlugin;
@@ -0,0 +1,37 @@
1
+ import { Reglist } from "../abstract/Reglist";
2
+ import { LiveRoom } from "../abstract/LiveRoom";
3
+ import { FloatingLive } from "..";
4
+ import { RoomInfo } from "../types";
5
+ /** 直播间监听实例控制器 */
6
+ export declare class ModRooms {
7
+ readonly main: FloatingLive;
8
+ private roomMap;
9
+ private auths;
10
+ private configs;
11
+ generator: Reglist<(id: string | number, open?: boolean, config?: object) => LiveRoom>;
12
+ constructor(main: FloatingLive);
13
+ /** 设置登录凭据 */
14
+ setAuth(platform: string, auth: string): void;
15
+ /** 设置房间配置 */
16
+ setConfig(platform: string, config: any): void;
17
+ /** 生成房间 */
18
+ generate(platform: string, id: string | number, open?: boolean): LiveRoom | undefined;
19
+ /** 添加房间监听实例 */
20
+ addRoom(room: LiveRoom, open?: boolean): void;
21
+ /** 添加房间 */
22
+ add(platform: string, id: number, open: boolean): void;
23
+ /** 移除房间 */
24
+ remove(roomKey: string): void;
25
+ /** 获取房间 */
26
+ get(roomKey: string): LiveRoom | undefined;
27
+ /** 获取房间信息 */
28
+ info(roomKey: string): RoomInfo | undefined;
29
+ /** 更新房间信息 */
30
+ update(roomKey: string): void;
31
+ /** 获取roomKey列表 */
32
+ get keys(): Array<string>;
33
+ /** 打开房间连接 */
34
+ open(roomKey: string): void;
35
+ /** 关闭房间连接 */
36
+ close(roomKey: string): void;
37
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModRooms = void 0;
4
+ const Reglist_1 = require("../abstract/Reglist");
5
+ /** 直播间监听实例控制器 */
6
+ class ModRooms {
7
+ constructor(main) {
8
+ this.roomMap = new Map();
9
+ this.auths = new Map();
10
+ this.configs = new Map();
11
+ this.main = main;
12
+ this.generator = new Reglist_1.Reglist(this.main, "rooms.generator");
13
+ this.main.state.register("rooms", () => {
14
+ const list = [];
15
+ this.roomMap.forEach((room) => {
16
+ list.push(room.info);
17
+ });
18
+ return list;
19
+ });
20
+ this.main.command.batchRegister({
21
+ add: (platform, id, open) => {
22
+ this.add(platform, id, open);
23
+ },
24
+ remove: (key) => {
25
+ this.remove(key);
26
+ },
27
+ open: (key) => {
28
+ this.open(key);
29
+ },
30
+ close: (key) => {
31
+ this.close(key);
32
+ },
33
+ update: (key) => {
34
+ this.update(key);
35
+ },
36
+ });
37
+ }
38
+ /** 设置登录凭据 */
39
+ setAuth(platform, auth) {
40
+ this.auths.set(platform, auth);
41
+ }
42
+ /** 设置房间配置 */
43
+ setConfig(platform, config) {
44
+ this.configs.set(platform, config);
45
+ }
46
+ /** 生成房间 */
47
+ generate(platform, id, open) {
48
+ platform = platform.toLowerCase();
49
+ const config = this.configs.get(platform) || {};
50
+ const auth = this.auths.get(platform);
51
+ let platformGenerator = this.generator.get(platform);
52
+ if (platformGenerator) {
53
+ return platformGenerator(id, open, { auth, ...config });
54
+ }
55
+ else {
56
+ this.main.emit("room:unknown_platform", platform);
57
+ }
58
+ }
59
+ /** 添加房间监听实例 */
60
+ addRoom(room, open) {
61
+ let key = room.key;
62
+ if (this.roomMap.has(key)) {
63
+ this.main.emit("room:exist", key);
64
+ return;
65
+ }
66
+ this.roomMap.set(key, room);
67
+ // 添加监听事件
68
+ // 直播消息
69
+ room.on("msg", (data) => {
70
+ this.main.message.handle(data);
71
+ this.main.emit("live:message", data);
72
+ });
73
+ // 直播消息源数据
74
+ room.on("raw", (data, { platform, room }) => {
75
+ this.main.emit("live:raw", data, { platform, room });
76
+ });
77
+ // 连接到直播间
78
+ room.on("connect", () => {
79
+ this.main.emit("room:connect", key);
80
+ });
81
+ // 与直播间的连接已断开
82
+ room.on("disconnect", () => {
83
+ this.main.emit("room:disconnect", key);
84
+ });
85
+ // 获取房间信息
86
+ room.on("info", () => {
87
+ this.main.emit("room:info", key, room.info);
88
+ });
89
+ // 直播展示信息更改
90
+ room.on("detail", (data) => {
91
+ this.main.emit("room:detail", key, data);
92
+ });
93
+ // 直播状态更改
94
+ room.on("status", (status, { id, timestamp }) => {
95
+ this.main.emit("room:status", key, status, { id, timestamp });
96
+ });
97
+ // 统计数据更新
98
+ room.on("stats", (data) => {
99
+ this.main.emit("room:stats", key, data);
100
+ });
101
+ // 房间被打开
102
+ room.on("open", () => {
103
+ this.main.emit("room:open", key, room.info);
104
+ });
105
+ // 房间被关闭
106
+ room.on("close", () => {
107
+ this.main.emit("room:close", key, room.info);
108
+ });
109
+ if (open) {
110
+ room.open();
111
+ }
112
+ this.main.emit("room:add", key, room.info);
113
+ }
114
+ /** 添加房间 */
115
+ add(platform, id, open) {
116
+ const room = this.generate(platform, id, open);
117
+ room && this.addRoom(room);
118
+ }
119
+ /** 移除房间 */
120
+ remove(roomKey) {
121
+ if (!this.roomMap.has(roomKey)) {
122
+ this.main.emit("room:unexist", roomKey);
123
+ return;
124
+ }
125
+ let room = this.roomMap.get(roomKey);
126
+ this.roomMap.delete(roomKey); // 从表中删除房间
127
+ room?.removeAllListeners(); // 移除房间监听实例
128
+ this.main.emit("room:remove", roomKey);
129
+ }
130
+ /** 获取房间 */
131
+ get(roomKey) {
132
+ return this.roomMap.get(roomKey);
133
+ }
134
+ /** 获取房间信息 */
135
+ info(roomKey) {
136
+ let room = this.roomMap.get(roomKey);
137
+ return room ? room.info : undefined;
138
+ }
139
+ /** 更新房间信息 */
140
+ update(roomKey) {
141
+ let room = this.roomMap.get(roomKey);
142
+ room && room.getInfo();
143
+ }
144
+ /** 获取roomKey列表 */
145
+ get keys() {
146
+ return [...this.roomMap.keys()];
147
+ }
148
+ /** 打开房间连接 */
149
+ open(roomKey) {
150
+ let room = this.roomMap.get(roomKey);
151
+ room?.available && !room.opened && room.open();
152
+ }
153
+ /** 关闭房间连接 */
154
+ close(roomKey) {
155
+ let room = this.roomMap.get(roomKey);
156
+ room?.opened && room.close();
157
+ }
158
+ }
159
+ exports.ModRooms = ModRooms;
@@ -0,0 +1,6 @@
1
+ import { FloatingLive } from "..";
2
+ import { Reglist } from "../abstract/Reglist";
3
+ export declare class ModState extends Reglist<() => object> {
4
+ constructor(main: FloatingLive);
5
+ generate(): Record<string, any>;
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModState = void 0;
4
+ const Reglist_1 = require("../abstract/Reglist");
5
+ class ModState extends Reglist_1.Reglist {
6
+ constructor(main) {
7
+ super(main, "state");
8
+ }
9
+ generate() {
10
+ const state = {};
11
+ this.forEach((gen, key) => {
12
+ state[key] = gen();
13
+ });
14
+ return state;
15
+ }
16
+ }
17
+ exports.ModState = ModState;
@@ -1,4 +1,3 @@
1
- export * from "./message/AttributeInfo";
2
- export * from "./message/MessageData";
1
+ export * from "./message";
3
2
  export * from "./plugin";
4
3
  export * from "./room";
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./message/AttributeInfo"), exports);
18
- __exportStar(require("./message/MessageData"), exports);
17
+ __exportStar(require("./message"), exports);
19
18
  __exportStar(require("./plugin"), exports);
20
19
  __exportStar(require("./room"), exports);