Started adding slash commands, doesn't work though

This commit is contained in:
ION606
2022-09-26 15:41:20 +00:00
parent b6495eb886
commit ec4c1200d5
2214 changed files with 159174 additions and 42761 deletions
+55 -2
View File
@@ -1,2 +1,55 @@
export * from './lib/AsyncQueue';
//# sourceMappingURL=index.d.ts.map
/**
* The AsyncQueue class used to sequentialize burst requests
*/
declare class AsyncQueue {
/**
* The amount of entries in the queue, including the head.
* @seealso {@link queued} for the queued count.
*/
get remaining(): number;
/**
* The amount of queued entries.
* @seealso {@link remaining} for the count with the head.
*/
get queued(): number;
/**
* The promises array
*/
private promises;
/**
* Waits for last promise and queues a new one
* @example
* ```typescript
* const queue = new AsyncQueue();
* async function request(url, options) {
* await queue.wait({ signal: options.signal });
* try {
* const result = await fetch(url, options);
* // Do some operations with 'result'
* } finally {
* // Remove first entry from the queue and resolve for the next entry
* queue.shift();
* }
* }
*
* request(someUrl1, someOptions1); // Will call fetch() immediately
* request(someUrl2, someOptions2); // Will call fetch() after the first finished
* request(someUrl3, someOptions3); // Will call fetch() after the second finished
* ```
*/
wait(options?: Readonly<AsyncQueueWaitOptions>): Promise<void>;
/**
* Unlocks the head lock and transfers the next lock (if any) to the head.
*/
shift(): void;
/**
* Aborts all the pending promises.
* @note To avoid race conditions, this does **not** unlock the head lock.
*/
abortAll(): void;
}
interface AsyncQueueWaitOptions {
signal?: AbortSignal | undefined | null;
}
export { AsyncQueue, AsyncQueueWaitOptions };
+85 -26
View File
@@ -1,28 +1,24 @@
"use strict";
var SapphireAsyncQueue = (() => {
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module, copyDefault, desc) => {
if (module && typeof module === "object" || typeof module === "function") {
for (let key of __getOwnPropNames(module))
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
__defProp(target, key, { get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable });
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return target;
return to;
};
var __toCommonJS = /* @__PURE__ */ ((cache) => {
return (module, temp) => {
return cache && cache.get(module) || (temp = __reExport(__markAsModule({}), module, 1), cache && cache.set(module, temp), temp);
};
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
@@ -34,6 +30,54 @@ var SapphireAsyncQueue = (() => {
AsyncQueue: () => AsyncQueue
});
// src/lib/AsyncQueueEntry.ts
var AsyncQueueEntry = class {
constructor(queue) {
__publicField(this, "promise");
__publicField(this, "resolve");
__publicField(this, "reject");
__publicField(this, "queue");
__publicField(this, "signal", null);
__publicField(this, "signalListener", null);
this.queue = queue;
this.promise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
}
setSignal(signal) {
if (signal.aborted)
return this;
this.signal = signal;
this.signalListener = () => {
const index = this.queue["promises"].indexOf(this);
if (index !== -1)
this.queue["promises"].splice(index, 1);
this.reject(new Error("Request aborted manually"));
};
this.signal.addEventListener("abort", this.signalListener);
return this;
}
use() {
this.dispose();
this.resolve();
return this;
}
abort() {
this.dispose();
this.reject(new Error("Request aborted manually"));
return this;
}
dispose() {
if (this.signal) {
this.signal.removeEventListener("abort", this.signalListener);
this.signal = null;
this.signalListener = null;
}
}
};
__name(AsyncQueueEntry, "AsyncQueueEntry");
// src/lib/AsyncQueue.ts
var AsyncQueue = class {
constructor() {
@@ -42,22 +86,37 @@ var SapphireAsyncQueue = (() => {
get remaining() {
return this.promises.length;
}
wait() {
const next = this.promises.length ? this.promises[this.promises.length - 1].promise : Promise.resolve();
let resolve;
const promise = new Promise((res) => {
resolve = res;
});
this.promises.push({
resolve,
promise
});
return next;
get queued() {
return this.remaining === 0 ? 0 : this.remaining - 1;
}
wait(options) {
const entry = new AsyncQueueEntry(this);
if (this.promises.length === 0) {
this.promises.push(entry);
return Promise.resolve();
}
this.promises.push(entry);
if (options?.signal)
entry.setSignal(options.signal);
return entry.promise;
}
shift() {
const deferred = this.promises.shift();
if (typeof deferred !== "undefined")
deferred.resolve();
if (this.promises.length === 0)
return;
if (this.promises.length === 1) {
this.promises.shift();
return;
}
this.promises.shift();
this.promises[0].use();
}
abortAll() {
if (this.queued === 0)
return;
for (let i = 1; i < this.promises.length; ++i) {
this.promises[i].abort();
}
this.promises.length = 1;
}
};
__name(AsyncQueue, "AsyncQueue");
File diff suppressed because one or more lines are too long
+86 -27
View File
@@ -1,28 +1,24 @@
"use strict";
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, copyDefault, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return target;
return to;
};
var __toCommonJS = /* @__PURE__ */ ((cache) => {
return (module2, temp) => {
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
};
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
@@ -33,6 +29,55 @@ var src_exports = {};
__export(src_exports, {
AsyncQueue: () => AsyncQueue
});
module.exports = __toCommonJS(src_exports);
// src/lib/AsyncQueueEntry.ts
var AsyncQueueEntry = class {
constructor(queue) {
__publicField(this, "promise");
__publicField(this, "resolve");
__publicField(this, "reject");
__publicField(this, "queue");
__publicField(this, "signal", null);
__publicField(this, "signalListener", null);
this.queue = queue;
this.promise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
}
setSignal(signal) {
if (signal.aborted)
return this;
this.signal = signal;
this.signalListener = () => {
const index = this.queue["promises"].indexOf(this);
if (index !== -1)
this.queue["promises"].splice(index, 1);
this.reject(new Error("Request aborted manually"));
};
this.signal.addEventListener("abort", this.signalListener);
return this;
}
use() {
this.dispose();
this.resolve();
return this;
}
abort() {
this.dispose();
this.reject(new Error("Request aborted manually"));
return this;
}
dispose() {
if (this.signal) {
this.signal.removeEventListener("abort", this.signalListener);
this.signal = null;
this.signalListener = null;
}
}
};
__name(AsyncQueueEntry, "AsyncQueueEntry");
// src/lib/AsyncQueue.ts
var AsyncQueue = class {
@@ -42,26 +87,40 @@ var AsyncQueue = class {
get remaining() {
return this.promises.length;
}
wait() {
const next = this.promises.length ? this.promises[this.promises.length - 1].promise : Promise.resolve();
let resolve;
const promise = new Promise((res) => {
resolve = res;
});
this.promises.push({
resolve,
promise
});
return next;
get queued() {
return this.remaining === 0 ? 0 : this.remaining - 1;
}
wait(options) {
const entry = new AsyncQueueEntry(this);
if (this.promises.length === 0) {
this.promises.push(entry);
return Promise.resolve();
}
this.promises.push(entry);
if (options?.signal)
entry.setSignal(options.signal);
return entry.promise;
}
shift() {
const deferred = this.promises.shift();
if (typeof deferred !== "undefined")
deferred.resolve();
if (this.promises.length === 0)
return;
if (this.promises.length === 1) {
this.promises.shift();
return;
}
this.promises.shift();
this.promises[0].use();
}
abortAll() {
if (this.queued === 0)
return;
for (let i = 1; i < this.promises.length; ++i) {
this.promises[i].abort();
}
this.promises.length = 1;
}
};
__name(AsyncQueue, "AsyncQueue");
module.exports = __toCommonJS(src_exports);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
AsyncQueue
File diff suppressed because one or more lines are too long
+77 -14
View File
@@ -6,6 +6,54 @@ var __publicField = (obj, key, value) => {
return value;
};
// src/lib/AsyncQueueEntry.ts
var AsyncQueueEntry = class {
constructor(queue) {
__publicField(this, "promise");
__publicField(this, "resolve");
__publicField(this, "reject");
__publicField(this, "queue");
__publicField(this, "signal", null);
__publicField(this, "signalListener", null);
this.queue = queue;
this.promise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
}
setSignal(signal) {
if (signal.aborted)
return this;
this.signal = signal;
this.signalListener = () => {
const index = this.queue["promises"].indexOf(this);
if (index !== -1)
this.queue["promises"].splice(index, 1);
this.reject(new Error("Request aborted manually"));
};
this.signal.addEventListener("abort", this.signalListener);
return this;
}
use() {
this.dispose();
this.resolve();
return this;
}
abort() {
this.dispose();
this.reject(new Error("Request aborted manually"));
return this;
}
dispose() {
if (this.signal) {
this.signal.removeEventListener("abort", this.signalListener);
this.signal = null;
this.signalListener = null;
}
}
};
__name(AsyncQueueEntry, "AsyncQueueEntry");
// src/lib/AsyncQueue.ts
var AsyncQueue = class {
constructor() {
@@ -14,22 +62,37 @@ var AsyncQueue = class {
get remaining() {
return this.promises.length;
}
wait() {
const next = this.promises.length ? this.promises[this.promises.length - 1].promise : Promise.resolve();
let resolve;
const promise = new Promise((res) => {
resolve = res;
});
this.promises.push({
resolve,
promise
});
return next;
get queued() {
return this.remaining === 0 ? 0 : this.remaining - 1;
}
wait(options) {
const entry = new AsyncQueueEntry(this);
if (this.promises.length === 0) {
this.promises.push(entry);
return Promise.resolve();
}
this.promises.push(entry);
if (options?.signal)
entry.setSignal(options.signal);
return entry.promise;
}
shift() {
const deferred = this.promises.shift();
if (typeof deferred !== "undefined")
deferred.resolve();
if (this.promises.length === 0)
return;
if (this.promises.length === 1) {
this.promises.shift();
return;
}
this.promises.shift();
this.promises[0].use();
}
abortAll() {
if (this.queued === 0)
return;
for (let i = 1; i < this.promises.length; ++i) {
this.promises[i].abort();
}
this.promises.length = 1;
}
};
__name(AsyncQueue, "AsyncQueue");
File diff suppressed because one or more lines are too long
-40
View File
@@ -1,40 +0,0 @@
/**
* The AsyncQueue class used to sequentialize burst requests
*/
export declare class AsyncQueue {
/**
* The remaining amount of queued promises
*/
get remaining(): number;
/**
* The promises array
*/
private promises;
/**
* Waits for last promise and queues a new one
* @example
* ```typescript
* const queue = new AsyncQueue();
* async function request(url, options) {
* await queue.wait();
* try {
* const result = await fetch(url, options);
* // Do some operations with 'result'
* } finally {
* // Remove first entry from the queue and resolve for the next entry
* queue.shift();
* }
* }
*
* request(someUrl1, someOptions1); // Will call fetch() immediately
* request(someUrl2, someOptions2); // Will call fetch() after the first finished
* request(someUrl3, someOptions3); // Will call fetch() after the second finished
* ```
*/
wait(): Promise<void>;
/**
* Frees the queue's lock for the next item to process
*/
shift(): void;
}
//# sourceMappingURL=AsyncQueue.d.ts.map