@sima-land/isomorph 11.0.0-alpha.3 → 11.0.0-alpha.30
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/cache/types.d.ts +24 -2
- package/config/{index.d.ts → base.d.ts} +2 -2
- package/config/{index.js → base.js} +3 -3
- package/config/base.js.map +1 -0
- package/config/browser.d.ts +1 -1
- package/config/browser.js +11 -2
- package/config/browser.js.map +1 -1
- package/config/node.d.ts +1 -1
- package/config/node.js +17 -6
- package/config/node.js.map +1 -1
- package/config/types.d.ts +8 -1
- package/di/application.d.ts +10 -0
- package/{container → di}/application.js +29 -8
- package/di/application.js.map +1 -0
- package/di/container.d.ts +6 -0
- package/di/container.js +52 -0
- package/di/container.js.map +1 -0
- package/di/errors.d.ts +32 -0
- package/di/errors.js +48 -0
- package/di/errors.js.map +1 -0
- package/di/index.d.ts +6 -0
- package/di/index.js +17 -0
- package/di/index.js.map +1 -0
- package/di/preset.d.ts +9 -0
- package/di/preset.js +31 -0
- package/di/preset.js.map +1 -0
- package/di/token.d.ts +7 -0
- package/di/token.js +39 -0
- package/di/token.js.map +1 -0
- package/di/types.d.ts +88 -0
- package/{container → di}/types.js +0 -0
- package/{logger → di}/types.js.map +1 -1
- package/error-tracking/index.d.ts +24 -0
- package/error-tracking/index.js +32 -0
- package/error-tracking/index.js.map +1 -0
- package/error-tracking/types.d.ts +20 -0
- package/{error-tracker → error-tracking}/types.js +0 -0
- package/{container → error-tracking}/types.js.map +1 -1
- package/http-client/middleware/cookie.d.ts +1 -0
- package/http-client/middleware/cookie.js +4 -2
- package/http-client/middleware/cookie.js.map +1 -1
- package/http-client/middleware/headers.d.ts +13 -0
- package/http-client/middleware/headers.js +24 -0
- package/http-client/middleware/headers.js.map +1 -0
- package/http-client/middleware/log.d.ts +27 -0
- package/http-client/middleware/log.js +26 -0
- package/http-client/middleware/log.js.map +1 -0
- package/http-client/middleware/tracing.d.ts +3 -3
- package/http-client/middleware/tracing.js +22 -9
- package/http-client/middleware/tracing.js.map +1 -1
- package/http-client/sauce/index.d.ts +20 -5
- package/http-client/sauce/index.js +38 -21
- package/http-client/sauce/index.js.map +1 -1
- package/http-client/types.d.ts +1 -1
- package/http-client/utils.d.ts +14 -7
- package/http-client/utils.js +43 -12
- package/http-client/utils.js.map +1 -1
- package/http-server/errors.d.ts +11 -0
- package/http-server/errors.js +18 -0
- package/http-server/errors.js.map +1 -0
- package/http-server/handler/health-check.d.ts +1 -1
- package/http-server/handler/health-check.js +1 -1
- package/http-server/middleware/{logging.d.ts → log.d.ts} +2 -2
- package/http-server/middleware/{logging.js → log.js} +6 -5
- package/http-server/middleware/log.js.map +1 -0
- package/http-server/middleware/metrics.js +2 -2
- package/http-server/middleware/metrics.js.map +1 -1
- package/http-server/middleware/tracing.d.ts +7 -1
- package/http-server/middleware/tracing.js +20 -2
- package/http-server/middleware/tracing.js.map +1 -1
- package/http-server/template/index.js +11 -6
- package/http-server/template/index.js.map +1 -1
- package/http-server/types.d.ts +2 -0
- package/http-server/utils.d.ts +14 -5
- package/http-server/utils.js +46 -21
- package/http-server/utils.js.map +1 -1
- package/log/handler/pino.d.ts +8 -0
- package/log/handler/pino.js +29 -0
- package/log/handler/pino.js.map +1 -0
- package/log/handler/sentry.d.ts +8 -0
- package/log/handler/sentry.js +50 -0
- package/log/handler/sentry.js.map +1 -0
- package/log/index.d.ts +2 -0
- package/log/index.js +6 -0
- package/log/index.js.map +1 -0
- package/{logger/index.d.ts → log/logger.d.ts} +0 -0
- package/{logger/index.js → log/logger.js} +1 -1
- package/log/logger.js.map +1 -0
- package/log/types.d.ts +41 -0
- package/{logger → log}/types.js +0 -0
- package/{preset → log}/types.js.map +1 -1
- package/metrics/constants.d.ts +3 -0
- package/metrics/constants.js +3 -0
- package/metrics/constants.js.map +1 -1
- package/metrics/node.d.ts +7 -0
- package/metrics/node.js +1 -0
- package/metrics/node.js.map +1 -1
- package/package.json +35 -30
- package/preset/browser/index.d.ts +10 -0
- package/preset/browser/index.js +71 -0
- package/preset/browser/index.js.map +1 -0
- package/preset/node/index.d.ts +16 -11
- package/preset/node/index.js +105 -61
- package/preset/node/index.js.map +1 -1
- package/preset/node/response.d.ts +12 -8
- package/preset/node/response.js +98 -28
- package/preset/node/response.js.map +1 -1
- package/preset/parts/providers.d.ts +7 -0
- package/preset/parts/providers.js +26 -0
- package/preset/parts/providers.js.map +1 -0
- package/preset/parts/types.d.ts +8 -0
- package/preset/{types.js → parts/types.js} +0 -0
- package/{error-tracker → preset/parts}/types.js.map +1 -1
- package/preset/parts/utils.d.ts +110 -0
- package/preset/parts/utils.js +261 -0
- package/preset/parts/utils.js.map +1 -0
- package/tokens.d.ts +39 -21
- package/tokens.js +35 -20
- package/tokens.js.map +1 -1
- package/tracing/index.d.ts +9 -0
- package/tracing/index.js +20 -0
- package/tracing/index.js.map +1 -0
- package/utils/browser/analytics/data-layer.d.ts +2 -2
- package/utils/browser/analytics/data-layer.js +4 -5
- package/utils/browser/analytics/data-layer.js.map +1 -1
- package/utils/browser/analytics/oko.d.ts +3 -2
- package/utils/browser/analytics/oko.js +2 -1
- package/utils/browser/analytics/oko.js.map +1 -1
- package/utils/browser/storage/index.d.ts +8 -0
- package/utils/browser/storage/index.js +6 -1
- package/utils/browser/storage/index.js.map +1 -1
- package/utils/function.d.ts +28 -0
- package/utils/function.js +23 -0
- package/utils/function.js.map +1 -0
- package/utils/react/error-handlers/index.d.ts +11 -8
- package/utils/react/error-handlers/index.js +8 -10
- package/utils/react/error-handlers/index.js.map +1 -1
- package/utils/redux/index.d.ts +3 -0
- package/utils/redux/index.js +8 -0
- package/utils/redux/index.js.map +1 -0
- package/utils/redux/remote-data.d.ts +83 -5
- package/utils/redux/remote-data.js +83 -1
- package/utils/redux/remote-data.js.map +1 -1
- package/utils/redux-saga/index.d.ts +3 -0
- package/utils/redux-saga/index.js +8 -0
- package/utils/redux-saga/index.js.map +1 -0
- package/utils/redux-saga/middleware.d.ts +8 -0
- package/utils/redux-saga/middleware.js +84 -0
- package/utils/redux-saga/middleware.js.map +1 -0
- package/utils/redux-saga/take-chain.d.ts +2 -0
- package/utils/redux-saga/take-chain.js +2 -0
- package/utils/redux-saga/take-chain.js.map +1 -1
- package/utils/redux-saga/types.d.ts +15 -0
- package/{saga-runner → utils/redux-saga}/types.js +0 -0
- package/utils/redux-saga/types.js.map +1 -0
- package/utils/ssr/index.d.ts +41 -0
- package/utils/ssr/index.js +54 -0
- package/utils/ssr/index.js.map +1 -0
- package/utils/webpack/env/index.d.ts +18 -0
- package/utils/webpack/env/index.js +76 -0
- package/utils/webpack/env/index.js.map +1 -0
- package/utils/webpack/env/types.d.ts +11 -0
- package/utils/webpack/env/types.js +3 -0
- package/utils/webpack/env/types.js.map +1 -0
- package/utils/webpack/env/utils.d.ts +15 -0
- package/utils/webpack/env/utils.js +52 -0
- package/utils/webpack/env/utils.js.map +1 -0
- package/utils/webpack/index.d.ts +6 -0
- package/utils/webpack/index.js +8 -0
- package/utils/webpack/index.js.map +1 -0
- package/utils/webpack/module-federation/index.d.ts +7 -1
- package/utils/webpack/module-federation/index.js +11 -4
- package/utils/webpack/module-federation/index.js.map +1 -1
- package/utils/webpack/module-federation/types.d.ts +11 -3
- package/utils/webpack/module-federation/utils.d.ts +6 -0
- package/utils/webpack/module-federation/utils.js +73 -17
- package/utils/webpack/module-federation/utils.js.map +1 -1
- package/config/index.js.map +0 -1
- package/config/utils.d.ts +0 -5
- package/config/utils.js +0 -12
- package/config/utils.js.map +0 -1
- package/container/application.d.ts +0 -25
- package/container/application.js.map +0 -1
- package/container/index.d.ts +0 -18
- package/container/index.js +0 -74
- package/container/index.js.map +0 -1
- package/container/types.d.ts +0 -14
- package/error-tracker/browser.d.ts +0 -8
- package/error-tracker/browser.js +0 -40
- package/error-tracker/browser.js.map +0 -1
- package/error-tracker/node.d.ts +0 -8
- package/error-tracker/node.js +0 -40
- package/error-tracker/node.js.map +0 -1
- package/error-tracker/types.d.ts +0 -18
- package/error-tracker/utils.d.ts +0 -12
- package/error-tracker/utils.js +0 -19
- package/error-tracker/utils.js.map +0 -1
- package/http-server/middleware/logging.js.map +0 -1
- package/logger/handler/console.d.ts +0 -8
- package/logger/handler/console.js +0 -36
- package/logger/handler/console.js.map +0 -1
- package/logger/handler/sentry.d.ts +0 -8
- package/logger/handler/sentry.js +0 -36
- package/logger/handler/sentry.js.map +0 -1
- package/logger/index.js.map +0 -1
- package/logger/types.d.ts +0 -24
- package/preset/index.d.ts +0 -7
- package/preset/index.js +0 -25
- package/preset/index.js.map +0 -1
- package/preset/types.d.ts +0 -7
- package/saga-runner/index.d.ts +0 -8
- package/saga-runner/index.js +0 -79
- package/saga-runner/index.js.map +0 -1
- package/saga-runner/types.d.ts +0 -10
- package/saga-runner/types.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SentryErrorData, SentryBreadcrumbData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Ошибка с данными для Sentry.
|
|
4
|
+
* @todo Этот класс должен называться либо SentryReadyError либо в названии вообще не должен фигурировать Sentry.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SentryError extends Error {
|
|
7
|
+
data: SentryErrorData;
|
|
8
|
+
/**
|
|
9
|
+
* @param message Сообщение.
|
|
10
|
+
* @param data Данные.
|
|
11
|
+
*/
|
|
12
|
+
constructor(message: string, data?: SentryErrorData);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Хлебная крошка для Sentry.
|
|
16
|
+
* @todo Этот класс должен называться либо SentryReadyBreadcrumb либо в названии вообще не должен фигурировать Sentry.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SentryBreadcrumb {
|
|
19
|
+
data: SentryBreadcrumbData;
|
|
20
|
+
/**
|
|
21
|
+
* @param data Данные.
|
|
22
|
+
*/
|
|
23
|
+
constructor(data: SentryBreadcrumbData);
|
|
24
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SentryBreadcrumb = exports.SentryError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ошибка с данными для Sentry.
|
|
6
|
+
* @todo Этот класс должен называться либо SentryReadyError либо в названии вообще не должен фигурировать Sentry.
|
|
7
|
+
*/
|
|
8
|
+
class SentryError extends Error {
|
|
9
|
+
/**
|
|
10
|
+
* @param message Сообщение.
|
|
11
|
+
* @param data Данные.
|
|
12
|
+
*/
|
|
13
|
+
constructor(message, data = {}) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.data = data;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.SentryError = SentryError;
|
|
19
|
+
/**
|
|
20
|
+
* Хлебная крошка для Sentry.
|
|
21
|
+
* @todo Этот класс должен называться либо SentryReadyBreadcrumb либо в названии вообще не должен фигурировать Sentry.
|
|
22
|
+
*/
|
|
23
|
+
class SentryBreadcrumb {
|
|
24
|
+
/**
|
|
25
|
+
* @param data Данные.
|
|
26
|
+
*/
|
|
27
|
+
constructor(data) {
|
|
28
|
+
this.data = data;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.SentryBreadcrumb = SentryBreadcrumb;
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/error-tracking/index.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,WAAY,SAAQ,KAAK;IAGpC;;;OAGG;IACH,YAAY,OAAe,EAAE,OAAwB,EAAE;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAXD,kCAWC;AAED;;;GAGG;AACH,MAAa,gBAAgB;IAG3B;;OAEG;IACH,YAAY,IAA0B;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,4CASC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SeverityLevel, Context, Extra, Breadcrumb } from '@sentry/types';
|
|
2
|
+
export interface ContextData {
|
|
3
|
+
key: string;
|
|
4
|
+
data: Context | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Данные ошибки для Sentry.
|
|
8
|
+
*/
|
|
9
|
+
export interface SentryErrorData {
|
|
10
|
+
level?: SeverityLevel;
|
|
11
|
+
context?: ContextData | ContextData[];
|
|
12
|
+
extra?: {
|
|
13
|
+
key: string;
|
|
14
|
+
data: Extra | null;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Данные хлебной крошки для Sentry.
|
|
19
|
+
*/
|
|
20
|
+
export type SentryBreadcrumbData = Breadcrumb;
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/error-tracking/types.ts"],"names":[],"mappings":""}
|
|
@@ -13,6 +13,7 @@ export interface CookieStore {
|
|
|
13
13
|
export declare function collectCookieMiddleware(request: Request, response: Response): Middleware<any>;
|
|
14
14
|
/**
|
|
15
15
|
* Возвращает новое хранилище cookie.
|
|
16
|
+
* @internal
|
|
16
17
|
* @param initialCookie Начальное значение cookie.
|
|
17
18
|
* @return Хранилище cookie.
|
|
18
19
|
*/
|
|
@@ -9,7 +9,7 @@ exports.createCookieStore = exports.collectCookieMiddleware = void 0;
|
|
|
9
9
|
*/
|
|
10
10
|
function collectCookieMiddleware(request, response) {
|
|
11
11
|
const store = createCookieStore(request.get('cookie'));
|
|
12
|
-
return async function (config, next) {
|
|
12
|
+
return async function collectCookie(config, next) {
|
|
13
13
|
const result = await next({
|
|
14
14
|
...config,
|
|
15
15
|
headers: {
|
|
@@ -26,6 +26,7 @@ function collectCookieMiddleware(request, response) {
|
|
|
26
26
|
exports.collectCookieMiddleware = collectCookieMiddleware;
|
|
27
27
|
/**
|
|
28
28
|
* Возвращает новое хранилище cookie.
|
|
29
|
+
* @internal
|
|
29
30
|
* @param initialCookie Начальное значение cookie.
|
|
30
31
|
* @return Хранилище cookie.
|
|
31
32
|
*/
|
|
@@ -46,6 +47,7 @@ function createCookieStore(initialCookie) {
|
|
|
46
47
|
// eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
|
|
47
48
|
function set(setCookieHeaderValues) {
|
|
48
49
|
for (const item of setCookieHeaderValues) {
|
|
50
|
+
// отделяем значение от директив
|
|
49
51
|
const [cookie] = item.split(';');
|
|
50
52
|
setItem(cookie);
|
|
51
53
|
}
|
|
@@ -54,7 +56,7 @@ function createCookieStore(initialCookie) {
|
|
|
54
56
|
function asHeader() {
|
|
55
57
|
return Object.values(data)
|
|
56
58
|
.map(cookie => `${cookie.name}=${cookie.value}`)
|
|
57
|
-
.join(';');
|
|
59
|
+
.join('; ');
|
|
58
60
|
}
|
|
59
61
|
return { set, asHeader };
|
|
60
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/http-client/middleware/cookie.ts"],"names":[],"mappings":";;;AAQA;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,OAAgB,EAAE,QAAkB;IAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/http-client/middleware/cookie.ts"],"names":[],"mappings":";;;AAQA;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,OAAgB,EAAE,QAAkB;IAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvD,OAAO,KAAK,UAAU,aAAa,CAAC,MAAM,EAAE,IAAI;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,GAAG,MAAM;YACT,OAAO,EAAE;gBACP,GAAG,MAAM,CAAC,OAAO;gBACjB,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE;aACzB;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YACxC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChD;IACH,CAAC,CAAC;AACJ,CAAC;AAjBD,0DAiBC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,aAAsB;IACtD,MAAM,IAAI,GAAoD,EAAE,CAAC;IAEjE,8DAA8D;IAC9D,SAAS,OAAO,CAAC,UAAkB;QACjC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjF,IAAI,UAAU,IAAI,WAAW,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;SAC7D;IACH,CAAC;IAED,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;QACzC,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;KACF;IAED,8DAA8D;IAC9D,SAAS,GAAG,CAAC,qBAA+B;QAC1C,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE;YACxC,gCAAgC;YAChC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjB;IACH,CAAC;IAED,8DAA8D;IAC9D,SAAS,QAAQ;QACf,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aACvB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAnCD,8CAmCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import type { Middleware } from 'middleware-axios';
|
|
3
|
+
export interface PassHeadersOptions {
|
|
4
|
+
predicate: (headerName: string, headerValue: string) => boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает новый промежуточный слой для проброса заголовков входящего запроса во все исходящие запросы.
|
|
8
|
+
* Принудительно игнорирует заголовок Cookie.
|
|
9
|
+
* @param req Request.
|
|
10
|
+
* @param options Опции.
|
|
11
|
+
* @return Промежуточный слой.
|
|
12
|
+
*/
|
|
13
|
+
export declare function passHeadersMiddleware(req: Request, { predicate }?: PassHeadersOptions): Middleware<any>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.passHeadersMiddleware = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Возвращает новый промежуточный слой для проброса заголовков входящего запроса во все исходящие запросы.
|
|
6
|
+
* Принудительно игнорирует заголовок Cookie.
|
|
7
|
+
* @param req Request.
|
|
8
|
+
* @param options Опции.
|
|
9
|
+
* @return Промежуточный слой.
|
|
10
|
+
*/
|
|
11
|
+
function passHeadersMiddleware(req, { predicate } = { predicate: () => true }) {
|
|
12
|
+
return async function passHeaders(config, next) {
|
|
13
|
+
const headers = { ...config.headers };
|
|
14
|
+
for (const headerName in req.headers) {
|
|
15
|
+
const headerValue = req.headers[headerName];
|
|
16
|
+
if (typeof headerValue === 'string' && predicate(headerName, headerValue)) {
|
|
17
|
+
headers[headerName] = headerValue;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
await next({ ...config, headers });
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.passHeadersMiddleware = passHeadersMiddleware;
|
|
24
|
+
//# sourceMappingURL=headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../src/http-client/middleware/headers.ts"],"names":[],"mappings":";;;AAQA;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,GAAY,EACZ,EAAE,SAAS,KAAyB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;IAE7D,OAAO,KAAK,UAAU,WAAW,CAAC,MAAM,EAAE,IAAI;QAC5C,MAAM,OAAO,GAA2B,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAE9D,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE;YACpC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;gBACzE,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;aACnC;SACF;QAED,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAjBD,sDAiBC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AxiosResponse, AxiosRequestConfig, AxiosDefaults } from 'axios';
|
|
2
|
+
import { Middleware } from 'middleware-axios';
|
|
3
|
+
export interface SharedData {
|
|
4
|
+
config: AxiosRequestConfig;
|
|
5
|
+
defaults: AxiosDefaults;
|
|
6
|
+
}
|
|
7
|
+
export interface DoneSharedData extends SharedData {
|
|
8
|
+
response: AxiosResponse<unknown, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface FailSharedData extends SharedData {
|
|
11
|
+
error: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface LogMiddlewareHandler {
|
|
14
|
+
beforeRequest: (data: SharedData) => Promise<void> | void;
|
|
15
|
+
afterResponse: (data: DoneSharedData) => Promise<void> | void;
|
|
16
|
+
onCatch: (data: FailSharedData) => Promise<void> | void;
|
|
17
|
+
}
|
|
18
|
+
export interface LogMiddlewareHandlerFactory {
|
|
19
|
+
(data: SharedData): LogMiddlewareHandler;
|
|
20
|
+
}
|
|
21
|
+
export type LogMiddlewareHandlerInit = LogMiddlewareHandler | LogMiddlewareHandlerFactory;
|
|
22
|
+
/**
|
|
23
|
+
* Возвращает новый middleware для логирования запросов.
|
|
24
|
+
* @param handlerInit Обработчик.
|
|
25
|
+
* @return Middleware.
|
|
26
|
+
*/
|
|
27
|
+
export declare function logMiddleware(handlerInit: LogMiddlewareHandlerInit): Middleware<any>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logMiddleware = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Возвращает новый middleware для логирования запросов.
|
|
6
|
+
* @param handlerInit Обработчик.
|
|
7
|
+
* @return Middleware.
|
|
8
|
+
*/
|
|
9
|
+
function logMiddleware(handlerInit) {
|
|
10
|
+
return async function log(config, next, defaults) {
|
|
11
|
+
const shared = { config, defaults };
|
|
12
|
+
const handler = typeof handlerInit === 'function' ? handlerInit(shared) : handlerInit;
|
|
13
|
+
try {
|
|
14
|
+
await handler.beforeRequest(shared);
|
|
15
|
+
const response = await next(config);
|
|
16
|
+
await handler.afterResponse({ ...shared, response });
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
await handler.onCatch({ ...shared, error });
|
|
20
|
+
// ВАЖНО: не скрываем ошибку, сообщаем остальному миру про нее
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.logMiddleware = logMiddleware;
|
|
26
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/http-client/middleware/log.ts"],"names":[],"mappings":";;;AA4BA;;;;GAIG;AACH,SAAgB,aAAa,CAAC,WAAqC;IACjE,OAAO,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;QAC9C,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAEtF,IAAI;YACF,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;SACtD;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAE5C,8DAA8D;YAC9D,MAAM,KAAK,CAAC;SACb;IACH,CAAC,CAAC;AACJ,CAAC;AAlBD,sCAkBC"}
|
|
@@ -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 Трейсер.
|
|
@@ -10,12 +11,20 @@ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
|
10
11
|
* @return Middleware.
|
|
11
12
|
*/
|
|
12
13
|
function tracingMiddleware(tracer, rootContext) {
|
|
13
|
-
return async function (config, next, defaults) {
|
|
14
|
-
const { method, url, foundId } =
|
|
14
|
+
return async function trace(config, next, defaults) {
|
|
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,
|
|
18
19
|
[semantic_conventions_1.SemanticAttributes.HTTP_METHOD]: method,
|
|
20
|
+
'request.params': JSON.stringify({
|
|
21
|
+
...defaults.params,
|
|
22
|
+
...config.params,
|
|
23
|
+
}),
|
|
24
|
+
'request.headers': JSON.stringify({
|
|
25
|
+
...defaults.headers[method.toLowerCase()],
|
|
26
|
+
...config.headers,
|
|
27
|
+
}),
|
|
19
28
|
// если нашли id - добавляем в теги
|
|
20
29
|
...(foundId && { 'request.id': foundId }),
|
|
21
30
|
});
|
|
@@ -27,6 +36,7 @@ function tracingMiddleware(tracer, rootContext) {
|
|
|
27
36
|
code: api_1.SpanStatusCode.ERROR,
|
|
28
37
|
message: 'HTTP Request failed',
|
|
29
38
|
});
|
|
39
|
+
span.end();
|
|
30
40
|
// не прячем ошибку
|
|
31
41
|
throw error;
|
|
32
42
|
}
|
|
@@ -41,14 +51,17 @@ exports.tracingMiddleware = tracingMiddleware;
|
|
|
41
51
|
* @param defaults Базовый конфиг экземпляра Axios.
|
|
42
52
|
* @return Базовые данные запроса.
|
|
43
53
|
*/
|
|
44
|
-
|
|
54
|
+
function getRequestInfo(config, defaults) {
|
|
45
55
|
const method = (config.method || 'GET').toUpperCase();
|
|
46
56
|
const baseURL = config.baseURL || defaults.baseURL || '';
|
|
47
57
|
// ВАЖНО: абстрагируем id только в url игнорируя baseURL
|
|
48
|
-
const [url, foundId] =
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
+
}
|
|
52
65
|
exports.getRequestInfo = getRequestInfo;
|
|
53
66
|
/**
|
|
54
67
|
* Преобразует строку вида:
|
|
@@ -59,9 +72,9 @@ exports.getRequestInfo = getRequestInfo;
|
|
|
59
72
|
* @param url Url.
|
|
60
73
|
* @return Кортеж со строкой и результатом поиска числа.
|
|
61
74
|
*/
|
|
62
|
-
|
|
75
|
+
function hideFirstId(url) {
|
|
63
76
|
const found = /\d{2,}/.exec(url);
|
|
64
77
|
return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];
|
|
65
|
-
}
|
|
78
|
+
}
|
|
66
79
|
exports.hideFirstId = hideFirstId;
|
|
67
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"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { AxiosInstance, AxiosResponse } from 'axios';
|
|
2
|
+
import { SafetyInfo } from '../../utils/function';
|
|
2
3
|
import type { AxiosInstanceWrapper, MethodName } from 'middleware-axios';
|
|
3
|
-
export
|
|
4
|
+
export type SauceResponse<T = any> = {
|
|
4
5
|
ok: true;
|
|
6
|
+
status: number;
|
|
5
7
|
data: T;
|
|
6
8
|
} | {
|
|
7
9
|
ok: false;
|
|
10
|
+
status?: unknown;
|
|
11
|
+
data?: unknown;
|
|
8
12
|
error: any;
|
|
9
13
|
};
|
|
10
|
-
export interface SauceMethod<K extends MethodName> {
|
|
11
|
-
<T>(...args: Parameters<AxiosInstanceWrapper[K]>): Promise<SauceResponse<T>>;
|
|
14
|
+
export interface SauceMethod<K extends MethodName | 'request'> {
|
|
15
|
+
<T>(...args: Parameters<(AxiosInstance | AxiosInstanceWrapper)[K]>): Promise<SauceResponse<T>>;
|
|
12
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Обёртка над экземпляром axios.
|
|
19
|
+
* Все методы возвращают promise, который никогда переходят в состояние rejected.
|
|
20
|
+
*/
|
|
13
21
|
export interface Sauce {
|
|
22
|
+
readonly request: SauceMethod<'request'>;
|
|
14
23
|
readonly get: SauceMethod<'get'>;
|
|
15
24
|
readonly delete: SauceMethod<'delete'>;
|
|
16
25
|
readonly head: SauceMethod<'head'>;
|
|
@@ -20,8 +29,14 @@ export interface Sauce {
|
|
|
20
29
|
readonly patch: SauceMethod<'patch'>;
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
|
-
* Оборачивает экземпляр axios. Все методы обертки возвращают promise,
|
|
32
|
+
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, которые никогда не попадают в состояние rejected.
|
|
24
33
|
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
25
34
|
* @return Обертка.
|
|
26
35
|
*/
|
|
27
36
|
export declare function sauce(instance: AxiosInstance | AxiosInstanceWrapper): Sauce;
|
|
37
|
+
/**
|
|
38
|
+
* Функция форматирования результата, используемая в sauce.
|
|
39
|
+
* @param info Результат вызова метода экземпляра axios.
|
|
40
|
+
* @return Отформатированный ответ.
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatResultInfo(info: SafetyInfo<AxiosResponse>): SauceResponse;
|
|
@@ -1,33 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sauce = void 0;
|
|
6
|
+
exports.formatResultInfo = exports.sauce = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const function_1 = require("../../utils/function");
|
|
4
9
|
/**
|
|
5
|
-
* Оборачивает экземпляр axios. Все методы обертки возвращают promise,
|
|
10
|
+
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, которые никогда не попадают в состояние rejected.
|
|
6
11
|
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
7
12
|
* @return Обертка.
|
|
8
13
|
*/
|
|
9
14
|
function sauce(instance) {
|
|
10
|
-
// eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
|
|
11
|
-
function createMethod(methodName) {
|
|
12
|
-
return async function (...args) {
|
|
13
|
-
try {
|
|
14
|
-
const response = await instance[methodName](...args);
|
|
15
|
-
return { ok: true, data: response.data };
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return { ok: false, error };
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
15
|
return {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
request: (0, function_1.safetyAsync)(instance.request, formatResultInfo),
|
|
17
|
+
get: (0, function_1.safetyAsync)(instance.get, formatResultInfo),
|
|
18
|
+
delete: (0, function_1.safetyAsync)(instance.delete, formatResultInfo),
|
|
19
|
+
head: (0, function_1.safetyAsync)(instance.head, formatResultInfo),
|
|
20
|
+
options: (0, function_1.safetyAsync)(instance.options, formatResultInfo),
|
|
21
|
+
post: (0, function_1.safetyAsync)(instance.post, formatResultInfo),
|
|
22
|
+
put: (0, function_1.safetyAsync)(instance.put, formatResultInfo),
|
|
23
|
+
patch: (0, function_1.safetyAsync)(instance.patch, formatResultInfo),
|
|
30
24
|
};
|
|
31
25
|
}
|
|
32
26
|
exports.sauce = sauce;
|
|
27
|
+
/**
|
|
28
|
+
* Функция форматирования результата, используемая в sauce.
|
|
29
|
+
* @param info Результат вызова метода экземпляра axios.
|
|
30
|
+
* @return Отформатированный ответ.
|
|
31
|
+
*/
|
|
32
|
+
function formatResultInfo(info) {
|
|
33
|
+
if (info.ok) {
|
|
34
|
+
return {
|
|
35
|
+
ok: true,
|
|
36
|
+
data: info.result.data,
|
|
37
|
+
status: info.result.status,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return {
|
|
42
|
+
ok: false,
|
|
43
|
+
data: axios_1.default.isAxiosError(info.error) ? info.error.response?.data : undefined,
|
|
44
|
+
status: axios_1.default.isAxiosError(info.error) ? info.error.response?.status : undefined,
|
|
45
|
+
error: info.error,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.formatResultInfo = formatResultInfo;
|
|
33
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-client/sauce/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-client/sauce/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA4D;AAC5D,mDAA+D;AAoC/D;;;;GAIG;AACH,SAAgB,KAAK,CAAC,QAA8C;IAClE,OAAO;QACL,OAAO,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACxD,GAAG,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;QAChD,MAAM,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACtD,IAAI,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAClD,OAAO,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACxD,IAAI,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAClD,GAAG,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;QAChD,KAAK,EAAE,IAAA,sBAAW,EAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;KACrD,CAAC;AACJ,CAAC;AAXD,sBAWC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAA+B;IAC9D,IAAI,IAAI,CAAC,EAAE,EAAE;QACX,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC;KACH;SAAM;QACL,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,eAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;YAC5E,MAAM,EAAE,eAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;YAChF,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;KACH;AACH,CAAC;AAfD,4CAeC"}
|
package/http-client/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AxiosRequestConfig } from 'axios';
|
|
2
2
|
import type { AxiosInstanceWrapper } from 'middleware-axios';
|
|
3
|
-
export
|
|
3
|
+
export type HttpClient = AxiosInstanceWrapper;
|
|
4
4
|
export interface HttpClientFactory {
|
|
5
5
|
(config: AxiosRequestConfig): HttpClient;
|
|
6
6
|
}
|
package/http-client/utils.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
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?: AxiosRequestConfig['baseURL'], url?: AxiosRequestConfig['url']): string;
|
|
9
|
+
/**
|
|
10
|
+
* Сливает в один объект конфиг и настройки по умолчанию.
|
|
11
|
+
* @param config Конфигурация запроса.
|
|
12
|
+
* @param defaults Настройки по умолчанию для экземпляра axios.
|
|
13
|
+
* @return Уточненная итоговая конфигурация.
|
|
14
|
+
* @todo Было бы круто заменить на axios/core/mergeConfig (https://github.com/axios/axios/blob/v1.x/lib/core/mergeConfig.js).
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyAxiosDefaults(config: AxiosRequestConfig, defaults: AxiosDefaults): Omit<AxiosRequestConfig, 'method'> & Pick<Required<AxiosRequestConfig>, 'method'>;
|
package/http-client/utils.js
CHANGED
|
@@ -1,20 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const utils_1 = require("../http-server/utils");
|
|
3
|
+
exports.applyAxiosDefaults = 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
|
|
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;
|
|
28
|
+
}
|
|
29
|
+
exports.displayUrl = displayUrl;
|
|
30
|
+
/**
|
|
31
|
+
* Сливает в один объект конфиг и настройки по умолчанию.
|
|
32
|
+
* @param config Конфигурация запроса.
|
|
33
|
+
* @param defaults Настройки по умолчанию для экземпляра axios.
|
|
34
|
+
* @return Уточненная итоговая конфигурация.
|
|
35
|
+
* @todo Было бы круто заменить на axios/core/mergeConfig (https://github.com/axios/axios/blob/v1.x/lib/core/mergeConfig.js).
|
|
36
|
+
*/
|
|
37
|
+
function applyAxiosDefaults(config, defaults) {
|
|
38
|
+
const { headers: headersDefaults, ...restDefaults } = defaults;
|
|
39
|
+
const method = config.method || defaults.method || 'get';
|
|
12
40
|
return {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
method,
|
|
42
|
+
...restDefaults,
|
|
43
|
+
...config,
|
|
44
|
+
headers: {
|
|
45
|
+
...headersDefaults[method.toLowerCase()],
|
|
46
|
+
...config.headers,
|
|
47
|
+
},
|
|
17
48
|
};
|
|
18
49
|
}
|
|
19
|
-
exports.
|
|
50
|
+
exports.applyAxiosDefaults = applyAxiosDefaults;
|
|
20
51
|
//# 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,UAAyC,EAAE,EAC3C,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;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,MAA0B,EAC1B,QAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC;IAEzD,OAAO;QACL,MAAM;QACN,GAAG,YAAY;QACf,GAAG,MAAM;QACT,OAAO,EAAE;YACP,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAmC,CAAC;YACzE,GAAG,MAAM,CAAC,OAAO;SAClB;KACF,CAAC;AACJ,CAAC;AAhBD,gDAgBC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SSRError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ошибка в процессе серверного рендеринга.
|
|
6
|
+
*/
|
|
7
|
+
class SSRError extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* @param message Сообщение.
|
|
10
|
+
* @param statusCode Код ответа.
|
|
11
|
+
*/
|
|
12
|
+
constructor(message, statusCode = 500) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.statusCode = statusCode;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.SSRError = SSRError;
|
|
18
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http-server/errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAGjC;;;OAGG;IACH,YAAY,OAAe,EAAE,UAAU,GAAG,GAAG;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAXD,4BAWC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Handler } from 'express';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Возвращает обработчик, отвечающий данными о времени работы приложения.
|
|
4
4
|
* @return Обработчик http-запроса.
|
|
5
5
|
*/
|
|
6
6
|
export declare function healthCheck(): Handler;
|