diff --git a/package-lock.json b/package-lock.json index e5978c9..9e19265 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "damonjs", - "version": "1.7.7", + "version": "1.8.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "damonjs", - "version": "1.7.7", + "version": "1.8.5", "license": "MIT", "dependencies": { "events": "^3.3.0", - "shoukaku": "^4.0.1" + "shoukaku": "^4.1.1" }, "devDependencies": { "@types/events": "^3.0.0", @@ -634,11 +634,11 @@ } }, "node_modules/shoukaku": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/shoukaku/-/shoukaku-4.0.1.tgz", - "integrity": "sha512-+Y94AnUFabCkE8O2Y3MSfnVmiiQ1MMVK/DO962Q23KPTWJkuqs+S/CPRQSOPWqo+ISq7teVxGJsSapwnJOrFgQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/shoukaku/-/shoukaku-4.1.1.tgz", + "integrity": "sha512-E7xXqjQ38TJu9gps95zVe8LaWhBhUyZvGFbO0mNAkBywm/DieDP0HSs9fAT97lL7vVZldkay2tmFhllNLboUbg==", "dependencies": { - "ws": "^8.14.2" + "ws": "^8.18.0" }, "engines": { "node": ">=18.0.0", @@ -867,8 +867,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.15.0", - "license": "MIT", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 7c8444e..b897101 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "damonjs", - "version": "1.8.5", + "version": "1.8.6", "preview": false, "description": "A modified Shoukaku wrapper with enhanced queue support.", "main": "dist/Index.js", @@ -49,7 +49,7 @@ }, "dependencies": { "events": "^3.3.0", - "shoukaku": "^4.0.1" + "shoukaku": "^4.1.1" }, "repository": { "type": "git", diff --git a/src/DamonJs.ts b/src/DamonJs.ts index e0307d5..f4a6a63 100644 --- a/src/DamonJs.ts +++ b/src/DamonJs.ts @@ -74,7 +74,9 @@ export class DamonJs extends EventEmitter { this.exceptions = this.DamonJsOptions.exceptions ? this.DamonJsOptions.exceptions : { max: 3, time: 30 * 1000 }; this.stuck = this.DamonJsOptions.stuck ? this.DamonJsOptions.stuck : { max: 3, time: 30 * 1000 }; - this.trackEndSpam = this.DamonJsOptions.trackEndSpam ?this.DamonJsOptions.trackEndSpam : { max: 3, time: 30 * 1000 }; + this.trackEndSpam = this.DamonJsOptions.trackEndSpam + ? this.DamonJsOptions.trackEndSpam + : { max: 3, time: 30 * 1000 }; this.resolveError = this.DamonJsOptions.resolveError ? this.DamonJsOptions.resolveError : { max: 3, time: 30 * 1000 }; diff --git a/src/Index.ts b/src/Index.ts index 9490306..4b68402 100644 --- a/src/Index.ts +++ b/src/Index.ts @@ -8,4 +8,4 @@ export * from './DamonJs'; export { DamonJsTrack, DamonJsQueue, DamonJsPlayer, Plugins }; export * from './Modules/Interfaces'; -export const version = '1.8.5'; +export const version = '1.8.6'; diff --git a/src/Managers/DamonJsPlayer.ts b/src/Managers/DamonJsPlayer.ts index 135a1a0..82fb43c 100644 --- a/src/Managers/DamonJsPlayer.ts +++ b/src/Managers/DamonJsPlayer.ts @@ -380,8 +380,7 @@ export class DamonJsPlayer { if (this.state === PlayerState.DESTROYED) throw new DamonJsError(1, 'Player is already destroyed'); if (!tracks && !this.queue.totalSize) throw new DamonJsError(1, 'No track is available to play'); - - if (!options) options = { replaceCurrent: false }; + if (!options || typeof options.replaceCurrent !== 'boolean') options = { ...options, replaceCurrent: false }; if (tracks) { this.queue.splice(this.queue.currentId + 1, options.replaceCurrent && this.queue.current ? 1 : 0, ...tracks); @@ -403,9 +402,9 @@ export class DamonJsPlayer { await this.handleResolveError(current, resolveResult); throw new DamonJsError(1, `Player ${this.guildId} resolve error: ${resolveResult.message}`); } - const playOptions = { track: current.encoded, options: {} }; - if (options) playOptions.options = { ...options, noReplace: false }; - else playOptions.options = { noReplace: false }; + let playOptions = { track: { encoded: current.encoded, userData: current.requester ?? {} } }; + if (options) playOptions = { ...playOptions, ...options }; + const playerResult = await this.player.playTrack(playOptions).catch((e: Error) => e); if (playerResult instanceof Error) { await this.handleResolveError(current, playerResult); diff --git a/src/Managers/Supports/DamonJsTrack.ts b/src/Managers/Supports/DamonJsTrack.ts index 24fea6f..c4050a2 100644 --- a/src/Managers/Supports/DamonJsTrack.ts +++ b/src/Managers/Supports/DamonJsTrack.ts @@ -52,7 +52,7 @@ export class DamonJsTrack { public isrc: string | undefined; public resolvedBySource: boolean = false; public readonly data: Map; - constructor(raw: RawTrack, requester: unknown) { + constructor(private readonly raw: Track, requester: unknown) { this.damonjs = undefined; this.data = new Map(); this.encoded = raw.encoded; @@ -93,6 +93,7 @@ export class DamonJsTrack { sourceName: this.sourceName, }, pluginInfo: this.pluginInfo, + _raw: this.raw, }; } diff --git a/src/Modules/Interfaces.ts b/src/Modules/Interfaces.ts index 93a7b27..6dee3c0 100644 --- a/src/Modules/Interfaces.ts +++ b/src/Modules/Interfaces.ts @@ -1,8 +1,9 @@ import { DamonJs } from '../DamonJs'; -import { DamonJsPlayer } from '../Index'; +import { DamonJsPlayer, DamonJsQueue } from '../Index'; import { DamonJsTrack } from '../Managers/Supports/DamonJsTrack'; import { PlayerUpdate, + Track, TrackEndEvent, TrackExceptionEvent, TrackStuckEvent, @@ -73,6 +74,9 @@ export interface DamonJsPlayerOptions { textId: Snowflake; volume: number; data?: [string, any][]; + extends?: { + queue?: Utils.Constructor; + }; } export interface ResolveOptions { @@ -117,6 +121,7 @@ export interface RawTrack { sourceName: string; }; pluginInfo: unknown; + _raw: Track; } export interface DamonJsEvents { @@ -212,7 +217,6 @@ export const SupportedSources = [ ]; export interface PlayOptions { - noReplace?: boolean; pause?: boolean; startTime?: number; endTime?: number; diff --git a/src/Modules/Utils.ts b/src/Modules/Utils.ts index 51097c6..6ab9e96 100644 --- a/src/Modules/Utils.ts +++ b/src/Modules/Utils.ts @@ -3,7 +3,7 @@ import { DamonJsTrack } from '../Managers/Supports/DamonJsTrack'; export class DamonJsUtils { static convertDamonJsTrackToTrack(track: DamonJsTrack): Track { - const { encoded, info, pluginInfo } = track.getRaw(); + const { encoded: encoded, info, pluginInfo } = track.getRaw(); return { encoded, info: {