@rsdk/builtin-contract 6.0.0-next.39 → 6.0.0-next.40

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.
Files changed (53) hide show
  1. package/buf.work.yaml +4 -1
  2. package/dist/google/protobuf/struct.d.ts +4 -4
  3. package/dist/google/protobuf/struct.js +9 -5
  4. package/dist/google/protobuf/struct.js.map +1 -1
  5. package/dist/grpc/error/v1/error.d.ts +1 -1
  6. package/dist/grpc/error/v1/error.js +2 -0
  7. package/dist/grpc/error/v1/error.js.map +1 -1
  8. package/dist/grpc/health/v1/health.d.ts +11 -12
  9. package/dist/grpc/health/v1/health.js +2 -0
  10. package/dist/grpc/health/v1/health.js.map +1 -1
  11. package/dist/grpc/metrics/v1/metrics.d.ts +7 -8
  12. package/dist/grpc/metrics/v1/metrics.js +2 -0
  13. package/dist/grpc/metrics/v1/metrics.js.map +1 -1
  14. package/dist/grpc/reflection/v1/reflection.d.ts +13 -14
  15. package/dist/grpc/reflection/v1/reflection.js +4 -21
  16. package/dist/grpc/reflection/v1/reflection.js.map +1 -1
  17. package/dist/grpc/reflection/v1alpha/reflection.d.ts +13 -14
  18. package/dist/grpc/reflection/v1alpha/reflection.js +4 -21
  19. package/dist/grpc/reflection/v1alpha/reflection.js.map +1 -1
  20. package/dist/grpc.error.v1.d.ts +23 -5
  21. package/dist/grpc.error.v1.js +2 -2
  22. package/dist/grpc.health.v1.d.ts +48 -103
  23. package/dist/grpc.health.v1.js +49 -20
  24. package/dist/grpc.health.v1.js.map +1 -1
  25. package/dist/grpc.metrics.v1.d.ts +45 -56
  26. package/dist/grpc.metrics.v1.js +44 -16
  27. package/dist/grpc.metrics.v1.js.map +1 -1
  28. package/dist/grpc.reflection.v1.d.ts +53 -228
  29. package/dist/grpc.reflection.v1.js +52 -24
  30. package/dist/grpc.reflection.v1.js.map +1 -1
  31. package/dist/grpc.reflection.v1alpha.d.ts +53 -228
  32. package/dist/grpc.reflection.v1alpha.js +52 -24
  33. package/dist/grpc.reflection.v1alpha.js.map +1 -1
  34. package/dist/index.google.js +2 -1
  35. package/dist/index.google.js.map +1 -1
  36. package/dist/index.google.protobuf.js +2 -1
  37. package/dist/index.google.protobuf.js.map +1 -1
  38. package/dist/index.grpc.error.js +2 -1
  39. package/dist/index.grpc.error.js.map +1 -1
  40. package/dist/index.grpc.health.js +2 -1
  41. package/dist/index.grpc.health.js.map +1 -1
  42. package/dist/index.grpc.js +2 -1
  43. package/dist/index.grpc.js.map +1 -1
  44. package/dist/index.grpc.metrics.js +2 -1
  45. package/dist/index.grpc.metrics.js.map +1 -1
  46. package/dist/index.grpc.reflection.js +2 -1
  47. package/dist/index.grpc.reflection.js.map +1 -1
  48. package/dist/index.js +2 -1
  49. package/dist/index.js.map +1 -1
  50. package/eslint.config.cjs +3 -0
  51. package/package.json +7 -5
  52. package/ppm.json +1 -1
  53. package/ppm.lock +5 -0
@@ -3,111 +3,38 @@ import type { ChannelImplementation } from '@grpc/grpc-js/build/src/channel';
3
3
  import type { CallOptions, DefaultCallOptions } from 'nice-grpc';
4
4
  import type { NormalizedServiceDefinition } from 'nice-grpc/lib/service-definitions';
5
5
  import type { Observable } from 'rxjs';
6
- import { HealthDefinition } from './grpc/health/v1/health';
7
- import { HealthCheckResponseServingStatus } from './grpc/health/v1/health';
6
+ import { HealthService as Health, HealthDefinition } from './grpc/health/v1/health';
8
7
  import { HealthCheckRequest } from './grpc/health/v1/health';
