@jdevel/tnest 0.0.4 → 0.0.6

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 CHANGED
@@ -259,24 +259,24 @@ this.users.send('user.created', { userId: '1', email: 'a@b.com' });
259
259
  // ~~~~~~~~~~~~~~ ERROR: 'user.created' is an event, use emit()
260
260
  ```
261
261
 
262
- When using the second type parameter on handler decorators, the compiler also catches handler signature mismatches:
262
+ The typed handler decorators also catch handler signature mismatches:
263
263
 
264
264
  ```ts
265
- @TypedMessagePattern<UserContracts, 'user.create'>('user.create')
265
+ const MessagePattern = TypedMessagePattern<UserContracts>();
266
+
267
+ @MessagePattern('user.create')
266
268
  async create(payload: { wrong: number }) {
267
269
  // ~~~~~~~~~~~~~~~~ ERROR: expects { email: string; name: string }
268
270
  return { id: '1' };
269
271
  }
270
272
 
271
- @TypedMessagePattern<UserContracts, 'user.get'>('user.get')
273
+ @MessagePattern('user.get')
272
274
  async get(payload: { id: string }): Promise<{ wrong: boolean }> {
273
275
  // ~~~~~~~~~~~~~~~~~ ERROR: must return User
274
276
  return { wrong: true };
275
277
  }
