evnty 0.7.0 → 0.7.3

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/build/index.d.ts CHANGED
@@ -41,5 +41,5 @@ export declare class Event<T extends any[]> extends FunctionExt {
41
41
  map<R>(mapper: Mapper<T, R>): Event<any[]>;
42
42
  reduce<R>(reducer: Reducer<T, R>, init: R): Event<any[]>;
43
43
  }
44
- export default function createEvent(): Event<any[]>;
44
+ export default function createEvent<T extends any[]>(): Event<T>;
45
45
  export {};
package/build/index.js CHANGED
@@ -13,7 +13,7 @@ exports.Event = void 0;
13
13
  class FunctionExt extends Function {
14
14
  constructor(func) {
15
15
  super();
16
- Object.setPrototypeOf(func, new.target.prototype);
16
+ return Object.setPrototypeOf(func, new.target.prototype);
17
17
  }
18
18
  }
19
19
  function eventEmitter(listeners, ...args) {
@@ -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.7.0",
3
+ "version": "0.7.3",
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",
package/src/index.ts CHANGED
@@ -27,7 +27,7 @@ export type Listeners<T extends any[]> = Set<Listener<T>>;
27
27
  class FunctionExt extends Function {
28
28
  constructor(func: Function) {
29
29
  super();
30
- Object.setPrototypeOf(func, new.target.prototype);
30
+ return Object.setPrototypeOf(func, new.target.prototype);
31
31
  }
32
32
  }
33
33
 
@@ -137,6 +137,6 @@ export class Event<T extends any[]> extends FunctionExt {
137
137
  }
138
138
  }
139
139
 
