From 303bbe68ef51a59bfb4ae8165e669d73f7b93812 Mon Sep 17 00:00:00 2001 From: YummYume Date: Sat, 15 Jun 2024 21:25:12 +0200 Subject: [PATCH] Fix typing for loading hooks + HookManager --- assets/dist/Component/index.d.ts | 4 ++-- assets/dist/HookManager.d.ts | 7 ++++--- assets/src/Component/index.ts | 4 ++-- assets/src/HookManager.ts | 19 +++++++++++++++---- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/assets/dist/Component/index.d.ts b/assets/dist/Component/index.d.ts index 16cc46f..d1d0cdf 100644 --- a/assets/dist/Component/index.d.ts +++ b/assets/dist/Component/index.d.ts @@ -13,8 +13,8 @@ export type ComponentHooks = { 'response:error': (backendResponse: BackendResponse, controls: { displayError: boolean; }) => MaybePromise; - 'loading.state.started': (element: HTMLElement, request: BackendRequest) => MaybePromise; - 'loading.state.finished': (element: HTMLElement) => MaybePromise; + 'loading.state:started': (element: HTMLElement, request: BackendRequest) => MaybePromise; + 'loading.state:finished': (element: HTMLElement) => MaybePromise; 'model:set': (model: string, value: any, component: Component) => MaybePromise; }; export type ComponentHookName = keyof ComponentHooks; diff --git a/assets/dist/HookManager.d.ts b/assets/dist/HookManager.d.ts index 17b0fd0..ef92e72 100644 --- a/assets/dist/HookManager.d.ts +++ b/assets/dist/HookManager.d.ts @@ -1,6 +1,7 @@ +import type { ComponentHookName, ComponentHookCallback } from './Component'; export default class { private hooks; - register(hookName: string, callback: (...args: any[]) => void): void; - unregister(hookName: string, callback: (...args: any[]) => void): void; - triggerHook(hookName: string, ...args: any[]): void; + register(hookName: T, callback: ComponentHookCallback): void; + unregister(hookName: T, callback: ComponentHookCallback): void; + triggerHook(hookName: T, ...args: Parameters>): void; } diff --git a/assets/src/Component/index.ts b/assets/src/Component/index.ts index 8a93b9d..33a219c 100644 --- a/assets/src/Component/index.ts +++ b/assets/src/Component/index.ts @@ -22,8 +22,8 @@ export type ComponentHooks = { 'request:started': (requestConfig: any) => MaybePromise, 'render:finished': (component: Component) => MaybePromise, 'response:error': (backendResponse: BackendResponse, controls: { displayError: boolean }) => MaybePromise, - 'loading.state.started': (element: HTMLElement, request: BackendRequest) => MaybePromise, - 'loading.state.finished': (element: HTMLElement) => MaybePromise, + 'loading.state:started': (element: HTMLElement, request: BackendRequest) => MaybePromise, + 'loading.state:finished': (element: HTMLElement) => MaybePromise, 'model:set': (model: string, value: any, component: Component) => MaybePromise, }; diff --git a/assets/src/HookManager.ts b/assets/src/HookManager.ts index cbf0ab5..9db14fc 100644 --- a/assets/src/HookManager.ts +++ b/assets/src/HookManager.ts @@ -1,13 +1,21 @@ +import type { ComponentHookName, ComponentHookCallback } from './Component'; + export default class { - private hooks: Map void>> = new Map(); + private hooks: Map void>> = new Map(); - register(hookName: string, callback: (...args: any[]) => void): void { + register( + hookName: T, + callback: ComponentHookCallback + ): void { const hooks = this.hooks.get(hookName) || []; hooks.push(callback); this.hooks.set(hookName, hooks); } - unregister(hookName: string, callback: (...args: any[]) => void): void { + unregister( + hookName: T, + callback: ComponentHookCallback + ): void { const hooks = this.hooks.get(hookName) || []; const index = hooks.indexOf(callback); if (index === -1) { @@ -18,7 +26,10 @@ export default class { this.hooks.set(hookName, hooks); } - triggerHook(hookName: string, ...args: any[]): void { + triggerHook( + hookName: T, + ...args: Parameters> + ): void { const hooks = this.hooks.get(hookName) || []; hooks.forEach((callback) => callback(...args)); }