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 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
- saveInterval: 60000, // Save every minute
179
- autoLoad: true, // Auto-load on startup
180
- compress: true, // Compress saved data
181
- maxBackups: 5, // Keep 5 backups
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, PersistenceProvider } from "../types";
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,EAAsD,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAOjE,qBAAa,YAAa,YAAW,mBAAmB;IACvD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU;IAQpD,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAcjB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmB/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA6B5E;AAiCD,qBAAa,kBAAmB,SAAQ,YAAY;IACnD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB;IA0C/D,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA4B9C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAiEpF;;OAEG;IACG,OAAO,CAAC,eAAe,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuB7E;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1E;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
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"}