sa2kit 1.6.34 → 1.6.36
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/dist/{chunk-HQ7VHIEK.mjs → chunk-55FBYGRK.mjs} +409 -27
- package/dist/chunk-55FBYGRK.mjs.map +1 -0
- package/dist/{chunk-B34YUZRL.js → chunk-XXDMARU7.js} +409 -25
- package/dist/chunk-XXDMARU7.js.map +1 -0
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +22 -14
- package/dist/index.mjs +1 -1
- package/dist/mikuFireworks3D/index.d.mts +146 -52
- package/dist/mikuFireworks3D/index.d.ts +146 -52
- package/dist/mikuFireworks3D/index.js +22 -14
- package/dist/mikuFireworks3D/index.mjs +1 -1
- package/dist/mikuFireworks3D/server/index.d.mts +146 -0
- package/dist/mikuFireworks3D/server/index.d.ts +146 -0
- package/dist/mikuFireworks3D/server/index.js +338 -0
- package/dist/mikuFireworks3D/server/index.js.map +1 -0
- package/dist/mikuFireworks3D/server/index.mjs +335 -0
- package/dist/mikuFireworks3D/server/index.mjs.map +1 -0
- package/dist/types-DBVDr8Mu.d.mts +71 -0
- package/dist/types-DBVDr8Mu.d.ts +71 -0
- package/dist/universalFile/server/index.js +5 -5
- package/dist/universalFile/server/index.mjs +1 -1
- package/package.json +6 -1
- package/dist/chunk-B34YUZRL.js.map +0 -1
- package/dist/chunk-HQ7VHIEK.mjs.map +0 -1
|
@@ -1,55 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
+
import { M as MikuFireworks3DProps, F as FireworkKind, g as FireworksRealtimeConfig, h as FireworksRealtimeState, f as FireworksRealtimeUser, a as FireworkLaunchPayload, c as FireworkEngineOptions, D as DanmakuMessage, e as DanmakuControllerOptions, d as DanmakuSendResult } from '../types-DBVDr8Mu.js';
|
|
4
|
+
export { b as FireworkPosition } from '../types-DBVDr8Mu.js';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
interface DanmakuMessage {
|
|
6
|
-
id: string;
|
|
7
|
-
userId?: string;
|
|
8
|
-
text: string;
|
|
9
|
-
color?: string;
|
|
10
|
-
timestamp: number;
|
|
11
|
-
}
|
|
12
|
-
interface FireworkPosition {
|
|
13
|
-
x: number;
|
|
14
|
-
y: number;
|
|
15
|
-
z: number;
|
|
16
|
-
}
|
|
17
|
-
interface FireworkLaunchPayload {
|
|
18
|
-
kind: FireworkKind;
|
|
19
|
-
position?: FireworkPosition;
|
|
20
|
-
color?: string;
|
|
21
|
-
avatarUrl?: string;
|
|
22
|
-
message?: DanmakuMessage;
|
|
23
|
-
}
|
|
24
|
-
interface FireworkEngineOptions {
|
|
25
|
-
maxParticles?: number;
|
|
26
|
-
maxActiveFireworks?: number;
|
|
27
|
-
onError?: (error: Error) => void;
|
|
28
|
-
onFpsReport?: (fps: number) => void;
|
|
29
|
-
}
|
|
30
|
-
interface MikuFireworks3DProps {
|
|
31
|
-
width?: number | string;
|
|
32
|
-
height?: number | string;
|
|
33
|
-
className?: string;
|
|
34
|
-
defaultKind?: FireworkKind;
|
|
35
|
-
autoLaunchOnDanmaku?: boolean;
|
|
36
|
-
maxParticles?: number;
|
|
37
|
-
maxActiveFireworks?: number;
|
|
38
|
-
defaultAvatarUrl?: string;
|
|
39
|
-
onLaunch?: (payload: FireworkLaunchPayload) => void;
|
|
40
|
-
onDanmakuSend?: (message: DanmakuMessage) => void;
|
|
41
|
-
onError?: (error: Error) => void;
|
|
42
|
-
onFpsReport?: (fps: number) => void;
|
|
43
|
-
}
|
|
44
|
-
interface DanmakuSendResult {
|
|
45
|
-
message: DanmakuMessage;
|
|
46
|
-
launchKind?: FireworkKind;
|
|
47
|
-
}
|
|
48
|
-
interface DanmakuControllerOptions {
|
|
49
|
-
onSend?: (message: DanmakuMessage) => void;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
declare function MikuFireworks3D({ width, height, className, defaultKind, autoLaunchOnDanmaku, maxParticles, maxActiveFireworks, defaultAvatarUrl, onLaunch, onDanmakuSend, onError, onFpsReport, }: MikuFireworks3DProps): React__default.JSX.Element;
|
|
6
|
+
declare function MikuFireworks3D({ width, height, className, defaultKind, autoLaunchOnDanmaku, maxParticles, maxActiveFireworks, defaultAvatarUrl, onLaunch, onDanmakuSend, onError, onFpsReport, onRealtimeStateChange, realtime, }: MikuFireworks3DProps): React__default.JSX.Element;
|
|
53
7
|
|
|
54
8
|
interface FireworksCanvasProps {
|
|
55
9
|
canvasRef: React__default.RefObject<HTMLCanvasElement>;
|
|
@@ -65,14 +19,103 @@ interface FireworksControlPanelProps {
|
|
|
65
19
|
onAvatarUrlChange: (value: string) => void;
|
|
66
20
|
onLaunch: () => void;
|
|
67
21
|
fps: number;
|
|
22
|
+
realtimeConnected?: boolean;
|
|
23
|
+
onlineCount?: number;
|
|
68
24
|
}
|
|
69
|
-
declare function FireworksControlPanel({ selectedKind, onKindChange, autoLaunchOnDanmaku, onAutoLaunchChange, avatarUrl, onAvatarUrlChange, onLaunch, fps, }: FireworksControlPanelProps): React__default.JSX.Element;
|
|
25
|
+
declare function FireworksControlPanel({ selectedKind, onKindChange, autoLaunchOnDanmaku, onAutoLaunchChange, avatarUrl, onAvatarUrlChange, onLaunch, fps, realtimeConnected, onlineCount, }: FireworksControlPanelProps): React__default.JSX.Element;
|
|
70
26
|
|
|
71
27
|
interface DanmakuPanelProps {
|
|
72
28
|
onSend: (text: string) => void;
|
|
73
29
|
}
|
|
74
30
|
declare function DanmakuPanel({ onSend }: DanmakuPanelProps): React__default.JSX.Element;
|
|
75
31
|
|
|
32
|
+
interface RealtimeDanmakuEvent {
|
|
33
|
+
id: string;
|
|
34
|
+
roomId: string;
|
|
35
|
+
text: string;
|
|
36
|
+
color?: string;
|
|
37
|
+
kind?: FireworkKind;
|
|
38
|
+
user: FireworksRealtimeUser;
|
|
39
|
+
timestamp: number;
|
|
40
|
+
}
|
|
41
|
+
interface RealtimeFireworkEvent {
|
|
42
|
+
id: string;
|
|
43
|
+
roomId: string;
|
|
44
|
+
payload: FireworkLaunchPayload;
|
|
45
|
+
user: FireworksRealtimeUser;
|
|
46
|
+
timestamp: number;
|
|
47
|
+
}
|
|
48
|
+
type ServerMessage = {
|
|
49
|
+
type: 'joined';
|
|
50
|
+
roomId: string;
|
|
51
|
+
onlineCount: number;
|
|
52
|
+
self: FireworksRealtimeUser;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'room.snapshot';
|
|
55
|
+
roomId: string;
|
|
56
|
+
users: FireworksRealtimeUser[];
|
|
57
|
+
danmakuHistory: RealtimeDanmakuEvent[];
|
|
58
|
+
fireworkHistory: RealtimeFireworkEvent[];
|
|
59
|
+
} | {
|
|
60
|
+
type: 'room.user_joined';
|
|
61
|
+
roomId: string;
|
|
62
|
+
user: FireworksRealtimeUser;
|
|
63
|
+
onlineCount: number;
|
|
64
|
+
} | {
|
|
65
|
+
type: 'room.user_left';
|
|
66
|
+
roomId: string;
|
|
67
|
+
userId: string;
|
|
68
|
+
onlineCount: number;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'danmaku.broadcast';
|
|
71
|
+
roomId: string;
|
|
72
|
+
event: RealtimeDanmakuEvent;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'firework.broadcast';
|
|
75
|
+
roomId: string;
|
|
76
|
+
event: RealtimeFireworkEvent;
|
|
77
|
+
} | {
|
|
78
|
+
type: 'error';
|
|
79
|
+
code: string;
|
|
80
|
+
message: string;
|
|
81
|
+
} | {
|
|
82
|
+
type: 'pong';
|
|
83
|
+
ts: number;
|
|
84
|
+
};
|
|
85
|
+
interface WebSocketTransportCallbacks {
|
|
86
|
+
onStateChange?: (state: FireworksRealtimeState) => void;
|
|
87
|
+
onDanmakuBroadcast?: (event: RealtimeDanmakuEvent) => void;
|
|
88
|
+
onFireworkBroadcast?: (event: RealtimeFireworkEvent) => void;
|
|
89
|
+
onSnapshot?: (snapshot: Extract<ServerMessage, {
|
|
90
|
+
type: 'room.snapshot';
|
|
91
|
+
}>) => void;
|
|
92
|
+
onError?: (error: Error) => void;
|
|
93
|
+
}
|
|
94
|
+
declare class WebSocketTransport {
|
|
95
|
+
private socket;
|
|
96
|
+
private reconnectTimer;
|
|
97
|
+
private isManualClose;
|
|
98
|
+
private readonly pendingQueue;
|
|
99
|
+
private readonly config;
|
|
100
|
+
private readonly callbacks;
|
|
101
|
+
private state;
|
|
102
|
+
constructor(config: FireworksRealtimeConfig, callbacks?: WebSocketTransportCallbacks);
|
|
103
|
+
connect(): void;
|
|
104
|
+
disconnect(): void;
|
|
105
|
+
sendDanmaku(payload: {
|
|
106
|
+
text: string;
|
|
107
|
+
color?: string;
|
|
108
|
+
kind?: FireworkKind;
|
|
109
|
+
}): void;
|
|
110
|
+
sendFirework(payload: FireworkLaunchPayload): void;
|
|
111
|
+
getState(): FireworksRealtimeState;
|
|
112
|
+
private send;
|
|
113
|
+
private updateState;
|
|
114
|
+
private handleServerMessage;
|
|
115
|
+
private scheduleReconnect;
|
|
116
|
+
private flushPendingQueue;
|
|
117
|
+
}
|
|
118
|
+
|
|
76
119
|
interface UseFireworksEngineOptions extends FireworkEngineOptions {
|
|
77
120
|
onLaunch?: (payload: FireworkLaunchPayload) => void;
|
|
78
121
|
}
|
|
@@ -87,12 +130,63 @@ interface DanmakuOverlayItem extends DanmakuMessage {
|
|
|
87
130
|
track: number;
|
|
88
131
|
durationMs: number;
|
|
89
132
|
}
|
|
133
|
+
interface SendDanmakuOptions {
|
|
134
|
+
optimistic?: boolean;
|
|
135
|
+
}
|
|
90
136
|
declare function useDanmakuController(options?: DanmakuControllerOptions): {
|
|
91
137
|
items: DanmakuOverlayItem[];
|
|
92
|
-
send: (text: string, color?: string) => DanmakuSendResult | null;
|
|
138
|
+
send: (text: string, color?: string, sendOptions?: SendDanmakuOptions) => DanmakuSendResult | null;
|
|
139
|
+
addIncoming: (message: DanmakuMessage) => void;
|
|
93
140
|
removeItem: (id: string) => void;
|
|
94
141
|
};
|
|
95
142
|
|
|
143
|
+
interface UseFireworksRealtimeOptions {
|
|
144
|
+
config?: FireworksRealtimeConfig;
|
|
145
|
+
enabled?: boolean;
|
|
146
|
+
onDanmakuBroadcast?: (event: {
|
|
147
|
+
text: string;
|
|
148
|
+
color?: string;
|
|
149
|
+
kind?: FireworkKind;
|
|
150
|
+
userId: string;
|
|
151
|
+
timestamp: number;
|
|
152
|
+
id: string;
|
|
153
|
+
}) => void;
|
|
154
|
+
onFireworkBroadcast?: (event: {
|
|
155
|
+
id: string;
|
|
156
|
+
payload: FireworkLaunchPayload;
|
|
157
|
+
userId: string;
|
|
158
|
+
timestamp: number;
|
|
159
|
+
}) => void;
|
|
160
|
+
onSnapshot?: (snapshot: {
|
|
161
|
+
roomId: string;
|
|
162
|
+
danmakuHistory: Array<{
|
|
163
|
+
id: string;
|
|
164
|
+
text: string;
|
|
165
|
+
color?: string;
|
|
166
|
+
kind?: FireworkKind;
|
|
167
|
+
userId: string;
|
|
168
|
+
timestamp: number;
|
|
169
|
+
}>;
|
|
170
|
+
fireworkHistory: Array<{
|
|
171
|
+
id: string;
|
|
172
|
+
payload: FireworkLaunchPayload;
|
|
173
|
+
userId: string;
|
|
174
|
+
timestamp: number;
|
|
175
|
+
}>;
|
|
176
|
+
}) => void;
|
|
177
|
+
onError?: (error: Error) => void;
|
|
178
|
+
onStateChange?: (state: FireworksRealtimeState) => void;
|
|
179
|
+
}
|
|
180
|
+
declare function useFireworksRealtime(options: UseFireworksRealtimeOptions): {
|
|
181
|
+
state: FireworksRealtimeState;
|
|
182
|
+
sendDanmaku: (payload: {
|
|
183
|
+
text: string;
|
|
184
|
+
color?: string;
|
|
185
|
+
kind?: FireworkKind;
|
|
186
|
+
}) => void;
|
|
187
|
+
sendFirework: (payload: FireworkLaunchPayload) => void;
|
|
188
|
+
};
|
|
189
|
+
|
|
96
190
|
declare const DEFAULT_MAX_PARTICLES = 5000;
|
|
97
191
|
declare const DEFAULT_MAX_ACTIVE_FIREWORKS = 12;
|
|
98
192
|
declare const FIREWORK_KIND_LABELS: Record<FireworkKind, string>;
|
|
@@ -101,4 +195,4 @@ declare const NORMAL_PALETTE: string[];
|
|
|
101
195
|
declare const DANMAKU_MAX_LENGTH = 32;
|
|
102
196
|
declare const DANMAKU_TRACK_COUNT = 8;
|
|
103
197
|
|
|
104
|
-
export { DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES,
|
|
198
|
+
export { DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES, DanmakuControllerOptions, DanmakuMessage, type DanmakuOverlayItem, DanmakuPanel, DanmakuSendResult, FIREWORK_KIND_LABELS, FireworkEngineOptions, FireworkKind, FireworkLaunchPayload, FireworksCanvas, FireworksControlPanel, FireworksRealtimeConfig, FireworksRealtimeState, FireworksRealtimeUser, MIKU_PALETTE, MikuFireworks3D, MikuFireworks3DProps, NORMAL_PALETTE, type UseFireworksEngineOptions, WebSocketTransport, type WebSocketTransportCallbacks, useDanmakuController, useFireworksEngine, useFireworksRealtime };
|
|
@@ -1,61 +1,69 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkXXDMARU7_js = require('../chunk-XXDMARU7.js');
|
|
4
4
|
require('../chunk-DGUM43GV.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "DANMAKU_MAX_LENGTH", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkXXDMARU7_js.DANMAKU_MAX_LENGTH; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "DANMAKU_TRACK_COUNT", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkXXDMARU7_js.DANMAKU_TRACK_COUNT; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "DEFAULT_MAX_ACTIVE_FIREWORKS", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkXXDMARU7_js.DEFAULT_MAX_ACTIVE_FIREWORKS; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "DEFAULT_MAX_PARTICLES", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkXXDMARU7_js.DEFAULT_MAX_PARTICLES; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "DanmakuPanel", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkXXDMARU7_js.DanmakuPanel; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "FIREWORK_KIND_LABELS", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkXXDMARU7_js.FIREWORK_KIND_LABELS; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "FireworksCanvas", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunkXXDMARU7_js.FireworksCanvas; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "FireworksControlPanel", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunkXXDMARU7_js.FireworksControlPanel; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "MIKU_PALETTE", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkXXDMARU7_js.MIKU_PALETTE; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "MikuFireworks3D", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunkXXDMARU7_js.MikuFireworks3D; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "NORMAL_PALETTE", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkXXDMARU7_js.NORMAL_PALETTE; }
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(exports, "WebSocketTransport", {
|
|
53
|
+
enumerable: true,
|
|
54
|
+
get: function () { return chunkXXDMARU7_js.WebSocketTransport; }
|
|
51
55
|
});
|
|
52
56
|
Object.defineProperty(exports, "useDanmakuController", {
|
|
53
57
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunkXXDMARU7_js.useDanmakuController; }
|
|
55
59
|
});
|
|
56
60
|
Object.defineProperty(exports, "useFireworksEngine", {
|
|
57
61
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
62
|
+
get: function () { return chunkXXDMARU7_js.useFireworksEngine; }
|
|
63
|
+
});
|
|
64
|
+
Object.defineProperty(exports, "useFireworksRealtime", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
get: function () { return chunkXXDMARU7_js.useFireworksRealtime; }
|
|
59
67
|
});
|
|
60
68
|
//# sourceMappingURL=index.js.map
|
|
61
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES, DanmakuPanel, FIREWORK_KIND_LABELS, FireworksCanvas, FireworksControlPanel, MIKU_PALETTE, MikuFireworks3D, NORMAL_PALETTE, useDanmakuController, useFireworksEngine } from '../chunk-
|
|
1
|
+
export { DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES, DanmakuPanel, FIREWORK_KIND_LABELS, FireworksCanvas, FireworksControlPanel, MIKU_PALETTE, MikuFireworks3D, NORMAL_PALETTE, WebSocketTransport, useDanmakuController, useFireworksEngine, useFireworksRealtime } from '../chunk-55FBYGRK.mjs';
|
|
2
2
|
import '../chunk-BJTO5JO5.mjs';
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { F as FireworkKind, a as FireworkLaunchPayload } from '../../types-DBVDr8Mu.mjs';
|
|
2
|
+
|
|
3
|
+
interface FireworksUserIdentity {
|
|
4
|
+
userId: string;
|
|
5
|
+
nickname?: string;
|
|
6
|
+
avatarUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
interface DanmakuBroadcastEvent {
|
|
9
|
+
id: string;
|
|
10
|
+
roomId: string;
|
|
11
|
+
text: string;
|
|
12
|
+
color?: string;
|
|
13
|
+
kind?: FireworkKind;
|
|
14
|
+
user: FireworksUserIdentity;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
interface FireworkBroadcastEvent {
|
|
18
|
+
id: string;
|
|
19
|
+
roomId: string;
|
|
20
|
+
payload: FireworkLaunchPayload;
|
|
21
|
+
user: FireworksUserIdentity;
|
|
22
|
+
timestamp: number;
|
|
23
|
+
}
|
|
24
|
+
type FireworksClientMessage = {
|
|
25
|
+
type: 'join';
|
|
26
|
+
roomId: string;
|
|
27
|
+
user: FireworksUserIdentity;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'leave';
|
|
30
|
+
} | {
|
|
31
|
+
type: 'danmaku.send';
|
|
32
|
+
payload: {
|
|
33
|
+
text: string;
|
|
34
|
+
color?: string;
|
|
35
|
+
kind?: FireworkKind;
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
type: 'firework.launch';
|
|
39
|
+
payload: FireworkLaunchPayload;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'ping';
|
|
42
|
+
ts?: number;
|
|
43
|
+
};
|
|
44
|
+
type FireworksServerMessage = {
|
|
45
|
+
type: 'joined';
|
|
46
|
+
roomId: string;
|
|
47
|
+
self: FireworksUserIdentity;
|
|
48
|
+
onlineCount: number;
|
|
49
|
+
} | {
|
|
50
|
+
type: 'room.snapshot';
|
|
51
|
+
roomId: string;
|
|
52
|
+
users: FireworksUserIdentity[];
|
|
53
|
+
danmakuHistory: DanmakuBroadcastEvent[];
|
|
54
|
+
fireworkHistory: FireworkBroadcastEvent[];
|
|
55
|
+
} | {
|
|
56
|
+
type: 'room.user_joined';
|
|
57
|
+
roomId: string;
|
|
58
|
+
user: FireworksUserIdentity;
|
|
59
|
+
onlineCount: number;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'room.user_left';
|
|
62
|
+
roomId: string;
|
|
63
|
+
userId: string;
|
|
64
|
+
onlineCount: number;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'danmaku.broadcast';
|
|
67
|
+
roomId: string;
|
|
68
|
+
event: DanmakuBroadcastEvent;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'firework.broadcast';
|
|
71
|
+
roomId: string;
|
|
72
|
+
event: FireworkBroadcastEvent;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'pong';
|
|
75
|
+
ts: number;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'error';
|
|
78
|
+
code: string;
|
|
79
|
+
message: string;
|
|
80
|
+
};
|
|
81
|
+
interface FireworksConnectionTransport {
|
|
82
|
+
send: (encodedMessage: string) => void;
|
|
83
|
+
close?: (code?: number, reason?: string) => void;
|
|
84
|
+
}
|
|
85
|
+
interface FireworksConnection {
|
|
86
|
+
id: string;
|
|
87
|
+
handleMessage: (raw: unknown) => void;
|
|
88
|
+
disconnect: (reason?: string) => void;
|
|
89
|
+
send: (message: FireworksServerMessage) => void;
|
|
90
|
+
}
|
|
91
|
+
interface FireworksRoomHubOptions {
|
|
92
|
+
maxUsersPerRoom?: number;
|
|
93
|
+
historyLimit?: number;
|
|
94
|
+
maxDanmakuLength?: number;
|
|
95
|
+
logger?: Pick<Console, 'info' | 'warn' | 'error'>;
|
|
96
|
+
}
|
|
97
|
+
interface FireworksHubStats {
|
|
98
|
+
rooms: number;
|
|
99
|
+
connections: number;
|
|
100
|
+
}
|
|
101
|
+
interface WsLikeSocket {
|
|
102
|
+
send: (data: string) => void;
|
|
103
|
+
on: (event: 'message' | 'close' | 'error', listener: (...args: unknown[]) => void) => void;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
declare class FireworksRoomHub {
|
|
107
|
+
private readonly rooms;
|
|
108
|
+
private readonly sessions;
|
|
109
|
+
private readonly maxUsersPerRoom;
|
|
110
|
+
private readonly historyLimit;
|
|
111
|
+
private readonly maxDanmakuLength;
|
|
112
|
+
private readonly logger?;
|
|
113
|
+
constructor(options?: FireworksRoomHubOptions);
|
|
114
|
+
connect(transport: FireworksConnectionTransport, id?: string): FireworksConnection;
|
|
115
|
+
disconnect(connectionId: string, reason?: string): void;
|
|
116
|
+
getStats(): {
|
|
117
|
+
rooms: number;
|
|
118
|
+
connections: number;
|
|
119
|
+
};
|
|
120
|
+
getRoomOnlineCount(roomId: string): number;
|
|
121
|
+
private handleRawMessage;
|
|
122
|
+
private joinRoom;
|
|
123
|
+
private leaveRoom;
|
|
124
|
+
private handleDanmaku;
|
|
125
|
+
private handleFirework;
|
|
126
|
+
private createRoom;
|
|
127
|
+
private sendToConnection;
|
|
128
|
+
private broadcastToRoom;
|
|
129
|
+
private sendError;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface BindWsSocketOptions {
|
|
133
|
+
connectionId?: string;
|
|
134
|
+
onConnected?: (connection: FireworksConnection) => void;
|
|
135
|
+
onDisconnected?: (connectionId: string) => void;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Bind a ws-like socket to FireworksRoomHub.
|
|
139
|
+
*
|
|
140
|
+
* Example (ws package):
|
|
141
|
+
* const hub = new FireworksRoomHub();
|
|
142
|
+
* wss.on('connection', (socket) => bindWsSocket(hub, socket));
|
|
143
|
+
*/
|
|
144
|
+
declare function bindWsSocket(hub: FireworksRoomHub, socket: WsLikeSocket, options?: BindWsSocketOptions): FireworksConnection;
|
|
145
|
+
|
|
146
|
+
export { type BindWsSocketOptions, type DanmakuBroadcastEvent, type FireworkBroadcastEvent, type FireworksClientMessage, type FireworksConnection, type FireworksConnectionTransport, type FireworksHubStats, FireworksRoomHub, type FireworksRoomHubOptions, type FireworksServerMessage, type FireworksUserIdentity, type WsLikeSocket, bindWsSocket };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { F as FireworkKind, a as FireworkLaunchPayload } from '../../types-DBVDr8Mu.js';
|
|
2
|
+
|
|
3
|
+
interface FireworksUserIdentity {
|
|
4
|
+
userId: string;
|
|
5
|
+
nickname?: string;
|
|
6
|
+
avatarUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
interface DanmakuBroadcastEvent {
|
|
9
|
+
id: string;
|
|
10
|
+
roomId: string;
|
|
11
|
+
text: string;
|
|
12
|
+
color?: string;
|
|
13
|
+
kind?: FireworkKind;
|
|
14
|
+
user: FireworksUserIdentity;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
interface FireworkBroadcastEvent {
|
|
18
|
+
id: string;
|
|
19
|
+
roomId: string;
|
|
20
|
+
payload: FireworkLaunchPayload;
|
|
21
|
+
user: FireworksUserIdentity;
|
|
22
|
+
timestamp: number;
|
|
23
|
+
}
|
|
24
|
+
type FireworksClientMessage = {
|
|
25
|
+
type: 'join';
|
|
26
|
+
roomId: string;
|
|
27
|
+
user: FireworksUserIdentity;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'leave';
|
|
30
|
+
} | {
|
|
31
|
+
type: 'danmaku.send';
|
|
32
|
+
payload: {
|
|
33
|
+
text: string;
|
|
34
|
+
color?: string;
|
|
35
|
+
kind?: FireworkKind;
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
type: 'firework.launch';
|
|
39
|
+
payload: FireworkLaunchPayload;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'ping';
|
|
42
|
+
ts?: number;
|
|
43
|
+
};
|
|
44
|
+
type FireworksServerMessage = {
|
|
45
|
+
type: 'joined';
|
|
46
|
+
roomId: string;
|
|
47
|
+
self: FireworksUserIdentity;
|
|
48
|
+
onlineCount: number;
|
|
49
|
+
} | {
|
|
50
|
+
type: 'room.snapshot';
|
|
51
|
+
roomId: string;
|
|
52
|
+
users: FireworksUserIdentity[];
|
|
53
|
+
danmakuHistory: DanmakuBroadcastEvent[];
|
|
54
|
+
fireworkHistory: FireworkBroadcastEvent[];
|
|
55
|
+
} | {
|
|
56
|
+
type: 'room.user_joined';
|
|
57
|
+
roomId: string;
|
|
58
|
+
user: FireworksUserIdentity;
|
|
59
|
+
onlineCount: number;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'room.user_left';
|
|
62
|
+
roomId: string;
|
|
63
|
+
userId: string;
|
|
64
|
+
onlineCount: number;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'danmaku.broadcast';
|
|
67
|
+
roomId: string;
|
|
68
|
+
event: DanmakuBroadcastEvent;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'firework.broadcast';
|
|
71
|
+
roomId: string;
|
|
72
|
+
event: FireworkBroadcastEvent;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'pong';
|
|
75
|
+
ts: number;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'error';
|
|
78
|
+
code: string;
|
|
79
|
+
message: string;
|
|
80
|
+
};
|
|
81
|
+
interface FireworksConnectionTransport {
|
|
82
|
+
send: (encodedMessage: string) => void;
|
|
83
|
+
close?: (code?: number, reason?: string) => void;
|
|
84
|
+
}
|
|
85
|
+
interface FireworksConnection {
|
|
86
|
+
id: string;
|
|
87
|
+
handleMessage: (raw: unknown) => void;
|
|
88
|
+
disconnect: (reason?: string) => void;
|
|
89
|
+
send: (message: FireworksServerMessage) => void;
|
|
90
|
+
}
|
|
91
|
+
interface FireworksRoomHubOptions {
|
|
92
|
+
maxUsersPerRoom?: number;
|
|
93
|
+
historyLimit?: number;
|
|
94
|
+
maxDanmakuLength?: number;
|
|
95
|
+
logger?: Pick<Console, 'info' | 'warn' | 'error'>;
|
|
96
|
+
}
|
|
97
|
+
interface FireworksHubStats {
|
|
98
|
+
rooms: number;
|
|
99
|
+
connections: number;
|
|
100
|
+
}
|
|
101
|
+
interface WsLikeSocket {
|
|
102
|
+
send: (data: string) => void;
|
|
103
|
+
on: (event: 'message' | 'close' | 'error', listener: (...args: unknown[]) => void) => void;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
declare class FireworksRoomHub {
|
|
107
|
+
private readonly rooms;
|
|
108
|
+
private readonly sessions;
|
|
109
|
+
private readonly maxUsersPerRoom;
|
|
110
|
+
private readonly historyLimit;
|
|
111
|
+
private readonly maxDanmakuLength;
|
|
112
|
+
private readonly logger?;
|
|
113
|
+
constructor(options?: FireworksRoomHubOptions);
|
|
114
|
+
connect(transport: FireworksConnectionTransport, id?: string): FireworksConnection;
|
|
115
|
+
disconnect(connectionId: string, reason?: string): void;
|
|
116
|
+
getStats(): {
|
|
117
|
+
rooms: number;
|
|
118
|
+
connections: number;
|
|
119
|
+
};
|
|
120
|
+
getRoomOnlineCount(roomId: string): number;
|
|
121
|
+
private handleRawMessage;
|
|
122
|
+
private joinRoom;
|
|
123
|
+
private leaveRoom;
|
|
124
|
+
private handleDanmaku;
|
|
125
|
+
private handleFirework;
|
|
126
|
+
private createRoom;
|
|
127
|
+
private sendToConnection;
|
|
128
|
+
private broadcastToRoom;
|
|
129
|
+
private sendError;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface BindWsSocketOptions {
|
|
133
|
+
connectionId?: string;
|
|
134
|
+
onConnected?: (connection: FireworksConnection) => void;
|
|
135
|
+
onDisconnected?: (connectionId: string) => void;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Bind a ws-like socket to FireworksRoomHub.
|
|
139
|
+
*
|
|
140
|
+
* Example (ws package):
|
|
141
|
+
* const hub = new FireworksRoomHub();
|
|
142
|
+
* wss.on('connection', (socket) => bindWsSocket(hub, socket));
|
|
143
|
+
*/
|
|
144
|
+
declare function bindWsSocket(hub: FireworksRoomHub, socket: WsLikeSocket, options?: BindWsSocketOptions): FireworksConnection;
|
|
145
|
+
|
|
146
|
+
export { type BindWsSocketOptions, type DanmakuBroadcastEvent, type FireworkBroadcastEvent, type FireworksClientMessage, type FireworksConnection, type FireworksConnectionTransport, type FireworksHubStats, FireworksRoomHub, type FireworksRoomHubOptions, type FireworksServerMessage, type FireworksUserIdentity, type WsLikeSocket, bindWsSocket };
|