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
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PluginHandler = void 0;
4
- class PluginHandler {
5
- constructor(main) {
6
- this.current = null;
7
- /** 插件列表 */
8
- this.list = new Map();
9
- this.pluginEvent = new Map();
10
- this.main = main;
11
- this.helper = main.helper;
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
- get(name) {
27
- return this.list.get(name);
28
- }
29
- /** 注册插件 */
30
- register(name, plugin, config) {
31
- if (this.list.has(name)) {
32
- this.main.emit("plugin_duplicate", name);
33
- return;
34
- }
35
- this.current = name;
36
- // 执行插件函数并获取插件操作对象
37
- let pluginObject = plugin();
38
- // 如果插件register函数无法调用,则无法注册插件
39
- if (typeof pluginObject.register != 'function') {
40
- this.main.emit("plugin_invalid", name);
41
- this.current = null;
42
- return;
43
- }
44
- let pluginExpose = pluginObject.register(this.main, config);
45
- this.list.set(name, pluginExpose || {});
46
- // 执行钩子函数
47
- this.helper.pluginAddHandler.getList().forEach(handler => {
48
- handler(name);
49
- });
50
- this.main.emit("plugin_add", name);
51
- this.current = null;
52
- return pluginExpose;
53
- }
54
- /** 移除插件 */
55
- unregister(name) {
56
- // 检测插件是否存在
57
- if (!this.list.has(name)) {
58
- this.main.emit("plugin_unexist", name);
59
- return;
60
- }
61
- // 获取该插件的销毁函数
62
- let destoryFunc = this.helper.pluginDestory.getIdByPlugin(name).map(id => this.helper.pluginDestory.get(id));
63
- // 从列表中移除插件
64
- this.list.delete(name);
65
- // 移除helper注册
66
- this.helper.roomGenerator.unregister(name);
67
- this.helper.messageHandler.unregister(name);
68
- this.helper.pluginAddHandler.unregister(name);
69
- this.helper.pluginRemoveHandler.unregister(name);
70
- this.helper.pluginDestory.unregister(name);
71
- // 执行钩子函数
72
- this.helper.pluginRemoveHandler.getList().forEach(handler => {
73
- handler(name);
74
- });
75
- // 执行销毁函数
76
- destoryFunc.forEach(handler => {
77
- handler?.();
78
- });
79
- this.main.emit("plugin_remove", name);
80
- }
81
- }
82
- exports.PluginHandler = PluginHandler;
@@ -1,26 +0,0 @@
1
- import { LiveRoom } from "../lib/LiveRoom";
2
- import { FloatingLive } from "..";
3
- /** 直播间监听实例控制器 */
4
- export declare class RoomController {
5
- readonly main: FloatingLive;
6
- private roomMap;
7
- constructor(main: FloatingLive);
8
- generate(r: {
9
- platform: string;
10
- id: string | number;
11
- }, open?: boolean): LiveRoom | undefined;
12
- /** 添加房间监听对象 */
13
- add(room: LiveRoom, open?: boolean): void;
14
- /** 移除房间 */
15
- remove(roomKey: string): void;
16
- /** 获取房间 */
17
- get(roomKey: string): LiveRoom | undefined;
18
- /** 获取房间信息 */
19
- info(roomKey: string): import("../lib/LiveRoom").RoomInfo | undefined;
20
- /** 更新房间信息 */
21
- update(roomKey: string): void;
22
- /** 获取roomKey列表 */
23
- get keyList(): Array<string>;
24
- open(roomKey: string): void;
25
- close(roomKey: string): void;
26
- }
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RoomController = void 0;
4
- /** 直播间监听实例控制器 */
5
- class RoomController {
6
- constructor(main) {
7
- this.roomMap = new Map();
8
- this.main = main;
9
- }
10
- generate(r, open) {
11
- let platform;
12
- let id;
13
- platform = r.platform.toLowerCase();
14
- id = r.id;
15
- let platformGenerator = this.main.helper.roomGenerator.get(platform);
16
- if (platformGenerator) {
17
- return platformGenerator(id, open);
18
- }
19
- else {
20
- this.main.emit("room_unknown_platform", platform);
21
- }
22
- }
23
- /** 添加房间监听对象 */
24
- add(room, open) {
25
- let key = room.key;
26
- if (this.roomMap.has(key)) {
27
- this.main.emit("room_exist", key);
28
- return;
29
- }
30
- this.roomMap.set(key, room);
31
- // 添加监听事件
32
- // 直播消息
33
- room.on("msg", (data) => {
34
- this.main.helper.messageHandler.getList().forEach((handler) => {
35
- handler(data);
36
- });
37
- this.main.emit("live_message", data);
38
- });
39
- // 直播消息源数据
40
- room.on("origin", (data, { platform, room }) => {
41
- this.main.emit("live_origin", data, { platform, room });
42
- });
43
- // 连接到直播间
44
- room.on("connect", () => {
45
- this.main.emit("room_connect", key);
46
- });
47
- // 与直播间的连接已断开
48
- room.on("disconnect", () => {
49
- this.main.emit("room_disconnect", key);
50
- });
51
- // 获取房间信息
52
- room.on("info", () => {
53
- this.main.emit("room_info", key, room.info);
54
- });
55
- // 直播展示信息更改
56
- room.on("detail", (data) => {
57
- this.main.emit("room_detail", key, data);
58
- });
59
- // 直播状态更改
60
- room.on("status", (status, { id, timestamp }) => {
61
- this.main.emit("room_status", key, status, { id, timestamp });
62
- });
63
- // 统计数据更新
64
- room.on("stats", (data) => {
65
- this.main.emit("room_stats", key, data);
66
- });
67
- // 房间被打开
68
- room.on("open", () => {
69
- this.main.emit("room_open", key, room.info);
70
- });
71
- // 房间被关闭
72
- room.on("close", () => {
73
- this.main.emit("room_close", key, room.info);
74
- });
75
- if (open) {
76
- room.open();
77
- }
78
- this.main.emit("room_add", key, room.info);
79
- }
80
- /** 移除房间 */
81
- remove(roomKey) {
82
- if (!this.roomMap.has(roomKey)) {
83
- this.main.emit("room_unexist", roomKey);
84
- return;
85
- }
86
- let room = this.roomMap.get(roomKey);
87
- this.roomMap.delete(roomKey); // 从表中删除房间
88
- room?.removeAllListeners(); // 移除房间监听实例
89
- this.main.emit("room_remove", roomKey);
90
- }
91
- /** 获取房间 */
92
- get(roomKey) {
93
- return this.roomMap.get(roomKey);
94
- }
95
- /** 获取房间信息 */
96
- info(roomKey) {
97
- let room = this.roomMap.get(roomKey);
98
- return room ? room.info : undefined;
99
- }
100
- /** 更新房间信息 */
101
- update(roomKey) {
102
- let room = this.roomMap.get(roomKey);
103
- room && room.getInfo();
104
- }
105
- /** 获取roomKey列表 */
106
- get keyList() {
107
- return [...this.roomMap.keys()];
108
- }
109
- open(roomKey) {
110
- let room = this.roomMap.get(roomKey);
111
- room?.available && !room.opening && room.open();
112
- }
113
- close(roomKey) {
114
- let room = this.roomMap.get(roomKey);
115
- room?.opening && room.close();
116
- }
117
- }
118
- exports.RoomController = RoomController;
@@ -1,67 +0,0 @@
1
- import { ImageSize, UserType } from "../../enum";
2
- /** 用户信息 */
3
- export interface UserInfo {
4
- /** 用户名 */
5
- name: string;
6
- /** 用户id */
7
- id: number;
8
- /** 头像url */
9
- avatar?: string;
10
- /** 粉丝勋章 */
11
- medal?: MedalInfo | null;
12
- /** 用户类型 */
13
- type?: UserType | null;
14
- /** 粉丝vip等级 */
15
- membership?: boolean | number;
16
- /** vip等级 */
17
- vip?: boolean | number;
18
- /** 用户等级 */
19
- level?: number;
20
- }
21
- /** 粉丝牌信息 */
22
- export interface MedalInfo {
23
- /** 粉丝牌名称 */
24
- name: string;
25
- /** 粉丝牌id */
26
- id: number;
27
- /** 粉丝牌等级 */
28
- level?: number;
29
- /** 粉丝vip等级 */
30
- membership?: number;
31
- }
32
- /** 图像信息 */
33
- export interface ImageInfo {
34
- /** 图像名称 */
35
- name?: string;
36
- /** 图像id */
37
- id?: string | number;
38
- /** 图像url */
39
- url?: string;
40
- /** 图像尺寸 */
41
- size?: ImageSize;
42
- }
43
- /** 礼物信息 */
44
- export interface GiftInfo {
45
- /** 礼物名称 */
46
- name: string;
47
- /** 礼物id */
48
- id: number | string;
49
- /** 礼物数量 */
50
- num: number;
51
- /** 总价值 */
52
- value: number;
53
- /** 平台货币 */
54
- currency: string;
55
- /** 礼物连击数 */
56
- combo?: string;
57
- /** 礼物连击id */
58
- comboId?: string;
59
- /** 人民币价值 */
60
- cny?: number;
61
- /** 行为 */
62
- action?: string;
63
- /** 随机礼物信息 */
64
- blindGift?: GiftInfo;
65
- /** 图片信息 */
66
- image?: string;
67
- }
@@ -1,167 +0,0 @@
1
- import { UserType } from "./../../enum";
2
- import { RoomInfo } from "./../../lib/LiveRoom";
3
- import { DanmakuMode, RoomStatus } from "../../enum";
4
- import { RoomDetail, RoomStatsInfo } from "../../lib/LiveRoom";
5
- import { UserInfo, GiftInfo, ImageInfo } from "./AttributeInfo";
6
- declare type MessageBase = {
7
- /** 平台名称 */
8
- platform: string;
9
- /** 房间号 */
10
- room: number | string;
11
- /** 信息类型 */
12
- type: string;
13
- /** 时间戳 */
14
- timestamp: number;
15
- /** 消息id */
16
- id: string;
17
- /** 其他属性 */
18
- [attr: string]: any;
19
- };
20
- export interface MessageInterface extends MessageBase {
21
- /** 数据信息 */
22
- info: {
23
- [attr: string]: any;
24
- };
25
- }
26
- export declare type MessageExt<T extends MessageInterface, E extends {
27
- [attr: string]: any;
28
- } = {
29
- [attr: string]: any;
30
- }> = T & {
31
- info: E;
32
- };
33
- /** 文本聊天消息 */
34
- export interface MessageChat extends MessageBase {
35
- type: "chat";
36
- info: {
37
- /** 用户信息 */
38
- user: UserInfo;
39
- /** 文本内容 */
40
- content: string;
41
- /** 文字颜色 */
42
- color?: number | string;
43
- /** 弹幕模式 */
44
- mode?: DanmakuMode;
45
- /** 文字大小 */
46
- size?: number | string;
47
- /** 图片信息 */
48
- image?: ImageInfo;
49
- /** 表情信息 */
50
- emoticon?: {
51
- [keyword: string]: ImageInfo;
52
- };
53
- /** 标签信息 */
54
- tag?: string;
55
- };
56
- }
57
- /** 礼物消息 */
58
- export interface MessageGift extends MessageBase {
59
- type: "gift";
60
- info: {
61
- /** 用户信息 */
62
- user: UserInfo;
63
- /** 礼物信息 */
64
- gift: GiftInfo;
65
- };
66
- }
67
- /** 互动消息(进入直播间、点赞、关注、分享、加入粉丝团) */
68
- export interface MessageInteract extends MessageBase {
69
- type: "entry" | "like" | "follow" | "share" | "join";
70
- info: {
71
- /** 用户信息 */
72
- user: UserInfo;
73
- /** 信息标签 */
74
- tag?: string | boolean;
75
- };
76
- }
77
- /** 粉丝vip开通消息 */
78
- export interface MessageMembership extends MessageBase {
79
- type: "membership";
80
- info: {
81
- /** 用户信息 */
82
- user: UserInfo;
83
- /** 礼物信息 */
84
- gift: GiftInfo;
85
- /** 开通vip名称 */
86
- name: string;
87
- /** 开通vip等级 */
88
- level?: number;
89
- /** 持续时间(天数) */
90
- duration: number;
91
- };
92
- }
93
- /** 粉丝vip开通消息 */
94
- export interface MessageSuperchat extends MessageBase {
95
- type: "superchat";
96
- info: {
97
- /** 留言id */
98
- id: string;
99
- /** 用户信息 */
100
- user: UserInfo;
101
- /** 文本内容 */
102
- content: string;
103
- /** 文字颜色 */
104
- color?: number | string;
105
- /** 礼物信息 */
106
- gift: GiftInfo;
107
- /** (SC)持续时间 */
108
- duration: number;
109
- };
110
- }
111
- /** 禁言消息 */
112
- export interface MessageBlock extends MessageBase {
113
- type: "block";
114
- info: {
115
- /** 用户信息 */
116
- user: UserInfo;
117
- /** 操作者 */
118
- operator: UserInfo | {
119
- type: null | UserType;
120
- };
121
- };
122
- }
123
- /** 直播开播消息 */
124
- export interface MessageLiveStart extends MessageBase {
125
- type: "live_start";
126
- info: {
127
- /** 直播id */
128
- id: string;
129
- };
130
- }
131
- /** 直播切断消息 */
132
- export interface MessageLiveCut extends MessageBase {
133
- type: "live_cut";
134
- info: {
135
- /** 切断消息 */
136
- message: string;
137
- };
138
- }
139
- /** 获取房间信息 */
140
- export interface MessageRoomInfo extends MessageBase {
141
- type: "room_info";
142
- /** 数据信息 */
143
- info: RoomInfo;
144
- }
145
- /** 直播数据更新 */
146
- export interface MessageLiveStats extends MessageBase {
147
- type: "live_stats";
148
- info: RoomStatsInfo;
149
- }
150
- /** 直播展示信息更新 */
151
- export interface MessageLiveDetail extends MessageBase {
152
- type: "live_detail";
153
- info: RoomDetail;
154
- }
155
- /** 直播结束 */
156
- export interface MessageLiveEnd extends MessageBase {
157
- type: "live_end";
158
- info: {
159
- /** 直播状态 */
160
- status: RoomStatus;
161
- };
162
- }
163
- declare type AllMessageType = MessageChat | MessageGift | MessageInteract | MessageMembership | MessageSuperchat | MessageBlock | MessageLiveStart | MessageLiveEnd | MessageLiveCut | MessageLiveDetail | MessageLiveStats;
164
- export declare type MessageData<T extends AllMessageType["type"] = AllMessageType["type"]> = AllMessageType & {
165
- type: T;
166
- };
167
- export {};