@lad-tech/nsc-toolkit 1.5.0 → 1.5.1

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 (41) hide show
  1. package/.github/workflows/main_workflow.yml +2 -2
  2. package/CHANGELOG.md +3 -3
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/index.html +1 -1
  5. package/dist/examples/MathService/interfaces.js +4 -0
  6. package/dist/examples/MathService/interfaces.js.map +1 -0
  7. package/dist/src/Client.js +240 -0
  8. package/dist/src/Client.js.map +1 -0
  9. package/dist/src/Method.js +7 -0
  10. package/dist/src/Method.js.map +1 -0
  11. package/dist/src/Root.js +67 -0
  12. package/dist/src/Root.js.map +1 -0
  13. package/dist/src/Service.js +497 -0
  14. package/dist/src/Service.js.map +1 -0
  15. package/dist/src/StreamManager.js +106 -0
  16. package/dist/src/StreamManager.js.map +1 -0
  17. package/dist/src/__tests__/Client.js +184 -0
  18. package/dist/src/__tests__/Client.js.map +1 -0
  19. package/dist/src/__tests__/Root.js +123 -0
  20. package/dist/src/__tests__/Root.js.map +1 -0
  21. package/dist/src/__tests__/Service.js +279 -0
  22. package/dist/src/__tests__/Service.js.map +1 -0
  23. package/dist/src/__tests__/fixtures/MathService/MathHelperInstance.js +7 -0
  24. package/dist/src/__tests__/fixtures/MathService/MathHelperInstance.js.map +1 -0
  25. package/dist/src/__tests__/fixtures/MathService/__mocks__/index.js +7 -0
  26. package/dist/src/__tests__/fixtures/MathService/__mocks__/index.js.map +1 -0
  27. package/dist/src/__tests__/fixtures/MathService/index.js +24 -0
  28. package/dist/src/__tests__/fixtures/MathService/index.js.map +1 -0
  29. package/dist/src/__tests__/fixtures/MathService/math.service.json +125 -0
  30. package/dist/src/__tests__/fixtures/MathService/methods/SumInstanceRelation.js +32 -0
  31. package/dist/src/__tests__/fixtures/MathService/methods/SumInstanceRelation.js.map +1 -0
  32. package/dist/src/__tests__/fixtures/MathService/methods/SumServiceRelation.js +32 -0
  33. package/dist/src/__tests__/fixtures/MathService/methods/SumServiceRelation.js.map +1 -0
  34. package/dist/src/index.js +22 -0
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/src/injector.js +39 -0
  37. package/dist/src/injector.js.map +1 -0
  38. package/dist/src/interfaces.js +4 -0
  39. package/dist/src/interfaces.js.map +1 -0
  40. package/dist/types/examples/MathService/interfaces.d.ts +28 -0
  41. package/package.json +1 -1
@@ -20,10 +20,10 @@ jobs:
20
20
  registry-url: 'https://registry.npmjs.org'
21
21
  - name: Install deps
22
22
  run: npm i
23
- - name: Build
24
- run: npm run build
25
23
  - name: Test
26
24
  run: npm run test
25
+ - name: Build
26
+ run: npm run build
27
27
  - name: Push to NPM
28
28
  if: ${{github.ref == 'refs/heads/main'}}
29
29
  run: npx semantic-release
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- # [1.5.0](https://github.com/lad-tech/nsc-toolkit/compare/v1.4.0...v1.5.0) (2023-01-18)
1
+ ## [1.5.1](https://github.com/lad-tech/nsc-toolkit/compare/v1.5.0...v1.5.1) (2023-01-21)
2
2
 
3
3
 
4
- ### Features
4
+ ### Bug Fixes
5
5
 
