@types/oojs
Advanced tools
Comparing version 6.0.1 to 6.0.2
declare namespace OO { | ||
interface EmitterListEventMap { | ||
add: [item: EventEmitter, index: number]; | ||
clear: []; | ||
move: [item: EventEmitter, index: number, oldIndex: number]; | ||
remove: [item: EventEmitter, index: number]; | ||
} | ||
/** | ||
@@ -76,2 +83,65 @@ * Contain and manage a list of {@link OO.EventEmitter} items. | ||
clearItems(): this; | ||
// #region Event utils | ||
on<K extends keyof EmitterListEventMap, A extends ArgTuple = [], C = null>( | ||
event: K, | ||
method: EventHandler<C, (this: C, ...args: [...A, ...EmitterListEventMap[K]]) => void>, | ||
args?: A, | ||
context?: C, | ||
): this; | ||
on<K extends string, C = null>( | ||
event: K extends keyof EmitterListEventMap ? never : K, | ||
method: EventHandler<C>, | ||
args?: any[], | ||
context?: C, | ||
): this; | ||
once<K extends keyof EmitterListEventMap>( | ||
event: K, | ||
listener: (this: null, ...args: EmitterListEventMap[K]) => void, | ||
): this; | ||
once<K extends string>( | ||
event: K extends keyof EmitterListEventMap ? never : K, | ||
listener: (this: null, ...args: any[]) => void, | ||
): this; | ||
off<K extends keyof EmitterListEventMap, C = null>( | ||
event: K, | ||
method?: EventHandler<C, (this: C, ...args: EmitterListEventMap[K]) => void>, | ||
context?: C, | ||
): this; | ||
off<K extends string, C = null>( | ||
event: K extends keyof EmitterListEventMap ? never : K, | ||
method?: EventHandler<C>, | ||
context?: C, | ||
): this; | ||
emit<K extends keyof EmitterListEventMap>(event: K, ...args: EmitterListEventMap[K]): boolean; | ||
emit<K extends string>(event: K extends keyof EmitterListEventMap ? never : K, ...args: any[]): boolean; | ||
emitThrow<K extends keyof EmitterListEventMap>(event: K, ...args: EmitterListEventMap[K]): boolean; | ||
emitThrow<K extends string>(event: K extends keyof EmitterListEventMap ? never : K, ...args: any[]): boolean; | ||
connect<T extends Partial<Record<keyof EmitterListEventMap, any>>, C>( | ||
context: C, | ||
methods: { | ||
[K in keyof T]: EventConnectionMapEntry< | ||
C, | ||
K extends keyof EmitterListEventMap ? EmitterListEventMap[K] : any[], | ||
T[K] | ||
>; | ||
}, | ||
): this; | ||
disconnect<T extends Partial<Record<keyof EmitterListEventMap, any>>, C>( | ||
context: C, | ||
methods?: { | ||
[K in keyof T]: EventConnectionMapEntry< | ||
C, | ||
K extends keyof EmitterListEventMap ? EmitterListEventMap[K] : any[], | ||
T[K] | ||
>; | ||
}, | ||
): this; | ||
// #endregion | ||
} | ||
@@ -78,0 +148,0 @@ |
@@ -15,19 +15,5 @@ declare namespace OO { | ||
*/ | ||
on<C = null>(event: string, method: (this: C, ...args: any[]) => void, args?: any[], context?: C): this; | ||
on<C = null>(event: string, method: EventHandler<C>, args?: any[], context?: C): this; | ||
/** | ||
* Add a listener to events of a specific event. | ||
* | ||
* The listener can be a function or the string name of a method; if the latter, then the | ||
* name lookup happens at the time the listener is called. | ||
* | ||
* @param event Type of event to listen to | ||
* @param method Function or method name to call when event occurs | ||
* @param args Arguments to pass to listener, will be prepended to emitted arguments | ||
* @param context Context object for function or method call | ||
* @throws {Error} Listener argument is not a function or a valid method name | ||
*/ | ||
on<C extends object>(event: string, method: ExtractFunctionKeys<C>, args: any[], context: C): this; | ||
/** | ||
* Add a one-time listener to a specific event. | ||
@@ -45,7 +31,7 @@ * | ||
* @param method Listener to remove. Must be in the same form as was passed | ||
* to "on". Omit to remove all listeners. | ||
* to "{@link on}". Omit to remove all listeners. | ||
* @param context Context object function or method call | ||
* @throws {Error} Listener argument is not a function or a valid method name | ||
*/ | ||
off(event: string, method?: string | ((...args: any[]) => void), context?: any): this; | ||
off<C = null>(event: string, method?: EventHandler<C>, context?: C): this; | ||
@@ -98,11 +84,3 @@ /** | ||
*/ | ||
connect<C>( | ||
context: C, | ||
methods: Record< | ||
string, | ||
| ((this: C, ...args: any[]) => void) | ||
| (C extends object ? ExtractFunctionKeys<C> : never) | ||
| [((this: C, ...args: any[]) => void) | (C extends object ? ExtractFunctionKeys<C> : never), ...any[]] | ||
>, | ||
): this; | ||
connect<C>(context: C, methods: Record<string, EventHandler<C> | [EventHandler<C>, ...any[]]>): this; | ||
@@ -122,9 +100,3 @@ /** | ||
*/ | ||
disconnect( | ||
context: any, | ||
methods?: Record< | ||
string, | ||
string | ((...args: any[]) => void) | [((...args: any[]) => void) | string, ...any[]] | ||
>, | ||
): this; | ||
disconnect<C>(context: C, methods?: Record<string, EventHandler<C> | [EventHandler<C>, ...any[]]>): this; | ||
} | ||
@@ -131,0 +103,0 @@ |
{ | ||
"name": "@types/oojs", | ||
"version": "6.0.1", | ||
"version": "6.0.2", | ||
"description": "TypeScript definitions for OOjs", | ||
@@ -23,4 +23,4 @@ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/oojs", | ||
"dependencies": {}, | ||
"typesPublisherContentHash": "4bb60823876d124163ec320f1b83263018cb7ba8aab9e48929e2faed570ee2b0", | ||
"typesPublisherContentHash": "458f17ea63492569f9da57746e859435e2a87adb9fbabb1050cee61f61fca799", | ||
"typeScriptVersion": "4.2" | ||
} |
@@ -11,3 +11,3 @@ # Installation | ||
### Additional Details | ||
* Last updated: Wed, 23 Nov 2022 18:11:54 GMT | ||
* Last updated: Mon, 05 Dec 2022 22:33:08 GMT | ||
* Dependencies: none | ||
@@ -14,0 +14,0 @@ * Global values: `OO` |
declare namespace OO { | ||
interface RegistryEventMap { | ||
register: [name: string, data: unknown]; | ||
unregister: [name: string, data: unknown]; | ||
} | ||
/** | ||
@@ -37,2 +42,65 @@ * A map interface for associating arbitrary data with a symbolic name. Used in | ||
lookup(name: string): unknown | undefined; | ||
// #region Event utils | ||
on<K extends keyof RegistryEventMap, A extends ArgTuple = [], C = null>( | ||
event: K, | ||
method: EventHandler<C, (this: C, ...args: [...A, ...RegistryEventMap[K]]) => void>, | ||
args?: A, | ||
context?: C, | ||
): this; | ||
on<K extends string, C = null>( | ||
event: K extends keyof RegistryEventMap ? never : K, | ||
method: EventHandler<C>, | ||
args?: any[], | ||
context?: C, | ||
): this; | ||
once<K extends keyof RegistryEventMap>( | ||
event: K, | ||
listener: (this: null, ...args: RegistryEventMap[K]) => void, | ||
): this; | ||
once<K extends string>( | ||
event: K extends keyof RegistryEventMap ? never : K, | ||
listener: (this: null, ...args: any[]) => void, | ||
): this; | ||
off<K extends keyof RegistryEventMap, C = null>( | ||
event: K, | ||
method?: EventHandler<C, (this: C, ...args: RegistryEventMap[K]) => void>, | ||
context?: C, | ||
): this; | ||
off<K extends string, C = null>( | ||
event: K extends keyof RegistryEventMap ? never : K, | ||
method?: EventHandler<C>, | ||
context?: C, | ||
): this; | ||
emit<K extends keyof RegistryEventMap>(event: K, ...args: RegistryEventMap[K]): boolean; | ||
emit<K extends string>(event: K extends keyof RegistryEventMap ? never : K, ...args: any[]): boolean; | ||
emitThrow<K extends keyof RegistryEventMap>(event: K, ...args: RegistryEventMap[K]): boolean; | ||
emitThrow<K extends string>(event: K extends keyof RegistryEventMap ? never : K, ...args: any[]): boolean; | ||
connect<T extends Partial<Record<keyof RegistryEventMap, any>>, C>( | ||
context: C, | ||
methods: { | ||
[K in keyof T]: EventConnectionMapEntry< | ||
C, | ||
K extends keyof RegistryEventMap ? RegistryEventMap[K] : any[], | ||
T[K] | ||
>; | ||
}, | ||
): this; | ||
disconnect<T extends Partial<Record<keyof RegistryEventMap, any>>, C>( | ||
context: C, | ||
methods?: { | ||
[K in keyof T]: EventConnectionMapEntry< | ||
C, | ||
K extends keyof RegistryEventMap ? RegistryEventMap[K] : any[], | ||
T[K] | ||
>; | ||
}, | ||
): this; | ||
// #endregion | ||
} | ||
@@ -39,0 +107,0 @@ |
@@ -59,4 +59,4 @@ declare namespace OO { | ||
type CheckFunctionType<T, K extends keyof T> = K extends any | ||
? T[K] extends (...args: any[]) => any | ||
type FunctionFieldsOf<T, F extends (...args: any[]) => any, K extends keyof T = keyof T> = K extends any | ||
? T[K] extends F | ||
? K | ||
@@ -66,3 +66,11 @@ : never | ||
type ExtractFunctionKeys<T extends object> = Exclude<CheckFunctionType<T, keyof T>, never>; | ||
type EventHandler<C, F extends (...args: any[]) => any = (this: C, ...args: any[]) => void> = | ||
| FunctionFieldsOf<C, F> | ||
| F; | ||
type ArgTuple = [] | [any] | [any, any] | [any, any, any] | [any, any, any, any] | [any, any, any, any, any]; | ||
type EventConnectionMapEntry<C, P extends any[], T> = T extends ArgTuple | ||
? [EventHandler<C, (this: C, ...args: [...T, ...P]) => void>, ...T] | ||
: EventHandler<C, (this: C, ...args: P) => void>; | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
36873
837