ziplayer 0.2.7-dev.0 → 0.2.7-dev.2

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.
Files changed (54) hide show
  1. package/AI-Guide.md +407 -756
  2. package/README.md +275 -10
  3. package/dist/extensions/BaseExtension.d.ts +1 -0
  4. package/dist/extensions/BaseExtension.d.ts.map +1 -1
  5. package/dist/extensions/BaseExtension.js.map +1 -1
  6. package/dist/extensions/index.d.ts +38 -3
  7. package/dist/extensions/index.d.ts.map +1 -1
  8. package/dist/extensions/index.js +259 -41
  9. package/dist/extensions/index.js.map +1 -1
  10. package/dist/persistence/PersistenceManager.d.ts +95 -0
  11. package/dist/persistence/PersistenceManager.d.ts.map +1 -0
  12. package/dist/persistence/PersistenceManager.js +968 -0
  13. package/dist/persistence/PersistenceManager.js.map +1 -0
  14. package/dist/plugins/BasePlugin.js +1 -1
  15. package/dist/plugins/BasePlugin.js.map +1 -1
  16. package/dist/plugins/index.d.ts +19 -4
  17. package/dist/plugins/index.d.ts.map +1 -1
  18. package/dist/plugins/index.js +204 -113
  19. package/dist/plugins/index.js.map +1 -1
  20. package/dist/structures/FilterManager.js +3 -3
  21. package/dist/structures/FilterManager.js.map +1 -1
  22. package/dist/structures/Player.d.ts +65 -14
  23. package/dist/structures/Player.d.ts.map +1 -1
  24. package/dist/structures/Player.js +330 -88
  25. package/dist/structures/Player.js.map +1 -1
  26. package/dist/structures/PlayerManager.d.ts +127 -91
  27. package/dist/structures/PlayerManager.d.ts.map +1 -1
  28. package/dist/structures/PlayerManager.js +437 -124
  29. package/dist/structures/PlayerManager.js.map +1 -1
  30. package/dist/structures/Queue.d.ts +136 -31
  31. package/dist/structures/Queue.d.ts.map +1 -1
  32. package/dist/structures/Queue.js +265 -46
  33. package/dist/structures/Queue.js.map +1 -1
  34. package/dist/types/index.d.ts +46 -6
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/index.js +1 -0
  37. package/dist/types/index.js.map +1 -1
  38. package/dist/types/persistence.d.ts +74 -0
  39. package/dist/types/persistence.d.ts.map +1 -0
  40. package/dist/types/persistence.js +3 -0
  41. package/dist/types/persistence.js.map +1 -0
  42. package/package.json +3 -2
  43. package/src/extensions/BaseExtension.ts +1 -0
  44. package/src/extensions/index.ts +320 -37
  45. package/src/persistence/PersistenceManager.ts +1073 -0
  46. package/src/plugins/BasePlugin.ts +1 -1
  47. package/src/plugins/index.ts +248 -133
  48. package/src/structures/FilterManager.ts +3 -3
  49. package/src/structures/Player.ts +358 -94
  50. package/src/structures/PlayerManager.ts +535 -129
  51. package/src/structures/Queue.ts +300 -55
  52. package/src/types/index.ts +52 -10
  53. package/src/types/persistence.ts +83 -0
  54. package/src/types/plugin.ts +1 -1
@@ -0,0 +1,83 @@
1
+ import type { Track, LoopMode, PlayerOptions } from "../types";
2
+
3
+ export interface SerializedTrack {
4
+ id: string;
5
+ title: string;
6
+ url: string;
7
+ source: string;
8
+ duration: number;
9
+ thumbnail?: string;
10
+ author?: string;
11
+ requestedBy?: string;
12
+ isLive?: boolean;
13
+ artwork?: string;
14
+ [key: string]: any;
15
+ }
16
+
17
+ export interface SerializedQueue {
18
+ tracks: SerializedTrack[];
19
+ current: SerializedTrack | null;
20
+ history: SerializedTrack[];
21
+ loopMode: LoopMode;
22
+ autoPlay: boolean;
23
+ position?: number;
24
+ }
25
+
26
+ export interface SerializedPlayer {
27
+ guildId: string;
28
+ queue: SerializedQueue;
29
+ volume: number;
30
+ isPlaying: boolean;
31
+ isPaused: boolean;
32
+ options: PlayerOptions;
33
+ filters?: string[];
34
+ lastUpdate: number;
35
+ version: string;
36
+ wasDestroyed?: boolean; // Track if player was destroyed
37
+ destroyedAt?: number; // When it was destroyed
38
+ }
39
+
40
+ export interface PersistenceOptions {
41
+ enabled: boolean;
42
+ provider?: "file" | "redis" | "database";
43
+ saveInterval?: number;
44
+ autoLoad?: boolean;
45
+ autoRestoreOnRestart?: boolean; // Auto restore after restart
46
+ restoreDelay?: number; // Delay before restoring (ms)
47
+ maxBackups?: number; // Max backups per player (default: 5)
48
+ maxTotalBackups?: number; // Max total backups across all players
49
+ autoCleanupBackupsOnStart?: boolean; // Auto delete old backups on restart
50
+ backupRetentionDays?: number; // Delete backups older than N days
51
+ compress?: boolean;
52
+ filePath?: string;
53
+ redisUrl?: string;
54
+ redisPrefix?: string;
55
+
56
+ // Database provider functions (different signatures)
57
+ save?: ((key: string, data: any) => Promise<void>) | ((data: any) => Promise<void>);
58
+ load?: ((key: string) => Promise<any>) | (() => Promise<any>);
59
+ delete?: (key: string) => Promise<void>;
60
+ list?: () => Promise<string[]>;
61
+ }
62
+
63
+ export interface PersistenceProvider {
64
+ save(key: string, data: any): Promise<void>;
65
+ load(key: string): Promise<any>;
66
+ delete(key: string): Promise<void>;
67
+ list(): Promise<string[]>;
68
+ }
69
+
70
+ // Track destroyed players for restart detection
71
+ export interface DestroyedRecord {
72
+ guildId: string;
73
+ destroyedAt: number;
74
+ reason?: string;
75
+ }
76
+
77
+ export interface BackupInfo {
78
+ key: string;
79
+ path: string;
80
+ timestamp: number;
81
+ size: number;
82
+ isCompressed: boolean;
83
+ }
@@ -12,7 +12,7 @@ import type { SearchResult, StreamInfo, Track } from ".";
12
12
  export interface SourcePlugin {
13
13
  name: string;
14
14
  version: string;
15
- priority?: number;
15
+ priority?: number; // Higher = run first, default is 0. Lower priority plugins are tried first in getStream fallback.
16
16
  canHandle(query: string): boolean;
17
17
  search(query: string, requestedBy: string): Promise<SearchResult>;
18
18
  getStream(track: Track): Promise<StreamInfo>;