6
- * Объединенный CI ([eb097de](https://github.com/lad-tech/nsc-toolkit/commit/eb097de99f3d976ab2fd55c73c6e430ef4991d70))
6
+ * Исправлен workflow ([2730ce3](https://github.com/lad-tech/nsc-toolkit/commit/2730ce32a9614e243674d8e241c00348a3a3999d))
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1674068082028" clover="3.2.0">
3
- <project timestamp="1674068082028" name="All files">
2
+ <coverage generated="1674289970978" clover="3.2.0">
3
+ <project timestamp="1674289970978" name="All files">
4
4
  <metrics statements="530" coveredstatements="449" conditionals="280" coveredconditionals="195" methods="93" coveredmethods="83" elements="903" coveredelements="727" complexity="0" loc="530" ncloc="530" packages="3" files="11" classes="11"/>
5
5
  <package name="src">
6
6
  <metrics statements="502" coveredstatements="421" conditionals="280" coveredconditionals="195" methods="85" coveredmethods="75"/>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2023-01-18T18:54:42.009Z
134
+ at 2023-01-21T08:32:50.958Z
135
135
  </div>
136
136
  <script src="prettify.js"></script>
137
137
  <script>
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // SERVICE
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../examples/MathService/interfaces.ts"],"names":[],"mappings":";AAAA,UAAU"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Client = void 0;
4
+ const opentelemetry = require("@opentelemetry/api");
5
+ const ajv_1 = require("ajv");
6
+ const crypto_1 = require("crypto");
7
+ const http = require("http");
8
+ const nats_1 = require("nats");
9
+ const stream_1 = require("stream");
10
+ const promises_1 = require("timers/promises");
11
+ const Root_1 = require("./Root");
12
+ const StreamManager_1 = require("./StreamManager");
13
+ class Client extends Root_1.Root {
14
+ constructor({ broker, events, loggerOutputFormatter, serviceName, baggage, cache }) {
15
+ super(broker, loggerOutputFormatter);
16
+ this.subscriptions = new Map();
17
+ this.REQUEST_HTTP_SETTINGS_TIMEOUT = 1000; // ms
18
+ this.logger.setLocation(serviceName);
19
+ this.serviceName = serviceName;
20
+ this.baggage = baggage;
21
+ this.cache = cache;
22
+ this.events = events;
23
+ }
24
+ async startWatch(subscription, listener, eventName) {
25
+ for await (const event of subscription) {
26
+ const data = (0, nats_1.JSONCodec)().decode(event.data);
27
+ const message = { data };
28
+ if (this.isJsMessage(event)) {
29
+ message.ack = event.ack.bind(event);
30
+ message.nak = event.nak.bind(event);
31
+ }
32
+ listener.emit(`${eventName}`, message);
33
+ }
34
+ }
35
+ /**
36
+ * Make listener for service events. Auto subscribe and unsubscribe to subject
37
+ */
38
+ getListener(serviceNameFrom, options) {
39
+ if (!this.events) {
40
+ throw new Error('The service does not generate events');
41
+ }
42
+ const listener = new stream_1.EventEmitter();
43
+ return new Proxy(listener, {
44
+ get: (target, prop, receiver) => {
45
+ const method = Reflect.get(target, prop, receiver);
46
+ if (prop === 'on') {
47
+ return async (eventName, handler) => {
48
+ var _a, _b;
49
+ try {
50
+ this.logger.info('Subscribe', eventName);
51
+ const action = (_a = this.events) === null || _a === void 0 ? void 0 : _a.list[eventName];
52
+ if (!action) {
53
+ throw new Error(`The service does not generate ${String(eventName)} event`);
54
+ }
55
+ const isStream = (_b = action.options) === null || _b === void 0 ? void 0 : _b.stream;
56
+ let subscription;
57
+ if (isStream) {
58
+ subscription = await new StreamManager_1.StreamManager({
59
+ broker: this.brocker,
60
+ options: this.events.streamOptions,
61
+ serviceName: this.serviceName,
62
+ }).createConsumer(serviceNameFrom, String(eventName));
63
+ }
64
+ else {
65
+ const queue = (options === null || options === void 0 ? void 0 : options.queue) ? { queue: options.queue } : {};
66
+ subscription = this.brocker.subscribe(`${this.serviceName}.${eventName}`, queue);
67
+ }
68
+ this.subscriptions.set(eventName, subscription);
69
+ this.startWatch(subscription, listener, String(eventName));
70
+ return method.call(target, eventName, handler);
71
+ }
72
+ catch (error) {
73
+ this.logger.error(`Failed subscribe to subject`, error);
74
+ }
75
+ };
76
+ }
77
+ if (prop === 'off') {
78
+ return (eventName, listener) => {
79
+ this.logger.info('Unsubscribe', eventName);
80
+ const subscription = this.subscriptions.get(eventName);
81
+ subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
82
+ this.subscriptions.delete(eventName);
83
+ return method.call(target, eventName, listener);
84
+ };
85
+ }
86
+ return method;
87
+ },
88
+ });
89
+ }
90
+ createCacheKey(subject, data) {
91
+ const dataHash = (0, crypto_1.createHash)('sha1').update(JSON.stringify(data)).digest('hex');
92
+ return `${this.CACHE_SERVICE_KEY}:${subject}:${dataHash}`;
93
+ }
94
+ validate(data, schema) {
95
+ const requestValidator = new ajv_1.default().compile(schema);
96
+ const valid = requestValidator(data);
97
+ if (!valid) {
98
+ throw new Error(JSON.stringify(requestValidator.errors));
99
+ }
100
+ }
101
+ async request(subject, data, { options, request, response }) {
102
+ var _a, _b, _c;
103
+ const tracer = opentelemetry.trace.getTracer('');
104
+ const span = tracer.startSpan(subject, undefined, this.getContext(this.baggage));
105
+ try {
106
+ if (((_a = options === null || options === void 0 ? void 0 : options.runTimeValidation) === null || _a === void 0 ? void 0 : _a.request) && request) {
107
+ this.validate(data, request);
108
+ }
109
+ const { spanId, traceId, traceFlags } = span.spanContext();
110
+ const expired = this.getExpired((_b = this.baggage) === null || _b === void 0 ? void 0 : _b.expired, options === null || options === void 0 ? void 0 : options.timeout);
111
+ const message = { payload: data, baggage: { expired, traceId, spanId, traceFlags } };
112
+ const timeout = expired - Date.now();
113
+ if (timeout <= 0) {
114
+ throw new Error('Timeout request service ' + subject);
115
+ }
116
+ let key = '';
117
+ if ((options === null || options === void 0 ? void 0 : options.cache) && !this.isStream(data) && this.cache) {
118
+ try {
119
+ key = this.createCacheKey(subject, data);
120
+ const result = await Promise.race([this.cache.service.get(key), (0, promises_1.setTimeout)(this.cache.timeout, null)]);
121
+ if (result) {
122
+ return JSON.parse(result);
123
+ }
124
+ }
125
+ catch (error) {
126
+ this.logger.warn('get cache: ', error);
127
+ }
128
+ }
129
+ const result = (options === null || options === void 0 ? void 0 : options.useStream)
130
+ ? await this.makeHttpRequest(subject, message, options, timeout)
131
+ : await this.makeBrokerRequest(subject, message, timeout);
132
+ if (result.error) {
133
+ throw new Error(result.error.message);
134
+ }
135
+ if (((_c = options === null || options === void 0 ? void 0 : options.runTimeValidation) === null || _c === void 0 ? void 0 : _c.response) && response) {
136
+ this.validate(result.payload, response);
137
+ }
138
+ if ((options === null || options === void 0 ? void 0 : options.cache) && !this.isStream(result.payload) && this.cache) {
139
+ this.cache.service.set(key, JSON.stringify(result.payload), options.cache);
140
+ }
141
+ return result.payload;
142
+ }
143
+ catch (error) {
144
+ span.setAttribute('error', true);
145
+ span.setAttribute('error.kind', error);
146
+ this.logger.error(error);
147
+ throw error;
148
+ }
149
+ finally {
150
+ span.end();
151
+ }
152
+ }
153
+ async getHTTPSettingsFromRemoteService() {
154
+ const subject = `${this.serviceName}.${this.SERVICE_SUBJECT_FOR_GET_HTTP_SETTINGS}`;
155
+ const result = await this.brocker.request(subject, Buffer.from(JSON.stringify('')), {
156
+ timeout: this.REQUEST_HTTP_SETTINGS_TIMEOUT,
157
+ });
158
+ const { ip, port } = (0, nats_1.JSONCodec)().decode(result.data);
159
+ if (!ip || !port) {
160
+ throw new Error(`Remote service ${this.serviceName} did not return http settings`);
161
+ }
162
+ return { ip, port };
163
+ }
164
+ isStream(data) {
165
+ return data instanceof stream_1.Readable;
166
+ }
167
+ async makeBrokerRequest(subject, message, timeout) {
168
+ try {
169
+ const result = await this.brocker.request(subject, Buffer.from(JSON.stringify(message)), { timeout });
170
+ return (0, nats_1.JSONCodec)().decode(result.data);
171
+ }
172
+ catch (error) {
173
+ return this.buildErrorMessage(error);
174
+ }
175
+ }
176
+ async makeHttpRequest(subject, message, options, timeout) {
177
+ return new Promise(async (resolve) => {
178
+ const { ip, port } = await this.getHTTPSettingsFromRemoteService();
179
+ const serviceActionPath = subject.split('.');
180
+ const headersFromBaggage = this.convertBaggaggeToExternalHeader(message.baggage);
181
+ const headers = {
182
+ 'Content-Type': this.isStream(message.payload) ? 'application/octet-stream' : 'application/json',
183
+ ...headersFromBaggage,
184
+ };
185
+ if (!this.isStream(message.payload)) {
186
+ headers['Content-Length'] = Buffer.byteLength(JSON.stringify(message.payload));
187
+ }
188
+ const request = http.request({
189
+ host: ip,
190
+ port,
191
+ path: `/${serviceActionPath.join('/')}`,
192
+ method: 'POST',
193
+ headers,
194
+ timeout,
195
+ }, async (response) => {
196
+ var _a;
197
+ if ((_a = options === null || options === void 0 ? void 0 : options.useStream) === null || _a === void 0 ? void 0 : _a.response) {
198
+ resolve({ payload: response });
199
+ return;
200
+ }
201
+ const data = [];
202
+ for await (const chunk of response) {
203
+ data.push(chunk);
204
+ }
205
+ const responseDataString = Buffer.concat(data).toString();
206
+ try {
207
+ resolve(JSON.parse(responseDataString));
208
+ }
209
+ catch (error) {
210
+ resolve(this.buildErrorMessage(error));
211
+ }
212
+ });
213
+ request.on('error', error => {
214
+ resolve(this.buildErrorMessage(error));
215
+ });
216
+ if (this.isStream(message.payload)) {
217
+ message.payload.pipe(request);
218
+ return;
219
+ }
220
+ request.write(JSON.stringify(message.payload));
221
+ request.end();
222
+ });
223
+ }
224
+ convertBaggaggeToExternalHeader(baggage) {
225
+ if (!baggage) {
226
+ return {};
227
+ }
228
+ return {
229
+ 'nsc-expired': baggage.expired,
230
+ 'nsc-trace-id': baggage.traceId,
231
+ 'nsc-span-id': baggage.spanId,
232
+ 'nsc-trace-flags': baggage.traceFlags,
233
+ };
234
+ }
235
+ isJsMessage(message) {
236
+ return !!message.sid;
237
+ }
238
+ }
239
+ exports.Client = Client;
240
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseMethod = void 0;
4
+ class BaseMethod {
5
+ }
6
+ exports.BaseMethod = BaseMethod;
7
+ //# sourceMappingURL=Method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Method.js","sourceRoot":"","sources":["../../src/Method.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;CAGtB;AAHD,gCAGC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Root = void 0;
4
+ const toolbelt_1 = require("@lad-tech/toolbelt");
5
+ const opentelemetry = require("@opentelemetry/api");
6
+ class Root {
7
+ constructor(brocker, outputFormatter) {
8
+ this.brocker = brocker;
9
+ this.SERVICE_SUBJECT_FOR_GET_HTTP_SETTINGS = 'get_http_settings';
10
+ this.CACHE_SERVICE_KEY = 'CACHE';
11
+ this.SUBJECT_DELIMITER = '.';
12
+ this.logger = new toolbelt_1.Logs.Logger({ outputFormatter });
13
+ }
14
+ castToNumber(value) {
15
+ const result = +value;
16
+ if (isNaN(result)) {
17
+ throw new Error(`Невозможно привести значение ${value} к числу`);
18
+ }
19
+ return result;
20
+ }
21
+ getSettingFromEnv(name, required = true) {
22
+ const value = process.env[name];
23
+ if (!value && required) {
24
+ throw new Error(`Не установлена обязательная настройка: ${name}`);
25
+ }
26
+ return value;
27
+ }
28
+ /**
29
+ * Make opentelemetry context from baggagge
30
+ */
31
+ getContext(baggage) {
32
+ if (baggage) {
33
+ return opentelemetry.trace.setSpanContext(opentelemetry.context.active(), baggage);
34
+ }
35
+ }
36
+ getExpired(expired, ownTimeout) {
37
+ try {
38
+ if (!expired) {
39
+ const timeout = ownTimeout || this.castToNumber(this.getSettingFromEnv('DEFAULT_REPONSE_TIMEOUT'));
40
+ return Date.now() + timeout * 1000;
41
+ }
42
+ return expired;
43
+ }
44
+ catch (error) {
45
+ console.error(error);
46
+ process.exit(1);
47
+ }
48
+ }
49
+ buildErrorMessage(error, code) {
50
+ let message = '';
51
+ if (error instanceof Error) {
52
+ message = error.message;
53
+ }
54
+ else {
55
+ message = error;
56
+ }
57
+ return {
58
+ payload: null,
59
+ error: {
60
+ message,
61
+ code,
62
+ },
63
+ };
64
+ }
65
+ }
66
+ exports.Root = Root;
67
+ //# sourceMappingURL=Root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/Root.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAC1C,oDAAoD;AAIpD,MAAa,IAAI;IAMf,YAAsB,OAAuB,EAAE,eAAsC;QAA/D,YAAO,GAAP,OAAO,CAAgB;QAL1B,0CAAqC,GAAG,mBAAmB,CAAC;QAC5D,sBAAiB,GAAG,OAAO,CAAC;QAC5B,sBAAiB,GAAG,GAAG,CAAC;QAIzC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAI,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IACrD,CAAC;IAES,YAAY,CAAC,KAAc;QACnC,MAAM,MAAM,GAAG,CAAC,KAAM,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,UAAU,CAAC,CAAC;SAClE;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,iBAAiB,CAAC,IAAY,EAAE,QAAQ,GAAG,IAAI;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;SACnE;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,OAAiB;QACpC,IAAI,OAAO,EAAE;YACX,OAAO,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;SACpF;IACH,CAAC;IAES,UAAU,CAAC,OAAgB,EAAE,UAAmB;QACxD,IAAI;YACF,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC;aACpC;YACD,OAAO,OAAO,CAAC;SAChB;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC;IAES,iBAAiB,CAAC,KAAqB,EAAE,IAAa;QAC9D,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;SACzB;aAAM;YACL,OAAO,GAAG,KAAK,CAAC;SACjB;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,OAAO;gBACP,IAAI;aACL;SACF,CAAC;IACJ,CAAC;CACF;AA/DD,oBA+DC"}