9
8
  import { HealthCheckResponse } from './grpc/health/v1/health';
10
- declare const _default: {
9
+ import { HealthCheckResponseServingStatus } from './grpc/health/v1/health';
10
+ import { descriptor } from './descriptor';
11
+ type PackageMeta = {
11
12
  name: string;
12
13
  definitions: {
13
14
  'grpc-js': {
14
- Health: {
15
- readonly check: {
16
- readonly path: "/grpc.health.v1.Health/Check";
17
- readonly requestStream: false;
18
- readonly responseStream: false;
19
- readonly requestSerialize: (value: HealthCheckRequest) => Buffer<Uint8Array<ArrayBufferLike>>;
20
- readonly requestDeserialize: (value: Buffer) => HealthCheckRequest;
21
- readonly responseSerialize: (value: HealthCheckResponse) => Buffer<Uint8Array<ArrayBufferLike>>;
22
- readonly responseDeserialize: (value: Buffer) => HealthCheckResponse;
23
- };
24
- readonly watch: {
25
- readonly path: "/grpc.health.v1.Health/Watch";
26
- readonly requestStream: false;
27
- readonly responseStream: true;
28
- readonly requestSerialize: (value: HealthCheckRequest) => Buffer<Uint8Array<ArrayBufferLike>>;
29
- readonly requestDeserialize: (value: Buffer) => HealthCheckRequest;
30
- readonly responseSerialize: (value: HealthCheckResponse) => Buffer<Uint8Array<ArrayBufferLike>>;
31
- readonly responseDeserialize: (value: Buffer) => HealthCheckResponse;
32
- };
33
- };
15
+ Health: typeof Health;
34
16
  };
35
- generic: {
36
- HealthDefinition: {
37
- readonly name: "Health";
38
- readonly fullName: "grpc.health.v1.Health";
39
- readonly methods: {
40
- readonly check: {
41
- readonly name: "Check";
42
- readonly requestType: {
43
- $type: "grpc.health.v1.HealthCheckRequest";
44
- encode(message: HealthCheckRequest, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
45
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): HealthCheckRequest;
46
- fromJSON(object: any): HealthCheckRequest;
47
- toJSON(message: HealthCheckRequest): unknown;
48
- create(base?: {
49
- readonly service?: string | undefined;
50
- }): HealthCheckRequest;
51
- fromPartial(object: {
52
- readonly service?: string | undefined;
53
- }): HealthCheckRequest;
54
- };
55
- readonly requestStream: false;
56
- readonly responseType: {
57
- $type: "grpc.health.v1.HealthCheckResponse";
58
- encode(message: HealthCheckResponse, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
59
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): HealthCheckResponse;
60
- fromJSON(object: any): HealthCheckResponse;
61
- toJSON(message: HealthCheckResponse): unknown;
62
- create(base?: {
63
- readonly status?: HealthCheckResponseServingStatus | undefined;
64
- }): HealthCheckResponse;
65
- fromPartial(object: {
66
- readonly status?: HealthCheckResponseServingStatus | undefined;
67
- }): HealthCheckResponse;
68
- };
69
- readonly responseStream: false;
70
- readonly options: {};
71
- };
72
- readonly watch: {
73
- readonly name: "Watch";
74
- readonly requestType: {
75
- $type: "grpc.health.v1.HealthCheckRequest";
76
- encode(message: HealthCheckRequest, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
77
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): HealthCheckRequest;
78
- fromJSON(object: any): HealthCheckRequest;
79
- toJSON(message: HealthCheckRequest): unknown;
80
- create(base?: {
81
- readonly service?: string | undefined;
82
- }): HealthCheckRequest;
83
- fromPartial(object: {
84
- readonly service?: string | undefined;
85
- }): HealthCheckRequest;
86
- };
87
- readonly requestStream: false;
88
- readonly responseType: {
89
- $type: "grpc.health.v1.HealthCheckResponse";
90
- encode(message: HealthCheckResponse, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
91
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): HealthCheckResponse;
92
- fromJSON(object: any): HealthCheckResponse;
93
- toJSON(message: HealthCheckResponse): unknown;
94
- create(base?: {
95
- readonly status?: HealthCheckResponseServingStatus | undefined;
96
- }): HealthCheckResponse;
97
- fromPartial(object: {
98
- readonly status?: HealthCheckResponseServingStatus | undefined;
99
- }): HealthCheckResponse;
100
- };
101
- readonly responseStream: true;
102
- readonly options: {};
103
- };
104
- };
105
- };
17
+ 'generic': {
18
+ HealthDefinition: typeof HealthDefinition;
106
19
  };
107
20
  };
108
- descriptor: Buffer<ArrayBuffer>;
21
+ descriptor: typeof descriptor;
109
22
  };
110
- export default _default;
23
+ declare const pkg: PackageMeta;
24
+ export default pkg;
25
+ export interface IHealthController {
26
+ check(request: HealthCheckRequest, metadata?: Metadata): HealthCheckResponse | Promise<HealthCheckResponse> | Observable<HealthCheckResponse>;
27
+ watch(request: HealthCheckRequest, metadata?: Metadata): Observable<HealthCheckResponse>;
28
+ }
29
+ /**
30
+ * Decorates HealthNatsController methods with
31
+ * @ConsumeRequest() decorator (which is @MessagePattern under the hood).
32
+ * Hence, you don't need any individual method decorating any more.
33
+ */
34
+ export declare function HealthNatsMethods(): any;
35
+ /**
36
+ * @deprecated use IHealthController instead
37
+ */
111
38
  export interface HealthGrpcController {
112
39
  check(request: HealthCheckRequest, metadata?: Metadata): HealthCheckResponse | Promise<HealthCheckResponse> | Observable<HealthCheckResponse>;
113
40
  watch(request: HealthCheckRequest, metadata?: Metadata): Observable<HealthCheckResponse>;
@@ -115,7 +42,7 @@ export interface HealthGrpcController {
115
42
  /**
116
43
  * Decorates HealthGrpcController methods with
117
44
  * @GrpcStreamMethod() and @GrpcMethod() decorators (which are @MessagePattern
118
- * under the hood). Hense, you don't need any individual method decorating
45
+ * under the hood). Hence, you don't need any individual method decorating
119
46
  * any more.
120
47
  */
121
48
  export declare function HealthGrpcMethods(): any;
@@ -130,16 +57,34 @@ export interface HealthClient<CallOptionsExt = {}> {
130
57
  * @see https://github.com/deeplay-io/nice-grpc/tree/master/packages/nice-grpc#client
131
58
  */
132
59
  export declare function createHealthClient<CallOptionsExt = {}>(channel: ChannelImplementation, defaultCallOptions?: DefaultCallOptions<NormalizedServiceDefinition<HealthDefinition>>): HealthClient<CallOptionsExt>;
133
- export { HealthCheckResponseServingStatus };
134
60
  export { HealthCheckRequest };
135
61
  export { HealthCheckResponse };
62
+ export { HealthCheckResponseServingStatus };
136
63
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
137
- export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
138
- $case: string;
64
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
65
+ readonly $case: string;
66
+ value: unknown;
139
67
  } ? {
140
- [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
141
- } & {
142
- $case: T["$case"];
68
+ readonly $case: T["$case"];
69
+ value?: DeepPartial<T["value"]>;
143
70
  } : T extends {} ? {
144
71
  [K in keyof T]?: DeepPartial<T[K]>;
145
72
  } : Partial<T>;
73
+ export type DeepNonNullable<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepNonNullable<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepNonNullable<U>> : T extends {
74
+ readonly $case: string;
75
+ value: unknown;
76
+ } ? {
77
+ readonly $case: T["$case"];
78
+ value: DeepNonNullable<T["value"]>;
79
+ } : T extends {} ? {
80
+ [K in keyof T]: DeepNonNullable<NonNullable<T[K]>>;
81
+ } : NonNullable<T>;
82
+ export type DeepNonUndefined<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepNonUndefined<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepNonUndefined<U>> : T extends {
83
+ readonly $case: string;
84
+ value: unknown;
85
+ } ? {
86
+ readonly $case: T["$case"];
87
+ value: DeepNonUndefined<T["value"]>;
88
+ } : T extends {} ? {
89
+ [K in keyof T]: DeepNonUndefined<Exclude<T[K], undefined>>;
90
+ } : Exclude<T, undefined>;
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HealthCheckResponse = exports.HealthCheckRequest = exports.HealthCheckResponseServingStatus = void 0;
3
+ exports.HealthCheckResponseServingStatus = exports.HealthCheckResponse = exports.HealthCheckRequest = void 0;
4
+ exports.HealthNatsMethods = HealthNatsMethods;
4
5
  exports.HealthGrpcMethods = HealthGrpcMethods;
5
6
  exports.createHealthClient = createHealthClient;
6
7
  // *Service is definition from grpc-js (used for Nest.js gRPC transport)
7
8
  // *Definition is generic definition (used for NiceGrpc clients)
8
9
  const health_1 = require("./grpc/health/v1/health");
9
10
  const health_2 = require("./grpc/health/v1/health");
10
- Object.defineProperty(exports, "HealthCheckResponseServingStatus", { enumerable: true, get: function () { return health_2.HealthCheckResponseServingStatus; } });
11
+ Object.defineProperty(exports, "HealthCheckRequest", { enumerable: true, get: function () { return health_2.HealthCheckRequest; } });
11
12
  const health_3 = require("./grpc/health/v1/health");
12
- Object.defineProperty(exports, "HealthCheckRequest", { enumerable: true, get: function () { return health_3.HealthCheckRequest; } });
13
+ Object.defineProperty(exports, "HealthCheckResponse", { enumerable: true, get: function () { return health_3.HealthCheckResponse; } });
13
14
  const health_4 = require("./grpc/health/v1/health");
14
- Object.defineProperty(exports, "HealthCheckResponse", { enumerable: true, get: function () { return health_4.HealthCheckResponse; } });
15
+ Object.defineProperty(exports, "HealthCheckResponseServingStatus", { enumerable: true, get: function () { return health_4.HealthCheckResponseServingStatus; } });
15
16
  const descriptor_1 = require("./descriptor");
16
- // Actual 'Package' meta information
17
- // TODO type it with Package interface from @platform/grpc when it is deployed
18
- exports.default = {
17
+ const pkg = {
19
18
  name: 'grpc.health.v1',
20
19
  definitions: {
21
20
  'grpc-js': { Health: health_1.HealthService },
@@ -23,29 +22,59 @@ exports.default = {
23
22
  },
24
23
  descriptor: descriptor_1.descriptor,
25
24
  };
25
+ exports.default = pkg;
26
26
  // Just helper function to ease decorators generation
27
27
  function apply(decorator, constructor, method, serviceName) {
28
28
  const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
29
- decorator(serviceName, method)(constructor.prototype[method], method, descriptor);
29
+ if (descriptor) {
30
+ decorator(serviceName, method)(constructor.prototype[method], method, descriptor);
31
+ /**
32
+ * NOTE: In @nestjs/microservices starting from version 10.4.9,
33
+ * the @GrpcStreamMethod decorator replaces the function in the descriptor
34
+ * (see: https://github.com/nestjs/nest/blob/v10.4.9/packages/microservices/decorators/message-pattern.decorator.ts#L151).
35
+ *
36
+ * This fix explicitly redefines the method with the modified descriptor
37
+ * to ensure the new wrapper function is preserved
38
+ * and the request does not hang.
39
+ */
40
+ Object.defineProperty(constructor.prototype, method, descriptor);
41
+ }
42
+ }
43
+ function applyRequest(decorator, constructor, method, request, response) {
44
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
45
+ decorator(request, response)(constructor.prototype[method], method, descriptor);
46
+ }
47
+ function requireProjectDependency(requireId) {
48
+ try {
49
+ // if install from npm registry
50
+ return require(requireId);
51
+ }
52
+ catch {
53
+ // if install as local package over `file:../`
54
+ // https://classic.yarnpkg.com/lang/en/docs/pnp/troubleshooting/#toc-is-trying-to-require-without-it-being-listed-in-its-dependencies
55
+ return require(require.resolve(requireId, { paths: [process.cwd()] }));
56
+ }
57
+ }
58
+ /**
59
+ * Decorates HealthNatsController methods with
60
+ * @ConsumeRequest() decorator (which is @MessagePattern under the hood).
61
+ * Hence, you don't need any individual method decorating any more.
62
+ */
63
+ function HealthNatsMethods() {
64
+ const { Controller, applyDecorators } = requireProjectDependency('@nestjs/common');
65
+ const { ConsumeRequest } = requireProjectDependency('@rsdk/nats.transport');
66
+ return applyDecorators(Controller(), function (constructor) {
67
+ applyRequest(ConsumeRequest, constructor, 'check', health_2.HealthCheckRequest, health_3.HealthCheckResponse);
68
+ applyRequest(ConsumeRequest, constructor, 'watch', health_2.HealthCheckRequest, health_3.HealthCheckResponse);
69
+ });
30
70
  }
31
71
  /**
32
72
  * Decorates HealthGrpcController methods with
33
73
  * @GrpcStreamMethod() and @GrpcMethod() decorators (which are @MessagePattern
34
- * under the hood). Hense, you don't need any individual method decorating
74
+ * under the hood). Hence, you don't need any individual method decorating
35
75
  * any more.
36
76
  */
37
77
  function HealthGrpcMethods() {
38
- const requireProjectDependency = (requireId) => {
39
- try {
40
- // if install from npm registry
41
- return require(requireId);
42
- }
43
- catch {
44
- // if install as local package over `file:../`
45
- // https://classic.yarnpkg.com/lang/en/docs/pnp/troubleshooting/#toc-is-trying-to-require-without-it-being-listed-in-its-dependencies
46
- return require(require.resolve(requireId, { paths: [process.cwd()] }));
47
- }
48
- };
49
78
  const { Controller, applyDecorators } = requireProjectDependency('@nestjs/common');
50
79
  const { GrpcMethod, GrpcStreamMethod } = requireProjectDependency('@nestjs/microservices');
51
80
  return applyDecorators(Controller(), function (constructor) {
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.health.v1.js","sourceRoot":"","sources":["../.generated/grpc.health.v1.ts"],"names":[],"mappings":";;;AA0DE,8CAoBC;AAaD,gDAGC;AA7ED,wEAAwE;AACxE,gEAAgE;AAC9D,oDAAoF;AACpF,oDAA2E;AA2ElE,iHA3EA,yCAAgC,OA2EA;AA1EzC,oDAA6D;AA2EpD,mGA3EA,2BAAkB,OA2EA;AA1E3B,oDAA8D;AA2ErD,oGA3EA,4BAAmB,OA2EA;AA1E9B,6CAA0C;AAE1C,oCAAoC;AACpC,8EAA8E;AAC9E,kBAAe;IACb,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE;QACX,SAAS,EAAE,EAAE,MAAM,EAAN,sBAAM,EAAE;QACrB,SAAS,EAAE,EAAE,gBAAgB,EAAhB,yBAAgB,EAAE;KAChC;IACD,UAAU,EAAE,uBAAU;CACvB,CAAC;AACF,qDAAqD;AACrD,SAAS,KAAK,CAAC,SAAmB,EAAE,WAAqB,EAAE,MAAc,EAAE,WAAmB;IAC5F,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CACtD,WAAW,CAAC,SAAS,EACrB,MAAM,CACP,CAAC;IACF,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAC5B,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAC7B,MAAM,EACN,UAAU,CACX,CAAC;AACJ,CAAC;AAMD;;;;;EAKE;AACF,SAAgB,iBAAiB;IAC/B,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAO,EAAE;QAC1D,IAAI,CAAC;YACH,+BAA+B;YAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,qIAAqI;YACrI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC,CAAA;IACD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IACnF,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC3F,OAAO,eAAe,CACpB,UAAU,EAAE,EACZ,UAAU,WAAqB;QAC3B,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC,CACF,CAAC;AACJ,CAAC;AAOD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAsB,OAA8B,EAAE,kBAAsF;IAC5K,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,yBAAgB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"grpc.health.v1.js","sourceRoot":"","sources":["../.generated/grpc.health.v1.ts"],"names":[],"mappings":"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"}
@@ -3,72 +3,43 @@ import type { ChannelImplementation } from '@grpc/grpc-js/build/src/channel';
3
3
  import type { CallOptions, DefaultCallOptions } from 'nice-grpc';
4
4
  import type { NormalizedServiceDefinition } from 'nice-grpc/lib/service-definitions';
5
5
  import type { Observable } from 'rxjs';
6
- import { MetricsDefinition } from './grpc/metrics/v1/metrics';
6
+ import { MetricsService as Metrics, MetricsDefinition } from './grpc/metrics/v1/metrics';
7
7
  import { GetRequest } from './grpc/metrics/v1/metrics';
8
8
  import { GetResponse } from './grpc/metrics/v1/metrics';
9
- declare const _default: {
9
+ import { descriptor } from './descriptor';
10
+ type PackageMeta = {
10
11
  name: string;
11
12
  definitions: {
12
13
  'grpc-js': {
13
- Metrics: {
14
- readonly get: {
15
- readonly path: "/grpc.metrics.v1.Metrics/Get";
16
- readonly requestStream: false;
17
- readonly responseStream: false;
18
- readonly requestSerialize: (value: GetRequest) => Buffer<Uint8Array<ArrayBufferLike>>;
19
- readonly requestDeserialize: (value: Buffer) => GetRequest;
20
- readonly responseSerialize: (value: GetResponse) => Buffer<Uint8Array<ArrayBufferLike>>;
21
- readonly responseDeserialize: (value: Buffer) => GetResponse;
22
- };
23
- };
14
+ Metrics: typeof Metrics;
24
15
  };
25
- generic: {
26
- MetricsDefinition: {
27
- readonly name: "Metrics";
28
- readonly fullName: "grpc.metrics.v1.Metrics";
29
- readonly methods: {
30
- readonly get: {
31
- readonly name: "Get";
32
- readonly requestType: {
33
- $type: "grpc.metrics.v1.GetRequest";
34
- encode(_: GetRequest, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
35
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): GetRequest;
36
- fromJSON(_: any): GetRequest;
37
- toJSON(_: GetRequest): unknown;
38
- create(base?: {}): GetRequest;
39
- fromPartial(_: {}): GetRequest;
40
- };
41
- readonly requestStream: false;
42
- readonly responseType: {
43
- $type: "grpc.metrics.v1.GetResponse";
44
- encode(message: GetResponse, writer?: import("protobufjs").Writer): import("protobufjs").Writer;
45
- decode(input: import("protobufjs").Reader | Uint8Array, length?: number): GetResponse;
46
- fromJSON(object: any): GetResponse;
47
- toJSON(message: GetResponse): unknown;
48
- create(base?: {
49
- readonly metrics?: string | undefined;
50
- }): GetResponse;
51
- fromPartial(object: {
52
- readonly metrics?: string | undefined;
53
- }): GetResponse;
54
- };
55
- readonly responseStream: false;
56
- readonly options: {};
57
- };
58
- };
59
- };
16
+ 'generic': {
17
+ MetricsDefinition: typeof MetricsDefinition;
60
18
  };
61
19
  };
62
- descriptor: Buffer<ArrayBuffer>;
20
+ descriptor: typeof descriptor;
63
21
  };
64
- export default _default;
22
+ declare const pkg: PackageMeta;
23
+ export default pkg;
24
+ export interface IMetricsController {
25
+ get(request: GetRequest, metadata?: Metadata): GetResponse | Promise<GetResponse> | Observable<GetResponse>;
26
+ }
27
+ /**
28
+ * Decorates MetricsNatsController methods with
29
+ * @ConsumeRequest() decorator (which is @MessagePattern under the hood).
30
+ * Hence, you don't need any individual method decorating any more.
31
+ */
32
+ export declare function MetricsNatsMethods(): any;
33
+ /**
34
+ * @deprecated use IMetricsController instead
35
+ */
65
36
  export interface MetricsGrpcController {
66
37
  get(request: GetRequest, metadata?: Metadata): GetResponse | Promise<GetResponse> | Observable<GetResponse>;
67
38
  }
68
39
  /**
69
40
  * Decorates MetricsGrpcController methods with
70
41
  * @GrpcStreamMethod() and @GrpcMethod() decorators (which are @MessagePattern
71
- * under the hood). Hense, you don't need any individual method decorating
42
+ * under the hood). Hence, you don't need any individual method decorating
72
43
  * any more.
73
44
  */
74
45
  export declare function MetricsGrpcMethods(): any;
@@ -85,12 +56,30 @@ export declare function createMetricsClient<CallOptionsExt = {}>(channel: Channe
85
56
  export { GetRequest };
86
57
  export { GetResponse };
87
58
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
88
- export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
89
- $case: string;
59
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
60
+ readonly $case: string;
61
+ value: unknown;
90
62
  } ? {
91
- [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
92
- } & {
93
- $case: T["$case"];
63
+ readonly $case: T["$case"];
64
+ value?: DeepPartial<T["value"]>;
94
65
  } : T extends {} ? {
95
66
  [K in keyof T]?: DeepPartial<T[K]>;
96
67
  } : Partial<T>;
68
+ export type DeepNonNullable<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepNonNullable<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepNonNullable<U>> : T extends {
69
+ readonly $case: string;
70
+ value: unknown;
71
+ } ? {
72
+ readonly $case: T["$case"];
73
+ value: DeepNonNullable<T["value"]>;
74
+ } : T extends {} ? {
75
+ [K in keyof T]: DeepNonNullable<NonNullable<T[K]>>;
76
+ } : NonNullable<T>;
77
+ export type DeepNonUndefined<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepNonUndefined<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepNonUndefined<U>> : T extends {
78
+ readonly $case: string;
79
+ value: unknown;
80
+ } ? {
81
+ readonly $case: T["$case"];
82
+ value: DeepNonUndefined<T["value"]>;
83
+ } : T extends {} ? {
84
+ [K in keyof T]: DeepNonUndefined<Exclude<T[K], undefined>>;
85
+ } : Exclude<T, undefined>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetResponse = exports.GetRequest = void 0;
4
+ exports.MetricsNatsMethods = MetricsNatsMethods;
4
5
  exports.MetricsGrpcMethods = MetricsGrpcMethods;
5
6
  exports.createMetricsClient = createMetricsClient;
6
7
  // *Service is definition from grpc-js (used for Nest.js gRPC transport)
@@ -11,9 +12,7 @@ Object.defineProperty(exports, "GetRequest", { enumerable: true, get: function (
11
12
  const metrics_3 = require("./grpc/metrics/v1/metrics");
12
13
  Object.defineProperty(exports, "GetResponse", { enumerable: true, get: function () { return metrics_3.GetResponse; } });
13
14
  const descriptor_1 = require("./descriptor");
14
- // Actual 'Package' meta information
15
- // TODO type it with Package interface from @platform/grpc when it is deployed
16
- exports.default = {
15
+ const pkg = {
17
16
  name: 'grpc.metrics.v1',
18
17
  definitions: {
19
18
  'grpc-js': { Metrics: metrics_1.MetricsService },
@@ -21,29 +20,58 @@ exports.default = {
21
20
  },
22
21
  descriptor: descriptor_1.descriptor,
23
22
  };
23
+ exports.default = pkg;
24
24
  // Just helper function to ease decorators generation
25
25
  function apply(decorator, constructor, method, serviceName) {
26
26
  const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
27
- decorator(serviceName, method)(constructor.prototype[method], method, descriptor);
27
+ if (descriptor) {
28
+ decorator(serviceName, method)(constructor.prototype[method], method, descriptor);
29
+ /**
30
+ * NOTE: In @nestjs/microservices starting from version 10.4.9,
31
+ * the @GrpcStreamMethod decorator replaces the function in the descriptor
32
+ * (see: https://github.com/nestjs/nest/blob/v10.4.9/packages/microservices/decorators/message-pattern.decorator.ts#L151).
33
+ *
34
+ * This fix explicitly redefines the method with the modified descriptor
35
+ * to ensure the new wrapper function is preserved
36
+ * and the request does not hang.
37
+ */
38
+ Object.defineProperty(constructor.prototype, method, descriptor);
39
+ }
40
+ }
41
+ function applyRequest(decorator, constructor, method, request, response) {
42
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
43
+ decorator(request, response)(constructor.prototype[method], method, descriptor);
44
+ }
45
+ function requireProjectDependency(requireId) {
46
+ try {
47
+ // if install from npm registry
48
+ return require(requireId);
49
+ }
50
+ catch {
51
+ // if install as local package over `file:../`
52
+ // https://classic.yarnpkg.com/lang/en/docs/pnp/troubleshooting/#toc-is-trying-to-require-without-it-being-listed-in-its-dependencies
53
+ return require(require.resolve(requireId, { paths: [process.cwd()] }));
54
+ }
55
+ }
56
+ /**
57
+ * Decorates MetricsNatsController methods with
58
+ * @ConsumeRequest() decorator (which is @MessagePattern under the hood).
59
+ * Hence, you don't need any individual method decorating any more.
60
+ */
61
+ function MetricsNatsMethods() {
62
+ const { Controller, applyDecorators } = requireProjectDependency('@nestjs/common');
63
+ const { ConsumeRequest } = requireProjectDependency('@rsdk/nats.transport');
64
+ return applyDecorators(Controller(), function (constructor) {
65
+ applyRequest(ConsumeRequest, constructor, 'get', metrics_2.GetRequest, metrics_3.GetResponse);
66
+ });
28
67
  }
29
68
  /**
30
69
  * Decorates MetricsGrpcController methods with
31
70
  * @GrpcStreamMethod() and @GrpcMethod() decorators (which are @MessagePattern
32
- * under the hood). Hense, you don't need any individual method decorating
71
+ * under the hood). Hence, you don't need any individual method decorating
33
72
  * any more.
34
73
  */
35
74
  function MetricsGrpcMethods() {
36
- const requireProjectDependency = (requireId) => {
37
- try {
38
- // if install from npm registry
39
- return require(requireId);
40
- }
41
- catch {
42
- // if install as local package over `file:../`
43
- // https://classic.yarnpkg.com/lang/en/docs/pnp/troubleshooting/#toc-is-trying-to-require-without-it-being-listed-in-its-dependencies
44
- return require(require.resolve(requireId, { paths: [process.cwd()] }));
45
- }
46
- };
47
75
  const { Controller, applyDecorators } = requireProjectDependency('@nestjs/common');
48
76
  const { GrpcMethod, GrpcStreamMethod } = requireProjectDependency('@nestjs/microservices');
49
77
  return applyDecorators(Controller(), function (constructor) {
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.metrics.v1.js","sourceRoot":"","sources":["../.generated/grpc.metrics.v1.ts"],"names":[],"mappings":";;;AAwDE,gDAmBC;AAYD,kDAGC;AAzED,wEAAwE;AACxE,gEAAgE;AAC9D,uDAAyF;AACzF,uDAAuD;AAuE9C,2FAvEA,oBAAU,OAuEA;AAtEnB,uDAAwD;AAuE/C,4FAvEA,qBAAW,OAuEA;AAtEtB,6CAA0C;AAE1C,oCAAoC;AACpC,8EAA8E;AAC9E,kBAAe;IACb,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE;QACX,SAAS,EAAE,EAAE,OAAO,EAAP,wBAAO,EAAE;QACtB,SAAS,EAAE,EAAE,iBAAiB,EAAjB,2BAAiB,EAAE;KACjC;IACD,UAAU,EAAE,uBAAU;CACvB,CAAC;AACF,qDAAqD;AACrD,SAAS,KAAK,CAAC,SAAmB,EAAE,WAAqB,EAAE,MAAc,EAAE,WAAmB;IAC5F,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CACtD,WAAW,CAAC,SAAS,EACrB,MAAM,CACP,CAAC;IACF,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAC5B,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAC7B,MAAM,EACN,UAAU,CACX,CAAC;AACJ,CAAC;AAKD;;;;;EAKE;AACF,SAAgB,kBAAkB;IAChC,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAO,EAAE;QAC1D,IAAI,CAAC;YACH,+BAA+B;YAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,qIAAqI;YACrI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC,CAAA;IACD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IACnF,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC3F,OAAO,eAAe,CACpB,UAAU,EAAE,EACZ,UAAU,WAAqB;QAC3B,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CACF,CAAC;AACJ,CAAC;AAMD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAsB,OAA8B,EAAE,kBAAuF;IAC9K,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,2BAAiB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"grpc.metrics.v1.js","sourceRoot":"","sources":["../.generated/grpc.metrics.v1.ts"],"names":[],"mappings":"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"}