This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import type { CallbackType, throttle } from '@/application/Common/Timing/Throttle';
|
|
|
|
export class ThrottleStub {
|
|
public readonly throttleInitializationCallArgs: Array<Parameters<typeof throttle>> = [];
|
|
|
|
public readonly throttledFunctionCallArgs = new Array<readonly unknown[]>();
|
|
|
|
private executeImmediately: boolean = false;
|
|
|
|
public func = (callback: CallbackType, waitInMs: number): ReturnType<typeof throttle> => {
|
|
this.throttleInitializationCallArgs.push([callback, waitInMs]);
|
|
return (...args: readonly unknown[]) => {
|
|
this.throttledFunctionCallArgs.push([...args]);
|
|
if (this.executeImmediately) {
|
|
callback(...args);
|
|
}
|
|
};
|
|
};
|
|
|
|
public withImmediateExecution(executeImmediately: boolean): this {
|
|
this.executeImmediately = executeImmediately;
|
|
return this;
|
|
}
|
|
|
|
public executeFirst() {
|
|
if (this.throttledFunctionCallArgs.length === 0) {
|
|
throw new Error('Function was never throttled.');
|
|
}
|
|
const firstArgs = this.throttledFunctionCallArgs[0];
|
|
this.throttleInitializationCallArgs.forEach(([callback]) => {
|
|
callback(...firstArgs);
|
|
});
|
|
}
|
|
}
|