@sima-land/isomorph 11.0.0-alpha.21 → 11.0.0-alpha.22
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/config/node.js +1 -0
- package/config/node.js.map +1 -1
- package/http-client/middleware/logging.js +2 -3
- package/http-client/middleware/logging.js.map +1 -1
- package/http-client/middleware/tracing.d.ts +3 -3
- package/http-client/middleware/tracing.js +13 -8
- package/http-client/middleware/tracing.js.map +1 -1
- package/http-client/utils.d.ts +6 -7
- package/http-client/utils.js +24 -14
- package/http-client/utils.js.map +1 -1
- package/http-server/utils.d.ts +8 -0
- package/http-server/utils.js +16 -1
- package/http-server/utils.js.map +1 -1
- package/package.json +12 -11
- package/preset/node/response.js +14 -6
- package/preset/node/response.js.map +1 -1
package/config/node.js
CHANGED
|
@@ -20,6 +20,7 @@ function createConfigSource() {
|
|
|
20
20
|
// после подключения env-файла формируем источник данных окружения
|
|
21
21
|
const source = { ...process.env };
|
|
22
22
|
// докидываем зашиваемые переменные окружения
|
|
23
|
+
// @todo возможно стоит делать так чтобы переменные из process.env имели приоритет
|
|
23
24
|
if (typeof __ISOMORPH_ENV__ !== 'undefined') {
|
|
24
25
|
Object.assign(source, __ISOMORPH_ENV__);
|
|
25
26
|
}
|
package/config/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":";;;;;;AACA,4CAAyC;AACzC,mCAAgC;AAChC,gDAAwB;AAIxB;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAErC,mEAAmE;IACnE,IAAI,OAAO,EAAE;QACX,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACpE;IAED,kEAAkE;IAClE,MAAM,MAAM,GAAuC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtE,6CAA6C;IAC7C,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":";;;;;;AACA,4CAAyC;AACzC,mCAAgC;AAChC,gDAAwB;AAIxB;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAErC,mEAAmE;IACnE,IAAI,OAAO,EAAE;QACX,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACpE;IAED,kEAAkE;IAClE,MAAM,MAAM,GAAuC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtE,6CAA6C;IAC7C,kFAAkF;IAClF,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAlBD,gDAkBC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.severityFromStatus = exports.loggingMiddleware = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const error_tracking_1 = require("../../error-tracking");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
9
10
|
/**
|
|
10
11
|
* Возвращает новый middleware для логирования запросов.
|
|
11
12
|
* @param logger Логгер.
|
|
@@ -15,9 +16,7 @@ function loggingMiddleware(logger) {
|
|
|
15
16
|
return async function log(config, next, defaults) {
|
|
16
17
|
const { baseURL, url, method = 'get', params, data } = { ...defaults, ...config };
|
|
17
18
|
const readyMethod = method.toUpperCase();
|
|
18
|
-
const readyURL = baseURL
|
|
19
|
-
? `${baseURL.replace(/\/$/, '')}/${(url || '').replace(/^\//, '')}`
|
|
20
|
-
: url;
|
|
19
|
+
const readyURL = (0, utils_1.displayUrl)(baseURL, url);
|
|
21
20
|
try {
|
|
22
21
|
logger.info(new error_tracking_1.SentryBreadcrumb({
|
|
23
22
|
category: 'http.request',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/http-client/middleware/logging.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,yDAAqE;
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/http-client/middleware/logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,10 @@ export declare function tracingMiddleware(tracer: Tracer, rootContext: Context):
|
|
|
15
15
|
* @param defaults Базовый конфиг экземпляра Axios.
|
|
16
16
|
* @return Базовые данные запроса.
|
|
17
17
|
*/
|
|
18
|
-
export declare
|
|
18
|
+
export declare function getRequestInfo(config: AxiosRequestConfig, defaults: AxiosDefaults): {
|
|
19
19
|
method: string;
|
|
20
20
|
url: string;
|
|
21
|
-
foundId?: number
|
|
21
|
+
foundId?: number;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Преобразует строку вида:
|
|
@@ -29,4 +29,4 @@ export declare const getRequestInfo: (config: AxiosRequestConfig, defaults: Axio
|
|
|
29
29
|
* @param url Url.
|
|
30
30
|
* @return Кортеж со строкой и результатом поиска числа.
|
|
31
31
|
*/
|
|
32
|
-
export declare
|
|
32
|
+
export declare function hideFirstId(url: string): [string, number | undefined];
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.hideFirstId = exports.getRequestInfo = exports.tracingMiddleware = void 0;
|
|
4
4
|
const api_1 = require("@opentelemetry/api");
|
|
5
5
|
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
6
7
|
/**
|
|
7
8
|
* Возвращает новый middleware для трассировки исходящих запросов.
|
|
8
9
|
* @param tracer Трейсер.
|
|
@@ -11,7 +12,7 @@ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
|
11
12
|
*/
|
|
12
13
|
function tracingMiddleware(tracer, rootContext) {
|
|
13
14
|
return async function trace(config, next, defaults) {
|
|
14
|
-
const { method, url, foundId } =
|
|
15
|
+
const { method, url, foundId } = getRequestInfo(config, defaults);
|
|
15
16
|
const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);
|
|
16
17
|
span.setAttributes({
|
|
17
18
|
[semantic_conventions_1.SemanticAttributes.HTTP_URL]: url,
|
|
@@ -35,6 +36,7 @@ function tracingMiddleware(tracer, rootContext) {
|
|
|
35
36
|
code: api_1.SpanStatusCode.ERROR,
|
|
36
37
|
message: 'HTTP Request failed',
|
|
37
38
|
});
|
|
39
|
+
span.end();
|
|
38
40
|
// не прячем ошибку
|
|
39
41
|
throw error;
|
|
40
42
|
}
|
|
@@ -49,14 +51,17 @@ exports.tracingMiddleware = tracingMiddleware;
|
|
|
49
51
|
* @param defaults Базовый конфиг экземпляра Axios.
|
|
50
52
|
* @return Базовые данные запроса.
|
|
51
53
|
*/
|
|
52
|
-
|
|
54
|
+
function getRequestInfo(config, defaults) {
|
|
53
55
|
const method = (config.method || 'GET').toUpperCase();
|
|
54
56
|
const baseURL = config.baseURL || defaults.baseURL || '';
|
|
55
57
|
// ВАЖНО: абстрагируем id только в url игнорируя baseURL
|
|
56
|
-
const [url, foundId] =
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const [url, foundId] = hideFirstId(config.url || defaults.url || '');
|
|
59
|
+
return {
|
|
60
|
+
method,
|
|
61
|
+
url: (0, utils_1.displayUrl)(baseURL, url),
|
|
62
|
+
foundId,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
60
65
|
exports.getRequestInfo = getRequestInfo;
|
|
61
66
|
/**
|
|
62
67
|
* Преобразует строку вида:
|
|
@@ -67,9 +72,9 @@ exports.getRequestInfo = getRequestInfo;
|
|
|
67
72
|
* @param url Url.
|
|
68
73
|
* @return Кортеж со строкой и результатом поиска числа.
|
|
69
74
|
*/
|
|
70
|
-
|
|
75
|
+
function hideFirstId(url) {
|
|
71
76
|
const found = /\d{2,}/.exec(url);
|
|
72
77
|
return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];
|
|
73
|
-
}
|
|
78
|
+
}
|
|
74
79
|
exports.hideFirstId = hideFirstId;
|
|
75
80
|
//# sourceMappingURL=tracing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-client/middleware/tracing.ts"],"names":[],"mappings":";;;AAEA,4CAAqE;AACrE,8EAAyE;
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-client/middleware/tracing.ts"],"names":[],"mappings":";;;AAEA,4CAAqE;AACrE,8EAAyE;AACzE,oCAAsC;AAEtC;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAc,EAAE,WAAoB;IACpE,OAAO,KAAK,UAAU,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,MAAM,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAE/E,IAAI,CAAC,aAAa,CAAC;YACjB,CAAC,yCAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG;YAClC,CAAC,yCAAkB,CAAC,WAAW,CAAC,EAAE,MAAM;YACxC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC/B,GAAG,QAAQ,CAAC,MAAM;gBAClB,GAAG,MAAM,CAAC,MAAM;aACjB,CAAC;YACF,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC;gBAChC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAW,CAAC;gBAClD,GAAG,MAAM,CAAC,OAAO;aAClB,CAAC;YAEF,mCAAmC;YACnC,GAAG,CAAC,OAAO,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;SAC1C,CAAC,CAAC;QAEH,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;SACpB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,oBAAc,CAAC,KAAK;gBAC1B,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,mBAAmB;YACnB,MAAM,KAAK,CAAC;SACb;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AArCD,8CAqCC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,MAA0B,EAC1B,QAAuB;IAMvB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAEzD,wDAAwD;IACxD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAErE,OAAO;QACL,MAAM;QACN,GAAG,EAAE,IAAA,kBAAU,EAAC,OAAO,EAAE,GAAG,CAAC;QAC7B,OAAO;KACR,CAAC;AACJ,CAAC;AAnBD,wCAmBC;AAED;;;;;;;;GAQG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACtF,CAAC;AAJD,kCAIC"}
|
package/http-client/utils.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { BaseConfig } from '../config/types';
|
|
1
|
+
import type { AxiosDefaults, AxiosRequestConfig } from 'axios';
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @param
|
|
6
|
-
* @param
|
|
7
|
-
* @return
|
|
3
|
+
* Объединяет значения опций baseURL и url (axios) в одну строку для логирования.
|
|
4
|
+
* @param baseURL Опция baseURL.
|
|
5
|
+
* @param url Опция url.
|
|
6
|
+
* @return Отображение. Не является валидным URL.
|
|
8
7
|
*/
|
|
9
|
-
export declare function
|
|
8
|
+
export declare function displayUrl(baseURL?: AxiosDefaults['baseURL'], url?: AxiosRequestConfig['url']): string;
|
package/http-client/utils.js
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const utils_1 = require("../http-server/utils");
|
|
3
|
+
exports.displayUrl = void 0;
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
* @param
|
|
8
|
-
* @param
|
|
9
|
-
* @return
|
|
5
|
+
* Объединяет значения опций baseURL и url (axios) в одну строку для логирования.
|
|
6
|
+
* @param baseURL Опция baseURL.
|
|
7
|
+
* @param url Опция url.
|
|
8
|
+
* @return Отображение. Не является валидным URL.
|
|
10
9
|
*/
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
function displayUrl(baseURL = '', url = '') {
|
|
11
|
+
let result;
|
|
12
|
+
switch (true) {
|
|
13
|
+
case Boolean(baseURL && url):
|
|
14
|
+
result = `${baseURL.replace(/\/$/, '')}/${url.replace(/^\//, '')}`;
|
|
15
|
+
break;
|
|
16
|
+
case Boolean(baseURL) && !url:
|
|
17
|
+
result = baseURL;
|
|
18
|
+
break;
|
|
19
|
+
case !baseURL && Boolean(url):
|
|
20
|
+
result = url;
|
|
21
|
+
break;
|
|
22
|
+
case !baseURL && !url:
|
|
23
|
+
default:
|
|
24
|
+
result = '[empty]';
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
18
28
|
}
|
|
19
|
-
exports.
|
|
29
|
+
exports.displayUrl = displayUrl;
|
|
20
30
|
//# sourceMappingURL=utils.js.map
|
package/http-client/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-client/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-client/utils.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,UAAoC,EAAE,EACtC,MAAiC,EAAE;IAEnC,IAAI,MAAc,CAAC;IAEnB,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YACnE,MAAM;QACR,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;YAC3B,MAAM,GAAG,OAAO,CAAC;YACjB,MAAM;QACR,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC;YACb,MAAM;QACR,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;QACtB;YACE,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;KACT;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAvBD,gCAuBC"}
|
package/http-server/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Request, Response } from 'express';
|
|
2
2
|
import type { PageAssets, PageTemplate, PageTemplateData } from './types';
|
|
3
|
+
import type { BaseConfig } from '../config/types';
|
|
3
4
|
/**
|
|
4
5
|
* Определяет IP входящего запроса.
|
|
5
6
|
* @param req Входящий запрос.
|
|
@@ -12,6 +13,13 @@ export declare function getXClientIp(req: Request): string;
|
|
|
12
13
|
* @return Служебные заголовки.
|
|
13
14
|
*/
|
|
14
15
|
export declare function getServiceHeaders(req: Request): Record<string, string | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
18
|
+
* @param config Конфиг.
|
|
19
|
+
* @param request Входящий запрос.
|
|
20
|
+
* @return Заголовки для исходящих запросов.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRequestHeaders(config: BaseConfig, request: Request): Record<string, string>;
|
|
15
23
|
export declare class PageResponse {
|
|
16
24
|
private type;
|
|
17
25
|
private html;
|
package/http-server/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PageResponse = exports.getServiceHeaders = exports.getXClientIp = void 0;
|
|
3
|
+
exports.PageResponse = exports.getRequestHeaders = exports.getServiceHeaders = exports.getXClientIp = void 0;
|
|
4
4
|
const net_1 = require("net");
|
|
5
5
|
/**
|
|
6
6
|
* Определяет IP входящего запроса.
|
|
@@ -27,6 +27,21 @@ function getServiceHeaders(req) {
|
|
|
27
27
|
return result;
|
|
28
28
|
}
|
|
29
29
|
exports.getServiceHeaders = getServiceHeaders;
|
|
30
|
+
/**
|
|
31
|
+
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
32
|
+
* @param config Конфиг.
|
|
33
|
+
* @param request Входящий запрос.
|
|
34
|
+
* @return Заголовки для исходящих запросов.
|
|
35
|
+
*/
|
|
36
|
+
function getRequestHeaders(config, request) {
|
|
37
|
+
return {
|
|
38
|
+
'X-Client-Ip': getXClientIp(request),
|
|
39
|
+
'User-Agent': `simaland-${config.appName}/${config.appVersion}`,
|
|
40
|
+
Cookie: request.get('cookie') || '',
|
|
41
|
+
...getServiceHeaders(request),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
exports.getRequestHeaders = getRequestHeaders;
|
|
30
45
|
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
31
46
|
class PageResponse {
|
|
32
47
|
constructor() {
|
package/http-server/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/isomorph",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.22",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,18 +20,19 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@sima-land/linters": "^2.1.5",
|
|
23
|
-
"@swc/jest": "^0.2.
|
|
23
|
+
"@swc/jest": "^0.2.22",
|
|
24
24
|
"@testing-library/react": "^12.1.3",
|
|
25
25
|
"@types/ejs": "^3.1.1",
|
|
26
26
|
"@types/express": "^4.17.13",
|
|
27
|
-
"@types/jest": "^
|
|
27
|
+
"@types/jest": "^28.1.7",
|
|
28
28
|
"@types/jsesc": "^3.0.1",
|
|
29
|
-
"@types/lodash": "^4.14.
|
|
29
|
+
"@types/lodash": "^4.14.184",
|
|
30
30
|
"@types/react": "^17.0.40",
|
|
31
31
|
"@types/react-dom": "^17.0.13",
|
|
32
32
|
"@types/webpack": "^5.28.0",
|
|
33
33
|
"husky": "^8.0.1",
|
|
34
|
-
"jest": "^
|
|
34
|
+
"jest": "^28.1.3",
|
|
35
|
+
"jest-environment-jsdom": "^28.1.3",
|
|
35
36
|
"typescript": "^4.7.4"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
@@ -45,25 +46,25 @@
|
|
|
45
46
|
"@opentelemetry/sdk-trace-node": "^1.5.0",
|
|
46
47
|
"@opentelemetry/semantic-conventions": "^1.5.0",
|
|
47
48
|
"@opentelemetry/tracing": "^0.24.0",
|
|
48
|
-
"@sentry/browser": "^7.
|
|
49
|
-
"@sentry/node": "^7.
|
|
49
|
+
"@sentry/browser": "^7.11.1",
|
|
50
|
+
"@sentry/node": "^7.11.1",
|
|
50
51
|
"dotenv": "^16.0.0",
|
|
51
52
|
"ejs": "^3.1.8",
|
|
52
53
|
"express": "^4.17.3",
|
|
53
54
|
"jsesc": "^3.0.2",
|
|
54
55
|
"middleware-axios": "^2.1.2",
|
|
55
|
-
"pino": "^8.4.
|
|
56
|
-
"pino-pretty": "^9.0.
|
|
56
|
+
"pino": "^8.4.2",
|
|
57
|
+
"pino-pretty": "^9.0.1",
|
|
57
58
|
"prom-client": "^14.0.1",
|
|
58
59
|
"webpack": "^5.74.0"
|
|
59
60
|
},
|
|
60
61
|
"peerDependencies": {
|
|
61
|
-
"@reduxjs/toolkit": "^1.8.
|
|
62
|
+
"@reduxjs/toolkit": "^1.8.5",
|
|
62
63
|
"axios": "^0.24.0",
|
|
63
64
|
"lodash": "^4.17.21",
|
|
64
65
|
"react": "^17.0.2",
|
|
65
66
|
"react-dom": "^17.0.2",
|
|
66
67
|
"react-redux": "^8.0.2",
|
|
67
|
-
"redux-saga": "^1.2.
|
|
68
|
+
"redux-saga": "^1.2.1"
|
|
68
69
|
}
|
|
69
70
|
}
|
package/preset/node/response.js
CHANGED
|
@@ -30,17 +30,25 @@ function PresetResponse() {
|
|
|
30
30
|
}
|
|
31
31
|
exports.PresetResponse = PresetResponse;
|
|
32
32
|
function provideHttpClientFactory(resolve) {
|
|
33
|
+
const appConfig = resolve(tokens_1.KnownToken.Config.base);
|
|
33
34
|
const logger = resolve(tokens_1.KnownToken.logger);
|
|
34
35
|
const tracer = resolve(tokens_1.KnownToken.Tracing.tracer);
|
|
35
36
|
const context = resolve(tokens_1.KnownToken.Response.context);
|
|
36
37
|
return function createHttpClient(config) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const client = (0, middleware_axios_1.create)({
|
|
39
|
+
...config,
|
|
40
|
+
headers: {
|
|
41
|
+
...(0, utils_1.getRequestHeaders)(appConfig, context.req),
|
|
42
|
+
...config.headers,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
client.use((0, tracing_1.tracingMiddleware)(tracer, context.res.locals.tracing.rootContext));
|
|
46
|
+
client.use((0, logging_1.loggingMiddleware)(logger));
|
|
47
|
+
client.use((0, headers_1.passHeadersMiddleware)(context.req, {
|
|
41
48
|
predicate: headerName => headerName.startsWith('simaland-'),
|
|
42
|
-
}))
|
|
43
|
-
|
|
49
|
+
}));
|
|
50
|
+
client.use((0, cookie_1.collectCookieMiddleware)(context.req, context.res));
|
|
51
|
+
return client;
|
|
44
52
|
};
|
|
45
53
|
}
|
|
46
54
|
exports.provideHttpClientFactory = provideHttpClientFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":";;;AAGA,iCAAmF;AACnF,yCAA0C;AAC1C,6CAAkD;AAClD,2DAA6D;AAC7D,yDAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":"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"}
|