Skip to content

Commit

Permalink
reformat
Browse files Browse the repository at this point in the history
  • Loading branch information
skt-t1-byungi committed Feb 11, 2019
1 parent fdf3d4c commit 5688872
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 46 deletions.
78 changes: 39 additions & 39 deletions EventEmitter.ts
Expand Up @@ -7,69 +7,69 @@ type OnceListener = Listener & {key: Listener}
interface ListenerMap { [name: string]: Array<Listener | OnceListener > }

class EventEmitter {
private _listeners: ListenerMap = {}
private _listeners: ListenerMap = {}

public on (name: string, listener: Listener) {
assertListener(listener)
public on (name: string, listener: Listener) {
assertListener(listener)

if (!this.has(name)) this._listeners[name] = []
this._listeners[name].push(listener)
}
if (!this.has(name)) this._listeners[name] = []
this._listeners[name].push(listener)
}

public off (name: string, listener?: Listener) {
if (listener) assertListener(listener)
public off (name: string, listener?: Listener) {
if (listener) assertListener(listener)

if (!this.has(name)) return
if (!this.has(name)) return

if (!listener) {
delete this._listeners[name]
return
}
if (!listener) {
delete this._listeners[name]
return
}

this._listeners[name] = filter(this._listeners[name], target => !equalListener(target, listener))
this._listeners[name] = filter(this._listeners[name], target => !equalListener(target, listener))

if (this._listeners[name].length === 0) delete this._listeners[name]
}
if (this._listeners[name].length === 0) delete this._listeners[name]
}

public once (name: string, listener: Listener) {
assertListener(listener)
public once (name: string, listener: Listener) {
assertListener(listener)

const onceListener = ((...params: any[]) => {
this.off(name, listener)
listener(...params)
}) as OnceListener
const onceListener = ((...params: any[]) => {
this.off(name, listener)
listener(...params)
}) as OnceListener

onceListener.key = listener
onceListener.key = listener

this.on(name, onceListener)
}
this.on(name, onceListener)
}

public emit (name: string, ...params: any[]) {
if (!this.has(name)) return
forEach(this._listeners[name].slice(), listener => listener(...params))
}
public emit (name: string, ...params: any[]) {
if (!this.has(name)) return
forEach(this._listeners[name].slice(), listener => listener(...params))
}

public has (name: string, listener?: Listener) {
if (!hasOwn(this._listeners, name)) return false
if (!listener) return true
public has (name: string, listener?: Listener) {
if (!hasOwn(this._listeners, name)) return false
if (!listener) return true

assertListener(listener)
assertListener(listener)

return findIndex(this._listeners[name], target => equalListener(target, listener)) > -1
}
return findIndex(this._listeners[name], target => equalListener(target, listener)) > -1
}
}

export = EventEmitter

function assertListener (listener: Listener) {
const type = typeof listener
if (type !== 'function') throw new TypeError(`Expected listener to be a function, but ${type}`)
const type = typeof listener
if (type !== 'function') throw new TypeError(`Expected listener to be a function, but ${type}`)
}

function hasOwn (obj: object, key: string) {
return Object.prototype.hasOwnProperty.call(obj, key)
return Object.prototype.hasOwnProperty.call(obj, key)
}

function equalListener (target: Listener | OnceListener, listener: Listener) {
return target === listener || (target as OnceListener).key === listener
return target === listener || (target as OnceListener).key === listener
}
17 changes: 10 additions & 7 deletions package.json
Expand Up @@ -18,7 +18,10 @@
"EventEmitter.d.ts"
],
"keywords": [
"event emitter"
"event",
"emitter",
"old",
"ie"
],
"license": "MIT",
"scripts": {
Expand All @@ -27,16 +30,16 @@
"prepublishOnly": "npm run build && ava"
},
"devDependencies": {
"ava": "^0.25.0",
"bili": "^3.1.2",
"tslint": "^5.11.0",
"tslint-config-byungi": "^0.0.5",
"typescript": "^2.9.2"
"ava": "^1.2.1",
"bili": "^4.2.5",
"tslint": "^5.12.1",
"tslint-config-byungi": "^0.1.0",
"typescript": "^3.3.3"
},
"bugs": {
"url": "https://github.com/skt-t1-byungi/event-emitter/issues"
},
"homepage": "https://github.com/skt-t1-byungi/event-emitter#readme",
"homepage": "https://github.com/skt-t1-byungi/event-emitter",
"dependencies": {
"@skt-t1-byungi/array-filter": "^0.1.0",
"@skt-t1-byungi/array-find-index": "^0.1.0",
Expand Down

0 comments on commit 5688872

Please sign in to comment.