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 CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2021-present Ivan Zakharchanka
1
+ Copyright (c) 2023-present Ivan Zakharchanka
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
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): Unsubscribe;
82
- once(listener: Listener): Unsubscribe;
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
- function handleClick({ button }) {
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 unsubscribe = clickEvent.on(handleClick);
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
- function handleInput({ button, key }) {}
106
-
110
+ const handleInput = ({ button, key }) => {};
107
111
  const inputEvent = Event.merge(clickEvent, keyPressEvent);
108
112
  inputEvent.on(handleInput);
109
113
 
110
- function handleLeftClick() {
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
- unsubscribe();
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) 2021-present Ivan Zakharchanka
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
- while(process: () => MaybePromise<any>): Promise<void>;
30
- after(count: number): Promise<() => void>;
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>): Unsubscribe;
47
- once(listener: Listener<T>): Unsubscribe;
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
- while(process) {
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
- after(count) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- return () => {
32
- if (!count--) {
33
- this();
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.8.105",
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.2.1",
38
- "@typescript-eslint/eslint-plugin": "^5.20.0",
39
- "@typescript-eslint/parser": "^5.20.0",
40
- "eslint": "^8.13.0",
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.5.0",
43
- "eslint-plugin-import": "^2.26.0",
44
- "husky": "^8.0.1",
45
- "jest": "^29.2.2",
46
- "prettier": "^2.6.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.3",
49
- "ts-node": "^10.7.0",
50
- "typescript": "^4.1.5"
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 while(process: () => MaybePromise<any>) {
44
+ async after(process: () => MaybePromise<any>) {
45
45
  await process();
46
46
  this();
47
47
  }
48
- async after(count: number) {
48
+ afterTimes(count: number) {
49
49
  return () => {
50
- if (!count--) {
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>): Unsubscribe {
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>): Unsubscribe {
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
  }