events-ex 2.0.0-alpha.0 → 2.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.cn.md +72 -104
- package/README.md +18 -13
- package/ability.js +1 -1
- package/docs/README.md +19 -13
- package/docs/classes/event.Event.md +8 -8
- package/docs/classes/event_emitter-1.EventEmitter.md +25 -0
- package/docs/classes/{index.EventEmitter.md → event_emitter.EventEmitter.md} +36 -36
- package/docs/modules/all_off.md +4 -4
- package/docs/modules/consts.md +1 -1
- package/docs/modules/default_methods.md +6 -6
- package/docs/modules/event_emitter-1.md +19 -0
- package/docs/modules/event_emitter.md +3 -41
- package/docs/modules/eventable.md +3 -1
- package/docs/modules/has_listeners.md +1 -1
- package/docs/modules/index.md +16 -6
- package/docs/modules/pipe.md +3 -3
- package/docs/modules/pipe_async.md +3 -3
- package/docs/modules/unify.md +3 -3
- package/docs/modules/util_array_remove.md +1 -1
- package/docs/modules/util_object_for_each.md +1 -1
- package/docs/modules/util_string_pad.md +1 -1
- package/docs/modules/util_to_int.md +1 -1
- package/docs/modules/util_valid_callable.md +1 -1
- package/docs/modules/util_valid_object.md +1 -1
- package/docs/modules/wrap_event_emitter.md +57 -0
- package/docs/modules.md +2 -1
- package/lib/all-off.d.ts +3 -3
- package/lib/all-off.js +2 -2
- package/lib/default-methods.d.ts +8 -8
- package/lib/default-methods.js +4 -4
- package/lib/event-emitter.d.ts +68 -6
- package/lib/event-emitter.js +8 -39
- package/lib/event.d.ts +6 -6
- package/lib/event.js +2 -2
- package/lib/index.d.ts +11 -78
- package/lib/index.js +22 -21
- package/lib/pipe-async.d.ts +3 -3
- package/lib/pipe-async.js +4 -4
- package/lib/pipe.d.ts +3 -3
- package/lib/pipe.js +4 -4
- package/lib/unify.d.ts +3 -3
- package/lib/unify.js +2 -2
- package/lib/wrap-event-emitter.d.ts +8 -0
- package/lib/wrap-event-emitter.js +47 -0
- package/package.json +3 -3
- package/src/all-off.js +2 -2
- package/src/default-methods.js +4 -4
- package/src/{index.d.ts → event-emitter.d.ts} +0 -9
- package/src/event-emitter.js +6 -37
- package/src/event.js +2 -2
- package/src/index.js +2 -9
- package/src/pipe-async.js +3 -3
- package/src/pipe.js +3 -3
- package/src/unify.js +2 -2
- package/src/wrap-event-emitter.js +42 -0
- package/test/all-off-test.js +1 -1
- package/test/event-emitter-async-test.js +1 -1
- package/test/event-emitter-test.js +1 -1
- package/test/has-listeners-test.js +1 -1
- package/test/pipe-async-test.js +1 -1
- package/test/pipe-test.js +1 -1
- package/test/unify-async-test.js +1 -1
- package/test/unify-test.js +1 -1
- package/all-off.js +0 -9
- package/consts.js +0 -5
- package/default-methods.js +0 -318
- package/docs/classes/index-1.EventEmitter.md +0 -25
- package/docs/modules/index-1.md +0 -89
- package/event-emitter.js +0 -41
- package/eventable.js +0 -70
- package/events.d.ts +0 -50
- package/events.js +0 -18
- package/has-listeners.js +0 -16
- package/index.d.ts +0 -3
- package/index.js +0 -3
- package/pipe.js +0 -41
- package/unify.js +0 -50
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [2.0.0-alpha.2](https://github.com/snowyu/events-ex.js/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2023-06-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* rename src/event-emitter to src/wrap-event-emitter and extract EventEmitter from index to event-emitter
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **ts:** EventEmitter not found ([9a74862](https://github.com/snowyu/events-ex.js/commit/9a748624e00417f6d7f72ea7c297650e10895d19))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Refactor
|
|
18
|
+
|
|
19
|
+
* rename src/event-emitter to src/wrap-event-emitter and extract EventEmitter from index to event-emitter ([f06f39f](https://github.com/snowyu/events-ex.js/commit/f06f39fb809006f5e098e31bb23870fff39ec5c8))
|
|
20
|
+
|
|
21
|
+
## [2.0.0-alpha.1](https://github.com/snowyu/events-ex.js/compare/v2.0.0-alpha.0...v2.0.0-alpha.1) (2023-06-13)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### ⚠ BREAKING CHANGES
|
|
25
|
+
|
|
26
|
+
* remove deprecated files
|
|
27
|
+
|
|
28
|
+
### Refactor
|
|
29
|
+
|
|
30
|
+
* remove deprecated files ([d733a5c](https://github.com/snowyu/events-ex.js/commit/d733a5c6a6c554739ecbcb653996f1e546579fa4))
|
|
31
|
+
|
|
5
32
|
## [2.0.0-alpha.0](https://github.com/snowyu/events-ex.js/compare/v1.1.7...v2.0.0-alpha.0) (2023-05-25)
|
|
6
33
|
|
|
7
34
|
|
package/README.cn.md
CHANGED
|
@@ -1,81 +1,78 @@
|
|
|
1
1
|
### events-ex [](http://travis-ci.org/snowyu/events-ex.js) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
浏览器友好的增强的**事件**[能力][Ability]和类。 它主要是从 [event-emitter][event-emitter] 修改而来的。 本库可以为你的任何类添加(注入)**事件**[能力][Ability]。
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
|
|
7
|
+
TODO: 异步事件,添加`emitAsync`方法. 没这么简单,因为要支持bubbling,所以必须顺序执行事件.
|
|
8
|
+
将`bubbling`作为功能选项.如果没有启用,就可以乱发了.
|
|
8
9
|
|
|
9
10
|
当关闭`bubbling`的时候,那么是否还需要用`event`对象传递.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
首先完成异步支持.已经完成.`emitAsync`方法已经加上.
|
|
12
13
|
|
|
13
14
|
### Features
|
|
14
15
|
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
### Usage
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Add the event-able feature to your class directly:
|
|
49
|
-
|
|
50
|
-
```coffee
|
|
16
|
+
* 重写核心架构
|
|
17
|
+
* 尽最大可能性与[node events][Node Events] and [event-emitter][event-emitter]保持兼容
|
|
18
|
+
* 更强大的 event-able [能力][Ability]
|
|
19
|
+
* 可挂载的事件系统, 用于更好地控制事件处理
|
|
20
|
+
* 支持异步事件通过 `emitAsync` 方法.
|
|
21
|
+
|
|
22
|
+
### 区别
|
|
23
|
+
|
|
24
|
+
* 与 [Node 事件模块](https://nodejs.org/api/events.html) 的区别
|
|
25
|
+
* **`改变`**: 事件支持冒泡机制与中断
|
|
26
|
+
* 事件对象(`Event Object`)作为监听器的 "this" 对象。
|
|
27
|
+
* `result` 属性: 可选, 如果设置,则将该结果返回到事件发射器(`Event Emitter`)。
|
|
28
|
+
* `stopped` 属性: 可选, 如果设置为 `true`,则会阻止剩余的监听器被执行。
|
|
29
|
+
* `target`属性: 事件发射器对象,原本的`this`
|
|
30
|
+
* **`改变`**: `emit` 方法返回监听器回调函数的结果而不是成功状态。
|
|
31
|
+
* **`改变`**: 监听器回调函数的 `this` 对象是 `Event Object` 事件对象而不是事件发射器对象。
|
|
32
|
+
* 事件发射器对象被放入 `Event` 对象的 `target` 属性中。
|
|
33
|
+
* 添加了`emitAsync`方法,支持异步事件
|
|
34
|
+
* 与 [event-emitter](https://github.com/medikoo/event-emitter) 的区别
|
|
35
|
+
* **`改变`**: 事件支持冒泡机制(如上所述)
|
|
36
|
+
* 添加了默认最大监听器数量的类属性,以保持与 Node 事件模块的兼容性。
|
|
37
|
+
* 添加了 `setMaxListeners` 方法,以保持与 Node 事件模块的兼容性。
|
|
38
|
+
* 添加了 `error`、`newListener` 和 `removeListener` 事件,以保持与 Node 事件模块的兼容性。
|
|
39
|
+
* 添加了 `listeners()` 方法,以保持与 Node 事件模块的兼容性。
|
|
40
|
+
* 添加了 `listenerCount()` 类方法,以保持与 Node 事件模块的兼容性。
|
|
41
|
+
* 添加了`emitAsync`方法,支持异步事件
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### 安装
|
|
51
45
|
|
|
52
|
-
|
|
46
|
+
```
|
|
47
|
+
npm install events-ex@alpha
|
|
48
|
+
```
|
|
53
49
|
|
|
54
|
-
class MyClass
|
|
55
|
-
# advanced usage see API topic.
|
|
56
|
-
eventable MyClass
|
|
57
50
|
|
|
58
|
-
|
|
51
|
+
### 用法
|
|
59
52
|
|
|
60
|
-
|
|
61
|
-
console.log 'event occur'
|
|
62
|
-
# be care: @(this) is the event object. not the `my` instance.
|
|
63
|
-
# the my instance is @target.
|
|
53
|
+
直接继承使用 `EventEmitter` 类
|
|
64
54
|
|
|
65
|
-
|
|
55
|
+
```js
|
|
56
|
+
import {EventEmitter} from 'events-ex';
|
|
66
57
|
|
|
58
|
+
class MyClass extends EventEmitter {}
|
|
67
59
|
```
|
|
68
60
|
|
|
69
|
-
|
|
61
|
+
直接添加/注入事件(event-able)[能力][Ability] 到你的类:
|
|
70
62
|
|
|
71
63
|
```js
|
|
72
|
-
|
|
64
|
+
import {eventable} from 'events-ex';
|
|
73
65
|
|
|
74
|
-
|
|
66
|
+
class MyClass extends MyRoot {}
|
|
75
67
|
|
|
68
|
+
// inject the eventable ability to MyClass
|
|
76
69
|
eventable(MyClass);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
现在,可以在你的类中使用事件了:
|
|
77
73
|
|
|
78
|
-
|
|
74
|
+
```js
|
|
75
|
+
const my = new MyClass;
|
|
79
76
|
|
|
80
77
|
my.on('event', function() {
|
|
81
78
|
console.log('event occur');
|
|
@@ -84,53 +81,19 @@ my.on('event', function() {
|
|
|
84
81
|
my.emit('event');
|
|
85
82
|
```
|
|
86
83
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```coffee
|
|
90
|
-
## Coffee-script demo bubbling usage:
|
|
91
|
-
EventEmitter = require('events-ex')
|
|
92
|
-
inherits = require('inherits-ex')
|
|
93
|
-
ABORT = -1
|
|
94
|
-
DONE = 0
|
|
95
|
-
|
|
96
|
-
class MyDb
|
|
97
|
-
inherits MyDb, EventEmitter
|
|
98
|
-
get: (key)->
|
|
99
|
-
# Demo the event object bubbling usage:
|
|
100
|
-
result = @emit 'getting', key
|
|
101
|
-
if isObject result
|
|
102
|
-
return if result.state is ABORT
|
|
103
|
-
return result.result if result.state is DONE
|
|
104
|
-
_get(key)
|
|
105
|
-
|
|
106
|
-
db = new MyDb
|
|
107
|
-
db.on 'getting', (key)->
|
|
108
|
-
result = myGet(key);
|
|
109
|
-
if result?
|
|
110
|
-
# get the key succ
|
|
111
|
-
this.result =
|
|
112
|
-
state: DONE
|
|
113
|
-
result: result
|
|
114
|
-
else if result is null
|
|
115
|
-
# abort default get key.
|
|
116
|
-
this.result = state: ABORT;
|
|
117
|
-
# this.stopped = true # it will skip other listeners if true
|
|
118
|
-
```
|
|
84
|
+
事件冒泡机制的使用:
|
|
119
85
|
|
|
120
86
|
```js
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
let isObject = require('util-ex/lib/is/type/object')
|
|
124
|
-
const ABORT = -1
|
|
125
|
-
const DONE = 0
|
|
87
|
+
import {EventEmitter, states} from 'events-ex';
|
|
88
|
+
import {isObject} from 'util-ex';
|
|
126
89
|
|
|
127
90
|
class MyDb extends EventEmitter {
|
|
128
91
|
get(key) {
|
|
129
92
|
// Demo the event object bubbling usage:
|
|
130
93
|
let result = this.emit('getting', key)
|
|
131
94
|
if(isObject(result)) {
|
|
132
|
-
if (result.state === ABORT) return
|
|
133
|
-
if (result.state === DONE) return result.result
|
|
95
|
+
if (result.state === states.ABORT) return
|
|
96
|
+
if (result.state === states.DONE) return result.result
|
|
134
97
|
}
|
|
135
98
|
return _get(key)
|
|
136
99
|
}
|
|
@@ -142,12 +105,12 @@ db.on('getting', function(key){
|
|
|
142
105
|
if (result != null) {
|
|
143
106
|
// get the key succ
|
|
144
107
|
this.result = {
|
|
145
|
-
state: DONE,
|
|
108
|
+
state: states.DONE,
|
|
146
109
|
result: result,
|
|
147
110
|
}
|
|
148
111
|
} else if (result === null) {
|
|
149
112
|
// abort default get key.
|
|
150
|
-
this.result = {state: ABORT};
|
|
113
|
+
this.result = {state: states.ABORT};
|
|
151
114
|
// this.stopped = true // it will skip other listeners if true
|
|
152
115
|
}
|
|
153
116
|
})
|
|
@@ -157,12 +120,13 @@ event-emitter usage:
|
|
|
157
120
|
|
|
158
121
|
```javascript
|
|
159
122
|
|
|
160
|
-
|
|
123
|
+
import {wrapEventEmitter as ee} from 'events-ex';
|
|
161
124
|
|
|
162
|
-
|
|
125
|
+
class MyClass { /* .. */ };
|
|
163
126
|
ee(MyClass.prototype); // All instances of MyClass will expose event-emitter interface
|
|
164
127
|
|
|
165
|
-
|
|
128
|
+
const emitter = new MyClass();
|
|
129
|
+
let listener;
|
|
166
130
|
|
|
167
131
|
emitter.on('test', listener = function (args) {
|
|
168
132
|
// … react to 'test' event
|
|
@@ -186,17 +150,17 @@ emitter.emit('test', arg1, arg2/*…args*/); // No listeners invoked
|
|
|
186
150
|
Add the event-able ability to the class directly.
|
|
187
151
|
|
|
188
152
|
* `class`: the class to be injected the ability.
|
|
189
|
-
* `options`
|
|
190
|
-
* `include`
|
|
153
|
+
* `options` _(object)_: optional options
|
|
154
|
+
* `include` _(string[]|string)_: only these emitter methods will be added to the class
|
|
191
155
|
* **NOTE:** static method should use the prefix '@' with name.
|
|
192
|
-
* `exclude`
|
|
156
|
+
* `exclude` _(string[]|string)_: theses emitter methods would not be added to the class
|
|
193
157
|
* **NOTE:** static method should use the prefix '@' with name.
|
|
194
|
-
* `methods`
|
|
158
|
+
* `methods` _(object)_: hooked methods to the class
|
|
195
159
|
* key: the method name to hook.
|
|
196
160
|
* value: the new method function
|
|
197
161
|
* use `this.super()` to call the original method.
|
|
198
162
|
* `this.self` is the original `this` object.
|
|
199
|
-
* `classMethods`
|
|
163
|
+
* `classMethods` _(object)_: hooked class methods to the class
|
|
200
164
|
|
|
201
165
|
```coffee
|
|
202
166
|
eventable = require('events-ex/eventable')
|
|
@@ -214,6 +178,7 @@ Add the event-able ability to the class directly.
|
|
|
214
178
|
console.log "new exec"
|
|
215
179
|
@super() # call the original method
|
|
216
180
|
```
|
|
181
|
+
|
|
217
182
|
#### allOff(obj) _(events-ex/all-off)_
|
|
218
183
|
|
|
219
184
|
**keep compatible only**: the `removeAllListeners` has already been buildin.
|
|
@@ -277,4 +242,7 @@ emitter2.emit('test'); // Invoked listener1, listener2, listener3 and listener4
|
|
|
277
242
|
```
|
|
278
243
|
|
|
279
244
|
|
|
280
|
-
[
|
|
245
|
+
[event-emitter]: https://github.com/medikoo/event-emitter
|
|
246
|
+
[Node Events]: https://nodejs.org/api/events.html
|
|
247
|
+
[Ability]: https://github.com/snowyu/custom-ability.js
|
|
248
|
+
|
package/README.md
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
### events-ex [](http://travis-ci.org/snowyu/events-ex.js) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
Browser-friendly enhanced
|
|
4
|
+
Browser-friendly enhanced event emitter [ability][Ability] and class. It's modified from [event-emitter][event-emitter] mainly. It can add/inject the event-able [ability][Ability] to your any class.
|
|
5
5
|
|
|
6
6
|
### Features
|
|
7
7
|
|
|
8
8
|
* Rewrite of the core architecture for improved performance and more powerful event-able ability
|
|
9
|
-
* keep most compatible with [node events](nodejs.org/api/events.html) and [event-emitter]
|
|
9
|
+
* keep most compatible with [node events](nodejs.org/api/events.html) and [event-emitter][event-emitter]
|
|
10
10
|
* Hookable event system for more control over event handling
|
|
11
|
-
* Supports async event emitting
|
|
11
|
+
* Supports async event emitting via `emitAsync` method.
|
|
12
12
|
|
|
13
13
|
### Differences
|
|
14
14
|
|
|
15
15
|
* Difference with [node events](https://nodejs.org/api/events.html)
|
|
16
|
-
+ **`broken change`**: The event
|
|
17
|
-
+ the event object as listener's "this" object
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
+ **`broken change`**: The event supports bubbling and interruption
|
|
17
|
+
+ the `event object` as listener's "this" object:
|
|
18
|
+
* `result`: If set, the result is returned to the `Event Emitter`.
|
|
19
|
+
* `stopped`: If set to `true`, it prevents the remaining listeners from being executed.
|
|
20
|
+
* `target`: The `Event Emitter` object, which was originally the `this` object.
|
|
20
21
|
* **`broken change`**: The `emit` return the result of listeners's callback function instead of the successful state.
|
|
21
22
|
* **`broken change`**: The `this` object of listeners' callback function is the `Event` Object instead of the emitter object.
|
|
22
23
|
* The emitter object is put into the `target` property of the `Event` Object.
|
|
24
|
+
* Adds async event emitting via `emitAsync` method.
|
|
23
25
|
* Difference with [event-emitter](https://github.com/medikoo/event-emitter)
|
|
24
|
-
+ **`broken change`**: The event
|
|
26
|
+
+ **`broken change`**: The event supports bubbling and interruption(see above)
|
|
25
27
|
+ Adds the defaultMaxListeners class property to keep compatibility with node events.
|
|
26
28
|
+ Adds the setMaxListeners method to keep compatible with node events.
|
|
27
29
|
+ Adds `error`, `newListener` and `removeListener` events to keep compatibility with node events.
|
|
28
30
|
+ Adds listeners() method to keep compatibility with node events.
|
|
29
31
|
+ Adds listenerCount() class method to keep compatibility with node events.
|
|
32
|
+
* Adds async event emitting via `emitAsync` method.
|
|
30
33
|
|
|
31
34
|
|
|
32
35
|
### Installation
|
|
@@ -37,7 +40,7 @@ npm install events-ex
|
|
|
37
40
|
|
|
38
41
|
### Usage
|
|
39
42
|
|
|
40
|
-
Extends from `EventEmitter
|
|
43
|
+
Extends from `EventEmitter` class:
|
|
41
44
|
|
|
42
45
|
```js
|
|
43
46
|
import {EventEmitter} from 'events-ex';
|
|
@@ -45,21 +48,21 @@ import {EventEmitter} from 'events-ex';
|
|
|
45
48
|
class MyClass extends EventEmitter {}
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
Add the event-able
|
|
51
|
+
Add/Inject the event-able [ability][Ability] to your class directly:
|
|
49
52
|
|
|
50
53
|
```js
|
|
51
54
|
import {eventable} from 'events-ex';
|
|
52
55
|
|
|
53
|
-
class MyClass {}
|
|
56
|
+
class MyClass extends MyRoot {}
|
|
54
57
|
|
|
55
58
|
// inject the eventable ability to MyClass
|
|
56
59
|
eventable(MyClass);
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
Now
|
|
62
|
+
Now, you can use events in your class:
|
|
60
63
|
|
|
61
64
|
```js
|
|
62
|
-
|
|
65
|
+
const my = new MyClass;
|
|
63
66
|
|
|
64
67
|
my.on('event', function() {
|
|
65
68
|
console.log('event occur');
|
|
@@ -232,3 +235,5 @@ emitter2.emit('test'); // Invoked listener1, listener2, listener3 and listener4
|
|
|
232
235
|
```
|
|
233
236
|
|
|
234
237
|
|
|
238
|
+
[event-emitter]: https://github.com/medikoo/event-emitter
|
|
239
|
+
[Ability]: https://github.com/snowyu/custom-ability.js
|
package/ability.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = require('./eventable')
|
|
1
|
+
module.exports = require('./lib/eventable')
|
package/docs/README.md
CHANGED
|
@@ -2,32 +2,35 @@ events-ex / [Exports](modules.md)
|
|
|
2
2
|
|
|
3
3
|
### events-ex [](http://travis-ci.org/snowyu/events-ex.js) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex) [](https://npmjs.org/package/events-ex)
|
|
4
4
|
|
|
5
|
-
Browser-friendly enhanced
|
|
5
|
+
Browser-friendly enhanced event emitter [ability][Ability] and class. It's modified from [event-emitter][event-emitter] mainly. It can add/inject the event-able [ability][Ability] to your any class.
|
|
6
6
|
|
|
7
7
|
### Features
|
|
8
8
|
|
|
9
9
|
* Rewrite of the core architecture for improved performance and more powerful event-able ability
|
|
10
|
-
* keep most compatible with [node events](nodejs.org/api/events.html) and [event-emitter]
|
|
10
|
+
* keep most compatible with [node events](nodejs.org/api/events.html) and [event-emitter][event-emitter]
|
|
11
11
|
* Hookable event system for more control over event handling
|
|
12
|
-
* Supports async event emitting
|
|
12
|
+
* Supports async event emitting via `emitAsync` method.
|
|
13
13
|
|
|
14
14
|
### Differences
|
|
15
15
|
|
|
16
16
|
* Difference with [node events](https://nodejs.org/api/events.html)
|
|
17
|
-
+ **`broken change`**: The event
|
|
18
|
-
+ the event object as listener's "this" object
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
+ **`broken change`**: The event supports bubbling and interruption
|
|
18
|
+
+ the `event object` as listener's "this" object:
|
|
19
|
+
* `result`: If set, the result is returned to the `Event Emitter`.
|
|
20
|
+
* `stopped`: If set to `true`, it prevents the remaining listeners from being executed.
|
|
21
|
+
* `target`: The `Event Emitter` object, which was originally the `this` object.
|
|
21
22
|
* **`broken change`**: The `emit` return the result of listeners's callback function instead of the successful state.
|
|
22
23
|
* **`broken change`**: The `this` object of listeners' callback function is the `Event` Object instead of the emitter object.
|
|
23
24
|
* The emitter object is put into the `target` property of the `Event` Object.
|
|
25
|
+
* Adds async event emitting via `emitAsync` method.
|
|
24
26
|
* Difference with [event-emitter](https://github.com/medikoo/event-emitter)
|
|
25
|
-
+ **`broken change`**: The event
|
|
27
|
+
+ **`broken change`**: The event supports bubbling and interruption(see above)
|
|
26
28
|
+ Adds the defaultMaxListeners class property to keep compatibility with node events.
|
|
27
29
|
+ Adds the setMaxListeners method to keep compatible with node events.
|
|
28
30
|
+ Adds `error`, `newListener` and `removeListener` events to keep compatibility with node events.
|
|
29
31
|
+ Adds listeners() method to keep compatibility with node events.
|
|
30
32
|
+ Adds listenerCount() class method to keep compatibility with node events.
|
|
33
|
+
* Adds async event emitting via `emitAsync` method.
|
|
31
34
|
|
|
32
35
|
### Installation
|
|
33
36
|
|
|
@@ -37,7 +40,7 @@ npm install events-ex
|
|
|
37
40
|
|
|
38
41
|
### Usage
|
|
39
42
|
|
|
40
|
-
Extends from `EventEmitter
|
|
43
|
+
Extends from `EventEmitter` class:
|
|
41
44
|
|
|
42
45
|
```js
|
|
43
46
|
import {EventEmitter} from 'events-ex';
|
|
@@ -45,21 +48,21 @@ import {EventEmitter} from 'events-ex';
|
|
|
45
48
|
class MyClass extends EventEmitter {}
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
Add the event-able
|
|
51
|
+
Add/Inject the event-able [ability][Ability] to your class directly:
|
|
49
52
|
|
|
50
53
|
```js
|
|
51
54
|
import {eventable} from 'events-ex';
|
|
52
55
|
|
|
53
|
-
class MyClass {}
|
|
56
|
+
class MyClass extends MyRoot {}
|
|
54
57
|
|
|
55
58
|
// inject the eventable ability to MyClass
|
|
56
59
|
eventable(MyClass);
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
Now
|
|
62
|
+
Now, you can use events in your class:
|
|
60
63
|
|
|
61
64
|
```js
|
|
62
|
-
|
|
65
|
+
const my = new MyClass;
|
|
63
66
|
|
|
64
67
|
my.on('event', function() {
|
|
65
68
|
console.log('event occur');
|
|
@@ -230,3 +233,6 @@ emitter2.on('test', listener4 = function () { });
|
|
|
230
233
|
emitter1.emit('test'); // Invoked listener1, listener2, listener3 and listener4
|
|
231
234
|
emitter2.emit('test'); // Invoked listener1, listener2, listener3 and listener4
|
|
232
235
|
```
|
|
236
|
+
|
|
237
|
+
[event-emitter]: https://github.com/medikoo/event-emitter
|
|
238
|
+
[Ability]: https://github.com/snowyu/custom-ability.js
|
|
@@ -37,11 +37,11 @@ Event Object that contains information about the event, such as the target eleme
|
|
|
37
37
|
|
|
38
38
|
| Name | Type | Description |
|
|
39
39
|
| :------ | :------ | :------ |
|
|
40
|
-
| `target` | `EventEmitter` | Who trigger the event |
|
|
40
|
+
| `target` | [`EventEmitter`](event_emitter.EventEmitter.md) | Who trigger the event |
|
|
41
41
|
|
|
42
42
|
#### Defined in
|
|
43
43
|
|
|
44
|
-
[src/event.js:8](https://github.com/snowyu/events-ex.js/blob/
|
|
44
|
+
[src/event.js:8](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L8)
|
|
45
45
|
|
|
46
46
|
## Properties
|
|
47
47
|
|
|
@@ -53,7 +53,7 @@ Keep your event result here if any.
|
|
|
53
53
|
|
|
54
54
|
#### Defined in
|
|
55
55
|
|
|
56
|
-
[src/event.js:38](https://github.com/snowyu/events-ex.js/blob/
|
|
56
|
+
[src/event.js:38](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L38)
|
|
57
57
|
|
|
58
58
|
___
|
|
59
59
|
|
|
@@ -65,7 +65,7 @@ Whether stop the bubbling event
|
|
|
65
65
|
|
|
66
66
|
#### Defined in
|
|
67
67
|
|
|
68
|
-
[src/event.js:32](https://github.com/snowyu/events-ex.js/blob/
|
|
68
|
+
[src/event.js:32](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L32)
|
|
69
69
|
|
|
70
70
|
___
|
|
71
71
|
|
|
@@ -77,7 +77,7 @@ Who trigger the event
|
|
|
77
77
|
|
|
78
78
|
#### Defined in
|
|
79
79
|
|
|
80
|
-
[src/event.js:26](https://github.com/snowyu/events-ex.js/blob/
|
|
80
|
+
[src/event.js:26](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L26)
|
|
81
81
|
|
|
82
82
|
## Methods
|
|
83
83
|
|
|
@@ -95,7 +95,7 @@ The result of the event.
|
|
|
95
95
|
|
|
96
96
|
#### Defined in
|
|
97
97
|
|
|
98
|
-
[src/event.js:45](https://github.com/snowyu/events-ex.js/blob/
|
|
98
|
+
[src/event.js:45](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L45)
|
|
99
99
|
|
|
100
100
|
___
|
|
101
101
|
|
|
@@ -109,7 +109,7 @@ Initializes the event with the target object.
|
|
|
109
109
|
|
|
110
110
|
| Name | Type | Description |
|
|
111
111
|
| :------ | :------ | :------ |
|
|
112
|
-
| `target` | `EventEmitter` | The target object for the event. |
|
|
112
|
+
| `target` | [`EventEmitter`](event_emitter.EventEmitter.md) | The target object for the event. |
|
|
113
113
|
|
|
114
114
|
#### Returns
|
|
115
115
|
|
|
@@ -117,4 +117,4 @@ Initializes the event with the target object.
|
|
|
117
117
|
|
|
118
118
|
#### Defined in
|
|
119
119
|
|
|
120
|
-
[src/event.js:20](https://github.com/snowyu/events-ex.js/blob/
|
|
120
|
+
[src/event.js:20](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event.js#L20)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[events-ex](../README.md) / [Exports](../modules.md) / [event-emitter](../modules/event_emitter-1.md) / EventEmitter
|
|
2
|
+
|
|
3
|
+
# Class: EventEmitter
|
|
4
|
+
|
|
5
|
+
[event-emitter](../modules/event_emitter-1.md).EventEmitter
|
|
6
|
+
|
|
7
|
+
## Table of contents
|
|
8
|
+
|
|
9
|
+
### Constructors
|
|
10
|
+
|
|
11
|
+
- [constructor](event_emitter-1.EventEmitter.md#constructor)
|
|
12
|
+
|
|
13
|
+
## Constructors
|
|
14
|
+
|
|
15
|
+
### constructor
|
|
16
|
+
|
|
17
|
+
• **new EventEmitter**()
|
|
18
|
+
|
|
19
|
+
**`Classdesc`**
|
|
20
|
+
|
|
21
|
+
Class that represents an event emitter.
|
|
22
|
+
|
|
23
|
+
#### Defined in
|
|
24
|
+
|
|
25
|
+
[src/event-emitter.js:7](https://github.com/snowyu/events-ex.js/blob/25f69f3/src/event-emitter.js#L7)
|