protobuf-platform 1.2.411 → 1.2.413

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.
@@ -0,0 +1,15 @@
1
+ syntax = "proto3";
2
+
3
+ package crypto;
4
+
5
+ service Crypto {
6
+ rpc checkConnection(PingRequest) returns (PongResponse);
7
+ }
8
+
9
+ message PingRequest {
10
+ string ping = 1;
11
+ }
12
+
13
+ message PongResponse {
14
+ string pong = 1;
15
+ }
@@ -0,0 +1,44 @@
1
+ // GENERATED CODE -- DO NOT EDIT!
2
+
3
+ 'use strict';
4
+ var grpc = require('@grpc/grpc-js');
5
+ var crypto_pb = require('./crypto_pb.js');
6
+
7
+ function serialize_crypto_PingRequest(arg) {
8
+ if (!(arg instanceof crypto_pb.PingRequest)) {
9
+ throw new Error('Expected argument of type crypto.PingRequest');
10
+ }
11
+ return Buffer.from(arg.serializeBinary());
12
+ }
13
+
14
+ function deserialize_crypto_PingRequest(buffer_arg) {
15
+ return crypto_pb.PingRequest.deserializeBinary(new Uint8Array(buffer_arg));
16
+ }
17
+
18
+ function serialize_crypto_PongResponse(arg) {
19
+ if (!(arg instanceof crypto_pb.PongResponse)) {
20
+ throw new Error('Expected argument of type crypto.PongResponse');
21
+ }
22
+ return Buffer.from(arg.serializeBinary());
23
+ }
24
+
25
+ function deserialize_crypto_PongResponse(buffer_arg) {
26
+ return crypto_pb.PongResponse.deserializeBinary(new Uint8Array(buffer_arg));
27
+ }
28
+
29
+
30
+ var CryptoService = exports.CryptoService = {
31
+ checkConnection: {
32
+ path: '/crypto.Crypto/checkConnection',
33
+ requestStream: false,
34
+ responseStream: false,
35
+ requestType: crypto_pb.PingRequest,
36
+ responseType: crypto_pb.PongResponse,
37
+ requestSerialize: serialize_crypto_PingRequest,
38
+ requestDeserialize: deserialize_crypto_PingRequest,
39
+ responseSerialize: serialize_crypto_PongResponse,
40
+ responseDeserialize: deserialize_crypto_PongResponse,
41
+ },
42
+ };
43
+
44
+ exports.CryptoClient = grpc.makeGenericClientConstructor(CryptoService, 'Crypto');
@@ -0,0 +1,328 @@
1
+ // source: crypto.proto
2
+ /**
3
+ * @fileoverview
4
+ * @enhanceable
5
+ * @suppress {missingRequire} reports error on implicit type usages.
6
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
7
+ * field starts with 'MSG_' and isn't a translatable message.
8
+ * @public
9
+ */
10
+ // GENERATED CODE -- DO NOT EDIT!
11
+ /* eslint-disable */
12
+ // @ts-nocheck
13
+
14
+ var jspb = require('google-protobuf');
15
+ var goog = jspb;
16
+ var global = (function() {
17
+ if (this) { return this; }
18
+ if (typeof window !== 'undefined') { return window; }
19
+ if (typeof global !== 'undefined') { return global; }
20
+ if (typeof self !== 'undefined') { return self; }
21
+ return Function('return this')();
22
+ }.call(null));
23
+
24
+ goog.exportSymbol('proto.crypto.PingRequest', null, global);
25
+ goog.exportSymbol('proto.crypto.PongResponse', null, global);
26
+ /**
27
+ * Generated by JsPbCodeGenerator.
28
+ * @param {Array=} opt_data Optional initial data array, typically from a
29
+ * server response, or constructed directly in Javascript. The array is used
30
+ * in place and becomes part of the constructed object. It is not cloned.
31
+ * If no data is provided, the constructed object will be empty, but still
32
+ * valid.
33
+ * @extends {jspb.Message}
34
+ * @constructor
35
+ */
36
+ proto.crypto.PingRequest = function(opt_data) {
37
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
38
+ };
39
+ goog.inherits(proto.crypto.PingRequest, jspb.Message);
40
+ if (goog.DEBUG && !COMPILED) {
41
+ /**
42
+ * @public
43
+ * @override
44
+ */
45
+ proto.crypto.PingRequest.displayName = 'proto.crypto.PingRequest';
46
+ }
47
+ /**
48
+ * Generated by JsPbCodeGenerator.
49
+ * @param {Array=} opt_data Optional initial data array, typically from a
50
+ * server response, or constructed directly in Javascript. The array is used
51
+ * in place and becomes part of the constructed object. It is not cloned.
52
+ * If no data is provided, the constructed object will be empty, but still
53
+ * valid.
54
+ * @extends {jspb.Message}
55
+ * @constructor
56
+ */
57
+ proto.crypto.PongResponse = function(opt_data) {
58
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
59
+ };
60
+ goog.inherits(proto.crypto.PongResponse, jspb.Message);
61
+ if (goog.DEBUG && !COMPILED) {
62
+ /**
63
+ * @public
64
+ * @override
65
+ */
66
+ proto.crypto.PongResponse.displayName = 'proto.crypto.PongResponse';
67
+ }
68
+
69
+
70
+
71
+ if (jspb.Message.GENERATE_TO_OBJECT) {
72
+ /**
73
+ * Creates an object representation of this proto.
74
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
75
+ * Optional fields that are not set will be set to undefined.
76
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
77
+ * For the list of reserved names please see:
78
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
79
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
80
+ * JSPB instance for transitional soy proto support:
81
+ * http://goto/soy-param-migration
82
+ * @return {!Object}
83
+ */
84
+ proto.crypto.PingRequest.prototype.toObject = function(opt_includeInstance) {
85
+ return proto.crypto.PingRequest.toObject(opt_includeInstance, this);
86
+ };
87
+
88
+
89
+ /**
90
+ * Static version of the {@see toObject} method.
91
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
92
+ * the JSPB instance for transitional soy proto support:
93
+ * http://goto/soy-param-migration
94
+ * @param {!proto.crypto.PingRequest} msg The msg instance to transform.
95
+ * @return {!Object}
96
+ * @suppress {unusedLocalVariables} f is only used for nested messages
97
+ */
98
+ proto.crypto.PingRequest.toObject = function(includeInstance, msg) {
99
+ var f, obj = {
100
+ ping: jspb.Message.getFieldWithDefault(msg, 1, "")
101
+ };
102
+
103
+ if (includeInstance) {
104
+ obj.$jspbMessageInstance = msg;
105
+ }
106
+ return obj;
107
+ };
108
+ }
109
+
110
+
111
+ /**
112
+ * Deserializes binary data (in protobuf wire format).
113
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
114
+ * @return {!proto.crypto.PingRequest}
115
+ */
116
+ proto.crypto.PingRequest.deserializeBinary = function(bytes) {
117
+ var reader = new jspb.BinaryReader(bytes);
118
+ var msg = new proto.crypto.PingRequest;
119
+ return proto.crypto.PingRequest.deserializeBinaryFromReader(msg, reader);
120
+ };
121
+
122
+
123
+ /**
124
+ * Deserializes binary data (in protobuf wire format) from the
125
+ * given reader into the given message object.
126
+ * @param {!proto.crypto.PingRequest} msg The message object to deserialize into.
127
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
128
+ * @return {!proto.crypto.PingRequest}
129
+ */
130
+ proto.crypto.PingRequest.deserializeBinaryFromReader = function(msg, reader) {
131
+ while (reader.nextField()) {
132
+ if (reader.isEndGroup()) {
133
+ break;
134
+ }
135
+ var field = reader.getFieldNumber();
136
+ switch (field) {
137
+ case 1:
138
+ var value = /** @type {string} */ (reader.readString());
139
+ msg.setPing(value);
140
+ break;
141
+ default:
142
+ reader.skipField();
143
+ break;
144
+ }
145
+ }
146
+ return msg;
147
+ };
148
+
149
+
150
+ /**
151
+ * Serializes the message to binary data (in protobuf wire format).
152
+ * @return {!Uint8Array}
153
+ */
154
+ proto.crypto.PingRequest.prototype.serializeBinary = function() {
155
+ var writer = new jspb.BinaryWriter();
156
+ proto.crypto.PingRequest.serializeBinaryToWriter(this, writer);
157
+ return writer.getResultBuffer();
158
+ };
159
+
160
+
161
+ /**
162
+ * Serializes the given message to binary data (in protobuf wire
163
+ * format), writing to the given BinaryWriter.
164
+ * @param {!proto.crypto.PingRequest} message
165
+ * @param {!jspb.BinaryWriter} writer
166
+ * @suppress {unusedLocalVariables} f is only used for nested messages
167
+ */
168
+ proto.crypto.PingRequest.serializeBinaryToWriter = function(message, writer) {
169
+ var f = undefined;
170
+ f = message.getPing();
171
+ if (f.length > 0) {
172
+ writer.writeString(
173
+ 1,
174
+ f
175
+ );
176
+ }
177
+ };
178
+
179
+
180
+ /**
181
+ * optional string ping = 1;
182
+ * @return {string}
183
+ */
184
+ proto.crypto.PingRequest.prototype.getPing = function() {
185
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
186
+ };
187
+
188
+
189
+ /**
190
+ * @param {string} value
191
+ * @return {!proto.crypto.PingRequest} returns this
192
+ */
193
+ proto.crypto.PingRequest.prototype.setPing = function(value) {
194
+ return jspb.Message.setProto3StringField(this, 1, value);
195
+ };
196
+
197
+
198
+
199
+
200
+
201
+ if (jspb.Message.GENERATE_TO_OBJECT) {
202
+ /**
203
+ * Creates an object representation of this proto.
204
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
205
+ * Optional fields that are not set will be set to undefined.
206
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
207
+ * For the list of reserved names please see:
208
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
209
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
210
+ * JSPB instance for transitional soy proto support:
211
+ * http://goto/soy-param-migration
212
+ * @return {!Object}
213
+ */
214
+ proto.crypto.PongResponse.prototype.toObject = function(opt_includeInstance) {
215
+ return proto.crypto.PongResponse.toObject(opt_includeInstance, this);
216
+ };
217
+
218
+
219
+ /**
220
+ * Static version of the {@see toObject} method.
221
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
222
+ * the JSPB instance for transitional soy proto support:
223
+ * http://goto/soy-param-migration
224
+ * @param {!proto.crypto.PongResponse} msg The msg instance to transform.
225
+ * @return {!Object}
226
+ * @suppress {unusedLocalVariables} f is only used for nested messages
227
+ */
228
+ proto.crypto.PongResponse.toObject = function(includeInstance, msg) {
229
+ var f, obj = {
230
+ pong: jspb.Message.getFieldWithDefault(msg, 1, "")
231
+ };
232
+
233
+ if (includeInstance) {
234
+ obj.$jspbMessageInstance = msg;
235
+ }
236
+ return obj;
237
+ };
238
+ }
239
+
240
+
241
+ /**
242
+ * Deserializes binary data (in protobuf wire format).
243
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
244
+ * @return {!proto.crypto.PongResponse}
245
+ */
246
+ proto.crypto.PongResponse.deserializeBinary = function(bytes) {
247
+ var reader = new jspb.BinaryReader(bytes);
248
+ var msg = new proto.crypto.PongResponse;
249
+ return proto.crypto.PongResponse.deserializeBinaryFromReader(msg, reader);
250
+ };
251
+
252
+
253
+ /**
254
+ * Deserializes binary data (in protobuf wire format) from the
255
+ * given reader into the given message object.
256
+ * @param {!proto.crypto.PongResponse} msg The message object to deserialize into.
257
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
258
+ * @return {!proto.crypto.PongResponse}
259
+ */
260
+ proto.crypto.PongResponse.deserializeBinaryFromReader = function(msg, reader) {
261
+ while (reader.nextField()) {
262
+ if (reader.isEndGroup()) {
263
+ break;
264
+ }
265
+ var field = reader.getFieldNumber();
266
+ switch (field) {
267
+ case 1:
268
+ var value = /** @type {string} */ (reader.readString());
269
+ msg.setPong(value);
270
+ break;
271
+ default:
272
+ reader.skipField();
273
+ break;
274
+ }
275
+ }
276
+ return msg;
277
+ };
278
+
279
+
280
+ /**
281
+ * Serializes the message to binary data (in protobuf wire format).
282
+ * @return {!Uint8Array}
283
+ */
284
+ proto.crypto.PongResponse.prototype.serializeBinary = function() {
285
+ var writer = new jspb.BinaryWriter();
286
+ proto.crypto.PongResponse.serializeBinaryToWriter(this, writer);
287
+ return writer.getResultBuffer();
288
+ };
289
+
290
+
291
+ /**
292
+ * Serializes the given message to binary data (in protobuf wire
293
+ * format), writing to the given BinaryWriter.
294
+ * @param {!proto.crypto.PongResponse} message
295
+ * @param {!jspb.BinaryWriter} writer
296
+ * @suppress {unusedLocalVariables} f is only used for nested messages
297
+ */
298
+ proto.crypto.PongResponse.serializeBinaryToWriter = function(message, writer) {
299
+ var f = undefined;
300
+ f = message.getPong();
301
+ if (f.length > 0) {
302
+ writer.writeString(
303
+ 1,
304
+ f
305
+ );
306
+ }
307
+ };
308
+
309
+
310
+ /**
311
+ * optional string pong = 1;
312
+ * @return {string}
313
+ */
314
+ proto.crypto.PongResponse.prototype.getPong = function() {
315
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
316
+ };
317
+
318
+
319
+ /**
320
+ * @param {string} value
321
+ * @return {!proto.crypto.PongResponse} returns this
322
+ */
323
+ proto.crypto.PongResponse.prototype.setPong = function(value) {
324
+ return jspb.Message.setProto3StringField(this, 1, value);
325
+ };
326
+
327
+
328
+ goog.object.extend(exports, proto.crypto);
package/index.js CHANGED
@@ -37,6 +37,8 @@ const SportService = require('./sport/sport_grpc_pb');
37
37
  const SportServiceMessage = require('./sport/sport_pb');
