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 +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -3
- package/.eslintignore +0 -3
- package/.eslintrc +0 -26
- package/.github/workflows/build.yml +0 -44
- package/.github/workflows/upgrade.yml +0 -72
- package/.prettierrc +0 -7
- package/jest.config.js +0 -15
- package/src/__tests__/index.ts +0 -212
- package/tsconfig.json +0 -28
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<
|
|
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) {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AA0BA,MAAM,WAAY,SAAQ,QAAQ;IAChC,YAAY,IAAc;QACxB,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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
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
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
|
-
};
|
package/src/__tests__/index.ts
DELETED
|
@@ -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
|
-
}
|