@stella_project/stellalib 1.0.0
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/LICENSE +213 -0
- package/README.md +285 -0
- package/THIRD-PARTY-NOTICES.md +84 -0
- package/dist/Structures/Filters.d.ts +140 -0
- package/dist/Structures/Filters.d.ts.map +1 -0
- package/dist/Structures/Filters.js +315 -0
- package/dist/Structures/Filters.js.map +1 -0
- package/dist/Structures/LRUCache.d.ts +36 -0
- package/dist/Structures/LRUCache.d.ts.map +1 -0
- package/dist/Structures/LRUCache.js +94 -0
- package/dist/Structures/LRUCache.js.map +1 -0
- package/dist/Structures/Manager.d.ts +146 -0
- package/dist/Structures/Manager.d.ts.map +1 -0
- package/dist/Structures/Manager.js +503 -0
- package/dist/Structures/Manager.js.map +1 -0
- package/dist/Structures/Node.d.ts +118 -0
- package/dist/Structures/Node.d.ts.map +1 -0
- package/dist/Structures/Node.js +927 -0
- package/dist/Structures/Node.js.map +1 -0
- package/dist/Structures/Player.d.ts +193 -0
- package/dist/Structures/Player.d.ts.map +1 -0
- package/dist/Structures/Player.js +598 -0
- package/dist/Structures/Player.js.map +1 -0
- package/dist/Structures/Queue.d.ts +48 -0
- package/dist/Structures/Queue.d.ts.map +1 -0
- package/dist/Structures/Queue.js +114 -0
- package/dist/Structures/Queue.js.map +1 -0
- package/dist/Structures/Rest.d.ts +105 -0
- package/dist/Structures/Rest.d.ts.map +1 -0
- package/dist/Structures/Rest.js +343 -0
- package/dist/Structures/Rest.js.map +1 -0
- package/dist/Structures/SessionStore.d.ts +42 -0
- package/dist/Structures/SessionStore.d.ts.map +1 -0
- package/dist/Structures/SessionStore.js +94 -0
- package/dist/Structures/SessionStore.js.map +1 -0
- package/dist/Structures/Types.d.ts +450 -0
- package/dist/Structures/Types.d.ts.map +1 -0
- package/dist/Structures/Types.js +13 -0
- package/dist/Structures/Types.js.map +1 -0
- package/dist/Structures/Utils.d.ts +61 -0
- package/dist/Structures/Utils.d.ts.map +1 -0
- package/dist/Structures/Utils.js +204 -0
- package/dist/Structures/Utils.js.map +1 -0
- package/dist/Utils/FiltersEqualizers.d.ts +20 -0
- package/dist/Utils/FiltersEqualizers.d.ts.map +1 -0
- package/dist/Utils/FiltersEqualizers.js +96 -0
- package/dist/Utils/FiltersEqualizers.js.map +1 -0
- package/dist/Utils/ManagerCheck.d.ts +9 -0
- package/dist/Utils/ManagerCheck.d.ts.map +1 -0
- package/dist/Utils/ManagerCheck.js +45 -0
- package/dist/Utils/ManagerCheck.js.map +1 -0
- package/dist/Utils/NodeCheck.d.ts +9 -0
- package/dist/Utils/NodeCheck.d.ts.map +1 -0
- package/dist/Utils/NodeCheck.js +31 -0
- package/dist/Utils/NodeCheck.js.map +1 -0
- package/dist/Utils/PlayerCheck.d.ts +9 -0
- package/dist/Utils/PlayerCheck.d.ts.map +1 -0
- package/dist/Utils/PlayerCheck.js +23 -0
- package/dist/Utils/PlayerCheck.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* StellaLib — Copyright (c) 2026 AntonyZ, x2sadddDM, SynX, Astel (OSL-3.0)
|
|
4
|
+
* Derived from LithiumX — Copyright (c) 2025 Anantix Network (MIT)
|
|
5
|
+
* See LICENSE and THIRD-PARTY-NOTICES.md for full license details.
|
|
6
|
+
*/
|
|
7
|
+
import { Band } from "../Utils/FiltersEqualizers";
|
|
8
|
+
declare class Filters {
|
|
9
|
+
distortion: DistortionOptions | null;
|
|
10
|
+
equalizer: Band[];
|
|
11
|
+
karaoke: KaraokeOptions | null;
|
|
12
|
+
player: any;
|
|
13
|
+
rotation: RotationOptions | null;
|
|
14
|
+
timescale: TimescaleOptions | null;
|
|
15
|
+
vibrato: VibratoOptions | null;
|
|
16
|
+
volume: number;
|
|
17
|
+
private filterStatus;
|
|
18
|
+
constructor(player: any);
|
|
19
|
+
private updateFilters;
|
|
20
|
+
private applyFilter;
|
|
21
|
+
private setFilterStatus;
|
|
22
|
+
/**
|
|
23
|
+
* Sets the equalizer bands and updates the filters.
|
|
24
|
+
* @param bands The equalizer bands.
|
|
25
|
+
*/
|
|
26
|
+
setEqualizer(bands?: Band[]): this;
|
|
27
|
+
/** Applies the distortion audio effect. */
|
|
28
|
+
distort(): this;
|
|
29
|
+
/** Applies the karaoke options specified by the filter. */
|
|
30
|
+
setKaraoke(status: boolean, karaoke?: KaraokeOptions): this;
|
|
31
|
+
/** Applies the timescale options specified by the filter. */
|
|
32
|
+
setTimescale(timescale?: TimescaleOptions | null): this;
|
|
33
|
+
/** Applies the vibrato options specified by the filter. */
|
|
34
|
+
setVibrato(vibrato?: VibratoOptions | null): this;
|
|
35
|
+
/** Applies the rotation options specified by the filter. */
|
|
36
|
+
setRotation(rotation?: RotationOptions | null): this;
|
|
37
|
+
/** Applies the distortion options specified by the filter. */
|
|
38
|
+
setDistortion(distortion?: DistortionOptions | null): this;
|
|
39
|
+
/**
|
|
40
|
+
* Set the 8D audio effect.
|
|
41
|
+
* @param status Whether to enable or disable.
|
|
42
|
+
*/
|
|
43
|
+
setEightD(status: boolean): this;
|
|
44
|
+
/**
|
|
45
|
+
* Set the nightcore effect.
|
|
46
|
+
* @param status Whether to enable or disable.
|
|
47
|
+
*/
|
|
48
|
+
setNightcore(status: boolean): this;
|
|
49
|
+
/**
|
|
50
|
+
* Set the slowmo effect.
|
|
51
|
+
* @param status Whether to enable or disable.
|
|
52
|
+
*/
|
|
53
|
+
setSlowmo(status: boolean): this;
|
|
54
|
+
/**
|
|
55
|
+
* Set the soft effect.
|
|
56
|
+
* @param status Whether to enable or disable.
|
|
57
|
+
*/
|
|
58
|
+
setSoft(status: boolean): this;
|
|
59
|
+
/**
|
|
60
|
+
* Set the treble bass effect.
|
|
61
|
+
* @param status Whether to enable or disable.
|
|
62
|
+
*/
|
|
63
|
+
setTrebleBass(status: boolean): this;
|
|
64
|
+
/**
|
|
65
|
+
* Set the TV effect.
|
|
66
|
+
* @param status Whether to enable or disable.
|
|
67
|
+
*/
|
|
68
|
+
setTV(status: boolean): this;
|
|
69
|
+
/**
|
|
70
|
+
* Set the vaporwave effect.
|
|
71
|
+
* @param status Whether to enable or disable.
|
|
72
|
+
*/
|
|
73
|
+
setVaporwave(status: boolean): this;
|
|
74
|
+
/**
|
|
75
|
+
* Set the bass boost effect.
|
|
76
|
+
* @param status Whether to enable or disable.
|
|
77
|
+
*/
|
|
78
|
+
setBassBoost(status: boolean): this;
|
|
79
|
+
/**
|
|
80
|
+
* Set the distort effect.
|
|
81
|
+
* @param status Whether to enable or disable.
|
|
82
|
+
*/
|
|
83
|
+
setDistort(status: boolean): this;
|
|
84
|
+
/**
|
|
85
|
+
* Set a filter by name.
|
|
86
|
+
* @param filter The filter name.
|
|
87
|
+
* @param status Whether to enable or disable.
|
|
88
|
+
*/
|
|
89
|
+
setFilter(filter: keyof AvailableFilters | string, status: boolean): Promise<this>;
|
|
90
|
+
/** Removes all audio effects and resets the filter status. */
|
|
91
|
+
clearFilters(): Promise<this>;
|
|
92
|
+
/** Returns the status of the specified filter. */
|
|
93
|
+
getFilterStatus(filter: keyof AvailableFilters): boolean;
|
|
94
|
+
}
|
|
95
|
+
/** Options for adjusting the timescale of audio. */
|
|
96
|
+
interface TimescaleOptions {
|
|
97
|
+
speed?: number;
|
|
98
|
+
pitch?: number;
|
|
99
|
+
rate?: number;
|
|
100
|
+
}
|
|
101
|
+
/** Options for applying vibrato effect to audio. */
|
|
102
|
+
interface VibratoOptions {
|
|
103
|
+
frequency: number;
|
|
104
|
+
depth: number;
|
|
105
|
+
}
|
|
106
|
+
/** Options for applying rotation effect to audio. */
|
|
107
|
+
interface RotationOptions {
|
|
108
|
+
rotationHz: number;
|
|
109
|
+
}
|
|
110
|
+
/** Options for applying karaoke effect to audio. */
|
|
111
|
+
interface KaraokeOptions {
|
|
112
|
+
level?: number;
|
|
113
|
+
monoLevel?: number;
|
|
114
|
+
filterBand?: number;
|
|
115
|
+
filterWidth?: number;
|
|
116
|
+
}
|
|
117
|
+
interface DistortionOptions {
|
|
118
|
+
sinOffset?: number;
|
|
119
|
+
sinScale?: number;
|
|
120
|
+
cosOffset?: number;
|
|
121
|
+
cosScale?: number;
|
|
122
|
+
tanOffset?: number;
|
|
123
|
+
tanScale?: number;
|
|
124
|
+
offset?: number;
|
|
125
|
+
scale?: number;
|
|
126
|
+
}
|
|
127
|
+
interface AvailableFilters {
|
|
128
|
+
bassboost: boolean;
|
|
129
|
+
distort: boolean;
|
|
130
|
+
eightD: boolean;
|
|
131
|
+
karaoke: boolean;
|
|
132
|
+
nightcore: boolean;
|
|
133
|
+
slowmo: boolean;
|
|
134
|
+
soft: boolean;
|
|
135
|
+
trebleBass: boolean;
|
|
136
|
+
tv: boolean;
|
|
137
|
+
vaporwave: boolean;
|
|
138
|
+
}
|
|
139
|
+
export { Filters, TimescaleOptions, VibratoOptions, RotationOptions, KaraokeOptions, DistortionOptions, AvailableFilters, };
|
|
140
|
+
//# sourceMappingURL=Filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["../../src/Structures/Filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Filters = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* StellaLib — Copyright (c) 2026 AntonyZ, x2sadddDM, SynX, Astel (OSL-3.0)
|
|
7
|
+
* Derived from LithiumX — Copyright (c) 2025 Anantix Network (MIT)
|
|
8
|
+
* See LICENSE and THIRD-PARTY-NOTICES.md for full license details.
|
|
9
|
+
*/
|
|
10
|
+
const FiltersEqualizers_1 = require("../Utils/FiltersEqualizers");
|
|
11
|
+
class Filters {
|
|
12
|
+
distortion;
|
|
13
|
+
equalizer;
|
|
14
|
+
karaoke;
|
|
15
|
+
player;
|
|
16
|
+
rotation;
|
|
17
|
+
timescale;
|
|
18
|
+
vibrato;
|
|
19
|
+
volume;
|
|
20
|
+
filterStatus;
|
|
21
|
+
constructor(player) {
|
|
22
|
+
this.distortion = null;
|
|
23
|
+
this.equalizer = [];
|
|
24
|
+
this.karaoke = null;
|
|
25
|
+
this.player = player;
|
|
26
|
+
this.rotation = null;
|
|
27
|
+
this.timescale = null;
|
|
28
|
+
this.vibrato = null;
|
|
29
|
+
this.volume = 1.0;
|
|
30
|
+
this.filterStatus = {
|
|
31
|
+
bassboost: false,
|
|
32
|
+
distort: false,
|
|
33
|
+
eightD: false,
|
|
34
|
+
karaoke: false,
|
|
35
|
+
nightcore: false,
|
|
36
|
+
slowmo: false,
|
|
37
|
+
soft: false,
|
|
38
|
+
trebleBass: false,
|
|
39
|
+
tv: false,
|
|
40
|
+
vaporwave: false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async updateFilters() {
|
|
44
|
+
const { distortion, equalizer, karaoke, rotation, timescale, vibrato, volume } = this;
|
|
45
|
+
await this.player.node.rest.updatePlayer({
|
|
46
|
+
guildId: this.player.guild,
|
|
47
|
+
data: {
|
|
48
|
+
filters: {
|
|
49
|
+
distortion,
|
|
50
|
+
equalizer,
|
|
51
|
+
karaoke,
|
|
52
|
+
rotation,
|
|
53
|
+
timescale,
|
|
54
|
+
vibrato,
|
|
55
|
+
volume,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
applyFilter(filter, shouldUpdate = true) {
|
|
62
|
+
this[filter.property] = filter.value;
|
|
63
|
+
if (shouldUpdate) {
|
|
64
|
+
this.updateFilters();
|
|
65
|
+
}
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
setFilterStatus(filter, status) {
|
|
69
|
+
this.filterStatus[filter] = status;
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Sets the equalizer bands and updates the filters.
|
|
74
|
+
* @param bands The equalizer bands.
|
|
75
|
+
*/
|
|
76
|
+
setEqualizer(bands) {
|
|
77
|
+
return this.applyFilter({ property: "equalizer", value: bands ?? [] });
|
|
78
|
+
}
|
|
79
|
+
/** Applies the distortion audio effect. */
|
|
80
|
+
distort() {
|
|
81
|
+
return this.setDistortion({
|
|
82
|
+
sinOffset: 0,
|
|
83
|
+
sinScale: 0.2,
|
|
84
|
+
cosOffset: 0,
|
|
85
|
+
cosScale: 0.2,
|
|
86
|
+
tanOffset: 0,
|
|
87
|
+
tanScale: 0.2,
|
|
88
|
+
offset: 0,
|
|
89
|
+
scale: 1.2,
|
|
90
|
+
}).setFilterStatus("distort", true);
|
|
91
|
+
}
|
|
92
|
+
/** Applies the karaoke options specified by the filter. */
|
|
93
|
+
setKaraoke(status, karaoke) {
|
|
94
|
+
return this.applyFilter({
|
|
95
|
+
property: "karaoke",
|
|
96
|
+
value: karaoke ?? null,
|
|
97
|
+
}).setFilterStatus("karaoke", status);
|
|
98
|
+
}
|
|
99
|
+
/** Applies the timescale options specified by the filter. */
|
|
100
|
+
setTimescale(timescale) {
|
|
101
|
+
return this.applyFilter({ property: "timescale", value: timescale ?? null });
|
|
102
|
+
}
|
|
103
|
+
/** Applies the vibrato options specified by the filter. */
|
|
104
|
+
setVibrato(vibrato) {
|
|
105
|
+
return this.applyFilter({ property: "vibrato", value: vibrato ?? null });
|
|
106
|
+
}
|
|
107
|
+
/** Applies the rotation options specified by the filter. */
|
|
108
|
+
setRotation(rotation) {
|
|
109
|
+
return this.applyFilter({ property: "rotation", value: rotation ?? null });
|
|
110
|
+
}
|
|
111
|
+
/** Applies the distortion options specified by the filter. */
|
|
112
|
+
setDistortion(distortion) {
|
|
113
|
+
return this.applyFilter({ property: "distortion", value: distortion ?? null });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Set the 8D audio effect.
|
|
117
|
+
* @param status Whether to enable or disable.
|
|
118
|
+
*/
|
|
119
|
+
setEightD(status) {
|
|
120
|
+
if (status) {
|
|
121
|
+
return this.setRotation({ rotationHz: 0.2 }).setFilterStatus("eightD", status);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return this.setRotation(null).setFilterStatus("eightD", status);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Set the nightcore effect.
|
|
129
|
+
* @param status Whether to enable or disable.
|
|
130
|
+
*/
|
|
131
|
+
setNightcore(status) {
|
|
132
|
+
if (status) {
|
|
133
|
+
return this.setTimescale({
|
|
134
|
+
speed: 1.1,
|
|
135
|
+
pitch: 1.125,
|
|
136
|
+
rate: 1.05,
|
|
137
|
+
}).setFilterStatus("nightcore", status);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return this.setTimescale(null).setFilterStatus("nightcore", status);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Set the slowmo effect.
|
|
145
|
+
* @param status Whether to enable or disable.
|
|
146
|
+
*/
|
|
147
|
+
setSlowmo(status) {
|
|
148
|
+
if (status) {
|
|
149
|
+
return this.setTimescale({
|
|
150
|
+
speed: 0.7,
|
|
151
|
+
pitch: 1.0,
|
|
152
|
+
rate: 0.8,
|
|
153
|
+
}).setFilterStatus("slowmo", status);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return this.setTimescale(null).setFilterStatus("slowmo", status);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Set the soft effect.
|
|
161
|
+
* @param status Whether to enable or disable.
|
|
162
|
+
*/
|
|
163
|
+
setSoft(status) {
|
|
164
|
+
if (status) {
|
|
165
|
+
return this.setEqualizer(FiltersEqualizers_1.softEqualizer).setFilterStatus("soft", status);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
return this.setEqualizer([]).setFilterStatus("soft", status);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Set the treble bass effect.
|
|
173
|
+
* @param status Whether to enable or disable.
|
|
174
|
+
*/
|
|
175
|
+
setTrebleBass(status) {
|
|
176
|
+
if (status) {
|
|
177
|
+
return this.setEqualizer(FiltersEqualizers_1.trebleBassEqualizer).setFilterStatus("trebleBass", status);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return this.setEqualizer([]).setFilterStatus("trebleBass", status);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Set the TV effect.
|
|
185
|
+
* @param status Whether to enable or disable.
|
|
186
|
+
*/
|
|
187
|
+
setTV(status) {
|
|
188
|
+
if (status) {
|
|
189
|
+
return this.setEqualizer(FiltersEqualizers_1.tvEqualizer).setFilterStatus("tv", status);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
return this.setEqualizer([]).setFilterStatus("tv", status);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Set the vaporwave effect.
|
|
197
|
+
* @param status Whether to enable or disable.
|
|
198
|
+
*/
|
|
199
|
+
setVaporwave(status) {
|
|
200
|
+
if (status) {
|
|
201
|
+
return this.setEqualizer(FiltersEqualizers_1.vaporwaveEqualizer)
|
|
202
|
+
.setTimescale({ pitch: 0.55 })
|
|
203
|
+
.setFilterStatus("vaporwave", status);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
return this.setEqualizer([])
|
|
207
|
+
.setTimescale(null)
|
|
208
|
+
.setFilterStatus("vaporwave", status);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Set the bass boost effect.
|
|
213
|
+
* @param status Whether to enable or disable.
|
|
214
|
+
*/
|
|
215
|
+
setBassBoost(status) {
|
|
216
|
+
if (status) {
|
|
217
|
+
return this.setEqualizer(FiltersEqualizers_1.bassBoostEqualizer).setFilterStatus("bassboost", status);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
return this.setEqualizer([]).setFilterStatus("bassboost", status);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Set the distort effect.
|
|
225
|
+
* @param status Whether to enable or disable.
|
|
226
|
+
*/
|
|
227
|
+
setDistort(status) {
|
|
228
|
+
if (status) {
|
|
229
|
+
return this.setDistortion({
|
|
230
|
+
sinOffset: 0,
|
|
231
|
+
sinScale: 0.2,
|
|
232
|
+
cosOffset: 0,
|
|
233
|
+
cosScale: 0.2,
|
|
234
|
+
tanOffset: 0,
|
|
235
|
+
tanScale: 0.2,
|
|
236
|
+
offset: 0,
|
|
237
|
+
scale: 1.2,
|
|
238
|
+
}).setFilterStatus("distort", status);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return this.setDistortion(null).setFilterStatus("distort", status);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Set a filter by name.
|
|
246
|
+
* @param filter The filter name.
|
|
247
|
+
* @param status Whether to enable or disable.
|
|
248
|
+
*/
|
|
249
|
+
async setFilter(filter, status) {
|
|
250
|
+
if (typeof status !== "boolean")
|
|
251
|
+
throw new Error("Status must be a boolean");
|
|
252
|
+
switch (filter) {
|
|
253
|
+
case "bassboost":
|
|
254
|
+
this.setBassBoost(status);
|
|
255
|
+
break;
|
|
256
|
+
case "distort":
|
|
257
|
+
this.setDistort(status);
|
|
258
|
+
break;
|
|
259
|
+
case "eightD":
|
|
260
|
+
this.setEightD(status);
|
|
261
|
+
break;
|
|
262
|
+
case "nightcore":
|
|
263
|
+
this.setNightcore(status);
|
|
264
|
+
break;
|
|
265
|
+
case "slowmo":
|
|
266
|
+
this.setSlowmo(status);
|
|
267
|
+
break;
|
|
268
|
+
case "soft":
|
|
269
|
+
this.setSoft(status);
|
|
270
|
+
break;
|
|
271
|
+
case "trebleBass":
|
|
272
|
+
this.setTrebleBass(status);
|
|
273
|
+
break;
|
|
274
|
+
case "tv":
|
|
275
|
+
this.setTV(status);
|
|
276
|
+
break;
|
|
277
|
+
case "vaporwave":
|
|
278
|
+
this.setVaporwave(status);
|
|
279
|
+
break;
|
|
280
|
+
default: throw new Error(`Invalid filter: "${filter}"`);
|
|
281
|
+
}
|
|
282
|
+
await this.updateFilters();
|
|
283
|
+
return this;
|
|
284
|
+
}
|
|
285
|
+
/** Removes all audio effects and resets the filter status. */
|
|
286
|
+
async clearFilters() {
|
|
287
|
+
this.filterStatus = {
|
|
288
|
+
bassboost: false,
|
|
289
|
+
distort: false,
|
|
290
|
+
eightD: false,
|
|
291
|
+
karaoke: false,
|
|
292
|
+
nightcore: false,
|
|
293
|
+
slowmo: false,
|
|
294
|
+
soft: false,
|
|
295
|
+
trebleBass: false,
|
|
296
|
+
tv: false,
|
|
297
|
+
vaporwave: false,
|
|
298
|
+
};
|
|
299
|
+
this.player.filters = new Filters(this.player);
|
|
300
|
+
this.setEqualizer([]);
|
|
301
|
+
this.setDistortion(null);
|
|
302
|
+
this.setKaraoke(false);
|
|
303
|
+
this.setRotation(null);
|
|
304
|
+
this.setTimescale(null);
|
|
305
|
+
this.setVibrato(null);
|
|
306
|
+
await this.updateFilters();
|
|
307
|
+
return this;
|
|
308
|
+
}
|
|
309
|
+
/** Returns the status of the specified filter. */
|
|
310
|
+
getFilterStatus(filter) {
|
|
311
|
+
return this.filterStatus[filter];
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
exports.Filters = Filters;
|
|
315
|
+
//# sourceMappingURL=Filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filters.js","sourceRoot":"","sources":["../../src/Structures/Filters.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,kEAOoC;AACpC,MAAM,OAAO;IACL,UAAU,CAA2B;IACrC,SAAS,CAAS;IAClB,OAAO,CAAwB;IAC/B,MAAM,CAAM;IACZ,QAAQ,CAAyB;IACjC,SAAS,CAA0B;IACnC,OAAO,CAAwB;IAC/B,MAAM,CAAS;IAEd,YAAY,CAA0B;IAE9C,YAAY,MAAW;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAElB,IAAI,CAAC,YAAY,GAAG;YACnB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,EAAE,EAAE,KAAK;YACT,SAAS,EAAE,KAAK;SAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QAC1B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEtF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YAC1B,IAAI,EAAE;gBACL,OAAO,EAAE;oBACR,UAAU;oBACV,SAAS;oBACT,OAAO;oBACP,QAAQ;oBACR,SAAS;oBACT,OAAO;oBACP,MAAM;iBACN;aACD;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,WAAW,CAClB,MAA0C,EAC1C,YAAY,GAAG,IAAI;QAEnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAgB,CAAC;QAChD,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,eAAe,CAAC,MAA8B,EAAE,MAAe;QACtE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,KAAc;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,2CAA2C;IACpC,OAAO;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;YACzB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,GAAG;SACV,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,2DAA2D;IACpD,UAAU,CAAC,MAAe,EAAE,OAAwB;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAC;YACvB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO,IAAI,IAAI;SACtB,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,6DAA6D;IACtD,YAAY,CAAC,SAAmC;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,2DAA2D;IACpD,UAAU,CAAC,OAA+B;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,4DAA4D;IACrD,WAAW,CAAC,QAAiC;QACnD,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,8DAA8D;IACvD,aAAa,CAAC,UAAqC;QACzD,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,MAAe;QAC/B,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,MAAe;QAClC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC;gBACxB,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;aACV,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,MAAe;QAC/B,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC;gBACxB,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,GAAG;aACT,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,MAAe;QAC7B,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,iCAAa,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,MAAe;QACnC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,uCAAmB,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAe;QAC3B,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,+BAAW,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,MAAe;QAClC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,sCAAkB,CAAC;iBAC1C,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;iBAC7B,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;iBAC1B,YAAY,CAAC,IAAI,CAAC;iBAClB,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,MAAe;QAClC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,sCAAkB,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,MAAe;QAChC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,aAAa,CAAC;gBACzB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,GAAG;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,GAAG;gBACb,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,GAAG;aACV,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CAAC,MAAuC,EAAE,MAAe;QAC9E,IAAI,OAAO,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE7E,QAAQ,MAAM,EAAE,CAAC;YAChB,KAAK,WAAW;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACnD,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YAC/C,KAAK,QAAQ;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YAC7C,KAAK,WAAW;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACnD,KAAK,QAAQ;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YAC7C,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACzC,KAAK,YAAY;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACrD,KAAK,IAAI;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACrC,KAAK,WAAW;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YACnD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,YAAY,GAAG;YACnB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,EAAE,EAAE,KAAK;YACT,SAAS,EAAE,KAAK;SAChB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,kDAAkD;IAC3C,eAAe,CAAC,MAA8B;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACD;AAqDA,0BAAO"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* StellaLib — Copyright (c) 2026 AntonyZ, x2sadddDM, SynX, Astel (OSL-3.0)
|
|
4
|
+
* See LICENSE and THIRD-PARTY-NOTICES.md for full license details.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* A memory-efficient LRU (Least Recently Used) cache with TTL support.
|
|
8
|
+
* Evicts the oldest entries when maxSize is exceeded.
|
|
9
|
+
*/
|
|
10
|
+
export declare class LRUCache<K, V> {
|
|
11
|
+
private readonly cache;
|
|
12
|
+
private readonly maxSize;
|
|
13
|
+
private readonly ttl;
|
|
14
|
+
/**
|
|
15
|
+
* @param maxSize Maximum number of entries (default: 200).
|
|
16
|
+
* @param ttl Time-to-live in ms (0 = no expiry, default: 0).
|
|
17
|
+
*/
|
|
18
|
+
constructor(maxSize?: number, ttl?: number);
|
|
19
|
+
/** Number of entries in the cache. */
|
|
20
|
+
get size(): number;
|
|
21
|
+
/** Get a value by key. Returns undefined if not found or expired. */
|
|
22
|
+
get(key: K): V | undefined;
|
|
23
|
+
/** Check if a key exists and is not expired. */
|
|
24
|
+
has(key: K): boolean;
|
|
25
|
+
/** Set a key-value pair. Evicts LRU entry if at capacity. */
|
|
26
|
+
set(key: K, value: V): void;
|
|
27
|
+
/** Delete a key. */
|
|
28
|
+
delete(key: K): boolean;
|
|
29
|
+
/** Clear all entries. */
|
|
30
|
+
clear(): void;
|
|
31
|
+
/** Prune all expired entries. Call periodically to free memory. */
|
|
32
|
+
prune(): number;
|
|
33
|
+
/** Get memory usage estimate in bytes (rough). */
|
|
34
|
+
get memoryEstimate(): number;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=LRUCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LRUCache.d.ts","sourceRoot":"","sources":["../../src/Structures/LRUCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B;;;OAGG;gBACS,OAAO,SAAM,EAAE,GAAG,SAAI;IAKlC,sCAAsC;IACtC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,qEAAqE;IAC9D,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAgBjC,gDAAgD;IACzC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAI3B,6DAA6D;IACtD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiBlC,oBAAoB;IACb,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAI9B,yBAAyB;IAClB,KAAK,IAAI,IAAI;IAIpB,mEAAmE;IAC5D,KAAK,IAAI,MAAM;IAatB,kDAAkD;IAClD,IAAW,cAAc,IAAI,MAAM,CAGlC;CACD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* StellaLib — Copyright (c) 2026 AntonyZ, x2sadddDM, SynX, Astel (OSL-3.0)
|
|
5
|
+
* See LICENSE and THIRD-PARTY-NOTICES.md for full license details.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LRUCache = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* A memory-efficient LRU (Least Recently Used) cache with TTL support.
|
|
11
|
+
* Evicts the oldest entries when maxSize is exceeded.
|
|
12
|
+
*/
|
|
13
|
+
class LRUCache {
|
|
14
|
+
cache = new Map();
|
|
15
|
+
maxSize;
|
|
16
|
+
ttl;
|
|
17
|
+
/**
|
|
18
|
+
* @param maxSize Maximum number of entries (default: 200).
|
|
19
|
+
* @param ttl Time-to-live in ms (0 = no expiry, default: 0).
|
|
20
|
+
*/
|
|
21
|
+
constructor(maxSize = 200, ttl = 0) {
|
|
22
|
+
this.maxSize = maxSize;
|
|
23
|
+
this.ttl = ttl;
|
|
24
|
+
}
|
|
25
|
+
/** Number of entries in the cache. */
|
|
26
|
+
get size() {
|
|
27
|
+
return this.cache.size;
|
|
28
|
+
}
|
|
29
|
+
/** Get a value by key. Returns undefined if not found or expired. */
|
|
30
|
+
get(key) {
|
|
31
|
+
const entry = this.cache.get(key);
|
|
32
|
+
if (!entry)
|
|
33
|
+
return undefined;
|
|
34
|
+
// Check TTL expiry
|
|
35
|
+
if (this.ttl > 0 && Date.now() > entry.expiry) {
|
|
36
|
+
this.cache.delete(key);
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
// Move to end (most recently used) by re-inserting
|
|
40
|
+
this.cache.delete(key);
|
|
41
|
+
this.cache.set(key, entry);
|
|
42
|
+
return entry.value;
|
|
43
|
+
}
|
|
44
|
+
/** Check if a key exists and is not expired. */
|
|
45
|
+
has(key) {
|
|
46
|
+
return this.get(key) !== undefined;
|
|
47
|
+
}
|
|
48
|
+
/** Set a key-value pair. Evicts LRU entry if at capacity. */
|
|
49
|
+
set(key, value) {
|
|
50
|
+
// Delete first to reset position if already exists
|
|
51
|
+
this.cache.delete(key);
|
|
52
|
+
// Evict oldest entries if at capacity
|
|
53
|
+
while (this.cache.size >= this.maxSize) {
|
|
54
|
+
const firstKey = this.cache.keys().next().value;
|
|
55
|
+
if (firstKey !== undefined)
|
|
56
|
+
this.cache.delete(firstKey);
|
|
57
|
+
else
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
this.cache.set(key, {
|
|
61
|
+
value,
|
|
62
|
+
expiry: this.ttl > 0 ? Date.now() + this.ttl : 0,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Delete a key. */
|
|
66
|
+
delete(key) {
|
|
67
|
+
return this.cache.delete(key);
|
|
68
|
+
}
|
|
69
|
+
/** Clear all entries. */
|
|
70
|
+
clear() {
|
|
71
|
+
this.cache.clear();
|
|
72
|
+
}
|
|
73
|
+
/** Prune all expired entries. Call periodically to free memory. */
|
|
74
|
+
prune() {
|
|
75
|
+
if (this.ttl <= 0)
|
|
76
|
+
return 0;
|
|
77
|
+
const now = Date.now();
|
|
78
|
+
let pruned = 0;
|
|
79
|
+
for (const [key, entry] of this.cache) {
|
|
80
|
+
if (now > entry.expiry) {
|
|
81
|
+
this.cache.delete(key);
|
|
82
|
+
pruned++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return pruned;
|
|
86
|
+
}
|
|
87
|
+
/** Get memory usage estimate in bytes (rough). */
|
|
88
|
+
get memoryEstimate() {
|
|
89
|
+
// Rough estimate: 100 bytes overhead per Map entry + key/value sizes
|
|
90
|
+
return this.cache.size * 100;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.LRUCache = LRUCache;
|
|
94
|
+
//# sourceMappingURL=LRUCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LRUCache.js","sourceRoot":"","sources":["../../src/Structures/LRUCache.ts"],"names":[],"mappings":"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"}
|