ziplayer 0.2.7-dev.0 → 0.2.7-dev.1
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/AI-Guide.md +407 -756
- package/README.md +265 -11
- package/dist/extensions/BaseExtension.d.ts +1 -0
- package/dist/extensions/BaseExtension.d.ts.map +1 -1
- package/dist/extensions/BaseExtension.js.map +1 -1
- package/dist/extensions/index.d.ts +38 -3
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +259 -41
- package/dist/extensions/index.js.map +1 -1
- package/dist/persistence/PersistenceManager.d.ts +61 -0
- package/dist/persistence/PersistenceManager.d.ts.map +1 -0
- package/dist/persistence/PersistenceManager.js +551 -0
- package/dist/persistence/PersistenceManager.js.map +1 -0
- package/dist/plugins/BasePlugin.js +1 -1
- package/dist/plugins/BasePlugin.js.map +1 -1
- package/dist/plugins/index.d.ts +19 -4
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +204 -113
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/FilterManager.js +3 -3
- package/dist/structures/FilterManager.js.map +1 -1
- package/dist/structures/Player.d.ts +64 -14
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +326 -88
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/PlayerManager.d.ts +125 -91
- package/dist/structures/PlayerManager.d.ts.map +1 -1
- package/dist/structures/PlayerManager.js +406 -111
- package/dist/structures/PlayerManager.js.map +1 -1
- package/dist/structures/Queue.d.ts +136 -31
- package/dist/structures/Queue.d.ts.map +1 -1
- package/dist/structures/Queue.js +265 -46
- package/dist/structures/Queue.js.map +1 -1
- package/dist/types/index.d.ts +39 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +55 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js +3 -0
- package/dist/types/persistence.js.map +1 -0
- package/package.json +3 -2
- package/src/extensions/BaseExtension.ts +1 -0
- package/src/extensions/index.ts +320 -37
- package/src/persistence/PersistenceManager.ts +572 -0
- package/src/plugins/BasePlugin.ts +1 -1
- package/src/plugins/index.ts +248 -133
- package/src/structures/FilterManager.ts +3 -3
- package/src/structures/Player.ts +352 -94
- package/src/structures/PlayerManager.ts +488 -116
- package/src/structures/Queue.ts +300 -55
- package/src/types/index.ts +43 -10
- package/src/types/persistence.ts +65 -0
- package/src/types/plugin.ts +1 -1
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PersistenceManager = exports.FileProvider = void 0;
|
|
37
|
+
const events_1 = require("events");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const zlib = __importStar(require("zlib"));
|
|
41
|
+
const util_1 = require("util");
|
|
42
|
+
const gzip = (0, util_1.promisify)(zlib.gzip);
|
|
43
|
+
const gunzip = (0, util_1.promisify)(zlib.gunzip);
|
|
44
|
+
// File provider implementation
|
|
45
|
+
class FileProvider {
|
|
46
|
+
constructor(basePath, maxBackups = 5) {
|
|
47
|
+
this.basePath = basePath;
|
|
48
|
+
this.maxBackups = maxBackups;
|
|
49
|
+
if (!fs.existsSync(basePath)) {
|
|
50
|
+
fs.mkdirSync(basePath, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
getFilePath(key) {
|
|
54
|
+
return path.join(this.basePath, `${key}.json`);
|
|
55
|
+
}
|
|
56
|
+
getBackupPath(key, timestamp) {
|
|
57
|
+
return path.join(this.basePath, `${key}_backup_${timestamp}.json`);
|
|
58
|
+
}
|
|
59
|
+
cleanOldBackups(key) {
|
|
60
|
+
const backups = fs
|
|
61
|
+
.readdirSync(this.basePath)
|
|
62
|
+
.filter((f) => f.startsWith(key) && f.includes("backup"))
|
|
63
|
+
.sort()
|
|
64
|
+
.reverse();
|
|
65
|
+
// Keep only maxBackups most recent
|
|
66
|
+
for (let i = this.maxBackups; i < backups.length; i++) {
|
|
67
|
+
const backupPath = path.join(this.basePath, backups[i]);
|
|
68
|
+
fs.unlinkSync(backupPath);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async save(key, data, compress = false) {
|
|
72
|
+
const filePath = this.getFilePath(key);
|
|
73
|
+
let content = JSON.stringify(data, null, 2);
|
|
74
|
+
if (compress) {
|
|
75
|
+
const compressed = await gzip(content);
|
|
76
|
+
content = compressed.toString("base64");
|
|
77
|
+
fs.writeFileSync(filePath + ".gz", content);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Create backup before overwriting
|
|
81
|
+
if (fs.existsSync(filePath)) {
|
|
82
|
+
const backupPath = this.getBackupPath(key, Date.now());
|
|
83
|
+
fs.copyFileSync(filePath, backupPath);
|
|
84
|
+
this.cleanOldBackups(key);
|
|
85
|
+
}
|
|
86
|
+
fs.writeFileSync(filePath, content);
|
|
87
|
+
}
|
|
88
|
+
async load(key) {
|
|
89
|
+
const filePath = this.getFilePath(key);
|
|
90
|
+
const gzPath = filePath + ".gz";
|
|
91
|
+
if (fs.existsSync(gzPath)) {
|
|
92
|
+
const compressed = fs.readFileSync(gzPath, "utf8");
|
|
93
|
+
const buffer = Buffer.from(compressed, "base64");
|
|
94
|
+
const decompressed = await gunzip(buffer);
|
|
95
|
+
return JSON.parse(decompressed.toString());
|
|
96
|
+
}
|
|
97
|
+
if (fs.existsSync(filePath)) {
|
|
98
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
99
|
+
return JSON.parse(content);
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
async delete(key) {
|
|
104
|
+
const filePath = this.getFilePath(key);
|
|
105
|
+
const gzPath = filePath + ".gz";
|
|
106
|
+
if (fs.existsSync(filePath))
|
|
107
|
+
fs.unlinkSync(filePath);
|
|
108
|
+
if (fs.existsSync(gzPath))
|
|
109
|
+
fs.unlinkSync(gzPath);
|
|
110
|
+
}
|
|
111
|
+
async list() {
|
|
112
|
+
const files = fs.readdirSync(this.basePath);
|
|
113
|
+
return files.filter((f) => f.endsWith(".json") || f.endsWith(".json.gz")).map((f) => f.replace(/\.json(\.gz)?$/, ""));
|
|
114
|
+
}
|
|
115
|
+
async restoreBackup(key, backupTimestamp) {
|
|
116
|
+
let backupFile = null;
|
|
117
|
+
if (backupTimestamp) {
|
|
118
|
+
const specific = this.getBackupPath(key, backupTimestamp);
|
|
119
|
+
if (fs.existsSync(specific)) {
|
|
120
|
+
backupFile = specific;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Get latest backup
|
|
125
|
+
const backups = fs
|
|
126
|
+
.readdirSync(this.basePath)
|
|
127
|
+
.filter((f) => f.startsWith(key) && f.includes("backup"))
|
|
128
|
+
.sort()
|
|
129
|
+
.reverse();
|
|
130
|
+
if (backups.length > 0) {
|
|
131
|
+
backupFile = path.join(this.basePath, backups[0]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (backupFile && fs.existsSync(backupFile)) {
|
|
135
|
+
const content = fs.readFileSync(backupFile, "utf8");
|
|
136
|
+
const data = JSON.parse(content);
|
|
137
|
+
await this.save(key, data);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.FileProvider = FileProvider;
|
|
144
|
+
// Custom provider for database integration
|
|
145
|
+
class CustomProvider {
|
|
146
|
+
constructor(saveFn, loadFn, deleteFn, listFn) {
|
|
147
|
+
this.saveFn = saveFn;
|
|
148
|
+
this.loadFn = loadFn;
|
|
149
|
+
this.deleteFn = deleteFn;
|
|
150
|
+
this.listFn = listFn;
|
|
151
|
+
}
|
|
152
|
+
async save(key, data) {
|
|
153
|
+
await this.saveFn(key, data);
|
|
154
|
+
}
|
|
155
|
+
async load(key) {
|
|
156
|
+
return await this.loadFn(key);
|
|
157
|
+
}
|
|
158
|
+
async delete(key) {
|
|
159
|
+
if (this.deleteFn) {
|
|
160
|
+
await this.deleteFn(key);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async list() {
|
|
164
|
+
if (this.listFn) {
|
|
165
|
+
return await this.listFn();
|
|
166
|
+
}
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
class PersistenceManager extends events_1.EventEmitter {
|
|
171
|
+
constructor(manager, options) {
|
|
172
|
+
super();
|
|
173
|
+
this.saveInterval = null;
|
|
174
|
+
this.isSaving = false;
|
|
175
|
+
this.manager = manager;
|
|
176
|
+
// Fix: Don't use spread that causes duplicate 'enabled'
|
|
177
|
+
this.options = {
|
|
178
|
+
enabled: true,
|
|
179
|
+
provider: "file",
|
|
180
|
+
saveInterval: 60000,
|
|
181
|
+
autoLoad: true,
|
|
182
|
+
maxBackups: 5,
|
|
183
|
+
compress: false,
|
|
184
|
+
filePath: "./players_data",
|
|
185
|
+
};
|
|
186
|
+
// Merge options manually to avoid spread duplication
|
|
187
|
+
if (options.enabled !== undefined)
|
|
188
|
+
this.options.enabled = options.enabled;
|
|
189
|
+
if (options.provider !== undefined)
|
|
190
|
+
this.options.provider = options.provider;
|
|
191
|
+
if (options.saveInterval !== undefined)
|
|
192
|
+
this.options.saveInterval = options.saveInterval;
|
|
193
|
+
if (options.autoLoad !== undefined)
|
|
194
|
+
this.options.autoLoad = options.autoLoad;
|
|
195
|
+
if (options.maxBackups !== undefined)
|
|
196
|
+
this.options.maxBackups = options.maxBackups;
|
|
197
|
+
if (options.compress !== undefined)
|
|
198
|
+
this.options.compress = options.compress;
|
|
199
|
+
if (options.filePath !== undefined)
|
|
200
|
+
this.options.filePath = options.filePath;
|
|
201
|
+
if (options.redisUrl !== undefined)
|
|
202
|
+
this.options.redisUrl = options.redisUrl;
|
|
203
|
+
if (options.redisPrefix !== undefined)
|
|
204
|
+
this.options.redisPrefix = options.redisPrefix;
|
|
205
|
+
if (options.save !== undefined)
|
|
206
|
+
this.options.save = options.save;
|
|
207
|
+
if (options.load !== undefined)
|
|
208
|
+
this.options.load = options.load;
|
|
209
|
+
if (options.delete !== undefined)
|
|
210
|
+
this.options.delete = options.delete;
|
|
211
|
+
if (options.list !== undefined)
|
|
212
|
+
this.options.list = options.list;
|
|
213
|
+
this.provider = this.createProvider();
|
|
214
|
+
if (this.options.enabled) {
|
|
215
|
+
this.startAutoSave();
|
|
216
|
+
if (this.options.autoLoad) {
|
|
217
|
+
this.loadAll().catch((err) => {
|
|
218
|
+
this.debug("Auto-load error:", err);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
createProvider() {
|
|
224
|
+
switch (this.options.provider) {
|
|
225
|
+
case "file":
|
|
226
|
+
return new FileProvider(this.options.filePath, this.options.maxBackups);
|
|
227
|
+
case "redis":
|
|
228
|
+
// Implement Redis provider if needed
|
|
229
|
+
throw new Error("Redis provider not implemented yet");
|
|
230
|
+
case "database":
|
|
231
|
+
if (!this.options.save || !this.options.load) {
|
|
232
|
+
throw new Error("Database provider requires save/load functions");
|
|
233
|
+
}
|
|
234
|
+
// Fix: Pass the save and load functions with correct signatures
|
|
235
|
+
return new CustomProvider(async (key, data) => {
|
|
236
|
+
if (this.options.save) {
|
|
237
|
+
// Call with single object argument if that's expected
|
|
238
|
+
const saveFn = this.options.save;
|
|
239
|
+
if (saveFn.length === 1) {
|
|
240
|
+
// Save function expects { key, data }
|
|
241
|
+
await saveFn({ key, data });
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Save function expects (key, data)
|
|
245
|
+
await saveFn(key, data);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}, async (key) => {
|
|
249
|
+
if (this.options.load) {
|
|
250
|
+
const loadFn = this.options.load;
|
|
251
|
+
if (loadFn.length === 0) {
|
|
252
|
+
// Load function expects no args, returns all data
|
|
253
|
+
const allData = await loadFn();
|
|
254
|
+
return allData?.get?.(key) || allData?.[key] || null;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
// Load function expects key
|
|
258
|
+
return await loadFn(key);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}, this.options.delete, this.options.list);
|
|
263
|
+
default:
|
|
264
|
+
return new FileProvider(this.options.filePath, this.options.maxBackups);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
debug(message, ...params) {
|
|
268
|
+
if (this.manager.debugEnabled) {
|
|
269
|
+
this.manager.emit("debug", `[Persistence] ${message}`, ...params);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
startAutoSave() {
|
|
273
|
+
if (this.saveInterval) {
|
|
274
|
+
clearInterval(this.saveInterval);
|
|
275
|
+
}
|
|
276
|
+
this.saveInterval = setInterval(() => {
|
|
277
|
+
this.saveAll().catch((err) => {
|
|
278
|
+
this.debug("Auto-save error:", err);
|
|
279
|
+
this.emit("error", err);
|
|
280
|
+
});
|
|
281
|
+
}, this.options.saveInterval);
|
|
282
|
+
this.debug(`Auto-save started (interval: ${this.options.saveInterval}ms)`);
|
|
283
|
+
}
|
|
284
|
+
serializeTrack(track) {
|
|
285
|
+
// Create base object with required fields only (avoid duplication)
|
|
286
|
+
const serialized = {
|
|
287
|
+
id: track.id,
|
|
288
|
+
title: track.title,
|
|
289
|
+
url: track.url,
|
|
290
|
+
source: track.source,
|
|
291
|
+
duration: track.duration,
|
|
292
|
+
thumbnail: track.thumbnail,
|
|
293
|
+
requestedBy: track.requestedBy,
|
|
294
|
+
isLive: track.isLive || false,
|
|
295
|
+
};
|
|
296
|
+
// Add optional fields if they exist on the track
|
|
297
|
+
const trackAny = track;
|
|
298
|
+
if (trackAny.author)
|
|
299
|
+
serialized.author = trackAny.author;
|
|
300
|
+
if (trackAny.artwork)
|
|
301
|
+
serialized.artwork = trackAny.artwork;
|
|
302
|
+
// Add any extra metadata (excluding fields we already set)
|
|
303
|
+
const excludedFields = new Set([
|
|
304
|
+
"id",
|
|
305
|
+
"title",
|
|
306
|
+
"url",
|
|
307
|
+
"source",
|
|
308
|
+
"duration",
|
|
309
|
+
"thumbnail",
|
|
310
|
+
"requestedBy",
|
|
311
|
+
"isLive",
|
|
312
|
+
"author",
|
|
313
|
+
"artwork",
|
|
314
|
+
]);
|
|
315
|
+
for (const key of Object.keys(trackAny)) {
|
|
316
|
+
if (!excludedFields.has(key) && trackAny[key] !== undefined) {
|
|
317
|
+
serialized[key] = trackAny[key];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return serialized;
|
|
321
|
+
}
|
|
322
|
+
serializeQueue(player) {
|
|
323
|
+
return {
|
|
324
|
+
tracks: player.upcomingTracks.map((t) => this.serializeTrack(t)),
|
|
325
|
+
current: player.currentTrack ? this.serializeTrack(player.currentTrack) : null,
|
|
326
|
+
history: player.previousTracks.map((t) => this.serializeTrack(t)),
|
|
327
|
+
loopMode: player.queue.loop(),
|
|
328
|
+
autoPlay: player.queue.autoPlay(),
|
|
329
|
+
position: player.getTime().current,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
serializePlayer(player) {
|
|
333
|
+
// Get filters safely - access through public method
|
|
334
|
+
let filters = [];
|
|
335
|
+
try {
|
|
336
|
+
const filterString = player.filter?.getFilterString();
|
|
337
|
+
if (filterString) {
|
|
338
|
+
filters = filterString.split(",").filter(Boolean);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
catch (e) {
|
|
342
|
+
// Filter may not be accessible
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
guildId: player.guildId,
|
|
346
|
+
queue: this.serializeQueue(player),
|
|
347
|
+
volume: player.volume,
|
|
348
|
+
isPlaying: player.isPlaying,
|
|
349
|
+
isPaused: player.isPaused,
|
|
350
|
+
options: player.options,
|
|
351
|
+
filters: filters.length > 0 ? filters : undefined,
|
|
352
|
+
lastUpdate: Date.now(),
|
|
353
|
+
version: "1.0.0",
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
deserializeTrack(data) {
|
|
357
|
+
// Create base track object
|
|
358
|
+
const track = {
|
|
359
|
+
id: data.id,
|
|
360
|
+
title: data.title,
|
|
361
|
+
url: data.url,
|
|
362
|
+
source: data.source,
|
|
363
|
+
duration: data.duration,
|
|
364
|
+
thumbnail: data.thumbnail,
|
|
365
|
+
requestedBy: data.requestedBy,
|
|
366
|
+
isLive: data.isLive || false,
|
|
367
|
+
};
|
|
368
|
+
// Add optional fields if they exist
|
|
369
|
+
if (data.author)
|
|
370
|
+
track.author = data.author;
|
|
371
|
+
if (data.artwork)
|
|
372
|
+
track.artwork = data.artwork;
|
|
373
|
+
// Add any extra metadata from serialized data
|
|
374
|
+
for (const key of Object.keys(data)) {
|
|
375
|
+
if (!["id", "title", "url", "source", "duration", "thumbnail", "requestedBy", "isLive", "author", "artwork"].includes(key)) {
|
|
376
|
+
track[key] = data[key];
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return track;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Save a single player
|
|
383
|
+
*/
|
|
384
|
+
async savePlayer(player) {
|
|
385
|
+
if (!this.options.enabled)
|
|
386
|
+
return false;
|
|
387
|
+
try {
|
|
388
|
+
const data = this.serializePlayer(player);
|
|
389
|
+
await this.provider.save(player.guildId, data);
|
|
390
|
+
this.debug(`Saved player: ${player.guildId}`);
|
|
391
|
+
this.emit("playerSaved", player.guildId);
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
this.debug(`Failed to save player ${player.guildId}:`, error);
|
|
396
|
+
this.emit("error", error);
|
|
397
|
+
return false;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Save all players
|
|
402
|
+
*/
|
|
403
|
+
async saveAll() {
|
|
404
|
+
if (!this.options.enabled || this.isSaving)
|
|
405
|
+
return new Map();
|
|
406
|
+
this.isSaving = true;
|
|
407
|
+
const results = new Map();
|
|
408
|
+
try {
|
|
409
|
+
const players = this.manager.getAll();
|
|
410
|
+
this.debug(`Saving ${players.length} players...`);
|
|
411
|
+
// Save in parallel with limit
|
|
412
|
+
const batchSize = 5;
|
|
413
|
+
for (let i = 0; i < players.length; i += batchSize) {
|
|
414
|
+
const batch = players.slice(i, i + batchSize);
|
|
415
|
+
const promises = batch.map((p) => this.savePlayer(p));
|
|
416
|
+
const batchResults = await Promise.all(promises);
|
|
417
|
+
batch.forEach((p, idx) => results.set(p.guildId, batchResults[idx]));
|
|
418
|
+
}
|
|
419
|
+
this.debug(`Saved ${results.size} players`);
|
|
420
|
+
this.emit("savedAll", results);
|
|
421
|
+
}
|
|
422
|
+
finally {
|
|
423
|
+
this.isSaving = false;
|
|
424
|
+
}
|
|
425
|
+
return results;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Load a single player
|
|
429
|
+
*/
|
|
430
|
+
async loadPlayer(guildId, restorePosition = true) {
|
|
431
|
+
if (!this.options.enabled)
|
|
432
|
+
return false;
|
|
433
|
+
try {
|
|
434
|
+
const data = await this.provider.load(guildId);
|
|
435
|
+
if (!data)
|
|
436
|
+
return false;
|
|
437
|
+
// Check if player already exists
|
|
438
|
+
let player = this.manager.get(guildId);
|
|
439
|
+
if (!player) {
|
|
440
|
+
player = await this.manager.create(guildId, data.options);
|
|
441
|
+
}
|
|
442
|
+
// Restore queue
|
|
443
|
+
const queue = data.queue;
|
|
444
|
+
// Clear current queue
|
|
445
|
+
player.queue.clear();
|
|
446
|
+
player.queue.loop(queue.loopMode);
|
|
447
|
+
player.queue.autoPlay(queue.autoPlay);
|
|
448
|
+
// Restore tracks
|
|
449
|
+
if (queue.tracks.length > 0) {
|
|
450
|
+
const tracks = queue.tracks.map((t) => this.deserializeTrack(t));
|
|
451
|
+
player.queue.addMultiple(tracks);
|
|
452
|
+
}
|
|
453
|
+
// Restore current track if exists
|
|
454
|
+
if (queue.current && player.connection) {
|
|
455
|
+
const currentTrack = this.deserializeTrack(queue.current);
|
|
456
|
+
player.queue.willNextTrack(currentTrack);
|
|
457
|
+
// Restore playback position if requested
|
|
458
|
+
if (restorePosition && queue.position && queue.position > 0) {
|
|
459
|
+
await player.refreshPlayerResource(true, queue.position);
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
await player.play(currentTrack);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
// Restore volume
|
|
466
|
+
player.setVolume(data.volume);
|
|
467
|
+
// Restore filters - safely access through public method
|
|
468
|
+
if (data.filters && data.filters.length > 0) {
|
|
469
|
+
try {
|
|
470
|
+
const filterManager = player.filter;
|
|
471
|
+
if (filterManager && typeof filterManager.applyFilters === "function") {
|
|
472
|
+
await filterManager.applyFilters(data.filters);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
catch (e) {
|
|
476
|
+
this.debug(`Failed to restore filters for ${guildId}:`, e);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
this.debug(`Loaded player: ${guildId}`);
|
|
480
|
+
this.emit("playerLoaded", guildId, data);
|
|
481
|
+
return true;
|
|
482
|
+
}
|
|
483
|
+
catch (error) {
|
|
484
|
+
this.debug(`Failed to load player ${guildId}:`, error);
|
|
485
|
+
this.emit("error", error);
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Load all saved players
|
|
491
|
+
*/
|
|
492
|
+
async loadAll(restorePosition = true) {
|
|
493
|
+
if (!this.options.enabled)
|
|
494
|
+
return new Map();
|
|
495
|
+
const results = new Map();
|
|
496
|
+
try {
|
|
497
|
+
const keys = await this.provider.list();
|
|
498
|
+
this.debug(`Found ${keys.length} saved players`);
|
|
499
|
+
for (const guildId of keys) {
|
|
500
|
+
const success = await this.loadPlayer(guildId, restorePosition);
|
|
501
|
+
results.set(guildId, success);
|
|
502
|
+
}
|
|
503
|
+
this.emit("loadedAll", results);
|
|
504
|
+
}
|
|
505
|
+
catch (error) {
|
|
506
|
+
this.debug("Failed to load players:", error);
|
|
507
|
+
this.emit("error", error);
|
|
508
|
+
}
|
|
509
|
+
return results;
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Delete a player's saved data
|
|
513
|
+
*/
|
|
514
|
+
async deletePlayer(guildId) {
|
|
515
|
+
if (!this.options.enabled)
|
|
516
|
+
return false;
|
|
517
|
+
try {
|
|
518
|
+
await this.provider.delete(guildId);
|
|
519
|
+
this.debug(`Deleted saved data for: ${guildId}`);
|
|
520
|
+
this.emit("playerDeleted", guildId);
|
|
521
|
+
return true;
|
|
522
|
+
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
this.debug(`Failed to delete player ${guildId}:`, error);
|
|
525
|
+
return false;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Restore from backup
|
|
530
|
+
*/
|
|
531
|
+
async restoreBackup(guildId, timestamp) {
|
|
532
|
+
if (!(this.provider instanceof FileProvider)) {
|
|
533
|
+
this.debug("Restore from backup only supported for file provider");
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
return await this.provider.restoreBackup(guildId, timestamp);
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Stop auto-save and clean up
|
|
540
|
+
*/
|
|
541
|
+
async shutdown() {
|
|
542
|
+
if (this.saveInterval) {
|
|
543
|
+
clearInterval(this.saveInterval);
|
|
544
|
+
this.saveInterval = null;
|
|
545
|
+
}
|
|
546
|
+
await this.saveAll();
|
|
547
|
+
this.debug("Persistence manager shut down");
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
exports.PersistenceManager = PersistenceManager;
|
|
551
|
+
//# sourceMappingURL=PersistenceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistenceManager.js","sourceRoot":"","sources":["../../src/persistence/PersistenceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BasePlugin = void 0;
|
|
4
4
|
class BasePlugin {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.priority = 0;
|
|
6
|
+
this.priority = 0; // Higher = run first
|
|
7
7
|
}
|
|
8
8
|
getFallback(track, signal) {
|
|
9
9
|
throw new Error("getFallback not implemented");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAAhC;QAGC,aAAQ,GAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAAhC;QAGC,aAAQ,GAAY,CAAC,CAAC,CAAC,qBAAqB;IAqB7C,CAAC;IAfA,WAAW,CAAE,KAAY,EAAE,MAAoB;QAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAE,QAAe,EAAE,IAA6D;QAC/F,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAxBD,gCAwBC"}
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { PlayerManager } from "../structures/PlayerManager";
|
|
|
4
4
|
import type { Player } from "../structures/Player";
|
|
5
5
|
type PluginManagerOptions = {
|
|
6
6
|
extractorTimeout: number | undefined;
|
|
7
|
+
maxFallbackAttempts?: number;
|
|
8
|
+
enableCache?: boolean;
|
|
7
9
|
};
|
|
8
10
|
export { BasePlugin } from "./BasePlugin";
|
|
9
11
|
export declare class PluginManager {
|
|
@@ -11,6 +13,9 @@ export declare class PluginManager {
|
|
|
11
13
|
private player;
|
|
12
14
|
private manager;
|
|
13
15
|
private plugins;
|
|
16
|
+
private streamCache;
|
|
17
|
+
private readonly STREAM_CACHE_TTL;
|
|
18
|
+
private pendingStreams;
|
|
14
19
|
constructor(player: Player, manager: PlayerManager, options: PluginManagerOptions);
|
|
15
20
|
debug(message?: any, ...optionalParams: any[]): void;
|
|
16
21
|
register(plugin: BasePlugin): void;
|
|
@@ -19,15 +24,25 @@ export declare class PluginManager {
|
|
|
19
24
|
getAll(): BasePlugin[];
|
|
20
25
|
findPlugin(query: string): BasePlugin | undefined;
|
|
21
26
|
clear(): void;
|
|
27
|
+
private getStreamCacheKey;
|
|
28
|
+
private getCachedStream;
|
|
29
|
+
private setCachedStream;
|
|
30
|
+
private getStreamWithDedupe;
|
|
31
|
+
private getStreamInternal;
|
|
22
32
|
getStream(track: Track): Promise<StreamInfo | null>;
|
|
23
33
|
/**
|
|
24
34
|
* Get related tracks for a given track
|
|
25
35
|
* @param {Track} track Track to find related tracks for
|
|
26
|
-
* @returns {Track[]} Related tracks or empty array
|
|
27
|
-
* @example
|
|
28
|
-
* const related = await player.getRelatedTracks(track);
|
|
29
|
-
* console.log(`Found ${related.length} related tracks`);
|
|
36
|
+
* @returns {Promise<Track[]>} Related tracks or empty array
|
|
30
37
|
*/
|
|
31
38
|
getRelatedTracks(track: Track): Promise<Track[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Clear stream cache
|
|
41
|
+
*/
|
|
42
|
+
clearStreamCache(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get plugin statistics
|
|
45
|
+
*/
|
|
46
|
+
getStats(): object;
|
|
32
47
|
}
|
|
33
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAsE1C,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,cAAc,CAAsD;gBAEhE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB;IAUjF,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IASlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAYjD,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,eAAe;YAYT,mBAAmB;YAqBnB,iBAAiB;IA+EzB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmBzD;;;;OAIG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA2EtD;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,QAAQ,IAAI,MAAM;CAQlB"}
|