@jdevel/tnest 0.0.2 → 0.0.4
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/README.md +260 -86
- package/dist/__tests__/constants.spec.d.ts +1 -0
- package/dist/__tests__/constants.spec.js +21 -0
- package/dist/__tests__/constants.spec.js.map +1 -0
- package/dist/__tests__/tnest-module.spec.d.ts +1 -0
- package/dist/__tests__/tnest-module.spec.js +88 -0
- package/dist/__tests__/tnest-module.spec.js.map +1 -0
- package/dist/client/__tests__/typed-client-factory.spec.d.ts +1 -0
- package/dist/client/__tests__/typed-client-factory.spec.js +35 -0
- package/dist/client/__tests__/typed-client-factory.spec.js.map +1 -0
- package/dist/client/__tests__/typed-client-types.spec.d.ts +1 -0
- package/dist/client/__tests__/typed-client-types.spec.js +18 -0
- package/dist/client/__tests__/typed-client-types.spec.js.map +1 -0
- package/dist/client/__tests__/typed-client.spec.d.ts +1 -0
- package/dist/client/__tests__/typed-client.spec.js +59 -0
- package/dist/client/__tests__/typed-client.spec.js.map +1 -0
- package/dist/contracts/__tests__/contract-types.spec.d.ts +1 -0
- package/dist/contracts/__tests__/contract-types.spec.js +91 -0
- package/dist/contracts/__tests__/contract-types.spec.js.map +1 -0
- package/dist/contracts/__tests__/define-helpers.spec.d.ts +1 -0
- package/dist/contracts/__tests__/define-helpers.spec.js +52 -0
- package/dist/contracts/__tests__/define-helpers.spec.js.map +1 -0
- package/dist/contracts/define-helpers.js.map +1 -1
- package/dist/handlers/__tests__/handler-types.spec.d.ts +1 -0
- package/dist/handlers/__tests__/handler-types.spec.js +17 -0
- package/dist/handlers/__tests__/handler-types.spec.js.map +1 -0
- package/dist/handlers/__tests__/typed-event-pattern.spec.d.ts +1 -0
- package/dist/handlers/__tests__/typed-event-pattern.spec.js +61 -0
- package/dist/handlers/__tests__/typed-event-pattern.spec.js.map +1 -0
- package/dist/handlers/__tests__/typed-message-pattern.spec.d.ts +1 -0
- package/dist/handlers/__tests__/typed-message-pattern.spec.js +94 -0
- package/dist/handlers/__tests__/typed-message-pattern.spec.js.map +1 -0
- package/dist/handlers/typed-event-pattern.decorator.d.ts +4 -2
- package/dist/handlers/typed-event-pattern.decorator.js.map +1 -1
- package/dist/handlers/typed-message-pattern.decorator.d.ts +5 -2
- package/dist/handlers/typed-message-pattern.decorator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/module-options.d.ts +1 -0
- package/dist/serialization/__tests__/default-serializer.spec.d.ts +1 -0
- package/dist/serialization/__tests__/default-serializer.spec.js +32 -0
- package/dist/serialization/__tests__/default-serializer.spec.js.map +1 -0
- package/dist/testing/__tests__/mock-typed-client.spec.d.ts +1 -0
- package/dist/testing/__tests__/mock-typed-client.spec.js +70 -0
- package/dist/testing/__tests__/mock-typed-client.spec.js.map +1 -0
- package/dist/testing/__tests__/test-contract-module.spec.d.ts +1 -0
- package/dist/testing/__tests__/test-contract-module.spec.js +30 -0
- package/dist/testing/__tests__/test-contract-module.spec.js.map +1 -0
- package/dist/testing/mock-typed-client.js.map +1 -1
- package/dist/tnest.module.d.ts +1 -0
- package/dist/tnest.module.js +21 -20
- package/dist/tnest.module.js.map +1 -1
- package/dist/validation/__tests__/validate-contract.spec.d.ts +1 -0
- package/dist/validation/__tests__/validate-contract.spec.js +102 -0
- package/dist/validation/__tests__/validate-contract.spec.js.map +1 -0
- package/dist/validation/validate-contract.decorator.js.map +1 -1
- package/package.json +30 -5
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const rxjs_1 = require("rxjs");
|
|
4
|
+
const microservices_1 = require("@nestjs/microservices");
|
|
5
|
+
const typed_client_factory_1 = require("../typed-client-factory");
|
|
6
|
+
const typed_client_1 = require("../typed-client");
|
|
7
|
+
describe('TypedClientFactory', () => {
|
|
8
|
+
let factory;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
factory = new typed_client_factory_1.TypedClientFactory();
|
|
11
|
+
});
|
|
12
|
+
it('creates a TypedClient from a ClientProxy instance', () => {
|
|
13
|
+
const mockProxy = {
|
|
14
|
+
send: jest.fn().mockReturnValue((0, rxjs_1.of)(undefined)),
|
|
15
|
+
emit: jest.fn().mockReturnValue((0, rxjs_1.of)(undefined)),
|
|
16
|
+
connect: jest.fn().mockResolvedValue(undefined),
|
|
17
|
+
close: jest.fn(),
|
|
18
|
+
};
|
|
19
|
+
const client = factory.create(mockProxy);
|
|
20
|
+
expect(client).toBeInstanceOf(typed_client_1.TypedClient);
|
|
21
|
+
});
|
|
22
|
+
it('creates a TypedClient from ClientOptions using ClientProxyFactory', () => {
|
|
23
|
+
const mockProxy = {
|
|
24
|
+
send: jest.fn(),
|
|
25
|
+
emit: jest.fn(),
|
|
26
|
+
connect: jest.fn(),
|
|
27
|
+
close: jest.fn(),
|
|
28
|
+
};
|
|
29
|
+
jest.spyOn(microservices_1.ClientProxyFactory, 'create').mockReturnValue(mockProxy);
|
|
30
|
+
const client = factory.create({ transport: 0 });
|
|
31
|
+
expect(microservices_1.ClientProxyFactory.create).toHaveBeenCalledWith({ transport: 0 });
|
|
32
|
+
expect(client).toBeInstanceOf(typed_client_1.TypedClient);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=typed-client-factory.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-client-factory.spec.js","sourceRoot":"","sources":["../../../src/client/__tests__/typed-client-factory.spec.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAE1B,yDAA2D;AAC3D,kEAA6D;AAC7D,kDAA8C;AAQ9C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,OAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,yCAAkB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAA,SAAE,EAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAA,SAAE,EAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC/C,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;SACS,CAAC;QAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAe,SAAS,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,0BAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;YAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;SACS,CAAC;QAE5B,IAAI,CAAC,KAAK,CAAC,kCAAkB,EAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAe,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAG9D,MAAM,CAAC,kCAAkB,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,0BAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const expect_type_1 = require("expect-type");
|
|
4
|
+
describe('TypedClient type constraints', () => {
|
|
5
|
+
it('send() returns Observable of correct response type for command', () => {
|
|
6
|
+
(0, expect_type_1.expectTypeOf)().parameter(0).toExtend();
|
|
7
|
+
});
|
|
8
|
+
it('send() infers response type from pattern', () => {
|
|
9
|
+
(0, expect_type_1.expectTypeOf)().toExtend();
|
|
10
|
+
});
|
|
11
|
+
it('emit() accepts only event patterns', () => {
|
|
12
|
+
(0, expect_type_1.expectTypeOf)().parameter(0).toEqualTypeOf();
|
|
13
|
+
});
|
|
14
|
+
it('emit() returns Observable<undefined>', () => {
|
|
15
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=typed-client-types.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-client-types.spec.js","sourceRoot":"","sources":["../../../src/client/__tests__/typed-client-types.spec.ts"],"names":[],"mappings":";;AAAA,6CAA2C;AAgB3C,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,IAAA,0BAAY,GAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAA8B,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAElD,IAAA,0BAAY,GAAc,CAAC,QAAQ,EAAuB,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,0BAAY,GAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,EAAkB,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE9C,IAAA,0BAAY,GAAc,CAAC,aAAa,EAAyB,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const rxjs_1 = require("rxjs");
|
|
4
|
+
const rxjs_2 = require("rxjs");
|
|
5
|
+
const typed_client_1 = require("../typed-client");
|
|
6
|
+
function createMockClientProxy() {
|
|
7
|
+
return {
|
|
8
|
+
send: jest.fn().mockReturnValue((0, rxjs_1.of)(undefined)),
|
|
9
|
+
emit: jest.fn().mockReturnValue((0, rxjs_1.of)(undefined)),
|
|
10
|
+
connect: jest.fn().mockResolvedValue(undefined),
|
|
11
|
+
close: jest.fn(),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
describe('TypedClient', () => {
|
|
15
|
+
let mockProxy;
|
|
16
|
+
let client;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
mockProxy = createMockClientProxy();
|
|
19
|
+
client = new typed_client_1.TypedClient(mockProxy);
|
|
20
|
+
});
|
|
21
|
+
describe('send()', () => {
|
|
22
|
+
it('delegates to ClientProxy.send() with pattern and payload', async () => {
|
|
23
|
+
const payload = { name: 'Alice' };
|
|
24
|
+
const response = { id: '123' };
|
|
25
|
+
mockProxy.send.mockReturnValue((0, rxjs_1.of)(response));
|
|
26
|
+
const result = await (0, rxjs_2.firstValueFrom)(client.send('user.create', payload));
|
|
27
|
+
expect(mockProxy.send).toHaveBeenCalledWith('user.create', payload);
|
|
28
|
+
expect(result).toEqual(response);
|
|
29
|
+
});
|
|
30
|
+
it('works with query patterns', async () => {
|
|
31
|
+
const payload = { id: '123' };
|
|
32
|
+
const response = { name: 'Alice' };
|
|
33
|
+
mockProxy.send.mockReturnValue((0, rxjs_1.of)(response));
|
|
34
|
+
const result = await (0, rxjs_2.firstValueFrom)(client.send('user.get', payload));
|
|
35
|
+
expect(mockProxy.send).toHaveBeenCalledWith('user.get', payload);
|
|
36
|
+
expect(result).toEqual(response);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('emit()', () => {
|
|
40
|
+
it('delegates to ClientProxy.emit() with pattern and payload', async () => {
|
|
41
|
+
const payload = { userId: '123' };
|
|
42
|
+
await (0, rxjs_2.firstValueFrom)(client.emit('user.created', payload));
|
|
43
|
+
expect(mockProxy.emit).toHaveBeenCalledWith('user.created', payload);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('connect()', () => {
|
|
47
|
+
it('delegates to ClientProxy.connect()', async () => {
|
|
48
|
+
await client.connect();
|
|
49
|
+
expect(mockProxy.connect).toHaveBeenCalled();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('close()', () => {
|
|
53
|
+
it('delegates to ClientProxy.close()', () => {
|
|
54
|
+
client.close();
|
|
55
|
+
expect(mockProxy.close).toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=typed-client.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-client.spec.js","sourceRoot":"","sources":["../../../src/client/__tests__/typed-client.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const expect_type_1 = require("expect-type");
|
|
4
|
+
describe('Contract type branding', () => {
|
|
5
|
+
it('Command has __type "command"', () => {
|
|
6
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('__type');
|
|
7
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
8
|
+
});
|
|
9
|
+
it('Event has __type "event"', () => {
|
|
10
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('__type');
|
|
11
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
12
|
+
});
|
|
13
|
+
it('Query has __type "query"', () => {
|
|
14
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('__type');
|
|
15
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
16
|
+
});
|
|
17
|
+
it('Command carries pattern, payload, and response', () => {
|
|
18
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
19
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
20
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
21
|
+
});
|
|
22
|
+
it('Event carries pattern and payload', () => {
|
|
23
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
24
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
25
|
+
});
|
|
26
|
+
it('Query carries pattern, payload, and response', () => {
|
|
27
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
28
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
29
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('Utility types', () => {
|
|
33
|
+
it('PatternOf extracts pattern from any contract', () => {
|
|
34
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
35
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
36
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
37
|
+
});
|
|
38
|
+
it('PayloadOf extracts payload from any contract', () => {
|
|
39
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
40
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
41
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
42
|
+
});
|
|
43
|
+
it('ResponseOf extracts response from Command and Query', () => {
|
|
44
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
45
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
46
|
+
});
|
|
47
|
+
it('ResponseOf returns undefined for Event', () => {
|
|
48
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('Registry filter types', () => {
|
|
52
|
+
it('CommandsOf filters to commands only', () => {
|
|
53
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('user.create');
|
|
54
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
55
|
+
});
|
|
56
|
+
it('EventsOf filters to events only', () => {
|
|
57
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('user.created');
|
|
58
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
59
|
+
});
|
|
60
|
+
it('QueriesOf filters to queries only', () => {
|
|
61
|
+
(0, expect_type_1.expectTypeOf)().toHaveProperty('user.get');
|
|
62
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
63
|
+
});
|
|
64
|
+
it('CommandPatterns produces correct string union', () => {
|
|
65
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
66
|
+
});
|
|
67
|
+
it('EventPatterns produces correct string union', () => {
|
|
68
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
69
|
+
});
|
|
70
|
+
it('QueryPatterns produces correct string union', () => {
|
|
71
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
72
|
+
});
|
|
73
|
+
it('SendablePatterns is union of command and query patterns', () => {
|
|
74
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe('ValidateRegistry', () => {
|
|
78
|
+
it('accepts a valid registry (patterns match keys)', () => {
|
|
79
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
80
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
81
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('AnyContract', () => {
|
|
85
|
+
it('accepts Command, Event, and Query', () => {
|
|
86
|
+
(0, expect_type_1.expectTypeOf)().toExtend();
|
|
87
|
+
(0, expect_type_1.expectTypeOf)().toExtend();
|
|
88
|
+
(0, expect_type_1.expectTypeOf)().toExtend();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=contract-types.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-types.spec.js","sourceRoot":"","sources":["../../../src/contracts/__tests__/contract-types.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const expect_type_1 = require("expect-type");
|
|
4
|
+
const define_helpers_1 = require("../define-helpers");
|
|
5
|
+
describe('command()', () => {
|
|
6
|
+
it('returns Command type with given payload and response', () => {
|
|
7
|
+
const c = (0, define_helpers_1.command)();
|
|
8
|
+
(0, expect_type_1.expectTypeOf)(c).toExtend();
|
|
9
|
+
});
|
|
10
|
+
it('defaults payload to void and response to void', () => {
|
|
11
|
+
const c = (0, define_helpers_1.command)();
|
|
12
|
+
(0, expect_type_1.expectTypeOf)(c).toExtend();
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('event()', () => {
|
|
16
|
+
it('returns Event type with given payload', () => {
|
|
17
|
+
const e = (0, define_helpers_1.event)();
|
|
18
|
+
(0, expect_type_1.expectTypeOf)(e).toExtend();
|
|
19
|
+
});
|
|
20
|
+
it('defaults payload to void', () => {
|
|
21
|
+
const e = (0, define_helpers_1.event)();
|
|
22
|
+
(0, expect_type_1.expectTypeOf)(e).toExtend();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('query()', () => {
|
|
26
|
+
it('returns Query type with given payload and response', () => {
|
|
27
|
+
const q = (0, define_helpers_1.query)();
|
|
28
|
+
(0, expect_type_1.expectTypeOf)(q).toExtend();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('defineRegistry()', () => {
|
|
32
|
+
const _registry = (0, define_helpers_1.defineRegistry)({
|
|
33
|
+
'user.create': (0, define_helpers_1.command)(),
|
|
34
|
+
'user.created': (0, define_helpers_1.event)(),
|
|
35
|
+
'user.get': (0, define_helpers_1.query)(),
|
|
36
|
+
});
|
|
37
|
+
it('infers pattern keys from object keys', () => {
|
|
38
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
39
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
40
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
41
|
+
});
|
|
42
|
+
it('preserves payload types', () => {
|
|
43
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
44
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
45
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
46
|
+
});
|
|
47
|
+
it('preserves response types', () => {
|
|
48
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
49
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=define-helpers.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-helpers.spec.js","sourceRoot":"","sources":["../../../src/contracts/__tests__/define-helpers.spec.ts"],"names":[],"mappings":";;AAAA,6CAA2C;AAC3C,sDAA0E;AAY1E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,IAAA,wBAAO,GAAoC,CAAC;QACtD,IAAA,0BAAY,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAqD,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,IAAA,wBAAO,GAAE,CAAC;QACpB,IAAA,0BAAY,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAyB,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,IAAA,sBAAK,GAAsB,CAAC;QACtC,IAAA,0BAAY,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAqC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,GAAG,IAAA,sBAAK,GAAE,CAAC;QAClB,IAAA,0BAAY,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAuB,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,IAAA,sBAAK,GAAoC,CAAC;QACpD,IAAA,0BAAY,EAAC,CAAC,CAAC,CAAC,QAAQ,EAAmD,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,IAAA,+BAAc,EAAC;QAC/B,aAAa,EAAE,IAAA,wBAAO,GAAoC;QAC1D,cAAc,EAAE,IAAA,sBAAK,GAAsB;QAC3C,UAAU,EAAE,IAAA,sBAAK,GAAoC;KACtD,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,0BAAY,GAAqC,CAAC,aAAa,EAAiB,CAAC;QACjF,IAAA,0BAAY,GAAmC,CAAC,aAAa,EAAkB,CAAC;QAChF,IAAA,0BAAY,GAAmC,CAAC,aAAa,EAAc,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,0BAAY,GAAgD,CAAC,aAAa,EAAoB,CAAC;QAC/F,IAAA,0BAAY,GAAiD,CAAC,aAAa,EAEvE,CAAC;QACL,IAAA,0BAAY,GAA6C,CAAC,aAAa,EAAkB,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,0BAAY,GAAiD,CAAC,aAAa,EAAkB,CAAC;QAC9F,IAAA,0BAAY,GAA8C,CAAC,aAAa,EAAoB,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-helpers.js","sourceRoot":"","sources":["../../src/contracts/define-helpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"define-helpers.js","sourceRoot":"","sources":["../../src/contracts/define-helpers.ts"],"names":[],"mappings":";;AAOA,0BAEC;AAED,sBAEC;AAED,sBAEC;AAYD,wCAIC;AA1BD,SAAgB,OAAO;IACrB,OAAO,SAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,KAAK;IACnB,OAAO,SAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,KAAK;IACnB,OAAO,SAAgB,CAAC;AAC1B,CAAC;AAYD,SAAgB,cAAc,CAC5B,SAAY;IAEZ,OAAO,SAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const expect_type_1 = require("expect-type");
|
|
4
|
+
describe('TypedMessageHandler', () => {
|
|
5
|
+
it('accepts payload and returns response for command', () => {
|
|
6
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
7
|
+
});
|
|
8
|
+
it('accepts payload and returns response for query', () => {
|
|
9
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
describe('TypedEventHandler', () => {
|
|
13
|
+
it('accepts payload and returns void', () => {
|
|
14
|
+
(0, expect_type_1.expectTypeOf)().toEqualTypeOf();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=handler-types.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-types.spec.js","sourceRoot":"","sources":["../../../src/handlers/__tests__/handler-types.spec.ts"],"names":[],"mappings":";;AAAA,6CAA2C;AAa3C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAE1D,IAAA,0BAAY,GAAuB,CAAC,aAAa,EAAsB,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAExD,IAAA,0BAAY,GAAuB,CAAC,aAAa,EAAoB,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE1C,IAAA,0BAAY,GAAuB,CAAC,aAAa,EAAwB,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
require("reflect-metadata");
|
|
13
|
+
const constants_1 = require("@nestjs/microservices/constants");
|
|
14
|
+
const typed_event_pattern_decorator_1 = require("../typed-event-pattern.decorator");
|
|
15
|
+
describe('TypedEventPattern', () => {
|
|
16
|
+
it('applies @EventPattern metadata with the given pattern', () => {
|
|
17
|
+
class TestHandler {
|
|
18
|
+
handle(_payload) {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
|
|
23
|
+
__metadata("design:type", Function),
|
|
24
|
+
__metadata("design:paramtypes", [Object]),
|
|
25
|
+
__metadata("design:returntype", void 0)
|
|
26
|
+
], TestHandler.prototype, "handle", null);
|
|
27
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
28
|
+
const handlerType = Reflect.getMetadata(constants_1.PATTERN_HANDLER_METADATA, TestHandler.prototype.handle);
|
|
29
|
+
expect(metadata).toEqual(['user.created']);
|
|
30
|
+
expect(handlerType).toBe(2);
|
|
31
|
+
});
|
|
32
|
+
it('enforces method signature when pattern type parameter is provided', () => {
|
|
33
|
+
class TestHandler {
|
|
34
|
+
handle(_payload) {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", [Object]),
|
|
41
|
+
__metadata("design:returntype", void 0)
|
|
42
|
+
], TestHandler.prototype, "handle", null);
|
|
43
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
44
|
+
expect(metadata).toEqual(['user.created']);
|
|
45
|
+
});
|
|
46
|
+
it('enforces async method signature when pattern type parameter is provided', () => {
|
|
47
|
+
class TestHandler {
|
|
48
|
+
async handle(_payload) {
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
|
|
53
|
+
__metadata("design:type", Function),
|
|
54
|
+
__metadata("design:paramtypes", [Object]),
|
|
55
|
+
__metadata("design:returntype", Promise)
|
|
56
|
+
], TestHandler.prototype, "handle", null);
|
|
57
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
58
|
+
expect(metadata).toEqual(['user.created']);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=typed-event-pattern.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-event-pattern.spec.js","sourceRoot":"","sources":["../../../src/handlers/__tests__/typed-event-pattern.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAC1B,+DAA6F;AAC7F,oFAAqE;AAQrE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,WAAW;YAEf,MAAM,CAAC,QAA4B;YAEnC,CAAC;SACF;QAHC;YADC,IAAA,iDAAiB,EAAe,cAAc,CAAC;;;;iDAG/C;QAIH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,4BAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,oCAAwB,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,WAAW;YAEf,MAAM,CAAC,QAA4B;YAEnC,CAAC;SACF;QAHC;YADC,IAAA,iDAAiB,EAA+B,cAAc,CAAC;;;;iDAG/D;QAIH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,4BAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,WAAW;YAET,AAAN,KAAK,CAAC,MAAM,CAAC,QAA4B;YAEzC,CAAC;SACF;QAHO;YADL,IAAA,iDAAiB,EAA+B,cAAc,CAAC;;;;iDAG/D;QAIH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,4BAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
require("reflect-metadata");
|
|
13
|
+
const constants_1 = require("@nestjs/microservices/constants");
|
|
14
|
+
const typed_message_pattern_decorator_1 = require("../typed-message-pattern.decorator");
|
|
15
|
+
describe('TypedMessagePattern', () => {
|
|
16
|
+
it('applies @MessagePattern metadata with the given pattern', () => {
|
|
17
|
+
class TestHandler {
|
|
18
|
+
handle(_payload) {
|
|
19
|
+
return { id: '1' };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
|
|
24
|
+
__metadata("design:type", Function),
|
|
25
|
+
__metadata("design:paramtypes", [Object]),
|
|
26
|
+
__metadata("design:returntype", Object)
|
|
27
|
+
], TestHandler.prototype, "handle", null);
|
|
28
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
29
|
+
const handlerType = Reflect.getMetadata(constants_1.PATTERN_HANDLER_METADATA, TestHandler.prototype.handle);
|
|
30
|
+
expect(metadata).toEqual(['user.create']);
|
|
31
|
+
expect(handlerType).toBe(1);
|
|
32
|
+
});
|
|
33
|
+
it('works with query patterns', () => {
|
|
34
|
+
class TestHandler {
|
|
35
|
+
handle(_payload) {
|
|
36
|
+
return { name: 'Alice' };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.get'),
|
|
41
|
+
__metadata("design:type", Function),
|
|
42
|
+
__metadata("design:paramtypes", [Object]),
|
|
43
|
+
__metadata("design:returntype", Object)
|
|
44
|
+
], TestHandler.prototype, "handle", null);
|
|
45
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
46
|
+
expect(metadata).toEqual(['user.get']);
|
|
47
|
+
});
|
|
48
|
+
it('enforces method signature when pattern type parameter is provided', () => {
|
|
49
|
+
class TestHandler {
|
|
50
|
+
handle(_payload) {
|
|
51
|
+
return { id: '1' };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
|
|
56
|
+
__metadata("design:type", Function),
|
|
57
|
+
__metadata("design:paramtypes", [Object]),
|
|
58
|
+
__metadata("design:returntype", Object)
|
|
59
|
+
], TestHandler.prototype, "handle", null);
|
|
60
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
61
|
+
expect(metadata).toEqual(['user.create']);
|
|
62
|
+
});
|
|
63
|
+
it('enforces query method signature when pattern type parameter is provided', () => {
|
|
64
|
+
class TestHandler {
|
|
65
|
+
handle(_payload) {
|
|
66
|
+
return { name: 'Alice' };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.get'),
|
|
71
|
+
__metadata("design:type", Function),
|
|
72
|
+
__metadata("design:paramtypes", [Object]),
|
|
73
|
+
__metadata("design:returntype", Object)
|
|
74
|
+
], TestHandler.prototype, "handle", null);
|
|
75
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
76
|
+
expect(metadata).toEqual(['user.get']);
|
|
77
|
+
});
|
|
78
|
+
it('enforces async method signature when pattern type parameter is provided', () => {
|
|
79
|
+
class TestHandler {
|
|
80
|
+
async handle(_payload) {
|
|
81
|
+
return { id: '1' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
|
|
86
|
+
__metadata("design:type", Function),
|
|
87
|
+
__metadata("design:paramtypes", [Object]),
|
|
88
|
+
__metadata("design:returntype", Promise)
|
|
89
|
+
], TestHandler.prototype, "handle", null);
|
|
90
|
+
const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
|
|
91
|
+
expect(metadata).toEqual(['user.create']);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=typed-message-pattern.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-message-pattern.spec.js","sourceRoot":"","sources":["../../../src/handlers/__tests__/typed-message-pattern.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import type { ContractRegistry, EventPatterns } from '../contracts';
|
|
2
|
-
|
|
1
|
+
import type { ContractRegistry, EventPatterns, PayloadOf } from '../contracts';
|
|
2
|
+
type EventMethodDecorator<TRegistry extends ContractRegistry, P extends string & keyof TRegistry> = (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(data: PayloadOf<TRegistry[P]>) => void> | TypedPropertyDescriptor<(data: PayloadOf<TRegistry[P]>) => Promise<void>>) => void;
|
|
3
|
+
export declare function TypedEventPattern<TRegistry extends ContractRegistry, P extends EventPatterns<TRegistry> = never>(pattern: [P] extends [never] ? EventPatterns<TRegistry> : P): [P] extends [never] ? MethodDecorator : EventMethodDecorator<TRegistry, P>;
|
|
4
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-event-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-event-pattern.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"typed-event-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-event-pattern.decorator.ts"],"names":[],"mappings":";;AAgBA,8CAQC;AAxBD,yDAAqD;AAgBrD,SAAgB,iBAAiB,CAI/B,OAA2D;IAG3D,OAAO,IAAA,4BAAY,EAAC,OAAiB,CAAQ,CAAC;AAChD,CAAC"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { ContractRegistry, CommandPatterns, QueryPatterns, PayloadOf, ResponseOf } from '../contracts';
|
|
3
|
+
type MessageMethodDecorator<TRegistry extends ContractRegistry, P extends string & keyof TRegistry> = (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(data: PayloadOf<TRegistry[P]>) => ResponseOf<TRegistry[P]>> | TypedPropertyDescriptor<(data: PayloadOf<TRegistry[P]>) => Promise<ResponseOf<TRegistry[P]>>> | TypedPropertyDescriptor<(data: PayloadOf<TRegistry[P]>) => Observable<ResponseOf<TRegistry[P]>>>) => void;
|
|
4
|
+
export declare function TypedMessagePattern<TRegistry extends ContractRegistry, P extends CommandPatterns<TRegistry> | QueryPatterns<TRegistry> = never>(pattern: [P] extends [never] ? CommandPatterns<TRegistry> | QueryPatterns<TRegistry> : P): [P] extends [never] ? MethodDecorator : MessageMethodDecorator<TRegistry, P>;
|
|
5
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-message-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-message-pattern.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"typed-message-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-message-pattern.decorator.ts"],"names":[],"mappings":";;AA0BA,kDAQC;AAlCD,yDAAuD;AA0BvD,SAAgB,mBAAmB,CAIjC,OAAwF;IAGxF,OAAO,IAAA,8BAAc,EAAC,OAAiB,CAAQ,CAAC;AAClD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type { TnestClientDefinition, TnestModuleOptions, TnestOptionsFactory, Tn
|
|
|
11
11
|
export { ValidateContract } from './validation';
|
|
12
12
|
export { CONTRACT_VALIDATOR } from './validation';
|
|
13
13
|
export type { ContractValidator } from './validation';
|
|
14
|
-
export { DefaultPayloadSerializer, PAYLOAD_SERIALIZER, PAYLOAD_DESERIALIZER } from './serialization';
|
|
14
|
+
export { DefaultPayloadSerializer, PAYLOAD_SERIALIZER, PAYLOAD_DESERIALIZER, } from './serialization';
|
|
15
15
|
export type { PayloadSerializer, PayloadDeserializer } from './serialization';
|
|
16
16
|
export { MockTypedClient } from './testing';
|
|
17
17
|
export { TestContractModule } from './testing';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAGpB,yCAA4D;AAAnD,0GAAA,aAAa,OAAA;AAAE,2GAAA,cAAc,OAAA;AAqBtC,yCAAoE;AAA3D,oGAAA,OAAO,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,2GAAA,cAAc,OAAA;AAG9C,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAG3B,uCAAiD;AAAxC,+GAAA,mBAAmB,OAAA;AAC5B,uCAA+C;AAAtC,6GAAA,iBAAiB,OAAA;AAY1B,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAI3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAGpB,yCAA4D;AAAnD,0GAAA,aAAa,OAAA;AAAE,2GAAA,cAAc,OAAA;AAqBtC,yCAAoE;AAA3D,oGAAA,OAAO,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,2GAAA,cAAc,OAAA;AAG9C,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAG3B,uCAAiD;AAAxC,+GAAA,mBAAmB,OAAA;AAC5B,uCAA+C;AAAtC,6GAAA,iBAAiB,OAAA;AAY1B,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAI3B,iDAIyB;AAHvB,yHAAA,wBAAwB,OAAA;AACxB,mHAAA,kBAAkB,OAAA;AAClB,qHAAA,oBAAoB,OAAA;AAKtB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA"}
|
|
@@ -11,6 +11,7 @@ export interface TnestOptionsFactory {
|
|
|
11
11
|
createTnestOptions(): TnestModuleOptions | Promise<TnestModuleOptions>;
|
|
12
12
|
}
|
|
13
13
|
export interface TnestModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
14
|
+
clientNames?: string[];
|
|
14
15
|
useFactory?: (...args: any[]) => TnestModuleOptions | Promise<TnestModuleOptions>;
|
|
15
16
|
useClass?: Type<TnestOptionsFactory>;
|
|
16
17
|
useExisting?: Type<TnestOptionsFactory>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const default_serializer_1 = require("../default-serializer");
|
|
4
|
+
describe('DefaultPayloadSerializer', () => {
|
|
5
|
+
let serializer;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
serializer = new default_serializer_1.DefaultPayloadSerializer();
|
|
8
|
+
});
|
|
9
|
+
describe('serialize()', () => {
|
|
10
|
+
it('passes through the payload unchanged', () => {
|
|
11
|
+
const payload = { name: 'Alice', age: 30 };
|
|
12
|
+
expect(serializer.serialize(payload)).toBe(payload);
|
|
13
|
+
});
|
|
14
|
+
it('passes through primitives', () => {
|
|
15
|
+
expect(serializer.serialize('hello')).toBe('hello');
|
|
16
|
+
expect(serializer.serialize(42)).toBe(42);
|
|
17
|
+
expect(serializer.serialize(null)).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('deserialize()', () => {
|
|
21
|
+
it('passes through the data unchanged', () => {
|
|
22
|
+
const data = { name: 'Alice', age: 30 };
|
|
23
|
+
expect(serializer.deserialize(data)).toBe(data);
|
|
24
|
+
});
|
|
25
|
+
it('passes through primitives', () => {
|
|
26
|
+
expect(serializer.deserialize('hello')).toBe('hello');
|
|
27
|
+
expect(serializer.deserialize(42)).toBe(42);
|
|
28
|
+
expect(serializer.deserialize(null)).toBeNull();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=default-serializer.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-serializer.spec.js","sourceRoot":"","sources":["../../../src/serialization/__tests__/default-serializer.spec.ts"],"names":[],"mappings":";;AAAA,8DAAiE;AAEjE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,UAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAI,6CAAwB,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|