UNPKG

3.01 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createGrpcMethodMetadata = exports.GrpcStreamCall = exports.GrpcStreamMethod = exports.GrpcMethod = exports.MessagePattern = exports.GrpcMethodStreamingType = void 0;
4/* eslint-disable @typescript-eslint/no-use-before-define */
5const constants_1 = require("../constants");
6const pattern_handler_enum_1 = require("../enums/pattern-handler.enum");
7const enums_1 = require("../enums");
8var GrpcMethodStreamingType;
9(function (GrpcMethodStreamingType) {
10 GrpcMethodStreamingType["NO_STREAMING"] = "no_stream";
11 GrpcMethodStreamingType["RX_STREAMING"] = "rx_stream";
12 GrpcMethodStreamingType["PT_STREAMING"] = "pt_stream";
13})(GrpcMethodStreamingType = exports.GrpcMethodStreamingType || (exports.GrpcMethodStreamingType = {}));
14/**
15 * Subscribes to incoming messages which fulfils chosen pattern.
16 */
17const MessagePattern = (metadata, transport) => {
18 return (target, key, descriptor) => {
19 Reflect.defineMetadata(constants_1.PATTERN_METADATA, metadata, descriptor.value);
20 Reflect.defineMetadata(constants_1.PATTERN_HANDLER_METADATA, pattern_handler_enum_1.PatternHandler.MESSAGE, descriptor.value);
21 Reflect.defineMetadata(constants_1.TRANSPORT_METADATA, transport, descriptor.value);
22 return descriptor;
23 };
24};
25exports.MessagePattern = MessagePattern;
26function GrpcMethod(service, method) {
27 return (target, key, descriptor) => {
28 const metadata = createGrpcMethodMetadata(target, key, service, method);
29 return exports.MessagePattern(metadata, enums_1.Transport.GRPC)(target, key, descriptor);
30 };
31}
32exports.GrpcMethod = GrpcMethod;
33function GrpcStreamMethod(service, method) {
34 return (target, key, descriptor) => {
35 const metadata = createGrpcMethodMetadata(target, key, service, method, GrpcMethodStreamingType.RX_STREAMING);
36 return exports.MessagePattern(metadata, enums_1.Transport.GRPC)(target, key, descriptor);
37 };
38}
39exports.GrpcStreamMethod = GrpcStreamMethod;
40function GrpcStreamCall(service, method) {
41 return (target, key, descriptor) => {
42 const metadata = createGrpcMethodMetadata(target, key, service, method, GrpcMethodStreamingType.PT_STREAMING);
43 return exports.MessagePattern(metadata, enums_1.Transport.GRPC)(target, key, descriptor);
44 };
45}
46exports.GrpcStreamCall = GrpcStreamCall;
47function createGrpcMethodMetadata(target, key, service, method, streaming = GrpcMethodStreamingType.NO_STREAMING) {
48 const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
49 if (!service) {
50 const { name } = target.constructor;
51 return {
52 service: name,
53 rpc: capitalizeFirstLetter(key),
54 streaming,
55 };
56 }
57 if (service && !method) {
58 return { service, rpc: capitalizeFirstLetter(key), streaming };
59 }
60 return { service, rpc: method, streaming };
61}
62exports.createGrpcMethodMetadata = createGrpcMethodMetadata;