Refactor & lint

This commit is contained in:
Andras Schmelczer 2025-12-07 15:46:00 +00:00
parent e47d8a8179
commit 6608804d34
16 changed files with 126 additions and 133 deletions

View file

@ -8,8 +8,8 @@ export function createClientId(): string {
typeof navigator !== "undefined"
? navigator.platform // eslint-disable-line @typescript-eslint/no-deprecated
: typeof process !== "undefined"
? process.platform
: "unknown";
? process.platform
: "unknown";
return `vault-link/${packageVersion} (${uuidv4()}; ${platform})`;
}

View file

@ -5,7 +5,8 @@ import { EventListeners } from "./event-listeners";
describe("EventListeners", () => {
it("should add & remove listeners", () => {
const listeners = new EventListeners<() => void>();
const listener = () => { };
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener = (): void => {};
listeners.add(listener);
@ -16,10 +17,10 @@ describe("EventListeners", () => {
assert.strictEqual(listeners.count, 0);
});
it("should remove listeners using unsubscribe function", () => {
const listeners = new EventListeners<() => void>();
const listener = () => { };
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener = (): void => {};
const unsubscribe = listeners.add(listener);
unsubscribe();
@ -29,7 +30,8 @@ describe("EventListeners", () => {
it("should return false when removing non-existent listener", () => {
const listeners = new EventListeners<() => void>();
const listener = () => { };
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener = (): void => {};
const removed = listeners.remove(listener);
@ -38,9 +40,12 @@ describe("EventListeners", () => {
it("should handle multiple listeners", () => {
const listeners = new EventListeners<() => void>();
const listener1 = () => { };
const listener2 = () => { };
const listener3 = () => { };
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener1 = (): void => {};
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener2 = (): void => {};
// eslint-disable-next-line @typescript-eslint/no-empty-function
const listener3 = (): void => {};
listeners.add(listener1);
listeners.add(listener2);
@ -82,10 +87,10 @@ describe("EventListeners", () => {
let count1 = 0;
let count2 = 0;
const listener1 = () => {
const listener1 = (): void => {
count1++;
};
const listener2 = () => {
const listener2 = (): void => {
count2++;
};
@ -127,12 +132,10 @@ describe("EventListeners", () => {
assert.strictEqual(results.length, 3);
});
it("should not trigger cleared listeners", () => {
const listeners = new EventListeners<() => void>();
let called = false;
const listener = () => {
const listener = (): void => {
called = true;
};

View file

@ -2,11 +2,16 @@ import { removeFromArray } from "../remove-from-array";
import { awaitAll } from "../await-all";
/**
* A utility class for managing event listeners with type-safe add/remove operations.
*/
* A utility class for managing event listeners with type-safe add/remove operations.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export class EventListeners<TListener extends (...args: any[]) => any> {
private readonly listeners: TListener[] = [];
public get count(): number {
return this.listeners.length;
}
/**
* Adds a new listener to the collection.
*
@ -51,6 +56,7 @@ export class EventListeners<TListener extends (...args: any[]) => any> {
await awaitAll(
this.listeners
.map((listener) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return listener(...args);
})
.filter((result): result is Promise<unknown> => {
@ -62,10 +68,4 @@ export class EventListeners<TListener extends (...args: any[]) => any> {
public clear(): void {
this.listeners.length = 0;
}
public get count(): number {
return this.listeners.length;
}
}