ziplayer 0.2.7-dev.1 → 0.2.7-dev.3
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/README.md +17 -6
- package/dist/persistence/PersistenceManager.d.ts +50 -16
- package/dist/persistence/PersistenceManager.d.ts.map +1 -1
- package/dist/persistence/PersistenceManager.js +484 -60
- package/dist/persistence/PersistenceManager.js.map +1 -1
- package/dist/structures/Player.d.ts +2 -0
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +5 -0
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/PlayerManager.d.ts +3 -1
- package/dist/structures/PlayerManager.d.ts.map +1 -1
- package/dist/structures/PlayerManager.js +49 -31
- package/dist/structures/PlayerManager.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +26 -5
- package/dist/types/persistence.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/persistence/PersistenceManager.ts +570 -65
- package/src/structures/Player.ts +8 -0
- package/src/structures/PlayerManager.ts +66 -32
- package/src/types/index.ts +9 -0
- package/src/types/persistence.ts +37 -17
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@ advanced music bots quickly.
|
|
|
32
32
|
```bash
|
|
33
33
|
npm install ziplayer @ziplayer/plugin @ziplayer/extension @ziplayer/infinity @discordjs/voice discord.js opusscript
|
|
34
34
|
```
|
|
35
|
+
|
|
35
36
|
---
|
|
36
37
|
|
|
37
38
|
## 🚀 Quick Start
|
|
@@ -173,12 +174,19 @@ const manager = new PlayerManager({
|
|
|
173
174
|
plugins: [new YouTubePlugin()],
|
|
174
175
|
persistence: {
|
|
175
176
|
enabled: true,
|
|
176
|
-
provider: "file", // "file", "redis", or "database"
|
|
177
177
|
filePath: "./player_data",
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
|
|
179
|
+
// Backup management
|
|
180
|
+
maxBackups: 3, // Keep only 3 backups per player
|
|
181
|
+
maxTotalBackups: 20, // Keep max 20 total backup files
|
|
182
|
+
autoCleanupBackupsOnStart: true, // Clean old backups on startup
|
|
183
|
+
backupRetentionDays: 3, // Delete backups older than 3 days
|
|
184
|
+
|
|
185
|
+
// Auto restore
|
|
186
|
+
autoRestoreOnRestart: true,
|
|
187
|
+
restoreDelay: 3000,
|
|
188
|
+
|
|
189
|
+
compress: true,
|
|
182
190
|
},
|
|
183
191
|
});
|
|
184
192
|
|
|
@@ -510,4 +518,7 @@ player.extensionManager.clearCache("search");
|
|
|
510
518
|
## 📄 License
|
|
511
519
|
|
|
512
520
|
MIT License
|
|
513
|
-
|
|
521
|
+
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
```
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
|
-
import type { PersistenceOptions,
|
|
2
|
+
import type { PersistenceOptions, DestroyedRecord } from "../types";
|
|
3
3
|
import type { Player } from "../structures/Player";
|
|
4
4
|
import type { PlayerManager } from "../structures/PlayerManager";
|
|
5
|
-
export declare class FileProvider implements PersistenceProvider {
|
|
6
|
-
private basePath;
|
|
7
|
-
private maxBackups;
|
|
8
|
-
constructor(basePath: string, maxBackups?: number);
|
|
9
|
-
private getFilePath;
|
|
10
|
-
private getBackupPath;
|
|
11
|
-
private cleanOldBackups;
|
|
12
|
-
save(key: string, data: any, compress?: boolean): Promise<void>;
|
|
13
|
-
load(key: string): Promise<any>;
|
|
14
|
-
delete(key: string): Promise<void>;
|
|
15
|
-
list(): Promise<string[]>;
|
|
16
|
-
restoreBackup(key: string, backupTimestamp?: number): Promise<boolean>;
|
|
17
|
-
}
|
|
18
5
|
export declare class PersistenceManager extends EventEmitter {
|
|
19
6
|
private manager;
|
|
20
7
|
private options;
|
|
21
8
|
private provider;
|
|
22
9
|
private saveInterval;
|
|
23
10
|
private isSaving;
|
|
11
|
+
private isRestoring;
|
|
12
|
+
private destroyedPlayers;
|
|
13
|
+
private restoredPlayers;
|
|
14
|
+
private backupCleanupDone;
|
|
24
15
|
constructor(manager: PlayerManager, options: PersistenceOptions);
|
|
16
|
+
private setupDestroyTracking;
|
|
25
17
|
private createProvider;
|
|
26
18
|
private debug;
|
|
27
19
|
private startAutoSave;
|
|
20
|
+
private cleanupBackupsOnStart;
|
|
21
|
+
private cleanOldBackupsByAge;
|
|
22
|
+
private enforceTotalBackupLimit;
|
|
23
|
+
private markAsDestroyed;
|
|
24
|
+
private isDestroyed;
|
|
25
|
+
private saveDestroyedStatus;
|
|
26
|
+
private loadDestroyedStatus;
|
|
27
|
+
private clearDestroyedStatus;
|
|
28
28
|
private serializeTrack;
|
|
29
29
|
private serializeQueue;
|
|
30
30
|
private serializePlayer;
|
|
@@ -40,11 +40,19 @@ export declare class PersistenceManager extends EventEmitter {
|
|
|
40
40
|
/**
|
|
41
41
|
* Load a single player
|
|
42
42
|
*/
|
|
43
|
-
loadPlayer(guildId: string, restorePosition?: boolean): Promise<boolean>;
|
|
43
|
+
loadPlayer(guildId: string, restorePosition?: boolean, skipIfDestroyed?: boolean): Promise<boolean>;
|
|
44
44
|
/**
|
|
45
|
-
* Load all saved players
|
|
45
|
+
* Load all saved players with auto-restore logic
|
|
46
46
|
*/
|
|
47
47
|
loadAll(restorePosition?: boolean): Promise<Map<string, boolean>>;
|
|
48
|
+
/**
|
|
49
|
+
* Mark a player as destroyed
|
|
50
|
+
*/
|
|
51
|
+
markPlayerDestroyed(guildId: string, reason?: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Clear destroyed status for a player
|
|
54
|
+
*/
|
|
55
|
+
clearDestroyed(guildId: string): Promise<void>;
|
|
48
56
|
/**
|
|
49
57
|
* Delete a player's saved data
|
|
50
58
|
*/
|
|
@@ -53,9 +61,35 @@ export declare class PersistenceManager extends EventEmitter {
|
|
|
53
61
|
* Restore from backup
|
|
54
62
|
*/
|
|
55
63
|
restoreBackup(guildId: string, timestamp?: number): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Clean all backups for a specific player
|
|
66
|
+
*/
|
|
67
|
+
cleanBackupsForPlayer(guildId: string): Promise<number>;
|
|
68
|
+
/**
|
|
69
|
+
* Clean all backups
|
|
70
|
+
*/
|
|
71
|
+
cleanAllBackups(): Promise<number>;
|
|
72
|
+
/**
|
|
73
|
+
* Get backup statistics
|
|
74
|
+
*/
|
|
75
|
+
getBackupStats(): {
|
|
76
|
+
totalBackups: number;
|
|
77
|
+
totalSizeMB: number;
|
|
78
|
+
oldestBackup: Date | null;
|
|
79
|
+
newestBackup: Date | null;
|
|
80
|
+
backupsByPlayer: Record<string, number>;
|
|
81
|
+
} | null;
|
|
56
82
|
/**
|
|
57
83
|
* Stop auto-save and clean up
|
|
58
84
|
*/
|
|
59
85
|
shutdown(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Get list of destroyed players
|
|
88
|
+
*/
|
|
89
|
+
getDestroyedPlayers(): DestroyedRecord[];
|
|
90
|
+
/**
|
|
91
|
+
* Check if auto-restore is enabled
|
|
92
|
+
*/
|
|
93
|
+
isAutoRestoreEnabled(): boolean;
|
|
60
94
|
}
|
|
61
95
|
//# sourceMappingURL=PersistenceManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistenceManager.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistenceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PersistenceManager.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistenceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,KAAK,EAIX,kBAAkB,EAElB,eAAe,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAkUjE,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB;IAiE/D,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,aAAa;YAgBP,qBAAqB;YAkDrB,oBAAoB;YA2BpB,uBAAuB;IA2BrC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,WAAW;YAIL,mBAAmB;YAKnB,mBAAmB;YAenB,oBAAoB;IAKlC,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBlD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA2B9C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,OAAc,EAAE,eAAe,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAqFrH;;OAEG;IACG,OAAO,CAAC,eAAe,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiC7E;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1E;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpD;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBrD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa1E;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY7D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAYxC;;OAEG;IACH,cAAc,IAAI;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,GAAG,IAAI;IAiBR;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACH,mBAAmB,IAAI,eAAe,EAAE;IAIxC;;OAEG;IACH,oBAAoB,IAAI,OAAO;CAG/B"}
|