276
278
  ```
277
279
 
278
- > **Note:** Omitting the second type parameter preserves the existing behavior — the decorator validates the pattern string but does not constrain the method signature.
279
-
280
280
  ### 4. Handle messages (consumer)
281
281
 
282
282
  #### Using decorators
@@ -287,21 +287,24 @@ import { Controller } from '@nestjs/common';
287
287
  import { TypedMessagePattern, TypedEventPattern } from '@jdevel/tnest';
288
288
  import type { UserContracts } from './contracts/user.contracts';
289
289
 
290
+ // Bind the registry type once — pattern is specified only at the call site
291
+ const MessagePattern = TypedMessagePattern<UserContracts>();
292
+ const EventPattern = TypedEventPattern<UserContracts>();
293
+
290
294
  @Controller()
291
295
  export class UserController {
292
- // Pass the pattern as a second type parameter to enforce the method signature.
293
- // The compiler will error if the payload or return type doesn't match the contract.
294
- @TypedMessagePattern<UserContracts, 'user.create'>('user.create')
296
+ // The compiler enforces that payload and return type match the contract
297
+ @MessagePattern('user.create')
295
298
  async create(payload: { email: string; name: string }) {
296
299
  return { id: crypto.randomUUID(), ...payload };
297
300
  }
298
301
 
299
- @TypedMessagePattern<UserContracts, 'user.get'>('user.get')
302
+ @MessagePattern('user.get')
300
303
  async get(payload: { id: string }) {
301
304
  return { id: payload.id, email: 'user@example.com', name: 'Example' };
302
305
  }
303
306
 
304
- @TypedEventPattern<UserContracts, 'user.created'>('user.created')
307
+ @EventPattern('user.created')
305
308
  async handleCreated(payload: { userId: string; email: string }) {
306
309
  console.log(`User created: ${payload.userId}`);
307
310
  }
@@ -414,7 +417,9 @@ class ZodValidator implements ContractValidator {
414
417
  { provide: CONTRACT_VALIDATOR, useClass: ZodValidator }
415
418
 
416
419
  // Apply to handlers — validation runs before the handler method
417
- @TypedMessagePattern<UserContracts, 'user.create'>('user.create')
420
+ const MessagePattern = TypedMessagePattern<UserContracts>();
421
+
422
+ @MessagePattern('user.create')
418
423
  @ValidateContract()
419
424
  async create(payload: CreateUserDto) {
420
425
  // payload has been validated at runtime
@@ -451,6 +456,34 @@ class MsgpackSerializer implements PayloadSerializer, PayloadDeserializer {
451
456
 
452
457
  A `DefaultPayloadSerializer` (pass-through) is included and used when no custom serializer is registered.
453
458
 
459
+ ## Wrapping Responses with HTTP Status
460
+
461
+ Use the `HttpResponse<T>` utility type to wrap command or query responses with an `HttpStatus` code from `@nestjs/common`:
462
+
463
+ ```ts
464
+ import { defineRegistry, command, query } from '@jdevel/tnest';
465
+ import type { HttpResponse } from '@jdevel/tnest';
466
+
467
+ export const userContracts = defineRegistry({
468
+ 'user.create': command<CreateUserDto, HttpResponse<User>>(),
469
+ 'user.get': query<{ id: string }, HttpResponse<User>>(),
470
+ });
471
+ ```
472
+
473
+ Handlers then return the wrapped shape:
474
+
475
+ ```ts
476
+ import { HttpStatus } from '@nestjs/common';
477
+
478
+ @MessagePattern('user.create')
479
+ async create(payload: { email: string; name: string }) {
480
+ const user = await this.userRepo.create(payload);
481
+ return { status: HttpStatus.CREATED, data: user };
482
+ }
483
+ ```
484
+
485
+ The response type is `{ status: HttpStatus; data: T }`.
486
+
454
487
  ## Utility Types
455
488
 
456
489
  Extract type information from your contract registry:
@@ -460,6 +493,7 @@ import type {
460
493
  PatternOf,
461
494
  PayloadOf,
462
495
  ResponseOf,
496
+ HttpResponse,
463
497
  CommandPatterns,
464
498
  EventPatterns,
465
499
  QueryPatterns,
@@ -509,6 +543,7 @@ type Validated = ValidateRegistry<UserContracts>;
509
543
  | `Command` / `Event` / `Query` | Type | Contract type interfaces |
510
544
  | `ContractRegistry` | Type | Base type for a registry of contracts |
511
545
  | `ValidateRegistry` | Type | Validates registry keys match contract patterns |
546
+ | `HttpResponse` | Type | Wraps a response with `HttpStatus` |
512
547
  | `PayloadOf` / `ResponseOf` / `PatternOf` | Type | Extract parts of a contract |
513
548
  | `CommandsOf` / `EventsOf` / `QueriesOf` | Type | Filter registry by contract kind |
514
549
  | `CommandPatterns` / `EventPatterns` / `QueryPatterns` | Type | Pattern string unions by kind |
@@ -81,6 +81,17 @@ describe('ValidateRegistry', () => {
81
81
  (0, expect_type_1.expectTypeOf)().toEqualTypeOf();
82
82
  });
83
83
  });
84
+ describe('HttpResponse', () => {
85
+ it('wraps a type with status and data fields', () => {
86
+ (0, expect_type_1.expectTypeOf)().toEqualTypeOf();
87
+ });
88
+ it('works as a command response type', () => {
89
+ (0, expect_type_1.expectTypeOf)().toEqualTypeOf();
90
+ });
91
+ it('works as a query response type', () => {
92
+ (0, expect_type_1.expectTypeOf)().toEqualTypeOf();
93
+ });
94
+ });
84
95
  describe('AnyContract', () => {
85
96
  it('accepts Command, Event, and Query', () => {
86
97
  (0, expect_type_1.expectTypeOf)().toExtend();
@@ -1 +1 @@
1
- {"version":3,"file":"contract-types.spec.js","sourceRoot":"","sources":["../../../src/contracts/__tests__/contract-types.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract-types.spec.js","sourceRoot":"","sources":["../../../src/contracts/__tests__/contract-types.spec.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,4 @@ export type { Event } from './event';
3
3
  export type { Query } from './query';
4
4
  export type { ValidateRegistry } from './registry';
5
5
  export { command, event, query, defineRegistry } from './define-helpers';
6
- export type { AnyContract, PatternOf, PayloadOf, ResponseOf, ContractRegistry, CommandsOf, EventsOf, QueriesOf, CommandPatterns, EventPatterns, QueryPatterns, SendablePatterns, } from './utility-types';
6
+ export type { AnyContract, PatternOf, PayloadOf, ResponseOf, ContractRegistry, CommandsOf, EventsOf, QueriesOf, CommandPatterns, EventPatterns, QueryPatterns, SendablePatterns, HttpResponse, } from './utility-types';
@@ -1,6 +1,11 @@
1
+ import type { HttpStatus } from '@nestjs/common';
1
2
  import type { Command } from './command';
2
3
  import type { Event } from './event';
3
4
  import type { Query } from './query';
5
+ export interface HttpResponse<T> {
6
+ status: HttpStatus;
7
+ data: T;
8
+ }
4
9
  export type AnyContract = Command<string, any, any> | Event<string, any> | Query<string, any, any>;
5
10
  export type PatternOf<C extends AnyContract> = C['pattern'];
6
11
  export type PayloadOf<C extends AnyContract> = C['payload'];
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  require("reflect-metadata");
13
13
  const constants_1 = require("@nestjs/microservices/constants");
14
14
  const typed_event_pattern_decorator_1 = require("../typed-event-pattern.decorator");
15
+ const EventPatternDecorator = (0, typed_event_pattern_decorator_1.TypedEventPattern)();
15
16
  describe('TypedEventPattern', () => {
16
17
  it('applies @EventPattern metadata with the given pattern', () => {
17
18
  class TestHandler {
@@ -19,7 +20,7 @@ describe('TypedEventPattern', () => {
19
20
  }
20
21
  }
21
22
  __decorate([
22
- (0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
23
+ EventPatternDecorator('user.created'),
23
24
  __metadata("design:type", Function),
24
25
  __metadata("design:paramtypes", [Object]),
25
26
  __metadata("design:returntype", void 0)
@@ -29,13 +30,13 @@ describe('TypedEventPattern', () => {
29
30
  expect(metadata).toEqual(['user.created']);
30
31
  expect(handlerType).toBe(2);
31
32
  });
32
- it('enforces method signature when pattern type parameter is provided', () => {
33
+ it('enforces method signature', () => {
33
34
  class TestHandler {
34
35
  handle(_payload) {
35
36
  }
36
37
  }
37
38
  __decorate([
38
- (0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
39
+ EventPatternDecorator('user.created'),
39
40
  __metadata("design:type", Function),
40
41
  __metadata("design:paramtypes", [Object]),
41
42
  __metadata("design:returntype", void 0)
@@ -43,13 +44,13 @@ describe('TypedEventPattern', () => {
43
44
  const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
44
45
  expect(metadata).toEqual(['user.created']);
45
46
  });
46
- it('enforces async method signature when pattern type parameter is provided', () => {
47
+ it('enforces async method signature', () => {
47
48
  class TestHandler {
48
49
  async handle(_payload) {
49
50
  }
50
51
  }
51
52
  __decorate([
52
- (0, typed_event_pattern_decorator_1.TypedEventPattern)('user.created'),
53
+ EventPatternDecorator('user.created'),
53
54
  __metadata("design:type", Function),
54
55
  __metadata("design:paramtypes", [Object]),
55
56
  __metadata("design:returntype", Promise)
@@ -1 +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"}
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,MAAM,qBAAqB,GAAG,IAAA,iDAAiB,GAAgB,CAAC;AAEhE,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,qBAAqB,CAAC,cAAc,CAAC;;;;iDAGrC;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,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,WAAW;YAEf,MAAM,CAAC,QAA4B;YAEnC,CAAC;SACF;QAHC;YADC,qBAAqB,CAAC,cAAc,CAAC;;;;iDAGrC;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,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,WAAW;YAET,AAAN,KAAK,CAAC,MAAM,CAAC,QAA4B;YAEzC,CAAC;SACF;QAHO;YADL,qBAAqB,CAAC,cAAc,CAAC;;;;iDAGrC;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"}
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  require("reflect-metadata");
13
13
  const constants_1 = require("@nestjs/microservices/constants");
14
14
  const typed_message_pattern_decorator_1 = require("../typed-message-pattern.decorator");
15
+ const MessagePattern = (0, typed_message_pattern_decorator_1.TypedMessagePattern)();
15
16
  describe('TypedMessagePattern', () => {
16
17
  it('applies @MessagePattern metadata with the given pattern', () => {
17
18
  class TestHandler {
@@ -20,7 +21,7 @@ describe('TypedMessagePattern', () => {
20
21
  }
21
22
  }
22
23
  __decorate([
23
- (0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
24
+ MessagePattern('user.create'),
24
25
  __metadata("design:type", Function),
25
26
  __metadata("design:paramtypes", [Object]),
26
27
  __metadata("design:returntype", Object)
@@ -37,7 +38,7 @@ describe('TypedMessagePattern', () => {
37
38
  }
38
39
  }
39
40
  __decorate([
40
- (0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.get'),
41
+ MessagePattern('user.get'),
41
42
  __metadata("design:type", Function),
42
43
  __metadata("design:paramtypes", [Object]),
43
44
  __metadata("design:returntype", Object)
@@ -45,14 +46,14 @@ describe('TypedMessagePattern', () => {
45
46
  const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
46
47
  expect(metadata).toEqual(['user.get']);
47
48
  });
48
- it('enforces method signature when pattern type parameter is provided', () => {
49
+ it('enforces method signature for command patterns', () => {
49
50
  class TestHandler {
50
51
  handle(_payload) {
51
52
  return { id: '1' };
52
53
  }
53
54
  }
54
55
  __decorate([
55
- (0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
56
+ MessagePattern('user.create'),
56
57
  __metadata("design:type", Function),
57
58
  __metadata("design:paramtypes", [Object]),
58
59
  __metadata("design:returntype", Object)
@@ -60,14 +61,14 @@ describe('TypedMessagePattern', () => {
60
61
  const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
61
62
  expect(metadata).toEqual(['user.create']);
62
63
  });
63
- it('enforces query method signature when pattern type parameter is provided', () => {
64
+ it('enforces method signature for query patterns', () => {
64
65
  class TestHandler {
65
66
  handle(_payload) {
66
67
  return { name: 'Alice' };
67
68
  }
68
69
  }
69
70
  __decorate([
70
- (0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.get'),
71
+ MessagePattern('user.get'),
71
72
  __metadata("design:type", Function),
72
73
  __metadata("design:paramtypes", [Object]),
73
74
  __metadata("design:returntype", Object)
@@ -75,14 +76,14 @@ describe('TypedMessagePattern', () => {
75
76
  const metadata = Reflect.getMetadata(constants_1.PATTERN_METADATA, TestHandler.prototype.handle);
76
77
  expect(metadata).toEqual(['user.get']);
77
78
  });
78
- it('enforces async method signature when pattern type parameter is provided', () => {
79
+ it('enforces async method signature', () => {
79
80
  class TestHandler {
80
81
  async handle(_payload) {
81
82
  return { id: '1' };
82
83
  }
83
84
  }
84
85
  __decorate([
85
- (0, typed_message_pattern_decorator_1.TypedMessagePattern)('user.create'),
86
+ MessagePattern('user.create'),
86
87
  __metadata("design:type", Function),
87
88
  __metadata("design:paramtypes", [Object]),
88
89
  __metadata("design:returntype", Promise)
@@ -1 +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
+ {"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,4 +1,4 @@
1
1
  import type { ContractRegistry, EventPatterns, PayloadOf } from '../contracts';
2
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>;
3
+ export declare function TypedEventPattern<TRegistry extends ContractRegistry>(): <P extends EventPatterns<TRegistry>>(pattern: P) => EventMethodDecorator<TRegistry, P>;
4
4
  export {};
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypedEventPattern = TypedEventPattern;
4
4
  const microservices_1 = require("@nestjs/microservices");
5
- function TypedEventPattern(pattern) {
6
- return (0, microservices_1.EventPattern)(pattern);
5
+ function TypedEventPattern() {
6
+ return (pattern) => {
7
+ return (0, microservices_1.EventPattern)(pattern);
8
+ };
7
9
  }
8
10
  //# sourceMappingURL=typed-event-pattern.decorator.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"typed-event-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-event-pattern.decorator.ts"],"names":[],"mappings":";;AAgBA,8CAKC;AArBD,yDAAqD;AAgBrD,SAAgB,iBAAiB;IAC/B,OAAO,CAAqC,OAAU,EAAsC,EAAE;QAE5F,OAAO,IAAA,4BAAY,EAAC,OAAiB,CAAQ,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Observable } from 'rxjs';
2
2
  import type { ContractRegistry, CommandPatterns, QueryPatterns, PayloadOf, ResponseOf } from '../contracts';
3
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>;
4
+ export declare function TypedMessagePattern<TRegistry extends ContractRegistry>(): <P extends CommandPatterns<TRegistry> | QueryPatterns<TRegistry>>(pattern: P) => MessageMethodDecorator<TRegistry, P>;
5
5
  export {};
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypedMessagePattern = TypedMessagePattern;
4
4
  const microservices_1 = require("@nestjs/microservices");
5
- function TypedMessagePattern(pattern) {
6
- return (0, microservices_1.MessagePattern)(pattern);
5
+ function TypedMessagePattern() {
6
+ return (pattern) => {
7
+ return (0, microservices_1.MessagePattern)(pattern);
8
+ };
7
9
  }
8
10
  //# sourceMappingURL=typed-message-pattern.decorator.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"typed-message-pattern.decorator.js","sourceRoot":"","sources":["../../src/handlers/typed-message-pattern.decorator.ts"],"names":[],"mappings":";;AA0BA,kDAOC;AAjCD,yDAAuD;AA0BvD,SAAgB,mBAAmB;IACjC,OAAO,CACL,OAAU,EAC4B,EAAE;QAExC,OAAO,IAAA,8BAAc,EAAC,OAAiB,CAAQ,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { TnestModule } from './tnest.module';
2
2
  export { TNEST_OPTIONS, getClientToken } from './constants';
3
- export type { Command, Event, Query, AnyContract, ContractRegistry, ValidateRegistry, PatternOf, PayloadOf, ResponseOf, CommandsOf, EventsOf, QueriesOf, CommandPatterns, EventPatterns, QueryPatterns, SendablePatterns, } from './contracts';
3
+ export type { Command, Event, Query, AnyContract, ContractRegistry, ValidateRegistry, PatternOf, PayloadOf, ResponseOf, CommandsOf, EventsOf, QueriesOf, CommandPatterns, EventPatterns, QueryPatterns, SendablePatterns, HttpResponse, } from './contracts';
4
4
  export { command, event, query, defineRegistry } from './contracts';
5
5
  export { TypedClient } from './client';
6
6
  export { TypedClientFactory } from './client';
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,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"}
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;AAsBtC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jdevel/tnest",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Type-safe communication between NestJS microservices via shared contracts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",