@lad-tech/nsc-toolkit 1.5.0 → 1.5.2

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,497 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = void 0;
4
+ const Root_1 = require("./Root");
5
+ const nats_1 = require("nats");
6
+ const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
7
+ const resources_1 = require("@opentelemetry/resources");
8
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
9
+ const api_1 = require("@opentelemetry/api");
10
+ const injector_1 = require("./injector");
11
+ const exporter_jaeger_1 = require("@opentelemetry/exporter-jaeger");
12
+ const stream_1 = require("stream");
13
+ const promises_1 = require("stream/promises");
14
+ const toolbelt_1 = require("@lad-tech/toolbelt");
15
+ const http = require("http");
16
+ const os = require("os");
17
+ const promises_2 = require("timers/promises");
18
+ const util_1 = require("util");
19
+ const StreamManager_1 = require("./StreamManager");
20
+ class Service extends Root_1.Root {
21
+ constructor(options) {
22
+ super(options.brokerConnection, options.loggerOutputFormatter);
23
+ this.options = options;
24
+ this.emitter = {};
25
+ this.subscriptions = [];
26
+ this.httpMethods = new Map();
27
+ this.rootSpans = new Map();
28
+ this.serviceName = options.name;
29
+ this.logger.setLocation(this.serviceName);
30
+ if (options.events) {
31
+ const events = Object.keys(options.events.list);
32
+ this.emitter = events.reduce((result, eventName) => {
33
+ result[eventName] = ((params) => {
34
+ var _a, _b, _c;
35
+ const subject = [options.name];
36
+ const eventOptions = (_a = options.events) === null || _a === void 0 ? void 0 : _a.list[eventName];
37
+ if ((_b = eventOptions === null || eventOptions === void 0 ? void 0 : eventOptions.options) === null || _b === void 0 ? void 0 : _b.stream) {
38
+ const prefix = (_c = options.events) === null || _c === void 0 ? void 0 : _c.streamOptions.prefix;
39
+ if (!prefix) {
40
+ throw new Error(`Stream prefix not set for event ${String(eventName)} marked as stream`);
41
+ }
42
+ subject.push(prefix);
43
+ }
44
+ subject.push(String(eventName));
45
+ this.brocker.publish(subject.join('.'), this.buildMessage(params));
46
+ });
47
+ return result;
48
+ }, this.emitter);
49
+ }
50
+ this.createTracer();
51
+ }
52
+ /**
53
+ * Create global Tracer
54
+ */
55
+ createTracer() {
56
+ const provider = new sdk_trace_base_1.BasicTracerProvider({
57
+ resource: new resources_1.Resource({
58
+ [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: this.options.name,
59
+ }),
60
+ });
61
+ const exporter = new exporter_jaeger_1.JaegerExporter({
62
+ endpoint: this.getSettingFromEnv('OTEL_AGENT', false),
63
+ });
64
+ provider.addSpanProcessor(new sdk_trace_base_1.SimpleSpanProcessor(exporter));
65
+ provider.register();
66
+ }
67
+ /**
68
+ * Wrapper for async methods. Create span
69
+ */
70
+ async perform(func, funcContext, arg, tracer, context) {
71
+ const span = tracer.startSpan(func.name, undefined, context);
72
+ const query = func.apply(funcContext, arg);
73
+ query
74
+ .then(() => span.end())
75
+ .catch(error => {
76
+ span.setAttribute('error', true);
77
+ span.setAttribute('error.kind', error);
78
+ span.end();
79
+ throw error;
80
+ });
81
+ return query;
82
+ }
83
+ /**
84
+ * Creating an object to inject into Method (business logic)
85
+ */
86
+ createObjectWithDependencies(action, tracer, baggage) {
87
+ const services = injector_1.ServiceContainer.get(action);
88
+ const dependences = {};
89
+ if (services === null || services === void 0 ? void 0 : services.size) {
90
+ services.forEach((Dependence, key) => {
91
+ dependences[key] = new Dependence(this.brocker, baggage, this.options.cache);
92
+ });
93
+ }
94
+ const perform = this.perform;
95
+ const context = this.getContext(baggage);
96
+ const instances = injector_1.InstanceContainer.get(action);
97
+ if (instances === null || instances === void 0 ? void 0 : instances.size) {
98
+ instances.forEach((instance, key) => {
99
+ const trap = {
100
+ get(target, propKey, receiver) {
101
+ const method = Reflect.get(target, propKey, receiver);
102
+ if (typeof method === 'function') {
103
+ return function (...args) {
104
+ return perform(method, instance, args, tracer, context);
105
+ };
106
+ }
107
+ else {
108
+ return method;
109
+ }
110
+ },
111
+ };
112
+ dependences[key] = new Proxy(instance, trap);
113
+ });
114
+ }
115
+ dependences['logger'] = new toolbelt_1.Logs.Logger({
116
+ location: `${this.serviceName}.${action}`,
117
+ metadata: baggage,
118
+ outputFormatter: this.options.loggerOutputFormatter,
119
+ });
120
+ return dependences;
121
+ }
122
+ /**
123
+ * Create Method (business logic) context
124
+ */
125
+ createMethodContext(Method, dependencies) {
126
+ const context = new Method();
127
+ for (const key in dependencies) {
128
+ context[key] = dependencies[key];
129
+ }
130
+ context['emitter'] = this.emitter;
131
+ return context;
132
+ }
133
+ /**
134
+ * Create Baggage from span. Expired one-on-one business logic call
135
+ */
136
+ getNextBaggage(span, baggage) {
137
+ const { traceId, spanId, traceFlags } = span.spanContext();
138
+ return { traceId, spanId, traceFlags, expired: baggage === null || baggage === void 0 ? void 0 : baggage.expired };
139
+ }
140
+ /**
141
+ * If there is no baggage. For example, in HTTP Gateway
142
+ */
143
+ getRootBaggage(subject, headers, ownTimeout) {
144
+ const baggage = headers ? this.getBaggageFromHTTPHeader(headers) : undefined;
145
+ const tracer = api_1.trace.getTracer('');
146
+ const context = this.getContext(baggage);
147
+ const span = tracer.startSpan(subject, undefined, context);
148
+ const newBaggage = this.getNextBaggage(span, baggage);
149
+ this.rootSpans.set(newBaggage.traceId, span);
150
+ return {
151
+ ...newBaggage,
152
+ expired: this.getExpired(undefined, ownTimeout),
153
+ };
154
+ }
155
+ /**
156
+ * End root baggage
157
+ */
158
+ endRootSpan(traceId, error) {
159
+ const span = this.rootSpans.get(traceId);
160
+ if (span) {
161
+ if (error) {
162
+ span.setAttribute('error', true);
163
+ span.setAttribute('error.kind', error.message);
164
+ }
165
+ span.end();
166
+ this.rootSpans.delete(traceId);
167
+ }
168
+ }
169
+ buildService(Client, baggage) {
170
+ return new Client(this.brocker, baggage, this.options.cache, this.options.loggerOutputFormatter);
171
+ }
172
+ /**
173
+ * Create service Method for send HTTP settings
174
+ */
175
+ async runServiceMethodForHttp() {
176
+ const subject = `${this.serviceName}.${this.SERVICE_SUBJECT_FOR_GET_HTTP_SETTINGS}`;
177
+ const subscription = this.brocker.subscribe(subject, { queue: this.serviceName });
178
+ this.subscriptions.push(subscription);
179
+ for await (const message of subscription) {
180
+ message.respond(this.buildMessage(this.getHttpSettings()));
181
+ }
182
+ }
183
+ makeHttpSingleResponse(response, data) {
184
+ const responseData = JSON.stringify(data);
185
+ response
186
+ .writeHead(200, {
187
+ 'Content-Length': Buffer.byteLength(responseData),
188
+ 'Content-Type': 'application/json',
189
+ })
190
+ .write(responseData);
191
+ response.end();
192
+ }
193
+ /**
194
+ * Create transform stream for convert object to string in stream pipeline
195
+ */
196
+ getStringifyTransform() {
197
+ return new stream_1.Transform({
198
+ objectMode: true,
199
+ transform(chunk, encoding, push) {
200
+ try {
201
+ if (chunk instanceof Buffer) {
202
+ push(null, chunk);
203
+ }
204
+ const result = JSON.stringify(chunk);
205
+ push(null, result);
206
+ }
207
+ catch (error) {
208
+ push(error);
209
+ }
210
+ },
211
+ });
212
+ }
213
+ makeHttpStreamResponse(response, data) {
214
+ data.payload.on('error', error => {
215
+ this.logger.error(error);
216
+ });
217
+ response.writeHead(200, {
218
+ 'Content-Type': 'application/octet-stream',
219
+ });
220
+ return (0, promises_1.pipeline)(data.payload, this.getStringifyTransform(), response);
221
+ }
222
+ /**
223
+ * Up HTTP server and start listen http routes
224
+ */
225
+ async buildHTTPHandlers() {
226
+ await this.upHTTPServer();
227
+ this.runServiceMethodForHttp();
228
+ this.httpServer.on('request', async (request, response) => {
229
+ var _a, _b, _c, _d;
230
+ try {
231
+ if (request.method !== 'POST' || !request.url) {
232
+ throw new Error('Wrong http request');
233
+ }
234
+ const parsedUrl = request.url.split('/');
235
+ parsedUrl.shift();
236
+ const [serviceName, action, ...other] = parsedUrl;
237
+ const wrongServiceName = this.serviceName !== serviceName;
238
+ const Method = this.httpMethods.get(action);
239
+ if (other.length || wrongServiceName || !Method) {
240
+ throw new Error('Wrong url or service name or action');
241
+ }
242
+ const baggage = this.getBaggageFromHTTPHeader(request.headers);
243
+ if ((_b = (_a = Method.settings.options) === null || _a === void 0 ? void 0 : _a.useStream) === null || _b === void 0 ? void 0 : _b.request) {
244
+ const result = await this.handled(request, Method, baggage);
245
+ if (Method.settings.options.useStream.response && result.payload instanceof stream_1.Readable) {
246
+ this.makeHttpStreamResponse(response, result);
247
+ return;
248
+ }
249
+ this.makeHttpSingleResponse(response, result);
250
+ return;
251
+ }
252
+ const requestDataRaw = [];
253
+ for await (const data of request) {
254
+ requestDataRaw.push(data);
255
+ }
256
+ const requestData = Buffer.concat(requestDataRaw).toString();
257
+ const result = await this.handled(JSON.parse(requestData), Method, baggage);
258
+ if (((_d = (_c = Method.settings.options) === null || _c === void 0 ? void 0 : _c.useStream) === null || _d === void 0 ? void 0 : _d.response) && result.payload instanceof stream_1.Readable) {
259
+ await this.makeHttpStreamResponse(response, result);
260
+ return;
261
+ }
262
+ this.makeHttpSingleResponse(response, result);
263
+ }
264
+ catch (error) {
265
+ this.logger.error(error);
266
+ if (error instanceof Error) {
267
+ this.makeHttpSingleResponse(response, this.buildErrorMessage(error));
268
+ return;
269
+ }
270
+ this.makeHttpSingleResponse(response, this.buildErrorMessage('System unknown error'));
271
+ }
272
+ });
273
+ }
274
+ /**
275
+ * Run business logic for request
276
+ */
277
+ async handled(payload, Method, baggage) {
278
+ const subject = `${this.serviceName}.${Method.settings.action}`;
279
+ const tracer = api_1.trace.getTracer('');
280
+ const context = this.getContext(baggage);
281
+ const span = tracer.startSpan(subject, undefined, context);
282
+ try {
283
+ const requestedDependencies = this.createObjectWithDependencies(Method.settings.action, tracer, this.getNextBaggage(span, baggage));
284
+ const context = this.createMethodContext(Method, requestedDependencies);
285
+ const result = {
286
+ payload: await context.handler.call(context, payload),
287
+ };
288
+ span.end();
289
+ return result;
290
+ }
291
+ catch (error) {
292
+ this.logger.error(error);
293
+ span.setAttribute('error', true);
294
+ span.setAttribute('error.kind', error);
295
+ span.end();
296
+ return this.buildErrorMessage(error);
297
+ }
298
+ }
299
+ /**
300
+ * Start service. Subscribe for subject and up http server
301
+ */
302
+ async start() {
303
+ var _a;
304
+ const { methods } = this.options;
305
+ try {
306
+ methods.forEach(async (Method) => {
307
+ var _a;
308
+ if ((_a = Method.settings.options) === null || _a === void 0 ? void 0 : _a.useStream) {
309
+ this.httpMethods.set(Method.settings.action, Method);
310
+ return;
311
+ }
312
+ const subject = `${this.serviceName}.${Method.settings.action}`;
313
+ const subscription = this.brocker.subscribe(subject, { queue: this.serviceName });
314
+ this.subscriptions.push(subscription);
315
+ for await (const message of subscription) {
316
+ const { payload, baggage } = (0, nats_1.JSONCodec)().decode(message.data);
317
+ try {
318
+ const result = await this.handled(payload, Method, baggage);
319
+ message.respond(this.buildMessage(result));
320
+ }
321
+ catch (error) {
322
+ message.respond(this.buildMessage({ error: error.message }));
323
+ }
324
+ }
325
+ });
326
+ if (this.httpMethods.size > 0) {
327
+ await this.buildHTTPHandlers();
328
+ }
329
+ this.upProbeRoutes();
330
+ this.registerGracefulShutdown();
331
+ if ((_a = this.options.events) === null || _a === void 0 ? void 0 : _a.streamOptions) {
332
+ const streamManager = new StreamManager_1.StreamManager({
333
+ broker: this.brocker,
334
+ options: this.options.events.streamOptions,
335
+ serviceName: this.serviceName,
336
+ outputFormatter: this.options.loggerOutputFormatter,
337
+ });
338
+ await streamManager.createStreams();
339
+ }
340
+ this.logger.info('Service successfully started!');
341
+ }
342
+ catch (error) {
343
+ if (error instanceof Error) {
344
+ this.logger.error(error.name, error.message);
345
+ }
346
+ else {
347
+ this.logger.error('An error occurred while starting the service', error);
348
+ }
349
+ process.exit(1);
350
+ }
351
+ }
352
+ /**
353
+ * Correct finish all connections
354
+ */
355
+ async cleanupAndExit() {
356
+ var _a, _b, _c, _d;
357
+ try {
358
+ const timeout = ((_a = this.options.gracefulShutdown) === null || _a === void 0 ? void 0 : _a.timeout) || 1000;
359
+ this.logger.info('Closing Broker connection');
360
+ await Promise.race([this.options.brokerConnection.drain(), (0, promises_2.setTimeout)(timeout)]);
361
+ if (this.httpServer) {
362
+ this.logger.info('Closing HTTP server');
363
+ const closeHttp = (0, util_1.promisify)(this.httpServer.close);
364
+ await Promise.race([closeHttp, (0, promises_2.setTimeout)(timeout)]);
365
+ }
366
+ if ((_c = (_b = this.options.gracefulShutdown) === null || _b === void 0 ? void 0 : _b.additional) === null || _c === void 0 ? void 0 : _c.length) {
367
+ this.logger.info('Closing additional services');
368
+ for await (const service of (_d = this.options.gracefulShutdown) === null || _d === void 0 ? void 0 : _d.additional) {
369
+ await Promise.race([service.close(), (0, promises_2.setTimeout)(timeout)]);
370
+ }
371
+ }
372
+ if (this.httpProbServer) {
373
+ this.logger.info('Closing HTTP Prob server');
374
+ const closeHttp = (0, util_1.promisify)(this.httpProbServer.close);
375
+ await Promise.race([closeHttp, (0, promises_2.setTimeout)(timeout)]);
376
+ }
377
+ }
378
+ catch (error) {
379
+ this.logger.error('Fail correct finish service', error);
380
+ }
381
+ process.exit(0);
382
+ }
383
+ async stop() {
384
+ await this.cleanupAndExit();
385
+ }
386
+ /**
387
+ * Handler for OS Signal
388
+ */
389
+ handleSignal(signal) {
390
+ return () => {
391
+ this.logger.warn(`signal ${signal} received`);
392
+ this.cleanupAndExit();
393
+ };
394
+ }
395
+ /**
396
+ * Handler for Force OS Signal
397
+ */
398
+ handleFatalError(message) {
399
+ return (err) => {
400
+ this.logger.error(message, err);
401
+ process.exit(1);
402
+ };
403
+ }
404
+ /**
405
+ * Register listeners for Graceful Shutdown
406
+ */
407
+ registerGracefulShutdown() {
408
+ process.on('SIGINT', this.handleSignal('SIGINT'));
409
+ process.on('SIGQUIT', this.handleSignal('SIGQUIT'));
410
+ process.on('SIGTERM', this.handleSignal('SIGTERM'));
411
+ process.on('uncaughtException', this.handleFatalError('Uncaught exception'));
412
+ process.on('unhandledRejection', this.handleFatalError('Unhandled rejection'));
413
+ }
414
+ /**
415
+ * Up Probe Route for container orchestration service
416
+ */
417
+ upProbeRoutes() {
418
+ if (this.httpProbServer) {
419
+ return;
420
+ }
421
+ this.httpProbServer = http.createServer();
422
+ this.httpProbServer.on('request', (request, response) => {
423
+ if (request.url === '/healthcheck' && request.method === 'GET') {
424
+ response.writeHead(200).end();
425
+ return;
426
+ }
427
+ response.writeHead(500).end();
428
+ });
429
+ this.httpProbServer.listen(8081);
430
+ }
431
+ /**
432
+ * Build message for broker
433
+ */
434
+ buildMessage(message) {
435
+ return (0, nats_1.JSONCodec)().encode(message); //Buffer.from(JSON.stringify(message));
436
+ }
437
+ async upHTTPServer() {
438
+ this.httpServer = http.createServer();
439
+ this.ipAddress = this.getMyIpV4();
440
+ this.httpPort = await new Promise((resolve, reject) => {
441
+ this.httpServer = this.httpServer.listen(0, () => {
442
+ const address = this.httpServer.address();
443
+ if (!address) {
444
+ reject(new Error('Failed to get the port number: server is not listening'));
445
+ return;
446
+ }
447
+ if (typeof address === 'string') {
448
+ reject(new Error('Listening on a unix socket is not supported'));
449
+ return;
450
+ }
451
+ resolve(address.port);
452
+ });
453
+ });
454
+ return this.httpServer;
455
+ }
456
+ getMyIpV4() {
457
+ const networkInterfaces = os.networkInterfaces();
458
+ const myIpV4Address = Object.keys(networkInterfaces).reduce((ip, key) => {
459
+ if (ip) {
460
+ return ip;
461
+ }
462
+ const networkInterface = networkInterfaces[key];
463
+ const externalIpV4Interface = networkInterface === null || networkInterface === void 0 ? void 0 : networkInterface.find(item => !item.internal && item.family === 'IPv4');
464
+ if (externalIpV4Interface) {
465
+ return externalIpV4Interface.address;
466
+ }
467
+ return ip;
468
+ }, '');
469
+ if (!myIpV4Address) {
470
+ throw new Error('Failed to get service ip address');
471
+ }
472
+ return myIpV4Address;
473
+ }
474
+ getHttpSettings() {
475
+ return {
476
+ ip: this.ipAddress,
477
+ port: this.httpPort,
478
+ };
479
+ }
480
+ getBaggageFromHTTPHeader(headers) {
481
+ const expired = headers['nsc-expired'] ? +headers['nsc-expired'] : undefined;
482
+ const traceId = headers['nsc-trace-id'];
483
+ const spanId = headers['nsc-span-id'];
484
+ const traceFlags = headers['nsc-trace-flags'] ? +headers['nsc-trace-flags'] : undefined;
485
+ if (traceId && spanId && traceFlags) {
486
+ return {
487
+ traceId,
488
+ spanId,
489
+ traceFlags,
490
+ expired,
491
+ };
492
+ }
493
+ return undefined;
494
+ }
495
+ }
496
+ exports.Service = Service;
497
+ //# sourceMappingURL=Service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Service.js","sourceRoot":"","sources":["../src/Service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamManager = void 0;
4
+ const nats_1 = require("nats");
5
+ const Root_1 = require("./Root");
6
+ class StreamManager extends Root_1.Root {
7
+ constructor(param) {
8
+ super(param.broker, param.outputFormatter);
9
+ this.param = param;
10
+ this.STAR_WILDCARD = '*';
11
+ this.GREATER_WILDCARD = '>';
12
+ this.TWO_WEEKS_IN_SECOND = 1209600;
13
+ this.ONE_DAY_IN_SECOND = 86400;
14
+ this.defaultStreamOption = {
15
+ storage: 'file',
16
+ retentionPolicy: 'limits',
17
+ discardPolicy: 'old',
18
+ messageTTL: this.TWO_WEEKS_IN_SECOND,
19
+ duplicateTrackingTime: this.ONE_DAY_IN_SECOND,
20
+ replication: 1,
21
+ rollUps: true,
22
+ };
23
+ }
24
+ async createStreams() {
25
+ if (!this.jsm) {
26
+ this.jsm = await this.param.broker.jetstreamManager();
27
+ }
28
+ for await (const { action, ...options } of this.param.options.actions) {
29
+ const streamName = this.getStreamName(action);
30
+ const config = {
31
+ name: streamName,
32
+ subjects: [`${this.param.serviceName}.${this.param.options.prefix}.${action}`],
33
+ retention: (options.retentionPolicy || this.defaultStreamOption.retentionPolicy),
34
+ storage: (options.storage || this.defaultStreamOption.storage),
35
+ num_replicas: options.replication || this.defaultStreamOption.replication,
36
+ discard: (options.discardPolicy || this.defaultStreamOption.discardPolicy),
37
+ max_age: this.convertSecondsToNanoseconds(options.messageTTL || this.defaultStreamOption.messageTTL),
38
+ duplicate_window: this.convertSecondsToNanoseconds(options.duplicateTrackingTime || this.defaultStreamOption.duplicateTrackingTime),
39
+ allow_rollup_hdrs: options.rollUps || this.defaultStreamOption.rollUps,
40
+ };
41
+ const existingStream = await this.jsm.streams.info(streamName).catch(error => {
42
+ if (this.isNotFoundStreamError(error)) {
43
+ return null;
44
+ }
45
+ throw error;
46
+ });
47
+ if (!existingStream) {
48
+ await this.jsm.streams.add(config);
49
+ continue;
50
+ }
51
+ await this.jsm.streams.update(streamName, { ...existingStream.config, ...config });
52
+ }
53
+ }
54
+ async createConsumer(serviceNameFrom, eventName, setting) {
55
+ const consumerName = this.capitalizeFirstLetter(serviceNameFrom) + this.capitalizeFirstLetter(eventName);
56
+ const prefix = this.param.options.prefix;
57
+ const subjeсt = `${this.param.serviceName}.${prefix}.${eventName}`;
58
+ const options = (0, nats_1.consumerOpts)();
59
+ options
60
+ .durable(consumerName)
61
+ .manualAck()
62
+ .ackExplicit()
63
+ .maxAckPending((setting === null || setting === void 0 ? void 0 : setting.maxPending) || 10)
64
+ .deliverTo((0, nats_1.createInbox)());
65
+ if (setting === null || setting === void 0 ? void 0 : setting.queue) {
66
+ options.queue(setting.queue);
67
+ }
68
+ if (setting === null || setting === void 0 ? void 0 : setting.deliver) {
69
+ if (setting.deliver === 'new') {
70
+ options.deliverNew();
71
+ }
72
+ if (setting.deliver === 'all') {
73
+ options.deliverAll();
74
+ }
75
+ }
76
+ return this.brocker.jetstream().subscribe(subjeсt, options);
77
+ }
78
+ getStreamName(eventName) {
79
+ const serviceName = this.capitalizeFirstLetter(this.param.serviceName);
80
+ const prefix = this.buildPrefixForStreamName(this.param.options.prefix);
81
+ let streamName = `${serviceName}${prefix}`;
82
+ if (eventName !== this.STAR_WILDCARD && eventName !== this.GREATER_WILDCARD) {
83
+ streamName += this.capitalizeFirstLetter(eventName);
84
+ }
85
+ return streamName;
86
+ }
87
+ isNotFoundStreamError(error) {
88
+ const ERROR_TYPE = 'NatsError';
89
+ const ERROR_NOT_FOUND_STREAM = 'stream not found';
90
+ if (error instanceof Error) {
91
+ return error.name === ERROR_TYPE && error.message === ERROR_NOT_FOUND_STREAM;
92
+ }
93
+ return false;
94
+ }
95
+ buildPrefixForStreamName(prefix) {
96
+ return prefix.split(this.SUBJECT_DELIMITER).map(this.capitalizeFirstLetter).join();
97
+ }
98
+ capitalizeFirstLetter(word) {
99
+ return word.charAt(0).toUpperCase() + word.slice(1);
100
+ }
101
+ convertSecondsToNanoseconds(seconds) {
102
+ return seconds * 1000000000;
103
+ }
104
+ }
105
+ exports.StreamManager = StreamManager;
106
+ //# sourceMappingURL=StreamManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamManager.js","sourceRoot":"","sources":["../src/StreamManager.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Service"), exports);
18
+ __exportStar(require("./Client"), exports);
19
+ __exportStar(require("./Method"), exports);
20
+ __exportStar(require("./injector"), exports);
21
+ __exportStar(require("./interfaces"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B"}