140
- export default function createEvent() {
141
- return new Event();
140
+ export default function createEvent<T extends any[]>() {
141
+ return new Event<T>();
142
142
  }
package/.eslintignore DELETED
@@ -1,3 +0,0 @@
1
- build
2
- coverage
3
- node_modules
package/.eslintrc DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "overrides": [
3
- {
4
- "env": {
5
- "es2020": true
6
- },
7
- "files": "**/*.js",
8
- "extends": ["prettier", "eslint-config-airbnb-base"]
9
- },
10
- {
11
- "env": {
12
- "es2020": true
13
- },
14
- "files": "**/*.ts",
15
- "extends": ["prettier", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended"],
16
- "parser": "@typescript-eslint/parser",
17
- "plugins": ["@typescript-eslint"],
18
- "rules": {
19
- "@typescript-eslint/no-unused-vars": 2,
20
- "@typescript-eslint/no-explicit-any": 0,
21
- "@typescript-eslint/ban-types": 0,
22
- "@typescript-eslint/ban-ts-comment": 1
23
- }
24
- }
25
- ]
26
- }
@@ -1,44 +0,0 @@
1
- name: Build Package
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
- strategy:
9
- matrix:
10
- node-version: [14.x]
11
- steps:
12
- - name: Checkout code
13
- uses: actions/checkout@v2
14
-
15
- - name: Use Node.js ${{ matrix.node-version }}
16
- uses: actions/setup-node@v1
17
- with:
18
- node-version: ${{ matrix.node-version }}
19
- registry-url: https://registry.npmjs.org/
20
-
21
- - name: Environment log
22
- id: env
23
- run: |
24
- node --version
25
- yarn --version
26
-
27
- - name: Install dependecies
28
- run: |
29
- yarn
30
-
31
- - name: Run build process
32
- run: |
33
- yarn build
34
-
35
- - name: Run testing
36
- run: |
37
- yarn test
38
- env:
39
- COVERAGE: 1
40
-
41
- - name: Upload test coverage
42
- uses: codecov/codecov-action@v1
43
- with:
44
- token: ${{ secrets.CODECOV_TOKEN }}
@@ -1,72 +0,0 @@
1
- name: Autoupdate
2
-
3
- on:
4
- schedule:
5
- - cron: 0 0 * * *
6
- workflow_dispatch:
7
-
8
- jobs:
9
- build:
10
- runs-on: ubuntu-latest
11
- strategy:
12
- matrix:
13
- node-version: [14.x]
14
- steps:
15
- - name: Checkout 🛎️
16
- uses: actions/checkout@v2
17
-
18
- - name: Use Node.js ${{ matrix.node-version }} 🟢
19
- uses: actions/setup-node@v1
20
- with:
21
- node-version: ${{ matrix.node-version }}
22
- registry-url: https://registry.npmjs.org/
23
-
24
- - name: Setup ENV ⚙️
25
- id: env
26
- run: |
27
- node --version
28
- yarn --version
29
-
30
- - name: Install 🔧
31
- run: |
32
- yarn install --frozen-lockfile
33
-
34
- - name: Upgrade 🌠
35
- id: updates
36
- run: |
37
- PENDING=$(yarn outdated --json|tail -1|jq '.data.body'|jq length)
38
- echo "::set-output name=PENDING::$PENDING"
39
- yarn upgrade
40
- DONE=$(yarn outdated --json|tail -1|jq '.data.body'|jq length)
41
- echo "::set-output name=DONE::$DONE"
42
-
43
- - name: Build 🧱
44
- if: steps.updates.outputs.PENDING != steps.updates.outputs.DONE
45
- run: |
46
- yarn build
47
-
48
- - name: Test 🧪
49
- if: steps.updates.outputs.PENDING != steps.updates.outputs.DONE
50
- run: |
51
- yarn test
52
-
53
- - name: Commit 🔒
54
- if: steps.updates.outputs.PENDING != steps.updates.outputs.DONE
55
- run: |
56
- git config --global user.email "3axap4eHko@github.com"
57
- git config --global user.name "Ivan Zakharchanka"
58
- git add --all
59
- git commit -am "autoupdate"
60
- npm version patch
61
-
62
- - name: Publish 📚
63
- if: steps.updates.outputs.PENDING != steps.updates.outputs.DONE
64
- run: |
65
- echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
66
- npm publish
67
-
68
- - name: Push
69
- if: steps.updates.outputs.PENDING != steps.updates.outputs.DONE
70
- run: |
71
- git push
72
- git push --tags
package/.prettierrc DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "tabWidth": 2,
3
- "useTabs": false,
4
- "semi": true,
5
- "singleQuote": true,
6
- "printWidth": 160
7
- }
package/jest.config.js DELETED
@@ -1,15 +0,0 @@
1
- module.exports = {
2
- verbose: true,
3
- collectCoverage: !!process.env.TRAVIS || !!process.env.COVERAGE,
4
- preset: 'ts-jest',
5
- collectCoverageFrom: [
6
- 'src/**/*.ts',
7
- ],
8
- coveragePathIgnorePatterns: [
9
- '/node_modules/',
10
- '__fixtures__',
11
- '__mocks__',
12
- '__tests__',
13
- ],
14
- coverageDirectory: './coverage',
15
- };
@@ -1,212 +0,0 @@
1
- import createEvent, { Event } from '../index';
2
-
3
- describe('Anonymous Event test suite', function () {
4
- it('Should be instantiable', () => {
5
- expect(() => new Event()).not.toThrow();
6
- });
7
-
8
- it('Should be instantiable', () => {
9
- expect(() => createEvent()).not.toThrow();
10
- });
11
-
12
- it('Should be instantiable', () => {
13
- expect(() => createEvent()).not.toThrow();
14
- });
15
-
16
- it('Should call parent constructor', () => {
17
- const EventOriginal = Object.getPrototypeOf(Event);
18
- const EventMock = jest.fn();
19
-
20
- Object.setPrototypeOf(Event, EventMock);
21
-
22
- expect(() => new Event()).not.toThrow();
23
- expect(EventMock).toHaveBeenCalled();
24
-
25
- Object.setPrototypeOf(Event, EventOriginal);
26
- });
27
-
28
- it('Should be callable', () => {
29
- const event = new Event();
30
- expect(() => event()).not.toThrow();
31
- });
32
-
33
- it('Should check event existence', () => {
34
- const event = new Event();
35
- const listener = jest.fn();
36
- event.on(listener);
37
- expect(event.has(listener)).toEqual(true);
38
- });
39
-
40
- it('Should add event listener', () => {
41
- const event = new Event();
42
- const listener = jest.fn();
43
- event.on(listener);
44
- event('test');
45
- expect(event.size).toEqual(1);
46
- expect(listener).toHaveBeenCalledWith('test');
47
- });
48
-
49
- it('Should remove event listener', () => {
50
- const event = new Event();
51
- const listener = jest.fn();
52
- event.on(listener);
53
- event.off(listener);
54
- event('test');
55
- expect(listener).not.toHaveBeenCalled();
56
- });
57
-
58
- it('Should unsubscribe event', () => {
59
- const event = new Event();
60
- const listener = jest.fn();
61
- const unsubscribe = event.on(listener);
62
- unsubscribe();
63
- event('test');
64
- expect(listener).not.toHaveBeenCalled();
65
- });
66
-
67
- it('Should add one time event listener', () => {
68
- const event = new Event();
69
- const listener = jest.fn();
70
- event.once(listener);
71
- event('test');
72
- event('test');
73
- expect(listener).toHaveBeenCalledTimes(1);
74
- });
75
-
76
- it('Should clear all events', () => {
77
- const event = new Event();
78
- const listener = jest.fn();
79
- event.on(listener);
80
-
81
- event.clear();
82
- expect(event.size).toEqual(0);
83
-
84
- event('test');
85
- expect(listener).not.toHaveBeenCalled();
86
- });
87
-
88
- it('Should return event promise', async () => {
89
- const listener = jest.fn();
90
- const event = new Event();
91
- event.on(listener);
92
- expect(listener).not.toBeCalled();
93
- const promise = event.toPromise();
94
- event('test');
95
- const result = await promise;
96
- expect(result).toEqual(['test']);
97
- expect(listener).toBeCalledWith('test');
98
- });
99
-
100
- it('Should create filtered event', async () => {
101
- const listener = jest.fn();
102
- const filter = jest.fn().mockImplementation(name => name === 'two');
103
-
104
- const event = new Event();
105
- const filteredEvent = event.filter(filter);
106
- expect(event.size).toEqual(1);
107
-
108
- filteredEvent.on(listener);
109
- expect(filteredEvent.size).toEqual(1);
110
-
111
- await event('one', 1);
112
- await event('two', 2);
113
- await event('three', 3);
114
-
115
- expect(filter).toHaveBeenCalledTimes(3);
116
- expect(filter).toHaveBeenNthCalledWith(1, 'one', 1);
117
- expect(filter).toHaveBeenNthCalledWith(2, 'two', 2);
118
- expect(filter).toHaveBeenNthCalledWith(3, 'three', 3);
119
-
120
- expect(listener).toHaveBeenCalledTimes(1);
121
- expect(listener).toHaveBeenCalledWith('two', 2);
122
- });
123
-
124
- it('Should create mapped event', async () => {
125
- const listener = jest.fn();
126
- const mapper = jest.fn().mockImplementation(value => value * 2);
127
-
128
- const event = new Event();
129
- const mappedEvent = event.map(mapper);
130
- expect(event.size).toEqual(1);
131
- await event(1);
132
-
133
- mappedEvent.on(listener);
134
- expect(mappedEvent.size).toEqual(1);
135
-
136
- await event(1);
137
- await event(2);
138
- await event(3);
139
-
140
- expect(mapper).toHaveBeenCalledTimes(3);
141
- expect(mapper).toHaveBeenNthCalledWith(1, 1);
142
- expect(mapper).toHaveBeenNthCalledWith(2, 2);
143
- expect(mapper).toHaveBeenNthCalledWith(3, 3);
144
-
145
- expect(listener).toHaveBeenCalledTimes(3);
146
- expect(listener).toHaveBeenCalledWith(2);
147
- expect(listener).toHaveBeenCalledWith(4);
148
- expect(listener).toHaveBeenCalledWith(6);
149
- });
150
-
151
- it('Should create reduced event', async () => {
152
- const listener = jest.fn();
153
- const reducer = jest.fn().mockImplementation((result, value) => result + value);
154
-
155
- const event = new Event();
156
- const reducedEvent = event.reduce(reducer, 0);
157
- expect(event.size).toEqual(1);
158
- await event(1);
159
-
160
- reducedEvent.on(listener);
161
- expect(reducedEvent.size).toEqual(1);
162
-
163
- await event(1);
164
- await event(2);
165
- await event(3);
166
-
167
- expect(reducer).toHaveBeenCalledTimes(3);
168
- expect(reducer).toHaveBeenNthCalledWith(1, 0, 1);
169
- expect(reducer).toHaveBeenNthCalledWith(2, 0 + 1, 2);
170
- expect(reducer).toHaveBeenNthCalledWith(3, 0 + 1 + 2, 3);
171
-
172
- expect(listener).toHaveBeenCalledTimes(3);
173
- expect(listener).toHaveBeenCalledWith(1);
174
- expect(listener).toHaveBeenCalledWith(3);
175
- expect(listener).toHaveBeenCalledWith(6);
176
- });
177
-
178
- it('Should merge multiple events', () => {
179
- const listener = jest.fn();
180
-
181
- const event1 = new Event();
182
- const event2 = new Event();
183
- const event3 = new Event();
184
- const mergedEvent = Event.merge(event1, event2, event3);
185
- mergedEvent.on(listener);
186
-
187
- event1(1);
188
- event2(2);
189
- event3(3);
190
- mergedEvent(123);
191
-
192
- expect(listener).toHaveBeenCalledTimes(4);
193
- expect(listener).toHaveBeenNthCalledWith(1, 1);
194
- expect(listener).toHaveBeenNthCalledWith(2, 2);
195
- expect(listener).toHaveBeenNthCalledWith(3, 3);
196
- expect(listener).toHaveBeenNthCalledWith(4, 123);
197
- });
198
-
199
- it('Should create interval events', async () => {
200
- const listener = jest.fn();
201
- const event = Event.interval(10);
202
- event.on(listener);
203
- await event.toPromise();
204
- expect(listener).toBeCalledWith(0);
205
- event.dispose();
206
- const result = await Promise.race([
207
- new Promise(resolve => setTimeout(resolve, 100, null)),
208
- event.toPromise(),
209
- ]);
210
- expect(result).toEqual(null);
211
- });
212
- });
package/tsconfig.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2015",
4
- "module": "commonjs",
5
- "noImplicitAny": true,
6
- "removeComments": true,
7
- "preserveConstEnums": true,
8
- "experimentalDecorators": true,
9
- "sourceMap": true,
10
- "declaration": true,
11
- "lib": [
12
- "es2015.core",
13
- "es6",
14
- "dom"
15
- ],
16
- "rootDir": "src",
17
- "outDir": "build"
18
- },
19
- "include": [
20
- "src/*.ts"
21
- ],
22
- "exclude": [
23
- "node_modules",
24
- "src/**/__tests__",
25
- "src/**/__fixtures__",
26
- "src/**/__mocks__"
27
- ]
28
- }