evnty 0.8.105 → 0.9.1
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/LICENSE +1 -1
- package/README.md +26 -17
- package/build/index.d.ts +5 -4
- package/build/index.js +12 -10
- package/build/index.js.map +1 -1
- package/package.json +13 -13
- package/src/index.ts +9 -5
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -66,6 +66,11 @@ type Filter = (...args: any[]) => boolean;
|
|
|
66
66
|
type Mapper = <T = any>(...args: any[]) => T;
|
|
67
67
|
type Reducer = <T = any>(value: any, ...args: any[]) => T;
|
|
68
68
|
|
|
69
|
+
class Dismiss {
|
|
70
|
+
async after(process: () => MaybePromise<any>): Promise<void>;
|
|
71
|
+
afterTimes(count: number): () => void;
|
|
72
|
+
}
|
|
73
|
+
|
|
69
74
|
class Event {
|
|
70
75
|
// Merges multiple events
|
|
71
76
|
static merge(...events: Event[]): Event;
|
|
@@ -78,8 +83,8 @@ class Event {
|
|
|
78
83
|
lacks(listener: Listener): boolean;
|
|
79
84
|
has(listener: Listener): boolean;
|
|
80
85
|
off(listener: Listener): void;
|
|
81
|
-
on(listener: Listener):
|
|
82
|
-
once(listener: Listener):
|
|
86
|
+
on(listener: Listener): Dismiss;
|
|
87
|
+
once(listener: Listener): Dismiss;
|
|
83
88
|
clear(): void;
|
|
84
89
|
toPromise(): Promise<any[]>;
|
|
85
90
|
filter(filter: Filter): Event;
|
|
@@ -92,42 +97,46 @@ class Event {
|
|
|
92
97
|
## Usage
|
|
93
98
|
|
|
94
99
|
```js
|
|
95
|
-
import event from 'evnty';
|
|
100
|
+
import event, { once } from 'evnty';
|
|
96
101
|
|
|
97
|
-
|
|
98
|
-
console.log('Clicked button is', button);
|
|
99
|
-
}
|
|
102
|
+
const handleClick = ({ button }) => console.log('Clicked button is', button);
|
|
100
103
|
const clickEvent = event();
|
|
101
|
-
const
|
|
104
|
+
const unsubscribeClick = clickEvent.on(handleClick);
|
|
102
105
|
|
|
103
106
|
const keyPressEvent = event();
|
|
107
|
+
const handleKeyPress = ({ key }) => console.log('Key pressed', key);
|
|
108
|
+
const unsubscribeKeyPress = keyPressEvent.on(handleKeyPress);
|
|
104
109
|
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
const handleInput = ({ button, key }) => {};
|
|
107
111
|
const inputEvent = Event.merge(clickEvent, keyPressEvent);
|
|
108
112
|
inputEvent.on(handleInput);
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
console.log('Left button is clicked');
|
|
112
|
-
}
|
|
114
|
+
const handleLeftClick = () => console.log('Left button is clicked');
|
|
113
115
|
const leftClickEvent = clickEvent.filter(({ button }) => button === 'left');
|
|
114
116
|
leftClickEvent.on(handleLeftClick);
|
|
115
117
|
|
|
118
|
+
setTimeout(() => keyPressEvent, 100, 'Enter');
|
|
119
|
+
await once(keyPressEvent);
|
|
120
|
+
|
|
121
|
+
keyPressEvent({ key: 'W' });
|
|
122
|
+
keyPressEvent({ key: 'A' });
|
|
123
|
+
keyPressEvent({ key: 'S' });
|
|
124
|
+
keyPressEvent({ key: 'D' });
|
|
125
|
+
|
|
116
126
|
clickEvent({ button: 'right' });
|
|
117
127
|
clickEvent({ button: 'left' });
|
|
118
128
|
clickEvent({ button: 'middle' });
|
|
119
|
-
keyPressEvent({ key: 'A' });
|
|
120
|
-
keyPressEvent({ key: 'B' });
|
|
121
|
-
keyPressEvent({ key: 'C' });
|
|
122
129
|
|
|
130
|
+
unsubscribeClick();
|
|
131
|
+
unsubscribeKeyPress.after(() => once(keyPressEvent));
|
|
123
132
|
leftClickEvent.off(handleLeftClick);
|
|
124
|
-
|
|
133
|
+
keyPressEvent({ key: 'Esc' });
|
|
125
134
|
```
|
|
126
135
|
|
|
127
136
|
## License
|
|
128
137
|
|
|
129
138
|
License [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
130
|
-
Copyright (c)
|
|
139
|
+
Copyright (c) 2023-present Ivan Zakharchanka
|
|
131
140
|
|
|
132
141
|
[npm-url]: https://www.npmjs.com/package/evnty
|
|
133
142
|
[downloads-image]: https://img.shields.io/npm/dw/evnty.svg?maxAge=43200
|
package/build/index.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export interface Dismiss {
|
|
|
26
26
|
}
|
|
27
27
|
export declare class Dismiss extends FunctionExt {
|
|
28
28
|
constructor(dismiss: Unsubscribe);
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
after(process: () => MaybePromise<any>): Promise<void>;
|
|
30
|
+
afterTimes(count: number): () => void;
|
|
31
31
|
}
|
|
32
32
|
export interface Event<T extends any[]> {
|
|
33
33
|
(...args: T): Promise<void> | void;
|
|
@@ -43,13 +43,14 @@ export declare class Event<T extends any[]> extends FunctionExt {
|
|
|
43
43
|
lacks(listener: Listener<T>): boolean;
|
|
44
44
|
has(listener: Listener<T>): boolean;
|
|
45
45
|
off(listener: Listener<T>): void;
|
|
46
|
-
on(listener: Listener<T>):
|
|
47
|
-
once(listener: Listener<T>):
|
|
46
|
+
on(listener: Listener<T>): Dismiss;
|
|
47
|
+
once(listener: Listener<T>): Dismiss;
|
|
48
48
|
clear(): void;
|
|
49
49
|
toPromise(): Promise<T>;
|
|
50
50
|
filter(filter: Filter<T>): Event<any[]>;
|
|
51
51
|
map<R>(mapper: Mapper<T, R>): Event<any[]>;
|
|
52
52
|
reduce<R>(reducer: Reducer<T, R>, init: R): Event<any[]>;
|
|
53
53
|
}
|
|
54
|
+
export declare const once: <T extends any[]>(event: Event<T>) => Promise<T>;
|
|
54
55
|
export default function createEvent<T extends any[]>(): Event<T>;
|
|
55
56
|
export {};
|
package/build/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Event = exports.Dismiss = void 0;
|
|
12
|
+
exports.once = exports.Event = exports.Dismiss = void 0;
|
|
13
13
|
class FunctionExt extends Function {
|
|
14
14
|
constructor(func) {
|
|
15
15
|
super();
|
|
@@ -20,20 +20,18 @@ class Dismiss extends FunctionExt {
|
|
|
20
20
|
constructor(dismiss) {
|
|
21
21
|
super(dismiss);
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
after(process) {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
25
|
yield process();
|
|
26
26
|
this();
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
});
|
|
29
|
+
afterTimes(count) {
|
|
30
|
+
return () => {
|
|
31
|
+
if (!--count) {
|
|
32
|
+
this();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
37
|
exports.Dismiss = Dismiss;
|
|
@@ -129,6 +127,10 @@ class Event extends FunctionExt {
|
|
|
129
127
|
}
|
|
130
128
|
}
|
|
131
129
|
exports.Event = Event;
|
|
130
|
+
const once = (event) => {
|
|
131
|
+
return new Promise((resolve) => event.once((...args) => resolve(args)));
|
|
132
|
+
};
|
|
133
|
+
exports.once = once;
|
|
132
134
|
function createEvent() {
|
|
133
135
|
return new Event();
|
|
134
136
|
}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,MAAM,WAAY,SAAQ,QAAQ;IAChC,YAAY,IAAc;QACxB,KAAK,EAAE,CAAC;QACR,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAMD,MAAa,OAAQ,SAAQ,WAAW;IACtC,YAAY,OAAoB;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IACK,KAAK,CAAC,OAAgC;;YAC1C,MAAM,OAAO,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC;QACT,CAAC;KAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evnty",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "0-Deps, simple, fast, for browser and node js anonymous event library",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -34,19 +34,19 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://github.com/3axap4eHko/evnty#readme",
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/jest": "^29.
|
|
38
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
39
|
-
"@typescript-eslint/parser": "^5.
|
|
40
|
-
"eslint": "^8.
|
|
37
|
+
"@types/jest": "^29.5.0",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^5.55.0",
|
|
39
|
+
"@typescript-eslint/parser": "^5.55.0",
|
|
40
|
+
"eslint": "^8.36.0",
|
|
41
41
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
42
|
-
"eslint-config-prettier": "^8.
|
|
43
|
-
"eslint-plugin-import": "^2.
|
|
44
|
-
"husky": "^8.0.
|
|
45
|
-
"jest": "^29.
|
|
46
|
-
"prettier": "^2.
|
|
42
|
+
"eslint-config-prettier": "^8.7.0",
|
|
43
|
+
"eslint-plugin-import": "^2.27.5",
|
|
44
|
+
"husky": "^8.0.3",
|
|
45
|
+
"jest": "^29.5.0",
|
|
46
|
+
"prettier": "^2.8.4",
|
|
47
47
|
"pretty-quick": "^3.1.3",
|
|
48
|
-
"ts-jest": "^29.0.
|
|
49
|
-
"ts-node": "^10.
|
|
50
|
-
"typescript": "^
|
|
48
|
+
"ts-jest": "^29.0.5",
|
|
49
|
+
"ts-node": "^10.9.1",
|
|
50
|
+
"typescript": "^5.0.2"
|
|
51
51
|
}
|
|
52
52
|
}
|
package/src/index.ts
CHANGED
|
@@ -41,13 +41,13 @@ export class Dismiss extends FunctionExt {
|
|
|
41
41
|
constructor(dismiss: Unsubscribe) {
|
|
42
42
|
super(dismiss);
|
|
43
43
|
}
|
|
44
|
-
async
|
|
44
|
+
async after(process: () => MaybePromise<any>) {
|
|
45
45
|
await process();
|
|
46
46
|
this();
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
afterTimes(count: number) {
|
|
49
49
|
return () => {
|
|
50
|
-
if (
|
|
50
|
+
if (!--count) {
|
|
51
51
|
this();
|
|
52
52
|
}
|
|
53
53
|
};
|
|
@@ -112,14 +112,14 @@ export class Event<T extends any[]> extends FunctionExt {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
on(listener: Listener<T>):
|
|
115
|
+
on(listener: Listener<T>): Dismiss {
|
|
116
116
|
if (this.lacks(listener)) {
|
|
117
117
|
this.listeners.push(listener);
|
|
118
118
|
}
|
|
119
119
|
return new Dismiss(() => this.off(listener));
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
once(listener: Listener<T>):
|
|
122
|
+
once(listener: Listener<T>): Dismiss {
|
|
123
123
|
const oneTimeListener = (...args: T) => {
|
|
124
124
|
this.off(oneTimeListener);
|
|
125
125
|
listener(...args);
|
|
@@ -169,6 +169,10 @@ export class Event<T extends any[]> extends FunctionExt {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
export const once = <T extends any[]>(event: Event<T>): Promise<T> => {
|
|
173
|
+
return new Promise((resolve) => event.once((...args) => resolve(args)));
|
|
174
|
+
};
|
|
175
|
+
|
|
172
176
|
export default function createEvent<T extends any[]>() {
|
|
173
177
|
return new Event<T>();
|
|
174
178
|
}
|