@lad-tech/nsc-toolkit 0.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.
- package/.eslintrc.js +105 -0
- package/.github/workflows/publish-package-to-npmjs.yml +18 -0
- package/.prettierrc.json +9 -0
- package/LICENSE +21 -0
- package/README.md +118 -0
- package/dist/Client.js +198 -0
- package/dist/Client.js.map +1 -0
- package/dist/Method.js +7 -0
- package/dist/Method.js.map +1 -0
- package/dist/Root.js +66 -0
- package/dist/Root.js.map +1 -0
- package/dist/Service.js +387 -0
- package/dist/Service.js.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/injector.js +39 -0
- package/dist/injector.js.map +1 -0
- package/dist/interfaces.js +4 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/types/Client.d.ts +25 -0
- package/dist/types/Method.d.ts +6 -0
- package/dist/types/Root.d.ts +26 -0
- package/dist/types/Service.d.ts +78 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/injector.d.ts +11 -0
- package/dist/types/interfaces.d.ts +72 -0
- package/examples/HttpGate/index.ts +61 -0
- package/examples/HttpGate/package-lock.json +835 -0
- package/examples/HttpGate/package.json +15 -0
- package/examples/LogicService/index.ts +16 -0
- package/examples/LogicService/interfaces.ts +10 -0
- package/examples/LogicService/methods/WeirdSum.ts +20 -0
- package/examples/LogicService/service.json +31 -0
- package/examples/LogicService/service.ts +15 -0
- package/examples/MathService/Untitled-1.json +62 -0
- package/examples/MathService/index.ts +22 -0
- package/examples/MathService/interfaces.ts +26 -0
- package/examples/MathService/methods/Fibonacci.ts +29 -0
- package/examples/MathService/methods/Sum.ts +16 -0
- package/examples/MathService/methods/SumStream.ts +18 -0
- package/examples/MathService/service.json +64 -0
- package/examples/MathService/service.ts +18 -0
- package/examples/SimpleCache.ts +21 -0
- package/examples/misc/trace_1.png +0 -0
- package/examples/misc/trace_2.png +0 -0
- package/package.json +41 -0
- package/src/Client.ts +237 -0
- package/src/Method.ts +7 -0
- package/src/Root.ts +69 -0
- package/src/Service.ts +419 -0
- package/src/index.ts +5 -0
- package/src/injector.ts +43 -0
- package/src/interfaces.ts +89 -0
- package/tsconfig.json +19 -0
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
root: true,
|
|
3
|
+
parser: '@typescript-eslint/parser',
|
|
4
|
+
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
|
|
5
|
+
plugins: ['@typescript-eslint', 'prettier'],
|
|
6
|
+
parserOptions: {
|
|
7
|
+
ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
|
|
8
|
+
},
|
|
9
|
+
env: {
|
|
10
|
+
node: true,
|
|
11
|
+
es2021: true,
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
rules: {
|
|
15
|
+
'@typescript-eslint/no-this-alias': [1],
|
|
16
|
+
'function-paren-newline': 0,
|
|
17
|
+
'@typescript-eslint/semi': [0],
|
|
18
|
+
'@typescript-eslint/no-namespace': [0],
|
|
19
|
+
'@typescript-eslint/no-non-null-asserted-optional-chain': [0],
|
|
20
|
+
'@typescript-eslint/no-explicit-any': [0],
|
|
21
|
+
'@typescript-eslint/no-unused-vars': [1],
|
|
22
|
+
'no-unused-vars': [0],
|
|
23
|
+
semi: 'off',
|
|
24
|
+
'comma-dangle': [0, 'always-multiline'],
|
|
25
|
+
'spaced-comment': 0,
|
|
26
|
+
'no-extra-semi': [2],
|
|
27
|
+
'react/prop-types': 0,
|
|
28
|
+
'no-extra-boolean-cast': 0,
|
|
29
|
+
'quote-props': 0,
|
|
30
|
+
'object-curly-spacing': ['error', 'always'],
|
|
31
|
+
camelcase: 0,
|
|
32
|
+
'no-nested-ternary': 0,
|
|
33
|
+
'no-constant-condition': 0,
|
|
34
|
+
'no-useless-escape': 0,
|
|
35
|
+
'no-async-promise-executor': [0],
|
|
36
|
+
'prefer-rest-params': 0,
|
|
37
|
+
'no-inner-declarations': 0,
|
|
38
|
+
'react/jsx-wrap-multilines': 0,
|
|
39
|
+
'object-curly-newline': 0,
|
|
40
|
+
'operator-linebreak': 0,
|
|
41
|
+
'no-unused-expressions': 0,
|
|
42
|
+
'global-require': 0,
|
|
43
|
+
'max-len': 0,
|
|
44
|
+
'import/no-cycle': 0,
|
|
45
|
+
'no-underscore-dangle': 0,
|
|
46
|
+
'no-return-assign': 0,
|
|
47
|
+
'import/prefer-default-export': 0,
|
|
48
|
+
'jsx-quotes': ['error', 'prefer-double'],
|
|
49
|
+
'arrow-parens': 0,
|
|
50
|
+
'eol-last': 0,
|
|
51
|
+
'consistent-return': 0,
|
|
52
|
+
'no-console': [0],
|
|
53
|
+
'no-angle-bracket-type-assertion': [0],
|
|
54
|
+
'ordered-imports': [0],
|
|
55
|
+
'object-literal-sort-keys': [0],
|
|
56
|
+
'no-string-literal': [0],
|
|
57
|
+
eofline: [0],
|
|
58
|
+
'only-arrow-functions': [0],
|
|
59
|
+
forin: [0],
|
|
60
|
+
'no-big-function': [0],
|
|
61
|
+
'cognitive-complexity': [0],
|
|
62
|
+
'member-ordering': [
|
|
63
|
+
0,
|
|
64
|
+
{
|
|
65
|
+
order: 'fields-first',
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
'no-shadowed-variable': [0],
|
|
69
|
+
'no-unused-expression': [0],
|
|
70
|
+
'object-shorthand': [
|
|
71
|
+
'error',
|
|
72
|
+
'always',
|
|
73
|
+
{
|
|
74
|
+
avoidQuotes: true,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
'no-reference': [0],
|
|
78
|
+
'trailing-comma': [
|
|
79
|
+
0,
|
|
80
|
+
{
|
|
81
|
+
multiline: {
|
|
82
|
+
objects: 'always',
|
|
83
|
+
arrays: 'always',
|
|
84
|
+
functions: 'always',
|
|
85
|
+
typeLiterals: 'ignore',
|
|
86
|
+
imports: 'ignore',
|
|
87
|
+
exports: 'ignore',
|
|
88
|
+
},
|
|
89
|
+
singleline: 'never',
|
|
90
|
+
esSpecCompliant: true,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
// Ширяев исправит )
|
|
94
|
+
'no-prototype-builtins': [1],
|
|
95
|
+
'@typescript-eslint/no-non-null-assertion': [1],
|
|
96
|
+
},
|
|
97
|
+
settings: {
|
|
98
|
+
'import/resolver': {
|
|
99
|
+
node: {
|
|
100
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
|
101
|
+
moduleDirectory: ['node_modules', './packages'],
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Publish Package to npmjs
|
|
2
|
+
on:
|
|
3
|
+
release:
|
|
4
|
+
types: [ published ]
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
steps:
|
|
9
|
+
- uses: actions/checkout@v3
|
|
10
|
+
- uses: actions/setup-node@v3
|
|
11
|
+
with:
|
|
12
|
+
node-version: '16.x'
|
|
13
|
+
registry-url: 'https://registry.npmjs.org'
|
|
14
|
+
- run: npm i
|
|
15
|
+
- run: npm run build
|
|
16
|
+
- run: npm publish --access public
|
|
17
|
+
env:
|
|
18
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/.prettierrc.json
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 lad-tech
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
nsc-toolkit (NATS service creator toolkit) - это набор инструментов для создания сервис-ориентированная архитектуры вокруг брокера сообщений [NATS](https://nats.io/). Основная идеология тулкита - это простой инструмент с минимальным количеством зависимостей позволяющий создавать сервисы с помощью интсрументов кодогенерации на основе простого описания в JSON.
|
|
2
|
+
|
|
3
|
+
## Возможности
|
|
4
|
+
|
|
5
|
+
* Простота и минимальное количество зависимостей за счет снижения уровня вариативности.
|
|
6
|
+
* Схема взаимодействия request/reply.
|
|
7
|
+
* Схема взаимодействия pub/sub.
|
|
8
|
+
* Сквозной таймаут для запросов.
|
|
9
|
+
* Трассировки.
|
|
10
|
+
* Использование Web-стримов.
|
|
11
|
+
* Межсервисное кеширование.
|
|
12
|
+
* Валидация входных и выходных параметров методов сервиса в рантайме на основе [JSON Schema](https://json-schema.org/).
|
|
13
|
+
* Логирование с учетом контекста.
|
|
14
|
+
|
|
15
|
+
## Схема описания сервиса
|
|
16
|
+
|
|
17
|
+
Сервисы описываются в JSON файле. Схема:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
22
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"name": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"description": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"methods": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"properties": {
|
|
35
|
+
"action": { "type": "string" },
|
|
36
|
+
"description": { "type": "string" },
|
|
37
|
+
"options": { "$ref": "#/$defs/options" },
|
|
38
|
+
"request": { "type": "object" },
|
|
39
|
+
"response": { "type": "object" }
|
|
40
|
+
},
|
|
41
|
+
"required": [ "action", "description", "options" ]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"events": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"additionalProperties": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"properties": {
|
|
49
|
+
"name": { "type": "string" },
|
|
50
|
+
"description": { "type": "string" },
|
|
51
|
+
"message": { "type": "object" }
|
|
52
|
+
},
|
|
53
|
+
"required": [ "action", "description", "options", "message" ]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": [ "name", "description", "methods" ],
|
|
58
|
+
|
|
59
|
+
"$defs": {
|
|
60
|
+
"options": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"properties": {
|
|
63
|
+
"useStream": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"request": { "type": "boolean" },
|
|
67
|
+
"response": { "type": "boolean" }
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"cache": { "type": "number" },
|
|
71
|
+
"runTimeValidation": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"properties": {
|
|
74
|
+
"request": { "type": "boolean" },
|
|
75
|
+
"response": { "type": "boolean" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
- **name** - Название сервиса.
|
|
85
|
+
- **description** - Описание сервиса.
|
|
86
|
+
- **methods** - Набор методов для реализации схемы request/reply
|
|
87
|
+
- **action** - Идентификатор запроса.
|
|
88
|
+
- **description** - Описание метода.
|
|
89
|
+
- **request** - JSON Schema входных данных.
|
|
90
|
+
- **response** - JSON Schema выходных данных.
|
|
91
|
+
- **options** - Настройки метода.
|
|
92
|
+
- **useStream** - Использование Web-стримов для входных и выходных данных.
|
|
93
|
+
- **request** - Web-стрим на входе.
|
|
94
|
+
- **response** - Web-стрим на выходе.
|
|
95
|
+
- **cache** - Кешировать запрос. Задается в минутах.
|
|
96
|
+
- **runTimeValidation** - Использовать run time валидацию параметров
|
|
97
|
+
- **request** - Для входных данных.
|
|
98
|
+
- **response** - Для выходных данных.
|
|
99
|
+
- **events** - Набор событий генерируемый сервисом для реализации схемы pub/sub
|
|
100
|
+
- **name** - Идентификатор события.
|
|
101
|
+
- **description** - Описание события.
|
|
102
|
+
- **event** - JSON Schema события.
|
|
103
|
+
|
|
104
|
+
## Пример использования
|
|
105
|
+
|
|
106
|
+
Пример использования инструментов тулкита находится в папке **exaples**
|
|
107
|
+
|
|
108
|
+
В результате запросов к тестовым сервисам генерируются трассировки следующего вида
|
|
109
|
+
|
|
110
|
+

|
|
111
|
+
|
|
112
|
+

|
|
113
|
+
|
|
114
|
+
## Описание переменных окружения
|
|
115
|
+
|
|
116
|
+
- **DEFAUL_RESPONSE_TIMEOUT** - Внешнее ограничение таймаута при запросе в секундах. Используется при первоначальном формировании времени таймаута в багаже по формуле *Date.now() + DEFAULT_RESPONSE_TIMEOUT*
|
|
117
|
+
|
|
118
|
+
- **OTEL_AGENT** - Хост агента по сбору распределенных трассировок.
|
package/dist/Client.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
4
|
+
const Root_1 = require("./Root");
|
|
5
|
+
const nats_1 = require("nats");
|
|
6
|
+
const opentelemetry = require("@opentelemetry/api");
|
|
7
|
+
const stream_1 = require("stream");
|
|
8
|
+
const http = require("http");
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
const promises_1 = require("timers/promises");
|
|
11
|
+
const ajv_1 = require("ajv");
|
|
12
|
+
class Client extends Root_1.Root {
|
|
13
|
+
constructor(natsConnection, serviceName, baggage, cache) {
|
|
14
|
+
super(natsConnection);
|
|
15
|
+
this.serviceName = serviceName;
|
|
16
|
+
this.baggage = baggage;
|
|
17
|
+
this.cache = cache;
|
|
18
|
+
this.subscriptions = new Map();
|
|
19
|
+
this.REQUEST_HTTP_SETTINGS_TIMEOUT = 1000; // ms
|
|
20
|
+
this.logger.setLocation(serviceName);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Make listener for service events. Auto subscribe and unsubscribe to subject
|
|
24
|
+
*/
|
|
25
|
+
getListener(eventNames, queue) {
|
|
26
|
+
const listener = new stream_1.EventEmitter();
|
|
27
|
+
eventNames.forEach(async (eventName) => {
|
|
28
|
+
const subscription = this.brocker.subscribe(`${this.serviceName}.${eventName}`, { queue });
|
|
29
|
+
this.subscriptions.set(eventName, subscription);
|
|
30
|
+
for await (const event of subscription) {
|
|
31
|
+
const data = (0, nats_1.JSONCodec)().decode(event.data);
|
|
32
|
+
listener.emit(`${eventName}`, data);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return new Proxy(listener, {
|
|
36
|
+
get: (target, prop, receiver) => {
|
|
37
|
+
const method = Reflect.get(target, prop, receiver);
|
|
38
|
+
if (prop === 'off') {
|
|
39
|
+
return (eventName, listener) => {
|
|
40
|
+
this.logger.info('Unsubscribe', eventName);
|
|
41
|
+
const subscription = this.subscriptions.get(eventName);
|
|
42
|
+
subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
|
|
43
|
+
this.subscriptions.delete(eventName);
|
|
44
|
+
return method.call(target, eventName, listener);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return method;
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
createCacheKey(subject, data) {
|
|
52
|
+
const dataHash = (0, crypto_1.createHash)('sha1').update(JSON.stringify(data)).digest('hex');
|
|
53
|
+
return `${this.CACHE_SERVICE_KEY}:${subject}:${dataHash}`;
|
|
54
|
+
}
|
|
55
|
+
validate(data, schema) {
|
|
56
|
+
const requestValidator = new ajv_1.default().compile(schema);
|
|
57
|
+
const valid = requestValidator(data);
|
|
58
|
+
if (!valid) {
|
|
59
|
+
throw new Error(JSON.stringify(requestValidator.errors));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async request(subject, data, { options, request, response }) {
|
|
63
|
+
var _a, _b, _c;
|
|
64
|
+
const tracer = opentelemetry.trace.getTracer('');
|
|
65
|
+
const span = tracer.startSpan(subject, undefined, this.getContext(this.baggage));
|
|
66
|
+
try {
|
|
67
|
+
if (((_a = options === null || options === void 0 ? void 0 : options.runTimeValidation) === null || _a === void 0 ? void 0 : _a.request) && request) {
|
|
68
|
+
this.validate(data, request);
|
|
69
|
+
}
|
|
70
|
+
const { spanId, traceId, traceFlags } = span.spanContext();
|
|
71
|
+
const expired = this.getExpired((_b = this.baggage) === null || _b === void 0 ? void 0 : _b.expired, options === null || options === void 0 ? void 0 : options.timeout);
|
|
72
|
+
const message = { payload: data, baggage: { expired, traceId, spanId, traceFlags } };
|
|
73
|
+
const timeout = expired - Date.now();
|
|
74
|
+
if (timeout <= 0) {
|
|
75
|
+
throw new Error('Timeout request service ' + subject);
|
|
76
|
+
}
|
|
77
|
+
let key = '';
|
|
78
|
+
if ((options === null || options === void 0 ? void 0 : options.cache) && !this.isStream(data) && this.cache) {
|
|
79
|
+
try {
|
|
80
|
+
key = this.createCacheKey(subject, data);
|
|
81
|
+
const result = await Promise.race([this.cache.service.get(key), (0, promises_1.setTimeout)(this.cache.timeout, null)]);
|
|
82
|
+
if (result) {
|
|
83
|
+
return JSON.parse(result);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
this.logger.warn('get cache: ', error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const result = (options === null || options === void 0 ? void 0 : options.useStream)
|
|
91
|
+
? await this.makeHttpRequest(subject, message, options, timeout)
|
|
92
|
+
: await this.makeBrokerRequest(subject, message, timeout);
|
|
93
|
+
if (result.error) {
|
|
94
|
+
throw new Error(result.error.message);
|
|
95
|
+
}
|
|
96
|
+
if (((_c = options === null || options === void 0 ? void 0 : options.runTimeValidation) === null || _c === void 0 ? void 0 : _c.response) && response) {
|
|
97
|
+
this.validate(result.payload, response);
|
|
98
|
+
}
|
|
99
|
+
if ((options === null || options === void 0 ? void 0 : options.cache) && !this.isStream(result.payload) && this.cache) {
|
|
100
|
+
this.cache.service.set(key, JSON.stringify(result.payload), options.cache);
|
|
101
|
+
}
|
|
102
|
+
return result.payload;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
span.setAttribute('error', true);
|
|
106
|
+
span.setAttribute('error.kind', error);
|
|
107
|
+
this.logger.error(error);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
span.end();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async getHTTPSettingsFromRemoteService() {
|
|
115
|
+
const subject = `${this.serviceName}.${this.SERVICE_SUBJECT_FOR_GET_HTTP_SETTINGS}`;
|
|
116
|
+
const result = await this.brocker.request(subject, Buffer.from(JSON.stringify('')), {
|
|
117
|
+
timeout: this.REQUEST_HTTP_SETTINGS_TIMEOUT,
|
|
118
|
+
});
|
|
119
|
+
const { ip, port } = (0, nats_1.JSONCodec)().decode(result.data);
|
|
120
|
+
if (!ip || !port) {
|
|
121
|
+
throw new Error(`Remote service ${this.serviceName} did not return http settings`);
|
|
122
|
+
}
|
|
123
|
+
return { ip, port };
|
|
124
|
+
}
|
|
125
|
+
isStream(data) {
|
|
126
|
+
return data instanceof stream_1.Readable;
|
|
127
|
+
}
|
|
128
|
+
async makeBrokerRequest(subject, message, timeout) {
|
|
129
|
+
try {
|
|
130
|
+
const result = await this.brocker.request(subject, Buffer.from(JSON.stringify(message)), { timeout });
|
|
131
|
+
return (0, nats_1.JSONCodec)().decode(result.data);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return this.buildErrorMessage(error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async makeHttpRequest(subject, message, options, timeout) {
|
|
138
|
+
return new Promise(async (resolve) => {
|
|
139
|
+
const { ip, port } = await this.getHTTPSettingsFromRemoteService();
|
|
140
|
+
const serviceActionPath = subject.split('.');
|
|
141
|
+
const headersFromBaggage = this.convertBaggaggeToExternalHeader(message.baggage);
|
|
142
|
+
const headers = {
|
|
143
|
+
'Content-Type': this.isStream(message.payload) ? 'application/octet-stream' : 'application/json',
|
|
144
|
+
...headersFromBaggage,
|
|
145
|
+
};
|
|
146
|
+
if (!this.isStream(message.payload)) {
|
|
147
|
+
headers['Content-Length'] = Buffer.byteLength(JSON.stringify(message.payload));
|
|
148
|
+
}
|
|
149
|
+
const request = http.request({
|
|
150
|
+
host: ip,
|
|
151
|
+
port,
|
|
152
|
+
path: `/${serviceActionPath.join('/')}`,
|
|
153
|
+
method: 'POST',
|
|
154
|
+
headers,
|
|
155
|
+
timeout,
|
|
156
|
+
}, async (response) => {
|
|
157
|
+
var _a;
|
|
158
|
+
if ((_a = options === null || options === void 0 ? void 0 : options.useStream) === null || _a === void 0 ? void 0 : _a.response) {
|
|
159
|
+
resolve({ payload: response });
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const data = [];
|
|
163
|
+
for await (const chunk of response) {
|
|
164
|
+
data.push(chunk);
|
|
165
|
+
}
|
|
166
|
+
const responseDataString = Buffer.concat(data).toString();
|
|
167
|
+
try {
|
|
168
|
+
resolve(JSON.parse(responseDataString));
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
resolve(this.buildErrorMessage(error));
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
request.on('error', error => {
|
|
175
|
+
resolve(this.buildErrorMessage(error));
|
|
176
|
+
});
|
|
177
|
+
if (this.isStream(message.payload)) {
|
|
178
|
+
message.payload.pipe(request);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
request.write(JSON.stringify(message.payload));
|
|
182
|
+
request.end();
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
convertBaggaggeToExternalHeader(baggage) {
|
|
186
|
+
if (!baggage) {
|
|
187
|
+
return {};
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
'nsc-expired': baggage.expired,
|
|
191
|
+
'nsc-trace-id': baggage.traceId,
|
|
192
|
+
'nsc-span-id': baggage.spanId,
|
|
193
|
+
'nsc-trace-flags': baggage.traceFlags,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
exports.Client = Client;
|
|
198
|
+
//# sourceMappingURL=Client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/Method.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Method.js","sourceRoot":"","sources":["../src/Method.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;CAGtB;AAHD,gCAGC"}
|
package/dist/Root.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Root = void 0;
|
|
4
|
+
const opentelemetry = require("@opentelemetry/api");
|
|
5
|
+
const toolbelt_1 = require("@lad-tech/toolbelt");
|
|
6
|
+
class Root {
|
|
7
|
+
constructor(brocker, cache) {
|
|
8
|
+
this.brocker = brocker;
|
|
9
|
+
this.SERVICE_SUBJECT_FOR_GET_HTTP_SETTINGS = 'get_http_settings';
|
|
10
|
+
this.CACHE_SERVICE_KEY = 'CACHE';
|
|
11
|
+
this.logger = new toolbelt_1.Logs.Logger();
|
|
12
|
+
}
|
|
13
|
+
castToNumber(value) {
|
|
14
|
+
const result = +value;
|
|
15
|
+
if (isNaN(result)) {
|
|
16
|
+
throw new Error(`Невозможно привести значение ${value} к числу`);
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
getSettingFromEnv(name, required = true) {
|
|
21
|
+
const value = process.env[name];
|
|
22
|
+
if (!value && required) {
|
|
23
|
+
throw new Error(`Не установлена обязательная настройка: ${name}`);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Make opentelemetry context from baggagge
|
|
29
|
+
*/
|
|
30
|
+
getContext(baggage) {
|
|
31
|
+
if (baggage) {
|
|
32
|
+
return opentelemetry.trace.setSpanContext(opentelemetry.context.active(), baggage);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getExpired(expired, ownTimeout) {
|
|
36
|
+
try {
|
|
37
|
+
if (!expired) {
|
|
38
|
+
const timeout = ownTimeout || this.castToNumber(this.getSettingFromEnv('DEFAULT_REPONSE_TIMEOUT'));
|
|
39
|
+
return Date.now() + timeout * 1000;
|
|
40
|
+
}
|
|
41
|
+
return expired;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(error);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
buildErrorMessage(error, code) {
|
|
49
|
+
let message = '';
|
|
50
|
+
if (error instanceof Error) {
|
|
51
|
+
message = error.message;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
message = error;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
payload: null,
|
|
58
|
+
error: {
|
|
59
|
+
message,
|
|
60
|
+
code,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.Root = Root;
|
|
66
|
+
//# sourceMappingURL=Root.js.map
|
package/dist/Root.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../src/Root.ts"],"names":[],"mappings":";;;AACA,oDAAoD;AAEpD,iDAA0C;AAE1C,MAAa,IAAI;IAMf,YAAsB,OAAuB,EAAE,KAAoB;QAA7C,YAAO,GAAP,OAAO,CAAgB;QALnC,0CAAqC,GAAG,mBAAmB,CAAC;QAC5D,sBAAiB,GAAG,OAAO,CAAC;QAKpC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAI,CAAC,MAAM,EAAE,CAAC;IAClC,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"}
|