@my-devkit/firebase 1.0.192 → 1.0.194
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/.eslintrc.js +2 -4
- package/dist/app-factory.js +3 -3
- package/dist/app-factory.js.map +1 -1
- package/dist/bus.js +4 -1
- package/dist/bus.js.map +1 -1
- package/dist/context.js +18 -18
- package/dist/context.js.map +1 -1
- package/dist/decorators/controller/body.js.map +1 -1
- package/dist/decorators/controller/body.spec.js +1 -1
- package/dist/decorators/controller/body.spec.js.map +1 -1
- package/dist/decorators/controller/controller.spec.js.map +1 -1
- package/dist/decorators/controller/get.js +4 -1
- package/dist/decorators/controller/get.js.map +1 -1
- package/dist/decorators/controller/get.spec.js.map +1 -1
- package/dist/decorators/controller/param.js.map +1 -1
- package/dist/decorators/controller/param.spec.js +1 -1
- package/dist/decorators/controller/param.spec.js.map +1 -1
- package/dist/decorators/controller/post.js +4 -1
- package/dist/decorators/controller/post.js.map +1 -1
- package/dist/decorators/controller/post.spec.js.map +1 -1
- package/dist/decorators/controller/query.js.map +1 -1
- package/dist/decorators/controller/query.spec.js +1 -1
- package/dist/decorators/controller/query.spec.js.map +1 -1
- package/dist/decorators/handler/command-handler.js.map +1 -1
- package/dist/decorators/handler/command-handler.spec.js.map +1 -1
- package/dist/decorators/handler/event-handler.js.map +1 -1
- package/dist/decorators/handler/event-handler.spec.js.map +1 -1
- package/dist/firestore-client.js +47 -32
- package/dist/firestore-client.js.map +1 -1
- package/dist/handler-helper.js.map +1 -1
- package/dist/interfaces/type.d.ts +1 -1
- package/dist/reflect.js +0 -1
- package/dist/reflect.js.map +1 -1
- package/dist/sanity-check/controller.js.map +1 -1
- package/dist/sanity-check/module.js +1 -3
- package/dist/sanity-check/module.js.map +1 -1
- package/dist/server/middlewares/authentication-middleware.js +3 -1
- package/dist/server/middlewares/authentication-middleware.js.map +1 -1
- package/dist/server/middlewares/create-context-middleware.js.map +1 -1
- package/dist/server/middlewares/error-middleware.js.map +1 -1
- package/dist/server/middlewares/headers-middleware.js.map +1 -1
- package/dist/server/server.js.map +1 -1
- package/dist/zip-helper.js +1 -1
- package/dist/zip-helper.js.map +1 -1
- package/package.json +5 -5
- package/src/app-factory.ts +114 -59
- package/src/bus.ts +22 -5
- package/src/context.ts +2 -2
- package/src/decorators/controller/body.spec.ts +11 -5
- package/src/decorators/controller/body.ts +10 -4
- package/src/decorators/controller/controller.spec.ts +1 -3
- package/src/decorators/controller/get.spec.ts +0 -1
- package/src/decorators/controller/get.ts +5 -2
- package/src/decorators/controller/param.spec.ts +15 -5
- package/src/decorators/controller/param.ts +8 -3
- package/src/decorators/controller/post.spec.ts +0 -2
- package/src/decorators/controller/post.ts +5 -2
- package/src/decorators/controller/query.spec.ts +11 -4
- package/src/decorators/controller/query.ts +8 -3
- package/src/decorators/handler/command-handler.spec.ts +8 -13
- package/src/decorators/handler/command-handler.ts +10 -4
- package/src/decorators/handler/event-handler.spec.ts +8 -13
- package/src/decorators/handler/event-handler.ts +10 -4
- package/src/firestore-client.ts +131 -56
- package/src/handler-helper.ts +18 -5
- package/src/interfaces/app-config.ts +0 -1
- package/src/interfaces/from-array.ts +2 -1
- package/src/interfaces/newable.ts +1 -1
- package/src/interfaces/type.ts +2 -2
- package/src/reflect.ts +19 -10
- package/src/sanity-check/controller.ts +0 -1
- package/src/sanity-check/module.ts +2 -6
- package/src/server/middlewares/authentication-middleware.ts +14 -5
- package/src/server/middlewares/create-context-middleware.ts +5 -1
- package/src/server/middlewares/error-middleware.ts +5 -1
- package/src/server/middlewares/headers-middleware.ts +5 -1
- package/src/server/server.ts +32 -11
- package/src/zip-helper.ts +1 -1
- package/tsconfig.json +1 -4
|
@@ -7,11 +7,17 @@ export function Body(): ParameterDecorator {
|
|
|
7
7
|
return (target, propertyKey, parameterIndex) => {
|
|
8
8
|
const methodArguments = reflect(target, propertyKey).getParameters();
|
|
9
9
|
if (!methodArguments.hasOwnProperty(parameterIndex)) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error(
|
|
11
|
+
`Body: can't find argument ${parameterIndex} on ${target.constructor.name}.${propertyKey.toString()}`
|
|
12
|
+
);
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
const injector: RequestArgumentInjector = (req: Server.Request) =>
|
|
15
|
+
const injector: RequestArgumentInjector = (req: Server.Request) =>
|
|
16
|
+
deserialize(req.body, methodArguments[parameterIndex]);
|
|
14
17
|
|
|
15
|
-
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
16
|
-
|
|
18
|
+
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
19
|
+
injector,
|
|
20
|
+
parameterIndex
|
|
21
|
+
);
|
|
22
|
+
};
|
|
17
23
|
}
|
|
@@ -4,10 +4,8 @@ import { reflect } from '../../reflect';
|
|
|
4
4
|
import { Controller } from './controller';
|
|
5
5
|
|
|
6
6
|
describe('Given a Controller decorator', () => {
|
|
7
|
-
|
|
8
7
|
@Controller('test')
|
|
9
|
-
class TestClass {
|
|
10
|
-
}
|
|
8
|
+
class TestClass {}
|
|
11
9
|
|
|
12
10
|
describe('When decorator is called', () => {
|
|
13
11
|
it('Then we should retrieve information via reflect', async () => {
|
|
@@ -3,6 +3,9 @@ import { RequestMethod } from '../../request-method.enum';
|
|
|
3
3
|
|
|
4
4
|
export function Get(path: string): MethodDecorator {
|
|
5
5
|
return (target, propertyKey) => {
|
|
6
|
-
reflect(target.constructor, propertyKey).registerControllerRoute({
|
|
7
|
-
|
|
6
|
+
reflect(target.constructor, propertyKey).registerControllerRoute({
|
|
7
|
+
path,
|
|
8
|
+
requestMethod: RequestMethod.GET
|
|
9
|
+
});
|
|
10
|
+
};
|
|
8
11
|
}
|
|
@@ -6,7 +6,6 @@ import { Get } from './get';
|
|
|
6
6
|
import { Param } from './param';
|
|
7
7
|
|
|
8
8
|
describe('Given a Param decorator', () => {
|
|
9
|
-
|
|
10
9
|
enum Gender {
|
|
11
10
|
Male = 0,
|
|
12
11
|
Female = 'Female'
|
|
@@ -20,7 +19,10 @@ describe('Given a Param decorator', () => {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
@Get(':gender/:minDate')
|
|
23
|
-
public getByGenderOlderThan(
|
|
22
|
+
public getByGenderOlderThan(
|
|
23
|
+
@Param('minDate') minDate: Date,
|
|
24
|
+
@Param('gender') gender: Gender
|
|
25
|
+
): string {
|
|
24
26
|
return `getByGenderOlderThan: ${gender} ${minDate.toISOString()}`;
|
|
25
27
|
}
|
|
26
28
|
}
|
|
@@ -31,16 +33,24 @@ describe('Given a Param decorator', () => {
|
|
|
31
33
|
expect(config.routes.length).equal(2, 'Wrong route count detected');
|
|
32
34
|
|
|
33
35
|
const request1 = <any>{ params: { id: 'guid 1' } };
|
|
34
|
-
expect(config.routes[0].argumentInjectors.length).equal(
|
|
36
|
+
expect(config.routes[0].argumentInjectors.length).equal(
|
|
37
|
+
1,
|
|
38
|
+
'Wrong argumentInjectors length for getById'
|
|
39
|
+
);
|
|
35
40
|
expect(config.routes[0].argumentInjectors[0](request1)).to.be.a('string');
|
|
36
41
|
expect(config.routes[0].argumentInjectors[0](request1)).equals('guid 1');
|
|
37
42
|
|
|
38
43
|
const request2 = <any>{ params: { gender: 0, minDate: '2021-02-15T14:23:00.318Z' } };
|
|
39
44
|
|
|
40
|
-
expect(config.routes[1].argumentInjectors.length).equal(
|
|
45
|
+
expect(config.routes[1].argumentInjectors.length).equal(
|
|
46
|
+
2,
|
|
47
|
+
'Wrong argumentInjectors length for getByGenderOlderThan'
|
|
48
|
+
);
|
|
41
49
|
|
|
42
50
|
expect(config.routes[1].argumentInjectors[0](request2)).to.be.a('Date');
|
|
43
|
-
expect(config.routes[1].argumentInjectors[0](request2).toISOString()).equals(
|
|
51
|
+
expect(config.routes[1].argumentInjectors[0](request2).toISOString()).equals(
|
|
52
|
+
new Date('2021-02-15T14:23:00.318Z').toISOString()
|
|
53
|
+
);
|
|
44
54
|
|
|
45
55
|
expect(config.routes[1].argumentInjectors[1](request2)).equals(Gender.Male);
|
|
46
56
|
|
|
@@ -7,7 +7,9 @@ export function Param(key: string): ParameterDecorator {
|
|
|
7
7
|
return (target, propertyKey, parameterIndex) => {
|
|
8
8
|
const methodArguments = reflect(target, propertyKey).getParameters();
|
|
9
9
|
if (!methodArguments.hasOwnProperty(parameterIndex)) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error(
|
|
11
|
+
`Param: can't find argument ${parameterIndex} on ${target.constructor.name}.${propertyKey.toString()}`
|
|
12
|
+
);
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
const injector: RequestArgumentInjector = (req: Server.Request) => {
|
|
@@ -16,6 +18,9 @@ export function Param(key: string): ParameterDecorator {
|
|
|
16
18
|
}
|
|
17
19
|
};
|
|
18
20
|
|
|
19
|
-
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
20
|
-
|
|
21
|
+
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
22
|
+
injector,
|
|
23
|
+
parameterIndex
|
|
24
|
+
);
|
|
25
|
+
};
|
|
21
26
|
}
|
|
@@ -8,7 +8,6 @@ import { Controller } from './controller';
|
|
|
8
8
|
import { Post } from './post';
|
|
9
9
|
|
|
10
10
|
describe('Given a Post decorator', () => {
|
|
11
|
-
|
|
12
11
|
class Command {
|
|
13
12
|
@autoserializeAs(String)
|
|
14
13
|
public testString: string = null;
|
|
@@ -17,7 +16,6 @@ describe('Given a Post decorator', () => {
|
|
|
17
16
|
public testDate: Date = null;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
|
-
|
|
21
19
|
@Controller('test')
|
|
22
20
|
class TestClass {
|
|
23
21
|
public test = guid();
|
|
@@ -3,6 +3,9 @@ import { RequestMethod } from '../../request-method.enum';
|
|
|
3
3
|
|
|
4
4
|
export function Post(path: string): MethodDecorator {
|
|
5
5
|
return (target, propertyKey) => {
|
|
6
|
-
reflect(target.constructor, propertyKey).registerControllerRoute({
|
|
7
|
-
|
|
6
|
+
reflect(target.constructor, propertyKey).registerControllerRoute({
|
|
7
|
+
path,
|
|
8
|
+
requestMethod: RequestMethod.POST
|
|
9
|
+
});
|
|
10
|
+
};
|
|
8
11
|
}
|
|
@@ -6,7 +6,6 @@ import { Get } from './get';
|
|
|
6
6
|
import { Query } from './query';
|
|
7
7
|
|
|
8
8
|
describe('Given a Query decorator', () => {
|
|
9
|
-
|
|
10
9
|
enum Gender {
|
|
11
10
|
Male = 0,
|
|
12
11
|
Female = 'Female'
|
|
@@ -31,16 +30,24 @@ describe('Given a Query decorator', () => {
|
|
|
31
30
|
expect(config.routes.length).equal(2, 'Wrong route count detected');
|
|
32
31
|
|
|
33
32
|
const request1 = <any>{ query: { id: 'guid 1' } };
|
|
34
|
-
expect(config.routes[0].argumentInjectors.length).equal(
|
|
33
|
+
expect(config.routes[0].argumentInjectors.length).equal(
|
|
34
|
+
1,
|
|
35
|
+
'Wrong argumentInjectors length for getById'
|
|
36
|
+
);
|
|
35
37
|
expect(config.routes[0].argumentInjectors[0](request1)).to.be.a('string');
|
|
36
38
|
expect(config.routes[0].argumentInjectors[0](request1)).equals('guid 1');
|
|
37
39
|
|
|
38
40
|
const request2 = <any>{ query: { gender: 0, minDate: '2021-02-15T14:23:00.318Z' } };
|
|
39
41
|
|
|
40
|
-
expect(config.routes[1].argumentInjectors.length).equal(
|
|
42
|
+
expect(config.routes[1].argumentInjectors.length).equal(
|
|
43
|
+
2,
|
|
44
|
+
'Wrong argumentInjectors length for getByGenderOlderThan'
|
|
45
|
+
);
|
|
41
46
|
|
|
42
47
|
expect(config.routes[1].argumentInjectors[0](request2)).to.be.a('Date');
|
|
43
|
-
expect(config.routes[1].argumentInjectors[0](request2).toISOString()).equals(
|
|
48
|
+
expect(config.routes[1].argumentInjectors[0](request2).toISOString()).equals(
|
|
49
|
+
new Date('2021-02-15T14:23:00.318Z').toISOString()
|
|
50
|
+
);
|
|
44
51
|
|
|
45
52
|
expect(config.routes[1].argumentInjectors[1](request2)).equals(Gender.Male);
|
|
46
53
|
|
|
@@ -7,7 +7,9 @@ export function Query(key: string): ParameterDecorator {
|
|
|
7
7
|
return (target, propertyKey, parameterIndex) => {
|
|
8
8
|
const methodArguments = reflect(target, propertyKey).getParameters();
|
|
9
9
|
if (!methodArguments.hasOwnProperty(parameterIndex)) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error(
|
|
11
|
+
`Query: can't find argument ${parameterIndex} on ${target.constructor.name}.${propertyKey.toString()}`
|
|
12
|
+
);
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
const injector: RequestArgumentInjector = (req: Server.Request) => {
|
|
@@ -16,6 +18,9 @@ export function Query(key: string): ParameterDecorator {
|
|
|
16
18
|
}
|
|
17
19
|
};
|
|
18
20
|
|
|
19
|
-
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
20
|
-
|
|
21
|
+
reflect(target, propertyKey).registerControllerRouteArgumentInjector(
|
|
22
|
+
injector,
|
|
23
|
+
parameterIndex
|
|
24
|
+
);
|
|
25
|
+
};
|
|
21
26
|
}
|
|
@@ -5,12 +5,9 @@ import { reflect } from '../../reflect';
|
|
|
5
5
|
import { CommandHandler } from './command-handler';
|
|
6
6
|
|
|
7
7
|
describe('Given a CommandHandler decorator', () => {
|
|
8
|
-
|
|
9
8
|
describe('When decorator is called', () => {
|
|
10
|
-
|
|
11
9
|
describe('And decorated method has no parameter', () => {
|
|
12
10
|
it('Then we should retrieve information via reflect', async () => {
|
|
13
|
-
|
|
14
11
|
try {
|
|
15
12
|
class TestClass {
|
|
16
13
|
@CommandHandler()
|
|
@@ -28,7 +25,6 @@ describe('Given a CommandHandler decorator', () => {
|
|
|
28
25
|
|
|
29
26
|
describe('And decorated method has more than 1 parameter', () => {
|
|
30
27
|
it('Then we should retrieve information via reflect', async () => {
|
|
31
|
-
|
|
32
28
|
try {
|
|
33
29
|
class TestClass {
|
|
34
30
|
@CommandHandler()
|
|
@@ -46,7 +42,6 @@ describe('Given a CommandHandler decorator', () => {
|
|
|
46
42
|
|
|
47
43
|
describe('And decorated method parameter is not a command', () => {
|
|
48
44
|
it('Then we should retrieve information via reflect', async () => {
|
|
49
|
-
|
|
50
45
|
try {
|
|
51
46
|
class FakeCommand {
|
|
52
47
|
test: string;
|
|
@@ -61,18 +56,17 @@ describe('Given a CommandHandler decorator', () => {
|
|
|
61
56
|
|
|
62
57
|
reflect(TestClass).getHandlerConfiguration();
|
|
63
58
|
} catch (error) {
|
|
64
|
-
expect(error.message).equal(
|
|
59
|
+
expect(error.message).equal(
|
|
60
|
+
'TestClass.create should have a command as argument!'
|
|
61
|
+
);
|
|
65
62
|
}
|
|
66
63
|
});
|
|
67
64
|
});
|
|
68
65
|
|
|
69
66
|
describe('And handler is correctly implemented', () => {
|
|
67
|
+
class CreateCommand extends Command {}
|
|
70
68
|
|
|
71
|
-
class
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
class UpdateCommand extends Command {
|
|
75
|
-
}
|
|
69
|
+
class UpdateCommand extends Command {}
|
|
76
70
|
|
|
77
71
|
class TestClass {
|
|
78
72
|
@CommandHandler()
|
|
@@ -86,7 +80,9 @@ describe('Given a CommandHandler decorator', () => {
|
|
|
86
80
|
}
|
|
87
81
|
}
|
|
88
82
|
it('Then we should retrieve information via reflect', async () => {
|
|
89
|
-
const commandHandlers = Array.from(
|
|
83
|
+
const commandHandlers = Array.from(
|
|
84
|
+
reflect(TestClass).getHandlerConfiguration().commandHandlers.values()
|
|
85
|
+
);
|
|
90
86
|
|
|
91
87
|
expect(commandHandlers.length).equal(2, 'Wrong route count detected');
|
|
92
88
|
|
|
@@ -95,7 +91,6 @@ describe('Given a CommandHandler decorator', () => {
|
|
|
95
91
|
|
|
96
92
|
expect(commandHandlers[1].methodName).equal('update');
|
|
97
93
|
expect(commandHandlers[1].command.constructor.name).equal('UpdateCommand');
|
|
98
|
-
|
|
99
94
|
});
|
|
100
95
|
});
|
|
101
96
|
});
|
|
@@ -7,17 +7,23 @@ export function CommandHandler(): MethodDecorator {
|
|
|
7
7
|
const paramTypes = reflect(target, propertyKey).getParameters();
|
|
8
8
|
|
|
9
9
|
if (paramTypes.length === 0) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error(
|
|
11
|
+
`${target.constructor.name}.${propertyKey.toString()} should have one argument!`
|
|
12
|
+
);
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
if (paramTypes.length > 1) {
|
|
14
|
-
throw new Error(
|
|
16
|
+
throw new Error(
|
|
17
|
+
`${target.constructor.name}.${propertyKey.toString()} should have only one argument!`
|
|
18
|
+
);
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
if (!(paramTypes[0].prototype instanceof Command)) {
|
|
18
|
-
throw new Error(
|
|
22
|
+
throw new Error(
|
|
23
|
+
`${target.constructor.name}.${propertyKey.toString()} should have a command as argument!`
|
|
24
|
+
);
|
|
19
25
|
}
|
|
20
26
|
|
|
21
27
|
reflect(target, propertyKey).registerCommandHandler(<any>paramTypes[0].prototype);
|
|
22
|
-
}
|
|
28
|
+
};
|
|
23
29
|
}
|
|
@@ -6,12 +6,9 @@ import { reflect } from '../../reflect';
|
|
|
6
6
|
import { EventHandler } from './event-handler';
|
|
7
7
|
|
|
8
8
|
describe('Given a EventHandler decorator', () => {
|
|
9
|
-
|
|
10
9
|
describe('When decorator is called', () => {
|
|
11
|
-
|
|
12
10
|
describe('And decorated method has no parameter', () => {
|
|
13
11
|
it('Then we should retrieve information via reflect', async () => {
|
|
14
|
-
|
|
15
12
|
try {
|
|
16
13
|
class TestClass {
|
|
17
14
|
@EventHandler(ExecutionMode.Asynchronous)
|
|
@@ -29,7 +26,6 @@ describe('Given a EventHandler decorator', () => {
|
|
|
29
26
|
|
|
30
27
|
describe('And decorated method has more than 1 parameter', () => {
|
|
31
28
|
it('Then we should retrieve information via reflect', async () => {
|
|
32
|
-
|
|
33
29
|
try {
|
|
34
30
|
class TestClass {
|
|
35
31
|
@EventHandler(ExecutionMode.Asynchronous)
|
|
@@ -47,7 +43,6 @@ describe('Given a EventHandler decorator', () => {
|
|
|
47
43
|
|
|
48
44
|
describe('And decorated method parameter is not a command', () => {
|
|
49
45
|
it('Then we should retrieve information via reflect', async () => {
|
|
50
|
-
|
|
51
46
|
try {
|
|
52
47
|
class FakeEvent {
|
|
53
48
|
test: string;
|
|
@@ -62,18 +57,17 @@ describe('Given a EventHandler decorator', () => {
|
|
|
62
57
|
|
|
63
58
|
reflect(TestClass).getHandlerConfiguration();
|
|
64
59
|
} catch (error) {
|
|
65
|
-
expect(error.message).equal(
|
|
60
|
+
expect(error.message).equal(
|
|
61
|
+
'TestClass.created should have an event as argument!'
|
|
62
|
+
);
|
|
66
63
|
}
|
|
67
64
|
});
|
|
68
65
|
});
|
|
69
66
|
|
|
70
67
|
describe('And handler is correctly implemented', () => {
|
|
68
|
+
class CreatedEvent extends Event {}
|
|
71
69
|
|
|
72
|
-
class
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
class UpdatedEvent extends Event {
|
|
76
|
-
}
|
|
70
|
+
class UpdatedEvent extends Event {}
|
|
77
71
|
|
|
78
72
|
class TestClass {
|
|
79
73
|
@EventHandler(ExecutionMode.Asynchronous)
|
|
@@ -87,7 +81,9 @@ describe('Given a EventHandler decorator', () => {
|
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
83
|
it('Then we should retrieve information via reflect', async () => {
|
|
90
|
-
const eventHandlers = Array.from(
|
|
84
|
+
const eventHandlers = Array.from(
|
|
85
|
+
reflect(TestClass).getHandlerConfiguration().eventHandlers.values()
|
|
86
|
+
);
|
|
91
87
|
|
|
92
88
|
expect(eventHandlers.length).equal(2, 'Wrong route count detected');
|
|
93
89
|
|
|
@@ -98,7 +94,6 @@ describe('Given a EventHandler decorator', () => {
|
|
|
98
94
|
expect(eventHandlers[1].methodName).equal('updated');
|
|
99
95
|
expect(eventHandlers[1].executionMode).equal(ExecutionMode.Synchronous);
|
|
100
96
|
expect(eventHandlers[1].event.constructor.name).equal('UpdatedEvent');
|
|
101
|
-
|
|
102
97
|
});
|
|
103
98
|
});
|
|
104
99
|
});
|
|
@@ -8,17 +8,23 @@ export function EventHandler(mode: ExecutionMode): MethodDecorator {
|
|
|
8
8
|
const paramTypes = reflect(target, propertyKey).getParameters();
|
|
9
9
|
|
|
10
10
|
if (paramTypes.length === 0) {
|
|
11
|
-
throw new Error(
|
|
11
|
+
throw new Error(
|
|
12
|
+
`${target.constructor.name}.${propertyKey.toString()} should have one argument!`
|
|
13
|
+
);
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
if (paramTypes.length > 1) {
|
|
15
|
-
throw new Error(
|
|
17
|
+
throw new Error(
|
|
18
|
+
`${target.constructor.name}.${propertyKey.toString()} should have only one argument!`
|
|
19
|
+
);
|
|
16
20
|
}
|
|
17
21
|
|
|
18
22
|
if (!(paramTypes[0].prototype instanceof Event)) {
|
|
19
|
-
throw new Error(
|
|
23
|
+
throw new Error(
|
|
24
|
+
`${target.constructor.name}.${propertyKey.toString()} should have an event as argument!`
|
|
25
|
+
);
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
reflect(target, propertyKey).registerEventHandler(<any>paramTypes[0].prototype, mode);
|
|
23
|
-
}
|
|
29
|
+
};
|
|
24
30
|
}
|