@irrelon/emitter 4.0.1 → 5.0.0
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/.eslintignore +3 -1
- package/.eslintrc.json +8 -2
- package/dist/Emitter.d.ts +205 -0
- package/dist/Emitter.js +295 -657
- package/package.json +54 -52
- package/readme.md +44 -11
- package/src/{Emitter.js → Emitter.ts} +138 -141
- package/tests/Emitter.test.js +26 -6
- package/tsconfig.json +29 -0
package/package.json
CHANGED
|
@@ -1,54 +1,56 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
2
|
+
"author": "Rob Evans - Irrelon Software Limited",
|
|
3
|
+
"name": "@irrelon/emitter",
|
|
4
|
+
"description": "Simple JavaScript event emitter.",
|
|
5
|
+
"version": "5.0.0",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"javascript",
|
|
8
|
+
"browser",
|
|
9
|
+
"node",
|
|
10
|
+
"client-side",
|
|
11
|
+
"server-side",
|
|
12
|
+
"emitter",
|
|
13
|
+
"events",
|
|
14
|
+
"on",
|
|
15
|
+
"off",
|
|
16
|
+
"once",
|
|
17
|
+
"listener"
|
|
18
|
+
],
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@babel/cli": "^7.8.7",
|
|
21
|
+
"@babel/core": "^7.8.7",
|
|
22
|
+
"@babel/plugin-proposal-class-properties": "^7.8.7",
|
|
23
|
+
"@babel/plugin-proposal-object-rest-spread": "^7.8.7",
|
|
24
|
+
"@babel/plugin-transform-runtime": "^7.8.7",
|
|
25
|
+
"@babel/preset-env": "^7.8.7",
|
|
26
|
+
"@babel/preset-react": "^7.8.7",
|
|
27
|
+
"@babel/register": "^7.8.7",
|
|
28
|
+
"@types/node": "^16.11.6",
|
|
29
|
+
"@typescript-eslint/eslint-plugin": "^5.4.0",
|
|
30
|
+
"@typescript-eslint/parser": "^5.4.0",
|
|
31
|
+
"eslint": "^7.32.0",
|
|
32
|
+
"eslint-config-irrelon": "^1.0.2",
|
|
33
|
+
"jest": "^27.3.1",
|
|
34
|
+
"nodemon": "^2.0.3",
|
|
35
|
+
"rimraf": "^2.7.1",
|
|
36
|
+
"ts-node": "^10.4.0",
|
|
37
|
+
"typescript": "^4.4.4"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": "*"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"test": "NODE_ENV=test npm run build && jest ./tests",
|
|
44
|
+
"testMon": "nodemon --watch src --watch tests --exec \"NODE_ENV=test BABEL_DISABLE_CACHE=1 jest ./tests\"",
|
|
45
|
+
"build": "rimraf dist && tsc"
|
|
46
|
+
},
|
|
47
|
+
"types": "./dist/Emitter.d.ts",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git://github.com/irrelon/emitter.git"
|
|
51
|
+
},
|
|
52
|
+
"main": "./dist/Emitter.js",
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/irrelon/emitter/issues"
|
|
55
|
+
}
|
|
54
56
|
}
|
package/readme.md
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
## Usage
|
|
4
4
|
|
|
5
5
|
### Browser
|
|
6
|
-
Include the ./dist/
|
|
6
|
+
Include the ./dist/Emitter.js file in your HTML
|
|
7
7
|
|
|
8
8
|
```html
|
|
9
|
-
<script src="./dist/
|
|
9
|
+
<script src="./dist/Emitter.js"></script>
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
### Node.js
|
|
@@ -19,25 +19,58 @@ npm install @irrelon/emitter
|
|
|
19
19
|
Include in your application:
|
|
20
20
|
|
|
21
21
|
```js
|
|
22
|
-
|
|
22
|
+
import {Emitter, makeEmitter} from "@irrelon/emitter";
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
##
|
|
26
|
-
|
|
25
|
+
## Create a New Standalone Emitter
|
|
26
|
+
```js
|
|
27
|
+
const emitter = new Emitter();
|
|
27
28
|
|
|
29
|
+
emitter.on("foo", () => {
|
|
30
|
+
console.log("foo emitted!");
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
emitter.emit("foo!");
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Add Emitter Functionality to an Object
|
|
28
37
|
```js
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
const obj = {
|
|
39
|
+
someExistingProp: "hello"
|
|
31
40
|
};
|
|
32
|
-
|
|
41
|
+
makeEmitter(obj);
|
|
33
42
|
|
|
34
|
-
|
|
43
|
+
obj.on("someEvent", function (data) {
|
|
44
|
+
// do something when the event is emitted
|
|
45
|
+
if (data.someData === true) {
|
|
46
|
+
console.log(this.someExistingProp); // Will output "hello" because `this` has been applied as `obj` in context
|
|
47
|
+
}
|
|
48
|
+
});
|
|
35
49
|
|
|
50
|
+
obj.emit("someEvent", {someData: true});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Add Emitter Functionality to Existing Class
|
|
36
54
|
```js
|
|
37
|
-
|
|
55
|
+
class MyClass {
|
|
56
|
+
constructor () {
|
|
57
|
+
console.log("I created a class instance!");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
makeEmitter(MyClass.prototype); // Notice we use prototype here!
|
|
62
|
+
|
|
63
|
+
const myNewClassInstance = new MyClass();
|
|
64
|
+
|
|
65
|
+
myNewClassInstance.on("someEvent", () => {
|
|
66
|
+
// do something when the event is emitted
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
myNewClassInstance.emit("someEvent", {someData: true});
|
|
38
70
|
```
|
|
39
71
|
|
|
40
|
-
|
|
72
|
+
## The Emitter Methods
|
|
73
|
+
Your object or class is given these new methods/functions:
|
|
41
74
|
|
|
42
75
|
* on
|
|
43
76
|
* off
|