@discordeno/utils 19.0.0-next.3ebcce8 → 19.0.0-next.40c19da
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 +1 -1
- package/dist/Collection.js +113 -2
- package/dist/Collection.js.map +1 -0
- package/dist/base64.js +262 -2
- package/dist/base64.js.map +1 -0
- package/dist/bucket.d.ts +34 -48
- package/dist/bucket.d.ts.map +1 -1
- package/dist/bucket.js +67 -2
- package/dist/bucket.js.map +1 -0
- package/dist/casing.d.ts.map +1 -1
- package/dist/casing.js +51 -2
- package/dist/casing.js.map +1 -0
- package/dist/colors.js +471 -2
- package/dist/colors.js.map +1 -0
- package/dist/files.js +41 -2
- package/dist/files.js.map +1 -0
- package/dist/hash.js +19 -2
- package/dist/hash.js.map +1 -0
- package/dist/images.js +66 -2
- package/dist/images.js.map +1 -0
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +130 -2
- package/dist/logger.js.map +1 -0
- package/dist/permissions.js +17 -2
- package/dist/permissions.js.map +1 -0
- package/dist/reactions.js +11 -2
- package/dist/reactions.js.map +1 -0
- package/dist/token.js +16 -2
- package/dist/token.js.map +1 -0
- package/dist/typeguards.js +15 -2
- package/dist/typeguards.js.map +1 -0
- package/dist/urlToBase64.d.ts.map +1 -1
- package/dist/urlToBase64.js +10 -2
- package/dist/urlToBase64.js.map +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +15 -2
- package/dist/utils.js.map +1 -0
- package/package.json +13 -12
package/README.md
CHANGED
|
@@ -149,6 +149,6 @@ and unofficial templates:
|
|
|
149
149
|
|
|
150
150
|
## Links
|
|
151
151
|
|
|
152
|
-
- [Website](https://discordeno.
|
|
152
|
+
- [Website](https://discordeno.github.io/discordeno/)
|
|
153
153
|
- [Documentation](https://doc.deno.land/https/deno.land/x/discordeno/mod.ts)
|
|
154
154
|
- [Discord](https://discord.com/invite/5vBgXk3UcZ)
|
package/dist/Collection.js
CHANGED
|
@@ -1,2 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlSG9sZGVyQm90IHt9XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uPEssIFY+IGV4dGVuZHMgTWFwPEssIFY+IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBpdGVtcyBhbGxvd2VkIGluIHRoaXMgY29sbGVjdGlvbi4gVG8gZGlzYWJsZSBjYWNoZSwgc2V0IGl0IDAsIHNldCB0byB1bmRlZmluZWQgdG8gbWFrZSBpdCBpbmZpbml0ZS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBtYXhTaXplOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgLyoqIEhhbmRsZXIgdG8gcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIGNvbGxlY3Rpb24gZXZlcnkgc28gb2Z0ZW4uICovXG4gIHN3ZWVwZXI6IChDb2xsZWN0aW9uU3dlZXBlcjxLLCBWPiAmIHsgaW50ZXJ2YWxJZD86IE5vZGVKUy5UaW1lciB9KSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKGVudHJpZXM/OiAoUmVhZG9ubHlBcnJheTxyZWFkb25seSBbSywgVl0+IHwgbnVsbCkgfCBNYXA8SywgVj4sIG9wdGlvbnM/OiBDb2xsZWN0aW9uT3B0aW9uczxLLCBWPikge1xuICAgIHN1cGVyKGVudHJpZXMgPz8gW10pXG5cbiAgICB0aGlzLm1heFNpemUgPSBvcHRpb25zPy5tYXhTaXplXG5cbiAgICBpZiAoIW9wdGlvbnM/LnN3ZWVwZXIpIHJldHVyblxuXG4gICAgdGhpcy5zdGFydFN3ZWVwZXIob3B0aW9ucy5zd2VlcGVyKVxuICB9XG5cbiAgc3RhcnRTd2VlcGVyKG9wdGlvbnM6IENvbGxlY3Rpb25Td2VlcGVyPEssIFY+KTogTm9kZUpTLlRpbWVyIHtcbiAgICBpZiAodGhpcy5zd2VlcGVyPy5pbnRlcnZhbElkKSBjbGVhckludGVydmFsKHRoaXMuc3dlZXBlci5pbnRlcnZhbElkKVxuXG4gICAgdGhpcy5zd2VlcGVyID0gb3B0aW9uc1xuICAgIHRoaXMuc3dlZXBlci5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zd2VlcGVyPy5maWx0ZXIodmFsdWUsIGtleSwgb3B0aW9ucy5ib3QpKSByZXR1cm5cblxuICAgICAgICB0aGlzLmRlbGV0ZShrZXkpXG4gICAgICAgIHJldHVybiBrZXlcbiAgICAgIH0pXG4gICAgfSwgb3B0aW9ucy5pbnRlcnZhbClcblxuICAgIHJldHVybiB0aGlzLnN3ZWVwZXIuaW50ZXJ2YWxJZFxuICB9XG5cbiAgc3RvcFN3ZWVwZXIoKTogdm9pZCB7XG4gICAgcmV0dXJuIGNsZWFySW50ZXJ2YWwodGhpcy5zd2VlcGVyPy5pbnRlcnZhbElkKVxuICB9XG5cbiAgY2hhbmdlU3dlZXBlckludGVydmFsKG5ld0ludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zd2VlcGVyID09IG51bGwpIHJldHVyblxuXG4gICAgdGhpcy5zdGFydFN3ZWVwZXIoeyBmaWx0ZXI6IHRoaXMuc3dlZXBlci5maWx0ZXIsIGludGVydmFsOiBuZXdJbnRlcnZhbCB9KVxuICB9XG5cbiAgY2hhbmdlU3dlZXBlckZpbHRlcihuZXdGaWx0ZXI6ICh2YWx1ZTogViwga2V5OiBLLCBib3Q6IFBsYWNlSG9sZGVyQm90KSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3dlZXBlciA9PSBudWxsKSByZXR1cm5cblxuICAgIHRoaXMuc3RhcnRTd2VlcGVyKHsgZmlsdGVyOiBuZXdGaWx0ZXIsIGludGVydmFsOiB0aGlzLnN3ZWVwZXIuaW50ZXJ2YWwgfSlcbiAgfVxuXG4gIC8qKiBBZGQgYW4gaXRlbSB0byB0aGUgY29sbGVjdGlvbi4gTWFrZXMgc3VyZSBub3QgdG8gZ28gYWJvdmUgdGhlIG1heFNpemUuICovXG4gIHNldChrZXk6IEssIHZhbHVlOiBWKTogdGhpcyB7XG4gICAgLy8gV2hlbiB0aGlzIGNvbGxlY3Rpb24gaXMgbWF4U2l6ZWQgbWFrZSBzdXJlIHdlIGNhbiBhZGQgZmlyc3RcbiAgICBpZiAoKHRoaXMubWF4U2l6ZSAhPT0gdW5kZWZpbmVkIHx8IHRoaXMubWF4U2l6ZSA9PT0gMCkgJiYgdGhpcy5zaXplID49IHRoaXMubWF4U2l6ZSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuc2V0KGtleSwgdmFsdWUpXG4gIH1cblxuICAvKiogQWRkIGFuIGl0ZW0gdG8gdGhlIGNvbGxlY3Rpb24sIG5vIG1hdHRlciB3aGF0IHRoZSBtYXhTaXplIGlzLiAqL1xuICBmb3JjZVNldChrZXk6IEssIHZhbHVlOiBWKTogdGhpcyB7XG4gICAgcmV0dXJuIHN1cGVyLnNldChrZXksIHZhbHVlKVxuICB9XG5cbiAgLyoqIENvbnZlcnQgdGhlIGNvbGxlY3Rpb24gdG8gYW4gYXJyYXkuICovXG4gIGFycmF5KCk6IFZbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbHVlcygpXVxuICB9XG5cbiAgLyoqIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGlzIGNvbGxlY3Rpb24uICovXG4gIGZpcnN0KCk6IFYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcygpLm5leHQoKS52YWx1ZVxuICB9XG5cbiAgLyoqIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBlbGVtZW50IGluIHRoaXMgY29sbGVjdGlvbi4gKi9cbiAgbGFzdCgpOiBWIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gWy4uLnRoaXMudmFsdWVzKCldW3RoaXMuc2l6ZSAtIDFdXG4gIH1cblxuICAvKiogUmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgcmFuZG9tIGVsZW1lbnQgaW4gdGhpcyBjb2xsZWN0aW9uLiAqL1xuICByYW5kb20oKTogViB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYXJyYXkgPSBbLi4udGhpcy52YWx1ZXMoKV1cbiAgICByZXR1cm4gYXJyYXlbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyYXkubGVuZ3RoKV1cbiAgfVxuXG4gIC8qKiBGaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBpbiB0aGlzIGNvbGxlY3Rpb24uICovXG4gIGZpbmQoY2FsbGJhY2s6ICh2YWx1ZTogViwga2V5OiBLKSA9PiBib29sZWFuKTogTm9uTnVsbGFibGU8Vj4gfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMua2V5cygpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGtleSkhXG4gICAgICBpZiAoY2FsbGJhY2sodmFsdWUsIGtleSkpIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgICAvLyBJZiBub3RoaW5nIG1hdGNoZWRcbiAgfVxuXG4gIC8qKiBGaW5kIGFsbCBlbGVtZW50cyBpbiB0aGlzIGNvbGxlY3Rpb24gdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybi4gKi9cbiAgZmlsdGVyKGNhbGxiYWNrOiAodmFsdWU6IFYsIGtleTogSykgPT4gYm9vbGVhbik6IENvbGxlY3Rpb248SywgVj4ge1xuICAgIGNvbnN0IHJlbGV2YW50ID0gbmV3IENvbGxlY3Rpb248SywgVj4oKVxuICAgIHRoaXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKHZhbHVlLCBrZXkpKSByZWxldmFudC5zZXQoa2V5LCB2YWx1ZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlbGV2YW50XG4gIH1cblxuICAvKiogQ29udmVydHMgdGhlIGNvbGxlY3Rpb24gaW50byBhbiBhcnJheSBieSBydW5uaW5nIGEgY2FsbGJhY2sgb24gYWxsIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBtYXA8VD4oY2FsbGJhY2s6ICh2YWx1ZTogViwga2V5OiBLKSA9PiBUKTogVFtdIHtcbiAgICBjb25zdCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmtleXMoKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChrZXkpIVxuICAgICAgcmVzdWx0cy5wdXNoKGNhbGxiYWNrKHZhbHVlLCBrZXkpKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIG9uZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24gbWF0Y2hlcyB0aGUgcGF0dGVybi4gKi9cbiAgc29tZShjYWxsYmFjazogKHZhbHVlOiBWLCBrZXk6IEspID0+IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmtleXMoKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChrZXkpIVxuICAgICAgaWYgKGNhbGxiYWNrKHZhbHVlLCBrZXkpKSByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIENoZWNrIGlmIGFsbCBvZiB0aGUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24gbWF0Y2hlcyB0aGUgcGF0dGVybi4gKi9cbiAgZXZlcnkoY2FsbGJhY2s6ICh2YWx1ZTogViwga2V5OiBLKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoa2V5KSFcbiAgICAgIGlmICghY2FsbGJhY2sodmFsdWUsIGtleSkpIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKiogUnVucyBhIGNhbGxiYWNrIG9uIGFsbCBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbiwgbWVyZ2luZyB0aGVtIGludG8gYSBzaW5nbGUgdmFsdWUuICovXG4gIHJlZHVjZTxUPihjYWxsYmFjazogKGFjY3VtdWxhdG9yOiBULCB2YWx1ZTogViwga2V5OiBLKSA9PiBULCBpbml0aWFsVmFsdWU/OiBUKTogVCB7XG4gICAgbGV0IGFjY3VtdWxhdG9yOiBUID0gaW5pdGlhbFZhbHVlIVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoa2V5KSFcbiAgICAgIGFjY3VtdWxhdG9yID0gY2FsbGJhY2soYWNjdW11bGF0b3IsIHZhbHVlLCBrZXkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uT3B0aW9uczxLLCBWPiB7XG4gIC8qKiBIYW5kbGVyIHRvIGNsZWFuIG91dCB0aGUgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24gZXZlcnkgc28gb2Z0ZW4uICovXG4gIHN3ZWVwZXI/OiBDb2xsZWN0aW9uU3dlZXBlcjxLLCBWPlxuICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGFsbG93ZWQgaW4gdGhlIGNvbGxlY3Rpb24uICovXG4gIG1heFNpemU/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uU3dlZXBlcjxLLCBWPiB7XG4gIC8qKiBUaGUgZmlsdGVyIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIGVsZW1lbnQgc2hvdWxkIGJlIGRlbGV0ZWQgb3Igbm90ICovXG4gIGZpbHRlcjogKHZhbHVlOiBWLCBrZXk6IEssIC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuXG4gIC8qKiBUaGUgaW50ZXJ2YWwgaW4gd2hpY2ggdGhlIHN3ZWVwZXIgc2hvdWxkIHJ1biAqL1xuICBpbnRlcnZhbDogbnVtYmVyXG4gIC8qKiBUaGUgYm90IG9iamVjdCBpdHNlbGYgKi9cbiAgYm90PzogUGxhY2VIb2xkZXJCb3Rcbn1cbiJdLCJuYW1lcyI6WyJDb2xsZWN0aW9uIiwiTWFwIiwiY29uc3RydWN0b3IiLCJlbnRyaWVzIiwib3B0aW9ucyIsIm1heFNpemUiLCJzd2VlcGVyIiwic3RhcnRTd2VlcGVyIiwiaW50ZXJ2YWxJZCIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImZvckVhY2giLCJ2YWx1ZSIsImtleSIsImZpbHRlciIsImJvdCIsImRlbGV0ZSIsImludGVydmFsIiwic3RvcFN3ZWVwZXIiLCJjaGFuZ2VTd2VlcGVySW50ZXJ2YWwiLCJuZXdJbnRlcnZhbCIsImNoYW5nZVN3ZWVwZXJGaWx0ZXIiLCJuZXdGaWx0ZXIiLCJzZXQiLCJ1bmRlZmluZWQiLCJzaXplIiwiZm9yY2VTZXQiLCJhcnJheSIsInZhbHVlcyIsImZpcnN0IiwibmV4dCIsImxhc3QiLCJyYW5kb20iLCJNYXRoIiwiZmxvb3IiLCJsZW5ndGgiLCJmaW5kIiwiY2FsbGJhY2siLCJrZXlzIiwiZ2V0IiwicmVsZXZhbnQiLCJtYXAiLCJyZXN1bHRzIiwicHVzaCIsInNvbWUiLCJldmVyeSIsInJlZHVjZSIsImluaXRpYWxWYWx1ZSIsImFjY3VtdWxhdG9yIl0sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLE1BQU1BLG1CQUF5QkMsSUFTcENDLFlBQVlDLENBQTZELENBQUVDLENBQWlDLENBQUUsQ0FLNUcsR0FKQSxLQUFLLENBQUNELEdBQVcsRUFBRSxFQUVuQixJQUFJLENBQUNFLE9BQU8sQ0FBR0QsR0FBU0MsUUFFcEIsQ0FBQ0QsR0FBU0UsUUFBUyxNQUFNLENBRTdCLElBQUksQ0FBQ0MsWUFBWSxDQUFDSCxFQUFRRSxPQUFPLENBQ25DLENBRUFDLGFBQWFILENBQWdDLENBQWdCLENBYTNELE9BWkksSUFBSSxDQUFDRSxPQUFPLEVBQUVFLFlBQVlDLGNBQWMsSUFBSSxDQUFDSCxPQUFPLENBQUNFLFVBQVUsRUFFbkUsSUFBSSxDQUFDRixPQUFPLENBQUdGLEVBQ2YsSUFBSSxDQUFDRSxPQUFPLENBQUNFLFVBQVUsQ0FBR0UsWUFBWSxJQUFNLENBQzFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUNDLEVBQU9DLElBQVEsQ0FDM0IsR0FB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
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
2
|
+
export class Collection extends Map {
|
|
3
|
+
constructor(entries, options){
|
|
4
|
+
super(entries ?? []);
|
|
5
|
+
this.maxSize = options?.maxSize;
|
|
6
|
+
if (!options?.sweeper) return;
|
|
7
|
+
this.startSweeper(options.sweeper);
|
|
8
|
+
}
|
|
9
|
+
startSweeper(options) {
|
|
10
|
+
if (this.sweeper?.intervalId) clearInterval(this.sweeper.intervalId);
|
|
11
|
+
this.sweeper = options;
|
|
12
|
+
this.sweeper.intervalId = setInterval(()=>{
|
|
13
|
+
this.forEach((value, key)=>{
|
|
14
|
+
if (!this.sweeper?.filter(value, key, options.bot)) return;
|
|
15
|
+
this.delete(key);
|
|
16
|
+
return key;
|
|
17
|
+
});
|
|
18
|
+
}, options.interval);
|
|
19
|
+
return this.sweeper.intervalId;
|
|
20
|
+
}
|
|
21
|
+
stopSweeper() {
|
|
22
|
+
return clearInterval(this.sweeper?.intervalId);
|
|
23
|
+
}
|
|
24
|
+
changeSweeperInterval(newInterval) {
|
|
25
|
+
if (this.sweeper == null) return;
|
|
26
|
+
this.startSweeper({
|
|
27
|
+
filter: this.sweeper.filter,
|
|
28
|
+
interval: newInterval
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
changeSweeperFilter(newFilter) {
|
|
32
|
+
if (this.sweeper == null) return;
|
|
33
|
+
this.startSweeper({
|
|
34
|
+
filter: newFilter,
|
|
35
|
+
interval: this.sweeper.interval
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** Add an item to the collection. Makes sure not to go above the maxSize. */ set(key, value) {
|
|
39
|
+
// When this collection is maxSized make sure we can add first
|
|
40
|
+
if ((this.maxSize !== undefined || this.maxSize === 0) && this.size >= this.maxSize) {
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
return super.set(key, value);
|
|
44
|
+
}
|
|
45
|
+
/** Add an item to the collection, no matter what the maxSize is. */ forceSet(key, value) {
|
|
46
|
+
return super.set(key, value);
|
|
47
|
+
}
|
|
48
|
+
/** Convert the collection to an array. */ array() {
|
|
49
|
+
return [
|
|
50
|
+
...this.values()
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
/** Retrieve the value of the first element in this collection. */ first() {
|
|
54
|
+
return this.values().next().value;
|
|
55
|
+
}
|
|
56
|
+
/** Retrieve the value of the last element in this collection. */ last() {
|
|
57
|
+
return [
|
|
58
|
+
...this.values()
|
|
59
|
+
][this.size - 1];
|
|
60
|
+
}
|
|
61
|
+
/** Retrieve the value of a random element in this collection. */ random() {
|
|
62
|
+
const array = [
|
|
63
|
+
...this.values()
|
|
64
|
+
];
|
|
65
|
+
return array[Math.floor(Math.random() * array.length)];
|
|
66
|
+
}
|
|
67
|
+
/** Find a specific element in this collection. */ find(callback) {
|
|
68
|
+
for (const key of this.keys()){
|
|
69
|
+
const value = this.get(key);
|
|
70
|
+
if (callback(value, key)) return value;
|
|
71
|
+
}
|
|
72
|
+
// If nothing matched
|
|
73
|
+
}
|
|
74
|
+
/** Find all elements in this collection that match the given pattern. */ filter(callback) {
|
|
75
|
+
const relevant = new Collection();
|
|
76
|
+
this.forEach((value, key)=>{
|
|
77
|
+
if (callback(value, key)) relevant.set(key, value);
|
|
78
|
+
});
|
|
79
|
+
return relevant;
|
|
80
|
+
}
|
|
81
|
+
/** Converts the collection into an array by running a callback on all items in the collection. */ map(callback) {
|
|
82
|
+
const results = [];
|
|
83
|
+
for (const key of this.keys()){
|
|
84
|
+
const value = this.get(key);
|
|
85
|
+
results.push(callback(value, key));
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
/** Check if one of the items in the collection matches the pattern. */ some(callback) {
|
|
90
|
+
for (const key of this.keys()){
|
|
91
|
+
const value = this.get(key);
|
|
92
|
+
if (callback(value, key)) return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
/** Check if all of the items in the collection matches the pattern. */ every(callback) {
|
|
97
|
+
for (const key of this.keys()){
|
|
98
|
+
const value = this.get(key);
|
|
99
|
+
if (!callback(value, key)) return false;
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
/** Runs a callback on all items in the collection, merging them into a single value. */ reduce(callback, initialValue) {
|
|
104
|
+
let accumulator = initialValue;
|
|
105
|
+
for (const key of this.keys()){
|
|
106
|
+
const value = this.get(key);
|
|
107
|
+
accumulator = callback(accumulator, value, key);
|
|
108
|
+
}
|
|
109
|
+
return accumulator;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=Collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Collection.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface PlaceHolderBot {}\n\nexport class Collection<K, V> extends Map<K, V> {\n /**\n * The maximum amount of items allowed in this collection. To disable cache, set it 0, set to undefined to make it infinite.\n * @default undefined\n */\n maxSize: number | undefined\n /** Handler to remove items from the collection every so often. */\n sweeper: (CollectionSweeper<K, V> & { intervalId?: NodeJS.Timer }) | undefined\n\n constructor(entries?: (ReadonlyArray<readonly [K, V]> | null) | Map<K, V>, options?: CollectionOptions<K, V>) {\n super(entries ?? [])\n\n this.maxSize = options?.maxSize\n\n if (!options?.sweeper) return\n\n this.startSweeper(options.sweeper)\n }\n\n startSweeper(options: CollectionSweeper<K, V>): NodeJS.Timer {\n if (this.sweeper?.intervalId) clearInterval(this.sweeper.intervalId)\n\n this.sweeper = options\n this.sweeper.intervalId = setInterval(() => {\n this.forEach((value, key) => {\n if (!this.sweeper?.filter(value, key, options.bot)) return\n\n this.delete(key)\n return key\n })\n }, options.interval)\n\n return this.sweeper.intervalId\n }\n\n stopSweeper(): void {\n return clearInterval(this.sweeper?.intervalId)\n }\n\n changeSweeperInterval(newInterval: number): void {\n if (this.sweeper == null) return\n\n this.startSweeper({ filter: this.sweeper.filter, interval: newInterval })\n }\n\n changeSweeperFilter(newFilter: (value: V, key: K, bot: PlaceHolderBot) => boolean): void {\n if (this.sweeper == null) return\n\n this.startSweeper({ filter: newFilter, interval: this.sweeper.interval })\n }\n\n /** Add an item to the collection. Makes sure not to go above the maxSize. */\n set(key: K, value: V): this {\n // When this collection is maxSized make sure we can add first\n if ((this.maxSize !== undefined || this.maxSize === 0) && this.size >= this.maxSize) {\n return this\n }\n\n return super.set(key, value)\n }\n\n /** Add an item to the collection, no matter what the maxSize is. */\n forceSet(key: K, value: V): this {\n return super.set(key, value)\n }\n\n /** Convert the collection to an array. */\n array(): V[] {\n return [...this.values()]\n }\n\n /** Retrieve the value of the first element in this collection. */\n first(): V | undefined {\n return this.values().next().value\n }\n\n /** Retrieve the value of the last element in this collection. */\n last(): V | undefined {\n return [...this.values()][this.size - 1]\n }\n\n /** Retrieve the value of a random element in this collection. */\n random(): V | undefined {\n const array = [...this.values()]\n return array[Math.floor(Math.random() * array.length)]\n }\n\n /** Find a specific element in this collection. */\n find(callback: (value: V, key: K) => boolean): NonNullable<V> | undefined {\n for (const key of this.keys()) {\n const value = this.get(key)!\n if (callback(value, key)) return value\n }\n // If nothing matched\n }\n\n /** Find all elements in this collection that match the given pattern. */\n filter(callback: (value: V, key: K) => boolean): Collection<K, V> {\n const relevant = new Collection<K, V>()\n this.forEach((value, key) => {\n if (callback(value, key)) relevant.set(key, value)\n })\n\n return relevant\n }\n\n /** Converts the collection into an array by running a callback on all items in the collection. */\n map<T>(callback: (value: V, key: K) => T): T[] {\n const results = []\n for (const key of this.keys()) {\n const value = this.get(key)!\n results.push(callback(value, key))\n }\n return results\n }\n\n /** Check if one of the items in the collection matches the pattern. */\n some(callback: (value: V, key: K) => boolean): boolean {\n for (const key of this.keys()) {\n const value = this.get(key)!\n if (callback(value, key)) return true\n }\n\n return false\n }\n\n /** Check if all of the items in the collection matches the pattern. */\n every(callback: (value: V, key: K) => boolean): boolean {\n for (const key of this.keys()) {\n const value = this.get(key)!\n if (!callback(value, key)) return false\n }\n\n return true\n }\n\n /** Runs a callback on all items in the collection, merging them into a single value. */\n reduce<T>(callback: (accumulator: T, value: V, key: K) => T, initialValue?: T): T {\n let accumulator: T = initialValue!\n\n for (const key of this.keys()) {\n const value = this.get(key)!\n accumulator = callback(accumulator, value, key)\n }\n\n return accumulator\n }\n}\n\nexport interface CollectionOptions<K, V> {\n /** Handler to clean out the items in the collection every so often. */\n sweeper?: CollectionSweeper<K, V>\n /** The maximum number of items allowed in the collection. */\n maxSize?: number\n}\n\nexport interface CollectionSweeper<K, V> {\n /** The filter to determine whether an element should be deleted or not */\n filter: (value: V, key: K, ...args: any[]) => boolean\n /** The interval in which the sweeper should run */\n interval: number\n /** The bot object itself */\n bot?: PlaceHolderBot\n}\n"],"names":["Collection","Map","constructor","entries","options","maxSize","sweeper","startSweeper","intervalId","clearInterval","setInterval","forEach","value","key","filter","bot","delete","interval","stopSweeper","changeSweeperInterval","newInterval","changeSweeperFilter","newFilter","set","undefined","size","forceSet","array","values","first","next","last","random","Math","floor","length","find","callback","keys","get","relevant","map","results","push","some","every","reduce","initialValue","accumulator"],"mappings":"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"}
|
package/dist/base64.js
CHANGED
|
@@ -1,2 +1,262 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
3
|
+
* Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
|
|
4
|
+
* @param data
|
|
5
|
+
*/ export function encode(data) {
|
|
6
|
+
const uint8 = typeof data === 'string' ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
7
|
+
let result = '';
|
|
8
|
+
let i;
|
|
9
|
+
const l = uint8.length;
|
|
10
|
+
for(i = 2; i < l; i += 3){
|
|
11
|
+
result += base64abc[uint8[i - 2] >> 2];
|
|
12
|
+
result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4];
|
|
13
|
+
result += base64abc[(uint8[i - 1] & 0x0f) << 2 | uint8[i] >> 6];
|
|
14
|
+
result += base64abc[uint8[i] & 0x3f];
|
|
15
|
+
}
|
|
16
|
+
if (i === l + 1) {
|
|
17
|
+
// 1 octet yet to write
|
|
18
|
+
result += base64abc[uint8[i - 2] >> 2];
|
|
19
|
+
result += base64abc[(uint8[i - 2] & 0x03) << 4];
|
|
20
|
+
result += '==';
|
|
21
|
+
}
|
|
22
|
+
if (i === l) {
|
|
23
|
+
// 2 octets yet to write
|
|
24
|
+
result += base64abc[uint8[i - 2] >> 2];
|
|
25
|
+
result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4];
|
|
26
|
+
result += base64abc[(uint8[i - 1] & 0x0f) << 2];
|
|
27
|
+
result += '=';
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
33
|
+
* Decodes RFC4648 base64 string into an Uint8Array
|
|
34
|
+
* @param data
|
|
35
|
+
*/ export function decode(data) {
|
|
36
|
+
if (data.length % 4 !== 0) {
|
|
37
|
+
throw new Error('Unable to parse base64 string.');
|
|
38
|
+
}
|
|
39
|
+
const index = data.indexOf('=');
|
|
40
|
+
if (index !== -1 && index < data.length - 2) {
|
|
41
|
+
throw new Error('Unable to parse base64 string.');
|
|
42
|
+
}
|
|
43
|
+
const missingOctets = data.endsWith('==') ? 2 : data.endsWith('=') ? 1 : 0;
|
|
44
|
+
const n = data.length;
|
|
45
|
+
const result = new Uint8Array(3 * (n / 4));
|
|
46
|
+
let buffer;
|
|
47
|
+
for(let i = 0, j = 0; i < n; i += 4, j += 3){
|
|
48
|
+
buffer = getBase64Code(data.charCodeAt(i)) << 18 | getBase64Code(data.charCodeAt(i + 1)) << 12 | getBase64Code(data.charCodeAt(i + 2)) << 6 | getBase64Code(data.charCodeAt(i + 3));
|
|
49
|
+
result[j] = buffer >> 16;
|
|
50
|
+
result[j + 1] = buffer >> 8 & 0xff;
|
|
51
|
+
result[j + 2] = buffer & 0xff;
|
|
52
|
+
}
|
|
53
|
+
return result.subarray(0, result.length - missingOctets);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
57
|
+
* @param charCode
|
|
58
|
+
*/ function getBase64Code(charCode) {
|
|
59
|
+
if (charCode >= base64codes.length) {
|
|
60
|
+
throw new Error('Unable to parse base64 string.');
|
|
61
|
+
}
|
|
62
|
+
const code = base64codes[charCode];
|
|
63
|
+
if (code === 255) {
|
|
64
|
+
throw new Error('Unable to parse base64 string.');
|
|
65
|
+
}
|
|
66
|
+
return code;
|
|
67
|
+
}
|
|
68
|
+
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
|
69
|
+
const base64abc = [
|
|
70
|
+
'A',
|
|
71
|
+
'B',
|
|
72
|
+
'C',
|
|
73
|
+
'D',
|
|
74
|
+
'E',
|
|
75
|
+
'F',
|
|
76
|
+
'G',
|
|
77
|
+
'H',
|
|
78
|
+
'I',
|
|
79
|
+
'J',
|
|
80
|
+
'K',
|
|
81
|
+
'L',
|
|
82
|
+
'M',
|
|
83
|
+
'N',
|
|
84
|
+
'O',
|
|
85
|
+
'P',
|
|
86
|
+
'Q',
|
|
87
|
+
'R',
|
|
88
|
+
'S',
|
|
89
|
+
'T',
|
|
90
|
+
'U',
|
|
91
|
+
'V',
|
|
92
|
+
'W',
|
|
93
|
+
'X',
|
|
94
|
+
'Y',
|
|
95
|
+
'Z',
|
|
96
|
+
'a',
|
|
97
|
+
'b',
|
|
98
|
+
'c',
|
|
99
|
+
'd',
|
|
100
|
+
'e',
|
|
101
|
+
'f',
|
|
102
|
+
'g',
|
|
103
|
+
'h',
|
|
104
|
+
'i',
|
|
105
|
+
'j',
|
|
106
|
+
'k',
|
|
107
|
+
'l',
|
|
108
|
+
'm',
|
|
109
|
+
'n',
|
|
110
|
+
'o',
|
|
111
|
+
'p',
|
|
112
|
+
'q',
|
|
113
|
+
'r',
|
|
114
|
+
's',
|
|
115
|
+
't',
|
|
116
|
+
'u',
|
|
117
|
+
'v',
|
|
118
|
+
'w',
|
|
119
|
+
'x',
|
|
120
|
+
'y',
|
|
121
|
+
'z',
|
|
122
|
+
'0',
|
|
123
|
+
'1',
|
|
124
|
+
'2',
|
|
125
|
+
'3',
|
|
126
|
+
'4',
|
|
127
|
+
'5',
|
|
128
|
+
'6',
|
|
129
|
+
'7',
|
|
130
|
+
'8',
|
|
131
|
+
'9',
|
|
132
|
+
'+',
|
|
133
|
+
'/'
|
|
134
|
+
];
|
|
135
|
+
// CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
136
|
+
const base64codes = [
|
|
137
|
+
255,
|
|
138
|
+
255,
|
|
139
|
+
255,
|
|
140
|
+
255,
|
|
141
|
+
255,
|
|
142
|
+
255,
|
|
143
|
+
255,
|
|
144
|
+
255,
|
|
145
|
+
255,
|
|
146
|
+
255,
|
|
147
|
+
255,
|
|
148
|
+
255,
|
|
149
|
+
255,
|
|
150
|
+
255,
|
|
151
|
+
255,
|
|
152
|
+
255,
|
|
153
|
+
255,
|
|
154
|
+
255,
|
|
155
|
+
255,
|
|
156
|
+
255,
|
|
157
|
+
255,
|
|
158
|
+
255,
|
|
159
|
+
255,
|
|
160
|
+
255,
|
|
161
|
+
255,
|
|
162
|
+
255,
|
|
163
|
+
255,
|
|
164
|
+
255,
|
|
165
|
+
255,
|
|
166
|
+
255,
|
|
167
|
+
255,
|
|
168
|
+
255,
|
|
169
|
+
255,
|
|
170
|
+
255,
|
|
171
|
+
255,
|
|
172
|
+
255,
|
|
173
|
+
255,
|
|
174
|
+
255,
|
|
175
|
+
255,
|
|
176
|
+
255,
|
|
177
|
+
255,
|
|
178
|
+
255,
|
|
179
|
+
255,
|
|
180
|
+
62,
|
|
181
|
+
255,
|
|
182
|
+
255,
|
|
183
|
+
255,
|
|
184
|
+
63,
|
|
185
|
+
52,
|
|
186
|
+
53,
|
|
187
|
+
54,
|
|
188
|
+
55,
|
|
189
|
+
56,
|
|
190
|
+
57,
|
|
191
|
+
58,
|
|
192
|
+
59,
|
|
193
|
+
60,
|
|
194
|
+
61,
|
|
195
|
+
255,
|
|
196
|
+
255,
|
|
197
|
+
255,
|
|
198
|
+
0,
|
|
199
|
+
255,
|
|
200
|
+
255,
|
|
201
|
+
255,
|
|
202
|
+
0,
|
|
203
|
+
1,
|
|
204
|
+
2,
|
|
205
|
+
3,
|
|
206
|
+
4,
|
|
207
|
+
5,
|
|
208
|
+
6,
|
|
209
|
+
7,
|
|
210
|
+
8,
|
|
211
|
+
9,
|
|
212
|
+
10,
|
|
213
|
+
11,
|
|
214
|
+
12,
|
|
215
|
+
13,
|
|
216
|
+
14,
|
|
217
|
+
15,
|
|
218
|
+
16,
|
|
219
|
+
17,
|
|
220
|
+
18,
|
|
221
|
+
19,
|
|
222
|
+
20,
|
|
223
|
+
21,
|
|
224
|
+
22,
|
|
225
|
+
23,
|
|
226
|
+
24,
|
|
227
|
+
25,
|
|
228
|
+
255,
|
|
229
|
+
255,
|
|
230
|
+
255,
|
|
231
|
+
255,
|
|
232
|
+
255,
|
|
233
|
+
255,
|
|
234
|
+
26,
|
|
235
|
+
27,
|
|
236
|
+
28,
|
|
237
|
+
29,
|
|
238
|
+
30,
|
|
239
|
+
31,
|
|
240
|
+
32,
|
|
241
|
+
33,
|
|
242
|
+
34,
|
|
243
|
+
35,
|
|
244
|
+
36,
|
|
245
|
+
37,
|
|
246
|
+
38,
|
|
247
|
+
39,
|
|
248
|
+
40,
|
|
249
|
+
41,
|
|
250
|
+
42,
|
|
251
|
+
43,
|
|
252
|
+
44,
|
|
253
|
+
45,
|
|
254
|
+
46,
|
|
255
|
+
47,
|
|
256
|
+
48,
|
|
257
|
+
49,
|
|
258
|
+
50,
|
|
259
|
+
51
|
|
260
|
+
];
|
|
261
|
+
|
|
262
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/base64.ts"],"sourcesContent":["/**\n * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727\n * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation\n * @param data\n */\nexport function encode(data: ArrayBuffer | string): string {\n const uint8 = typeof data === 'string' ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data)\n let result = ''\n let i\n const l = uint8.length\n for (i = 2; i < l; i += 3) {\n result += base64abc[uint8[i - 2] >> 2]\n result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]\n result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)]\n result += base64abc[uint8[i] & 0x3f]\n }\n if (i === l + 1) {\n // 1 octet yet to write\n result += base64abc[uint8[i - 2] >> 2]\n result += base64abc[(uint8[i - 2] & 0x03) << 4]\n result += '=='\n }\n if (i === l) {\n // 2 octets yet to write\n result += base64abc[uint8[i - 2] >> 2]\n result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]\n result += base64abc[(uint8[i - 1] & 0x0f) << 2]\n result += '='\n }\n return result\n}\n\n/**\n * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727\n * Decodes RFC4648 base64 string into an Uint8Array\n * @param data\n */\nexport function decode(data: string): Uint8Array {\n if (data.length % 4 !== 0) {\n throw new Error('Unable to parse base64 string.')\n }\n const index = data.indexOf('=')\n if (index !== -1 && index < data.length - 2) {\n throw new Error('Unable to parse base64 string.')\n }\n const missingOctets = data.endsWith('==') ? 2 : data.endsWith('=') ? 1 : 0\n const n = data.length\n const result = new Uint8Array(3 * (n / 4))\n let buffer\n for (let i = 0, j = 0; i < n; i += 4, j += 3) {\n buffer =\n (getBase64Code(data.charCodeAt(i)) << 18) |\n (getBase64Code(data.charCodeAt(i + 1)) << 12) |\n (getBase64Code(data.charCodeAt(i + 2)) << 6) |\n getBase64Code(data.charCodeAt(i + 3))\n result[j] = buffer >> 16\n result[j + 1] = (buffer >> 8) & 0xff\n result[j + 2] = buffer & 0xff\n }\n return result.subarray(0, result.length - missingOctets)\n}\n\n/**\n * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727\n * @param charCode\n */\nfunction getBase64Code(charCode: number): number {\n if (charCode >= base64codes.length) {\n throw new Error('Unable to parse base64 string.')\n }\n const code = base64codes[charCode]\n if (code === 255) {\n throw new Error('Unable to parse base64 string.')\n }\n return code\n}\n\n// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\nconst base64abc = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '+',\n '/',\n]\n\n// CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727\nconst base64codes = [\n 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255,\n 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26,\n 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n]\n"],"names":["encode","data","uint8","TextEncoder","Uint8Array","result","i","l","length","base64abc","decode","Error","index","indexOf","missingOctets","endsWith","n","buffer","j","getBase64Code","charCodeAt","subarray","charCode","base64codes","code"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,SAASA,OAAOC,IAA0B,EAAU;IACzD,MAAMC,QAAQ,OAAOD,SAAS,WAAW,IAAIE,cAAcH,MAAM,CAACC,QAAQA,gBAAgBG,aAAaH,OAAO,IAAIG,WAAWH,KAAK;IAClI,IAAII,SAAS;IACb,IAAIC;IACJ,MAAMC,IAAIL,MAAMM,MAAM;IACtB,IAAKF,IAAI,GAAGA,IAAIC,GAAGD,KAAK,EAAG;QACzBD,UAAUI,SAAS,CAACP,KAAK,CAACI,IAAI,EAAE,IAAI,EAAE;QACtCD,UAAUI,SAAS,CAAC,AAAEP,CAAAA,KAAK,CAACI,IAAI,EAAE,GAAG,IAAG,KAAM,IAAMJ,KAAK,CAACI,IAAI,EAAE,IAAI,EAAG;QACvED,UAAUI,SAAS,CAAC,AAAEP,CAAAA,KAAK,CAACI,IAAI,EAAE,GAAG,IAAG,KAAM,IAAMJ,KAAK,CAACI,EAAE,IAAI,EAAG;QACnED,UAAUI,SAAS,CAACP,KAAK,CAACI,EAAE,GAAG,KAAK;IACtC;IACA,IAAIA,MAAMC,IAAI,GAAG;QACf,uBAAuB;QACvBF,UAAUI,SAAS,CAACP,KAAK,CAACI,IAAI,EAAE,IAAI,EAAE;QACtCD,UAAUI,SAAS,CAAC,AAACP,CAAAA,KAAK,CAACI,IAAI,EAAE,GAAG,IAAG,KAAM,EAAE;QAC/CD,UAAU;IACZ,CAAC;IACD,IAAIC,MAAMC,GAAG;QACX,wBAAwB;QACxBF,UAAUI,SAAS,CAACP,KAAK,CAACI,IAAI,EAAE,IAAI,EAAE;QACtCD,UAAUI,SAAS,CAAC,AAAEP,CAAAA,KAAK,CAACI,IAAI,EAAE,GAAG,IAAG,KAAM,IAAMJ,KAAK,CAACI,IAAI,EAAE,IAAI,EAAG;QACvED,UAAUI,SAAS,CAAC,AAACP,CAAAA,KAAK,CAACI,IAAI,EAAE,GAAG,IAAG,KAAM,EAAE;QAC/CD,UAAU;IACZ,CAAC;IACD,OAAOA;AACT,CAAC;AAED;;;;CAIC,GACD,OAAO,SAASK,OAAOT,IAAY,EAAc;IAC/C,IAAIA,KAAKO,MAAM,GAAG,MAAM,GAAG;QACzB,MAAM,IAAIG,MAAM,kCAAiC;IACnD,CAAC;IACD,MAAMC,QAAQX,KAAKY,OAAO,CAAC;IAC3B,IAAID,UAAU,CAAC,KAAKA,QAAQX,KAAKO,MAAM,GAAG,GAAG;QAC3C,MAAM,IAAIG,MAAM,kCAAiC;IACnD,CAAC;IACD,MAAMG,gBAAgBb,KAAKc,QAAQ,CAAC,QAAQ,IAAId,KAAKc,QAAQ,CAAC,OAAO,IAAI,CAAC;IAC1E,MAAMC,IAAIf,KAAKO,MAAM;IACrB,MAAMH,SAAS,IAAID,WAAW,IAAKY,CAAAA,IAAI,CAAA;IACvC,IAAIC;IACJ,IAAK,IAAIX,IAAI,GAAGY,IAAI,GAAGZ,IAAIU,GAAGV,KAAK,GAAGY,KAAK,CAAC,CAAE;QAC5CD,SACE,AAACE,cAAclB,KAAKmB,UAAU,CAACd,OAAO,KACrCa,cAAclB,KAAKmB,UAAU,CAACd,IAAI,OAAO,KACzCa,cAAclB,KAAKmB,UAAU,CAACd,IAAI,OAAO,IAC1Ca,cAAclB,KAAKmB,UAAU,CAACd,IAAI;QACpCD,MAAM,CAACa,EAAE,GAAGD,UAAU;QACtBZ,MAAM,CAACa,IAAI,EAAE,GAAG,AAACD,UAAU,IAAK;QAChCZ,MAAM,CAACa,IAAI,EAAE,GAAGD,SAAS;IAC3B;IACA,OAAOZ,OAAOgB,QAAQ,CAAC,GAAGhB,OAAOG,MAAM,GAAGM;AAC5C,CAAC;AAED;;;CAGC,GACD,SAASK,cAAcG,QAAgB,EAAU;IAC/C,IAAIA,YAAYC,YAAYf,MAAM,EAAE;QAClC,MAAM,IAAIG,MAAM,kCAAiC;IACnD,CAAC;IACD,MAAMa,OAAOD,WAAW,CAACD,SAAS;IAClC,IAAIE,SAAS,KAAK;QAChB,MAAM,IAAIb,MAAM,kCAAiC;IACnD,CAAC;IACD,OAAOa;AACT;AAEA,0EAA0E;AAC1E,MAAMf,YAAY;IAChB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,kFAAkF;AAClF,MAAMc,cAAc;IAClB;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC5I;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAAI;IAAK;IAAK;IAAK;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAK;IAAK;IAC/I;IAAG;IAAK;IAAK;IAAK;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAK;IAAK;IAAK;IAAK;IAAK;IAAK;IAC9I;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;IAAI;CACjG"}
|
package/dist/bucket.d.ts
CHANGED
|
@@ -1,55 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Useful for rate limiting purposes.
|
|
4
|
-
* This uses `performance.now()` instead of `Date.now()` for higher accuracy.
|
|
5
|
-
*
|
|
6
|
-
* NOTE: This bucket is lazy, means it only updates when a related method is called.
|
|
7
|
-
*/
|
|
8
|
-
export interface LeakyBucket {
|
|
9
|
-
/** How many tokens this bucket can hold. */
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare class LeakyBucket implements LeakyBucketOptions {
|
|
10
3
|
max: number;
|
|
11
|
-
/** Amount of tokens gained per interval.
|
|
12
|
-
* If bigger than `max` it will be pressed to `max`.
|
|
13
|
-
*/
|
|
14
|
-
refillAmount: number;
|
|
15
|
-
/** Interval at which the bucket gains tokens. */
|
|
16
4
|
refillInterval: number;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
5
|
+
refillAmount: number;
|
|
6
|
+
/** The amount of requests that have been used up already. */
|
|
7
|
+
used: number;
|
|
8
|
+
/** The queue of requests to acquire an available request. Mapped by <shardId, resolve()> */
|
|
9
|
+
queue: Array<(value: void | PromiseLike<void>) => void>;
|
|
10
|
+
/** Whether or not the queue is already processing. */
|
|
11
|
+
processing: boolean;
|
|
12
|
+
/** The timeout id for the timer to reduce the used amount by the refill amount. */
|
|
13
|
+
timeoutId?: NodeJS.Timeout;
|
|
14
|
+
/** The timestamp in milliseconds when the next refill is scheduled. */
|
|
15
|
+
refillsAt?: number;
|
|
16
|
+
constructor(options?: LeakyBucketOptions);
|
|
17
|
+
/** The amount of requests that still remain. */
|
|
18
|
+
get remaining(): number;
|
|
19
|
+
/** Begin processing the queue. */
|
|
20
|
+
processQueue(): Promise<void>;
|
|
21
|
+
/** Pauses the execution until the request is available to be made. */
|
|
22
|
+
acquire(highPriority?: boolean): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export interface LeakyBucketOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Max requests allowed at once.
|
|
27
|
+
* @default 1
|
|
32
28
|
*/
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
29
|
+
max?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Interval in milliseconds between refills.
|
|
32
|
+
* @default 5000
|
|
36
33
|
*/
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
34
|
+
refillInterval?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Amount of requests to refill at each interval.
|
|
37
|
+
* @default 1
|
|
40
38
|
*/
|
|
41
|
-
|
|
39
|
+
refillAmount?: number;
|
|
42
40
|
}
|
|
43
|
-
export declare function createLeakyBucket({ max, refillInterval, refillAmount, tokens, waiting, ...rest }: Omit<PickPartial<LeakyBucket, 'max' | 'refillInterval' | 'refillAmount'>, 'tokens'> & {
|
|
44
|
-
/** Current tokens in the bucket.
|
|
45
|
-
* @default max
|
|
46
|
-
*/
|
|
47
|
-
tokens?: number;
|
|
48
|
-
}): LeakyBucket;
|
|
49
|
-
/** Update the tokens of that bucket.
|
|
50
|
-
* @returns {number} The amount of current available tokens.
|
|
51
|
-
*/
|
|
52
|
-
export declare function updateTokens(bucket: LeakyBucket): number;
|
|
53
|
-
export declare function nextRefill(bucket: LeakyBucket): number;
|
|
54
|
-
export declare function acquire(bucket: LeakyBucket, amount: number, highPriority?: boolean): Promise<void>;
|
|
55
41
|
//# sourceMappingURL=bucket.d.ts.map
|
package/dist/bucket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../src/bucket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../src/bucket.ts"],"names":[],"mappings":";AAGA,qBAAa,WAAY,YAAW,kBAAkB;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IAEpB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAI;IAChB,4FAA4F;IAC5F,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAK;IAC5D,sDAAsD;IACtD,UAAU,EAAE,OAAO,CAAQ;IAC3B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC1B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;gBAEN,OAAO,CAAC,EAAE,kBAAkB;IAMxC,gDAAgD;IAChD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,kCAAkC;IAC5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDnC,sEAAsE;IAChE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrD;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB"}
|