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.
Files changed (78) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.cn.md +72 -104
  3. package/README.md +18 -13
  4. package/ability.js +1 -1
  5. package/docs/README.md +19 -13
  6. package/docs/classes/event.Event.md +8 -8
  7. package/docs/classes/event_emitter-1.EventEmitter.md +25 -0
  8. package/docs/classes/{index.EventEmitter.md → event_emitter.EventEmitter.md} +36 -36
  9. package/docs/modules/all_off.md +4 -4
  10. package/docs/modules/consts.md +1 -1
  11. package/docs/modules/default_methods.md +6 -6
  12. package/docs/modules/event_emitter-1.md +19 -0
  13. package/docs/modules/event_emitter.md +3 -41
  14. package/docs/modules/eventable.md +3 -1
  15. package/docs/modules/has_listeners.md +1 -1
  16. package/docs/modules/index.md +16 -6
  17. package/docs/modules/pipe.md +3 -3
  18. package/docs/modules/pipe_async.md +3 -3
  19. package/docs/modules/unify.md +3 -3
  20. package/docs/modules/util_array_remove.md +1 -1
  21. package/docs/modules/util_object_for_each.md +1 -1
  22. package/docs/modules/util_string_pad.md +1 -1
  23. package/docs/modules/util_to_int.md +1 -1
  24. package/docs/modules/util_valid_callable.md +1 -1
  25. package/docs/modules/util_valid_object.md +1 -1
  26. package/docs/modules/wrap_event_emitter.md +57 -0
  27. package/docs/modules.md +2 -1
  28. package/lib/all-off.d.ts +3 -3
  29. package/lib/all-off.js +2 -2
  30. package/lib/default-methods.d.ts +8 -8
  31. package/lib/default-methods.js +4 -4
  32. package/lib/event-emitter.d.ts +68 -6
  33. package/lib/event-emitter.js +8 -39
  34. package/lib/event.d.ts +6 -6
  35. package/lib/event.js +2 -2
  36. package/lib/index.d.ts +11 -78
  37. package/lib/index.js +22 -21
  38. package/lib/pipe-async.d.ts +3 -3
  39. package/lib/pipe-async.js +4 -4
  40. package/lib/pipe.d.ts +3 -3
  41. package/lib/pipe.js +4 -4
  42. package/lib/unify.d.ts +3 -3
  43. package/lib/unify.js +2 -2
  44. package/lib/wrap-event-emitter.d.ts +8 -0
  45. package/lib/wrap-event-emitter.js +47 -0
  46. package/package.json +3 -3
  47. package/src/all-off.js +2 -2
  48. package/src/default-methods.js +4 -4
  49. package/src/{index.d.ts → event-emitter.d.ts} +0 -9
  50. package/src/event-emitter.js +6 -37
  51. package/src/event.js +2 -2
  52. package/src/index.js +2 -9
  53. package/src/pipe-async.js +3 -3
  54. package/src/pipe.js +3 -3
  55. package/src/unify.js +2 -2
  56. package/src/wrap-event-emitter.js +42 -0
  57. package/test/all-off-test.js +1 -1
  58. package/test/event-emitter-async-test.js +1 -1
  59. package/test/event-emitter-test.js +1 -1
  60. package/test/has-listeners-test.js +1 -1
  61. package/test/pipe-async-test.js +1 -1
  62. package/test/pipe-test.js +1 -1
  63. package/test/unify-async-test.js +1 -1
  64. package/test/unify-test.js +1 -1
  65. package/all-off.js +0 -9
  66. package/consts.js +0 -5
  67. package/default-methods.js +0 -318
  68. package/docs/classes/index-1.EventEmitter.md +0 -25
  69. package/docs/modules/index-1.md +0 -89
  70. package/event-emitter.js +0 -41
  71. package/eventable.js +0 -70
  72. package/events.d.ts +0 -50
  73. package/events.js +0 -18
  74. package/has-listeners.js +0 -16
  75. package/index.d.ts +0 -3
  76. package/index.js +0 -3
  77. package/pipe.js +0 -41
  78. 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 [![Build Status](https://img.shields.io/travis/snowyu/events-ex.js/master.png)](http://travis-ci.org/snowyu/events-ex.js) [![npm](https://img.shields.io/npm/v/events-ex.svg)](https://npmjs.org/package/events-ex) [![downloads](https://img.shields.io/npm/dm/events-ex.svg)](https://npmjs.org/package/events-ex) [![license](https://img.shields.io/npm/l/events-ex.svg)](https://npmjs.org/package/events-ex)
2
2
 
3
3
 
4
- Browser-friendly enhanced events most compatible with standard node.js and coffee-script. It's modified from [event-emitter](https://github.com/medikoo/event-emitter) mainly. It can add event-able to your class directly.
4
+ 浏览器友好的增强的**事件**[能力][Ability]和类。 它主要是从 [event-emitter][event-emitter] 修改而来的。 本库可以为你的任何类添加(注入)**事件**[能力][Ability]。
5
5
 
6
- TODO: 支持异步事件,添加`emitAsync`方法. 没这么简单,因为要支持bubbling,所以必须顺序执行事件.
7
- 干脆,将`bubbling`作为功能选项.如果没有启用,就可以乱发了.
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
- * rewrite the core architecture
16
- * keep most compatible with [node events](nodejs.org/api/events.html) and [event-emitter](https://github.com/medikoo/event-emitter)
17
- + more powerful event-able ability
18
- * hookable event system
19
-
20
- ### Differences
21
-
22
- * Difference with [node events](https://nodejs.org/api/events.html)
23
- + **`broken change`**: The event object bubbling Supports
24
- + the event object as listener's "this" object.
25
- + return the result property of event object to emitter.
26
- + prevent the rest of listener from be excuted if set the stopped property of event object to true
27
- * **`broken change`**: the `emit` return the result of listeners's callback function instead of the successful state.
28
- * **`broken change`**: the `this` object of listeners' callback function is the `Event` Object instead of the emitter object.
29
- * the emitter object is put into the `target` property of the `Event` Object.
30
- * Difference with [event-emitter](https://github.com/medikoo/event-emitter)
31
- + **`broken change`**: The event object bubbling Supports(see above)
32
- + add the defaultMaxListeners class property to keep compatible with node events.
33
- + add the setMaxListeners method to keep compatible with node events.
34
- + add `error`, `newListener` and `removeListener` events to keep compatible with node events.
35
- + add listeners() method to keep compatible with node events.
36
- + add listenerCount() class method to keep compatible with node events.
37
-
38
-
39
- ### Installation
40
-
41
- $ npm install events-ex
42
-
43
- To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
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
- eventable = require('events-ex/eventable')
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
- my = new MyClass
51
+ ### 用法
59
52
 
60
- my.on 'event', ->
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
- my.emit 'event'
55
+ ```js
56
+ import {EventEmitter} from 'events-ex';
66
57
 
58
+ class MyClass extends EventEmitter {}
67
59
  ```
68
60
 
69
- the following is javascript:
61
+ 直接添加/注入事件(event-able)[能力][Ability] 到你的类:
70
62
 
71
63
  ```js
72
- var eventable = require('events-ex/eventable');
64
+ import {eventable} from 'events-ex';
73
65
 
74
- function MyClass() {}
66
+ class MyClass extends MyRoot {}
75
67
 
68
+ // inject the eventable ability to MyClass
76
69
  eventable(MyClass);
70
+ ```
71
+
72
+ 现在,可以在你的类中使用事件了:
77
73
 
78
- var my = new MyClass;
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
- Node JS events Usage:
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
- // js demo bubbling usage:
122
- let EventEmitter = require('events-ex')
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
- var ee = require('event-ex/event-emitter');
123
+ import {wrapEventEmitter as ee} from 'events-ex';
161
124
 
162
- var MyClass = function () { /* .. */ };
125
+ class MyClass { /* .. */ };
163
126
  ee(MyClass.prototype); // All instances of MyClass will expose event-emitter interface
164
127
 
165
- var emitter = new MyClass(), listener;
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` *(object)*: optional options
190
- * `include` *(string[]|string)*: only these emitter methods will be added to the class
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` *(string[]|string)*: theses emitter methods would not be added to the class
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` *(object)*: hooked methods to the class
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` *(object)*: hooked class methods to the class
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
- [events]: https://github.com/nodejs/node/blob/main/lib/events.js
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 [![Build Status](https://img.shields.io/travis/snowyu/events-ex.js/master.png)](http://travis-ci.org/snowyu/events-ex.js) [![npm](https://img.shields.io/npm/v/events-ex.svg)](https://npmjs.org/package/events-ex) [![downloads](https://img.shields.io/npm/dm/events-ex.svg)](https://npmjs.org/package/events-ex) [![license](https://img.shields.io/npm/l/events-ex.svg)](https://npmjs.org/package/events-ex)
2
2
 
3
3
 
4
- Browser-friendly enhanced events most compatible with standard node.js and coffee-script. It's modified from [event-emitter](https://github.com/medikoo/event-emitter) mainly. It can add event-able to your class directly.
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](https://github.com/medikoo/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 object supports bubbling
17
- + the event object as listener's "this" object.
18
- + return the result property of event object to the emitter.
19
- + prevent the rest of listener from be executed if the stopped property of the event object is set to true
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 object supports bubbling(see above)
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 feature to your class directly:
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 uses it:
62
+ Now, you can use events in your class:
60
63
 
61
64
  ```js
62
- var my = new MyClass;
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 [![Build Status](https://img.shields.io/travis/snowyu/events-ex.js/master.png)](http://travis-ci.org/snowyu/events-ex.js) [![npm](https://img.shields.io/npm/v/events-ex.svg)](https://npmjs.org/package/events-ex) [![downloads](https://img.shields.io/npm/dm/events-ex.svg)](https://npmjs.org/package/events-ex) [![license](https://img.shields.io/npm/l/events-ex.svg)](https://npmjs.org/package/events-ex)
4
4
 
5
- Browser-friendly enhanced events most compatible with standard node.js and coffee-script. It's modified from [event-emitter](https://github.com/medikoo/event-emitter) mainly. It can add event-able to your class directly.
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](https://github.com/medikoo/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 object supports bubbling
18
- + the event object as listener's "this" object.
19
- + return the result property of event object to the emitter.
20
- + prevent the rest of listener from be executed if the stopped property of the event object is set to true
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 object supports bubbling(see above)
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 feature to your class directly:
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 uses it:
62
+ Now, you can use events in your class:
60
63
 
61
64
  ```js
62
- var my = new MyClass;
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/b4aaa97/src/event.js#L8)
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/b4aaa97/src/event.js#L38)
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/b4aaa97/src/event.js#L32)
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/b4aaa97/src/event.js#L26)
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/b4aaa97/src/event.js#L45)
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/b4aaa97/src/event.js#L20)
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)