Update type signatures

This commit is contained in:
Talia 2025-08-18 22:48:52 +02:00
parent 4ae1c90f1a
commit 21c7998294
Signed by: darkwiiplayer
GPG key ID: 7808674088232B3E
2 changed files with 46 additions and 21 deletions

View file

@ -5,7 +5,7 @@
}, },
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"version": "0.0.2", "version": "0.0.3",
"url": "https://git.but.gay/darkwiiplayer/controller-registry", "url": "https://git.but.gay/darkwiiplayer/controller-registry",
"scripts": { "scripts": {
"definitions": "tsc src/*.js --declaration --allowJs --emitDeclarationOnly" "definitions": "tsc src/*.js --declaration --allowJs --emitDeclarationOnly"

View file

@ -1,48 +1,73 @@
/** @typedef {Promise & {signal: AbortSignal}} PromiseWithSignal */
/** @typedef {(element: HTMLElement, detached: PromiseWithSignal) => void} Callback */
/** @typedef {new (element: HTMLElement, detached: PromiseWithSignal) => Object} ControllerClass */
/** @typedef {Callback|ControllerClass} Controller */
export class ControllerList { export class ControllerList {
/** /**
* @param {HTMLElement} element * @param {HTMLElement} element
* @param {String} attribute * @param {string} attribute
* */ * */
constructor(element: HTMLElement, attribute?: string); constructor(element: HTMLElement, attribute?: string);
/** @param {String} name */ /** @param {string} name */
contains(name: string): any; contains(name: string): any;
/** @param {String} name */ /** @param {string} name */
add(name: string): void; add(name: string): void;
/** @param {String} name */ /** @param {string} name */
remove(name: string): void; remove(name: string): void;
/** /**
* @param {String} name * @param {string} name
* @param {String} replacement * @param {string} replacement
*/ */
replace(name: string, replacement: string): boolean; replace(name: string, replacement: string): boolean;
/** /**
* @param {String} name * @param {string} name
* @param {Boolean} force * @param {Boolean} force
*/ */
toggle(name: string, force: boolean): void; toggle(name: string, force: boolean): void;
#private; #private;
} }
export class ControllerRegistry { export class ControllerRegistry {
/** @typedef {HTMLElement} Root */ /** @typedef {Document|DocumentFragment|HTMLElement} Root */
/** /**
* @param {Root} root * @param {Root} root
* @param {String} attribute * @param {string} attribute
*/ */
constructor(root: HTMLElement, attribute?: string); constructor(root: Document | HTMLElement | DocumentFragment, attribute?: string);
/** /**
* @param {Root} root * @param {Root} root
*/ */
upgrade(root: HTMLElement): void; upgrade(root: Document | HTMLElement | DocumentFragment): void;
/** /**
* @param {String} name * @param {string} name
* @param {Function} callback * @param {Controller} callback
*/ */
define(name: string, callback: Function): void; define(name: string, callback: Controller): void;
get(name: any): any; /** Gets a controller associated with a given name
list(element: any): any; * @param {string} name
getName(controller: any): void; */
whenDefined(name: any): void; get(name: string): any;
/** Gets the name a controller is registered with
* @param {Controller} controller
*/
getName(controller: Controller): any;
/**
* @param {string} name
*/
whenDefined(name: string): any;
/**
* @param {HTMLElement} element
* @return {ControllerList}
*/
list(element: HTMLElement): ControllerList;
/** @param {HTMLElement} element */
attached(element: HTMLElement): any[];
#private; #private;
} }
declare const _default: ControllerRegistry; declare const _default: ControllerRegistry;
export default _default; export default _default;
export type PromiseWithSignal = Promise<any> & {
signal: AbortSignal;
};
export type Callback = (element: HTMLElement, detached: PromiseWithSignal) => void;
export type ControllerClass = new (element: HTMLElement, detached: PromiseWithSignal) => any;
export type Controller = Callback | ControllerClass;