@jubbio/voice 1.0.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.
@@ -0,0 +1,99 @@
1
+ import { VoiceConnectionStatus, AudioPlayerStatus, StreamType } from './enums';
2
+ import { Readable } from 'stream';
3
+ /**
4
+ * Options for joining a voice channel
5
+ */
6
+ export interface JoinVoiceChannelOptions {
7
+ /** The ID of the voice channel to join */
8
+ channelId: string;
9
+ /** The ID of the guild the voice channel belongs to */
10
+ guildId: string;
11
+ /** Adapter creator from the guild */
12
+ adapterCreator: GatewayAdapterCreator;
13
+ /** Whether to join self-muted */
14
+ selfMute?: boolean;
15
+ /** Whether to join self-deafened */
16
+ selfDeaf?: boolean;
17
+ }
18
+ /**
19
+ * Gateway adapter creator - interface for gateway communication
20
+ */
21
+ export interface GatewayAdapterCreator {
22
+ (methods: GatewayAdapterLibraryMethods): GatewayAdapterImplementerMethods;
23
+ }
24
+ export interface GatewayAdapterLibraryMethods {
25
+ onVoiceServerUpdate(data: VoiceServerUpdate): void;
26
+ onVoiceStateUpdate(data: VoiceStateUpdate): void;
27
+ destroy(): void;
28
+ }
29
+ export interface GatewayAdapterImplementerMethods {
30
+ sendPayload(payload: any): boolean;
31
+ destroy(): void;
32
+ }
33
+ export interface VoiceServerUpdate {
34
+ token: string;
35
+ endpoint: string;
36
+ room: string;
37
+ }
38
+ export interface VoiceStateUpdate {
39
+ channel_id: string | null;
40
+ guild_id: string;
41
+ user_id: string;
42
+ self_mute: boolean;
43
+ self_deaf: boolean;
44
+ }
45
+ /**
46
+ * Options for creating an audio player
47
+ */
48
+ export interface CreateAudioPlayerOptions {
49
+ /** Behaviors for the audio player */
50
+ behaviors?: {
51
+ /** Whether to pause when no subscribers */
52
+ noSubscriber?: 'pause' | 'play' | 'stop';
53
+ /** Max missed frames before considering connection dead */
54
+ maxMissedFrames?: number;
55
+ };
56
+ }
57
+ /**
58
+ * Options for creating an audio resource
59
+ */
60
+ export interface CreateAudioResourceOptions<T = unknown> {
61
+ /** The type of the input stream */
62
+ inputType?: StreamType;
63
+ /** Metadata to attach to the resource */
64
+ metadata?: T;
65
+ /** Whether to inline the volume transformer */
66
+ inlineVolume?: boolean;
67
+ /** Number of silence frames to append */
68
+ silencePaddingFrames?: number;
69
+ }
70
+ /**
71
+ * Audio resource input - can be string URL, readable stream, or file path
72
+ */
73
+ export type AudioResourceInput = string | Readable;
74
+ /**
75
+ * Voice connection events
76
+ */
77
+ export interface VoiceConnectionEvents {
78
+ stateChange: (oldState: VoiceConnectionState, newState: VoiceConnectionState) => void;
79
+ error: (error: Error) => void;
80
+ }
81
+ export interface VoiceConnectionState {
82
+ status: VoiceConnectionStatus;
83
+ }
84
+ /**
85
+ * Audio player events
86
+ */
87
+ export interface AudioPlayerEvents {
88
+ stateChange: (oldState: AudioPlayerState, newState: AudioPlayerState) => void;
89
+ error: (error: AudioPlayerError) => void;
90
+ idle: () => void;
91
+ }
92
+ export interface AudioPlayerState {
93
+ status: AudioPlayerStatus;
94
+ resource?: any;
95
+ }
96
+ export interface AudioPlayerError {
97
+ message: string;
98
+ resource: any;
99
+ }
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZvaWNlQ29ubmVjdGlvblN0YXR1cywgQXVkaW9QbGF5ZXJTdGF0dXMsIFN0cmVhbVR5cGUgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIGpvaW5pbmcgYSB2b2ljZSBjaGFubmVsXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEpvaW5Wb2ljZUNoYW5uZWxPcHRpb25zIHtcclxuICAvKiogVGhlIElEIG9mIHRoZSB2b2ljZSBjaGFubmVsIHRvIGpvaW4gKi9cclxuICBjaGFubmVsSWQ6IHN0cmluZztcclxuICAvKiogVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCBiZWxvbmdzIHRvICovXHJcbiAgZ3VpbGRJZDogc3RyaW5nO1xyXG4gIC8qKiBBZGFwdGVyIGNyZWF0b3IgZnJvbSB0aGUgZ3VpbGQgKi9cclxuICBhZGFwdGVyQ3JlYXRvcjogR2F0ZXdheUFkYXB0ZXJDcmVhdG9yO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGpvaW4gc2VsZi1tdXRlZCAqL1xyXG4gIHNlbGZNdXRlPzogYm9vbGVhbjtcclxuICAvKiogV2hldGhlciB0byBqb2luIHNlbGYtZGVhZmVuZWQgKi9cclxuICBzZWxmRGVhZj86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHYXRld2F5IGFkYXB0ZXIgY3JlYXRvciAtIGludGVyZmFjZSBmb3IgZ2F0ZXdheSBjb21tdW5pY2F0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlBZGFwdGVyQ3JlYXRvciB7XHJcbiAgKG1ldGhvZHM6IEdhdGV3YXlBZGFwdGVyTGlicmFyeU1ldGhvZHMpOiBHYXRld2F5QWRhcHRlckltcGxlbWVudGVyTWV0aG9kcztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5QWRhcHRlckxpYnJhcnlNZXRob2RzIHtcclxuICBvblZvaWNlU2VydmVyVXBkYXRlKGRhdGE6IFZvaWNlU2VydmVyVXBkYXRlKTogdm9pZDtcclxuICBvblZvaWNlU3RhdGVVcGRhdGUoZGF0YTogVm9pY2VTdGF0ZVVwZGF0ZSk6IHZvaWQ7XHJcbiAgZGVzdHJveSgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlBZGFwdGVySW1wbGVtZW50ZXJNZXRob2RzIHtcclxuICBzZW5kUGF5bG9hZChwYXlsb2FkOiBhbnkpOiBib29sZWFuO1xyXG4gIGRlc3Ryb3koKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWb2ljZVNlcnZlclVwZGF0ZSB7XHJcbiAgdG9rZW46IHN0cmluZztcclxuICBlbmRwb2ludDogc3RyaW5nO1xyXG4gIHJvb206IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWb2ljZVN0YXRlVXBkYXRlIHtcclxuICBjaGFubmVsX2lkOiBzdHJpbmcgfCBudWxsO1xyXG4gIGd1aWxkX2lkOiBzdHJpbmc7XHJcbiAgdXNlcl9pZDogc3RyaW5nO1xyXG4gIHNlbGZfbXV0ZTogYm9vbGVhbjtcclxuICBzZWxmX2RlYWY6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBhdWRpbyBwbGF5ZXJcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQXVkaW9QbGF5ZXJPcHRpb25zIHtcclxuICAvKiogQmVoYXZpb3JzIGZvciB0aGUgYXVkaW8gcGxheWVyICovXHJcbiAgYmVoYXZpb3JzPzoge1xyXG4gICAgLyoqIFdoZXRoZXIgdG8gcGF1c2Ugd2hlbiBubyBzdWJzY3JpYmVycyAqL1xyXG4gICAgbm9TdWJzY3JpYmVyPzogJ3BhdXNlJyB8ICdwbGF5JyB8ICdzdG9wJztcclxuICAgIC8qKiBNYXggbWlzc2VkIGZyYW1lcyBiZWZvcmUgY29uc2lkZXJpbmcgY29ubmVjdGlvbiBkZWFkICovXHJcbiAgICBtYXhNaXNzZWRGcmFtZXM/OiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGFuIGF1ZGlvIHJlc291cmNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUF1ZGlvUmVzb3VyY2VPcHRpb25zPFQgPSB1bmtub3duPiB7XHJcbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBpbnB1dCBzdHJlYW0gKi9cclxuICBpbnB1dFR5cGU/OiBTdHJlYW1UeXBlO1xyXG4gIC8qKiBNZXRhZGF0YSB0byBhdHRhY2ggdG8gdGhlIHJlc291cmNlICovXHJcbiAgbWV0YWRhdGE/OiBUO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGlubGluZSB0aGUgdm9sdW1lIHRyYW5zZm9ybWVyICovXHJcbiAgaW5saW5lVm9sdW1lPzogYm9vbGVhbjtcclxuICAvKiogTnVtYmVyIG9mIHNpbGVuY2UgZnJhbWVzIHRvIGFwcGVuZCAqL1xyXG4gIHNpbGVuY2VQYWRkaW5nRnJhbWVzPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQXVkaW8gcmVzb3VyY2UgaW5wdXQgLSBjYW4gYmUgc3RyaW5nIFVSTCwgcmVhZGFibGUgc3RyZWFtLCBvciBmaWxlIHBhdGhcclxuICovXHJcbmV4cG9ydCB0eXBlIEF1ZGlvUmVzb3VyY2VJbnB1dCA9IHN0cmluZyB8IFJlYWRhYmxlO1xyXG5cclxuLyoqXHJcbiAqIFZvaWNlIGNvbm5lY3Rpb24gZXZlbnRzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFZvaWNlQ29ubmVjdGlvbkV2ZW50cyB7XHJcbiAgc3RhdGVDaGFuZ2U6IChvbGRTdGF0ZTogVm9pY2VDb25uZWN0aW9uU3RhdGUsIG5ld1N0YXRlOiBWb2ljZUNvbm5lY3Rpb25TdGF0ZSkgPT4gdm9pZDtcclxuICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWb2ljZUNvbm5lY3Rpb25TdGF0ZSB7XHJcbiAgc3RhdHVzOiBWb2ljZUNvbm5lY3Rpb25TdGF0dXM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBdWRpbyBwbGF5ZXIgZXZlbnRzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvUGxheWVyRXZlbnRzIHtcclxuICBzdGF0ZUNoYW5nZTogKG9sZFN0YXRlOiBBdWRpb1BsYXllclN0YXRlLCBuZXdTdGF0ZTogQXVkaW9QbGF5ZXJTdGF0ZSkgPT4gdm9pZDtcclxuICBlcnJvcjogKGVycm9yOiBBdWRpb1BsYXllckVycm9yKSA9PiB2b2lkO1xyXG4gIGlkbGU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9QbGF5ZXJTdGF0ZSB7XHJcbiAgc3RhdHVzOiBBdWRpb1BsYXllclN0YXR1cztcclxuICByZXNvdXJjZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdWRpb1BsYXllckVycm9yIHtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgcmVzb3VyY2U6IGFueTtcclxufVxyXG4iXX0=
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@jubbio/voice",
3
+ "version": "1.0.0",
4
+ "description": "Voice library for Jubbio bots with LiveKit backend",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": ["dist", "README.md", "LICENSE"],
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "dev": "tsc --watch",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "keywords": ["jubbio", "voice", "bot", "livekit", "audio", "streaming"],
14
+ "author": "Jubbio Team",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/jubbio/jubbio.js.git",
19
+ "directory": "voice"
20
+ },
21
+ "homepage": "https://github.com/jubbio/jubbio.js#readme",
22
+ "bugs": {
23
+ "url": "https://github.com/jubbio/jubbio.js/issues"
24
+ },
25
+ "peerDependencies": {
26
+ "@jubbio/core": "^1.0.0"
27
+ },
28
+ "peerDependenciesMeta": {
29
+ "@jubbio/core": {
30
+ "optional": true
31
+ }
32
+ },
33
+ "dependencies": {
34
+ "@livekit/rtc-node": "^0.12.1"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.0.0",
38
+ "@types/node": "^20.0.0"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ }
43
+ }