38
38
  const PokerService = require('./poker/poker_grpc_pb');
39
39
  const PokerServiceMessage = require('./poker/poker_pb');
40
+ const CryptoService = require('./crypto/crypto_grpc_pb');
41
+ const CryptoServiceMessages = require('./crypto/crypto_pb');
40
42
  module.exports = {
41
43
  gRPC: gRPC,
42
44
  maxSendMessageLength: 10388608,
@@ -114,4 +116,8 @@ module.exports = {
114
116
  service: PokerService,
115
117
  messages: PokerServiceMessage
116
118
  },
119
+ crypto: {
120
+ service: CryptoService,
121
+ messages: CryptoServiceMessages
122
+ },
117
123
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protobuf-platform",
3
- "version": "1.2.411",
3
+ "version": "1.2.413",
4
4
  "description": "Protobuf structures",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -162,6 +162,9 @@ message BonusMaskItem {
162
162
  optional string image = 19;
163
163
  optional string mobile_image = 20;
164
164
  optional string deposit_static_amount = 21;
165
+ optional string free_spins_game_title = 22;
166
+ optional string free_spins_game_slug = 23;
167
+ optional string free_spins_game_image = 24;
165
168
  }
166
169
  message BonusMaskResponse {
167
170
  BonusMaskItem data = 1;
@@ -5855,7 +5855,10 @@ proto.promocode.BonusMaskItem.toObject = function(includeInstance, msg) {
5855
5855
  freeSpinsMaxWin: jspb.Message.getFieldWithDefault(msg, 18, ""),
5856
5856
  image: jspb.Message.getFieldWithDefault(msg, 19, ""),
5857
5857
  mobileImage: jspb.Message.getFieldWithDefault(msg, 20, ""),
5858
- depositStaticAmount: jspb.Message.getFieldWithDefault(msg, 21, "")
5858
+ depositStaticAmount: jspb.Message.getFieldWithDefault(msg, 21, ""),
5859
+ freeSpinsGameTitle: jspb.Message.getFieldWithDefault(msg, 22, ""),
5860
+ freeSpinsGameSlug: jspb.Message.getFieldWithDefault(msg, 23, ""),
5861
+ freeSpinsGameImage: jspb.Message.getFieldWithDefault(msg, 24, "")
5859
5862
  };
5860
5863
 
5861
5864
  if (includeInstance) {
@@ -5976,6 +5979,18 @@ proto.promocode.BonusMaskItem.deserializeBinaryFromReader = function(msg, reader
5976
5979
  var value = /** @type {string} */ (reader.readString());
5977
5980
  msg.setDepositStaticAmount(value);
5978
5981
  break;
5982
+ case 22:
5983
+ var value = /** @type {string} */ (reader.readString());
5984
+ msg.setFreeSpinsGameTitle(value);
5985
+ break;
5986
+ case 23:
5987
+ var value = /** @type {string} */ (reader.readString());
5988
+ msg.setFreeSpinsGameSlug(value);
5989
+ break;
5990
+ case 24:
5991
+ var value = /** @type {string} */ (reader.readString());
5992
+ msg.setFreeSpinsGameImage(value);
5993
+ break;
5979
5994
  default:
5980
5995
  reader.skipField();
5981
5996
  break;
@@ -6152,6 +6167,27 @@ proto.promocode.BonusMaskItem.serializeBinaryToWriter = function(message, writer
6152
6167
  f
6153
6168
  );
6154
6169
  }
6170
+ f = /** @type {string} */ (jspb.Message.getField(message, 22));
6171
+ if (f != null) {
6172
+ writer.writeString(
6173
+ 22,
6174
+ f
6175
+ );
6176
+ }
6177
+ f = /** @type {string} */ (jspb.Message.getField(message, 23));
6178
+ if (f != null) {
6179
+ writer.writeString(
6180
+ 23,
6181
+ f
6182
+ );
6183
+ }
6184
+ f = /** @type {string} */ (jspb.Message.getField(message, 24));
6185
+ if (f != null) {
6186
+ writer.writeString(
6187
+ 24,
6188
+ f
6189
+ );
6190
+ }
6155
6191
  };
6156
6192
 
6157
6193
 
@@ -6911,6 +6947,114 @@ proto.promocode.BonusMaskItem.prototype.hasDepositStaticAmount = function() {
6911
6947
  };
6912
6948
 
6913
6949
 
6950
+ /**
6951
+ * optional string free_spins_game_title = 22;
6952
+ * @return {string}
6953
+ */
6954
+ proto.promocode.BonusMaskItem.prototype.getFreeSpinsGameTitle = function() {
6955
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 22, ""));
6956
+ };
6957
+
6958
+
6959
+ /**
6960
+ * @param {string} value
6961
+ * @return {!proto.promocode.BonusMaskItem} returns this
6962
+ */
6963
+ proto.promocode.BonusMaskItem.prototype.setFreeSpinsGameTitle = function(value) {
6964
+ return jspb.Message.setField(this, 22, value);
6965
+ };
6966
+
6967
+
6968
+ /**
6969
+ * Clears the field making it undefined.
6970
+ * @return {!proto.promocode.BonusMaskItem} returns this
6971
+ */
6972
+ proto.promocode.BonusMaskItem.prototype.clearFreeSpinsGameTitle = function() {
6973
+ return jspb.Message.setField(this, 22, undefined);
6974
+ };
6975
+
6976
+
6977
+ /**
6978
+ * Returns whether this field is set.
6979
+ * @return {boolean}
6980
+ */
6981
+ proto.promocode.BonusMaskItem.prototype.hasFreeSpinsGameTitle = function() {
6982
+ return jspb.Message.getField(this, 22) != null;
6983
+ };
6984
+
6985
+
6986
+ /**
6987
+ * optional string free_spins_game_slug = 23;
6988
+ * @return {string}
6989
+ */
6990
+ proto.promocode.BonusMaskItem.prototype.getFreeSpinsGameSlug = function() {
6991
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 23, ""));
6992
+ };
6993
+
6994
+
6995
+ /**
6996
+ * @param {string} value
6997
+ * @return {!proto.promocode.BonusMaskItem} returns this
6998
+ */
6999
+ proto.promocode.BonusMaskItem.prototype.setFreeSpinsGameSlug = function(value) {
7000
+ return jspb.Message.setField(this, 23, value);
7001
+ };
7002
+
7003
+
7004
+ /**
7005
+ * Clears the field making it undefined.
7006
+ * @return {!proto.promocode.BonusMaskItem} returns this
7007
+ */
7008
+ proto.promocode.BonusMaskItem.prototype.clearFreeSpinsGameSlug = function() {
7009
+ return jspb.Message.setField(this, 23, undefined);
7010
+ };
7011
+
7012
+
7013
+ /**
7014
+ * Returns whether this field is set.
7015
+ * @return {boolean}
7016
+ */
7017
+ proto.promocode.BonusMaskItem.prototype.hasFreeSpinsGameSlug = function() {
7018
+ return jspb.Message.getField(this, 23) != null;
7019
+ };
7020
+
7021
+
7022
+ /**
7023
+ * optional string free_spins_game_image = 24;
7024
+ * @return {string}
7025
+ */
7026
+ proto.promocode.BonusMaskItem.prototype.getFreeSpinsGameImage = function() {
7027
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 24, ""));
7028
+ };
7029
+
7030
+
7031
+ /**
7032
+ * @param {string} value
7033
+ * @return {!proto.promocode.BonusMaskItem} returns this
7034
+ */
7035
+ proto.promocode.BonusMaskItem.prototype.setFreeSpinsGameImage = function(value) {
7036
+ return jspb.Message.setField(this, 24, value);
7037
+ };
7038
+
7039
+
7040
+ /**
7041
+ * Clears the field making it undefined.
7042
+ * @return {!proto.promocode.BonusMaskItem} returns this
7043
+ */
7044
+ proto.promocode.BonusMaskItem.prototype.clearFreeSpinsGameImage = function() {
7045
+ return jspb.Message.setField(this, 24, undefined);
7046
+ };
7047
+
7048
+
7049
+ /**
7050
+ * Returns whether this field is set.
7051
+ * @return {boolean}
7052
+ */
7053
+ proto.promocode.BonusMaskItem.prototype.hasFreeSpinsGameImage = function() {
7054
+ return jspb.Message.getField(this, 24) != null;
7055
+ };
7056
+
7057
+
6914
7058
 
6915
7059
 
6916
7060
 
@@ -19,3 +19,4 @@ npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:analytic --grpc
19
19
  npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:scheduler --grpc_out=grpc_js:scheduler --proto_path=./scheduler ./scheduler/*.proto
20
20
  npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:sport --grpc_out=grpc_js:sport --proto_path=./sport ./sport/*.proto
21
21
  npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:poker --grpc_out=grpc_js:poker --proto_path=./poker ./poker/*.proto
22
+ npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:crypto --grpc_out=grpc_js:crypto --proto_path=./crypto ./crypto/*.proto