@sima-land/isomorph 11.0.0-alpha.1 → 11.0.0-alpha.10
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/{index.d.ts → base.d.ts} +0 -0
- package/config/{index.js → base.js} +1 -1
- package/config/base.js.map +1 -0
- package/config/browser.js +10 -1
- package/config/browser.js.map +1 -1
- package/config/node.js +10 -5
- package/config/node.js.map +1 -1
- package/di/application.d.ts +6 -0
- package/{container → di}/application.js +16 -8
- package/di/application.js.map +1 -0
- package/di/container.d.ts +6 -0
- package/di/container.js +49 -0
- package/di/container.js.map +1 -0
- package/di/errors.d.ts +21 -0
- package/di/errors.js +33 -0
- package/di/errors.js.map +1 -0
- package/di/index.d.ts +6 -0
- package/di/index.js +16 -0
- package/di/index.js.map +1 -0
- package/{preset/index.d.ts → di/preset.d.ts} +3 -1
- package/{preset/index.js → di/preset.js} +1 -1
- package/di/preset.js.map +1 -0
- package/di/token.d.ts +7 -0
- package/di/token.js +17 -0
- package/di/token.js.map +1 -0
- package/di/types.d.ts +32 -0
- package/{container → di}/types.js +0 -0
- package/{preset → di}/types.js.map +1 -1
- package/error-tracker/types.d.ts +2 -7
- package/error-tracker/utils.d.ts +11 -1
- package/error-tracker/utils.js +13 -2
- package/error-tracker/utils.js.map +1 -1
- package/http-client/middleware/logging.d.ts +15 -0
- package/http-client/middleware/logging.js +93 -0
- package/http-client/middleware/logging.js.map +1 -0
- package/http-client/sauce/index.d.ts +27 -0
- package/http-client/sauce/index.js +33 -0
- package/http-client/sauce/index.js.map +1 -0
- package/http-client/utils.d.ts +0 -27
- package/http-client/utils.js +1 -30
- package/http-client/utils.js.map +1 -1
- package/http-server/middleware/tracing.d.ts +8 -2
- package/http-server/middleware/tracing.js +22 -3
- package/http-server/middleware/tracing.js.map +1 -1
- package/logger/handler/console.d.ts +1 -1
- package/logger/handler/console.js +8 -1
- package/logger/handler/console.js.map +1 -1
- package/logger/handler/sentry.d.ts +3 -3
- package/logger/handler/sentry.js +11 -5
- package/logger/handler/sentry.js.map +1 -1
- package/package.json +4 -2
- package/preset/browser/index.d.ts +1 -0
- package/preset/browser/index.js +45 -0
- package/preset/browser/index.js.map +1 -0
- package/preset/node/index.d.ts +6 -2
- package/preset/node/index.js +62 -25
- package/preset/node/index.js.map +1 -1
- package/preset/node/response.d.ts +6 -3
- package/preset/node/response.js +9 -5
- package/preset/node/response.js.map +1 -1
- package/tokens.d.ts +24 -17
- package/tokens.js +23 -17
- 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/react/error-handlers/index.js +1 -0
- package/utils/react/error-handlers/index.js.map +1 -1
- package/utils/ssr/index.d.ts +30 -0
- package/utils/ssr/index.js +51 -0
- package/utils/ssr/index.js.map +1 -0
- package/utils/webpack/index.d.ts +23 -0
- package/utils/webpack/index.js +66 -0
- package/utils/webpack/index.js.map +1 -0
- 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/container/types.js.map +0 -1
- 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/preset/index.js.map +0 -1
- package/preset/types.d.ts +0 -7
- package/preset/types.js +0 -3
- package/tracer/node.d.ts +0 -10
- package/tracer/node.js +0 -38
- package/tracer/node.js.map +0 -1
- package/tracer/types.d.ts +0 -2
- package/tracer/types.js +0 -3
- package/tracer/types.js.map +0 -1
package/http-client/utils.d.ts
CHANGED
|
@@ -1,32 +1,5 @@
|
|
|
1
1
|
import type { Request } from 'express';
|
|
2
2
|
import type { BaseConfig } from '../config/types';
|
|
3
|
-
import type { AxiosInstance } from 'axios';
|
|
4
|
-
import type { AxiosInstanceWrapper, MethodName } from 'middleware-axios';
|
|
5
|
-
export declare type SauceResponse<T = any> = {
|
|
6
|
-
ok: true;
|
|
7
|
-
data: T;
|
|
8
|
-
} | {
|
|
9
|
-
ok: false;
|
|
10
|
-
error: any;
|
|
11
|
-
};
|
|
12
|
-
export interface SauceMethod<K extends MethodName> {
|
|
13
|
-
<T>(...args: Parameters<AxiosInstanceWrapper[K]>): Promise<SauceResponse<T>>;
|
|
14
|
-
}
|
|
15
|
-
export interface Sauce {
|
|
16
|
-
readonly get: SauceMethod<'get'>;
|
|
17
|
-
readonly delete: SauceMethod<'delete'>;
|
|
18
|
-
readonly head: SauceMethod<'head'>;
|
|
19
|
-
readonly options: SauceMethod<'options'>;
|
|
20
|
-
readonly post: SauceMethod<'post'>;
|
|
21
|
-
readonly put: SauceMethod<'put'>;
|
|
22
|
-
readonly patch: SauceMethod<'patch'>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, который никогда не попадают в состояние rejected.
|
|
26
|
-
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
27
|
-
* @return Обертка.
|
|
28
|
-
*/
|
|
29
|
-
export declare function sauce(instance: AxiosInstance | AxiosInstanceWrapper): Sauce;
|
|
30
3
|
/**
|
|
31
4
|
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
32
5
|
* @param config Конфиг.
|
package/http-client/utils.js
CHANGED
|
@@ -1,36 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRequestHeaders =
|
|
3
|
+
exports.getRequestHeaders = void 0;
|
|
4
4
|
const utils_1 = require("../http-server/utils");
|
|
5
|
-
/**
|
|
6
|
-
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, который никогда не попадают в состояние rejected.
|
|
7
|
-
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
8
|
-
* @return Обертка.
|
|
9
|
-
*/
|
|
10
|
-
function sauce(instance) {
|
|
11
|
-
// eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
|
|
12
|
-
function createMethod(methodName) {
|
|
13
|
-
return async function (...args) {
|
|
14
|
-
try {
|
|
15
|
-
const response = await instance[methodName](...args);
|
|
16
|
-
return { ok: true, data: response.data };
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
return { ok: false, error };
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
return {
|
|
24
|
-
get: createMethod('get'),
|
|
25
|
-
delete: createMethod('delete'),
|
|
26
|
-
head: createMethod('head'),
|
|
27
|
-
options: createMethod('options'),
|
|
28
|
-
post: createMethod('post'),
|
|
29
|
-
put: createMethod('put'),
|
|
30
|
-
patch: createMethod('patch'),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
exports.sauce = sauce;
|
|
34
5
|
/**
|
|
35
6
|
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
36
7
|
* @param config Конфиг.
|
package/http-client/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-client/utils.ts"],"names":[],"mappings":";;;AAAA,gDAAuE;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-client/utils.ts"],"names":[],"mappings":";;;AAAA,gDAAuE;AAIvE;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAkB,EAAE,OAAgB;IACpE,OAAO;QACL,aAAa,EAAE,IAAA,oBAAY,EAAC,OAAO,CAAC;QACpC,YAAY,EAAE,YAAY,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE;QAC/D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACnC,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAPD,8CAOC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Handler } from 'express';
|
|
1
|
+
import { Tracer } from '@opentelemetry/api';
|
|
2
|
+
import type { Request, Handler } from 'express';
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает новый middleware для трассировки стадий входящего запроса.
|
|
5
5
|
* @param tracer Tracer.
|
|
6
6
|
* @return Middleware.
|
|
7
7
|
*/
|
|
8
8
|
export declare function tracingMiddleware(tracer: Tracer): Handler;
|
|
9
|
+
/**
|
|
10
|
+
* Возвращает набор стандартных атрибутов для спана.
|
|
11
|
+
* @param req Входящий http-запрос.
|
|
12
|
+
* @return Атрибуты.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getConventionalRequestAttrs(req: Request): Record<string, string | undefined>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.tracingMiddleware = void 0;
|
|
3
|
+
exports.getConventionalRequestAttrs = exports.tracingMiddleware = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const api_1 = require("@opentelemetry/api");
|
|
6
6
|
/**
|
|
@@ -10,8 +10,10 @@ const api_1 = require("@opentelemetry/api");
|
|
|
10
10
|
*/
|
|
11
11
|
function tracingMiddleware(tracer) {
|
|
12
12
|
return (req, res, next) => {
|
|
13
|
-
const
|
|
14
|
-
const rootSpan = tracer.startSpan('response', undefined,
|
|
13
|
+
const externalContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, req.headers);
|
|
14
|
+
const rootSpan = tracer.startSpan('response', undefined, externalContext);
|
|
15
|
+
rootSpan.setAttributes(getConventionalRequestAttrs(req));
|
|
16
|
+
const rootContext = api_1.trace.setSpan(externalContext, rootSpan);
|
|
15
17
|
res.locals.tracing = {
|
|
16
18
|
rootSpan,
|
|
17
19
|
rootContext,
|
|
@@ -29,4 +31,21 @@ function tracingMiddleware(tracer) {
|
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
exports.tracingMiddleware = tracingMiddleware;
|
|
34
|
+
/**
|
|
35
|
+
* Возвращает набор стандартных атрибутов для спана.
|
|
36
|
+
* @param req Входящий http-запрос.
|
|
37
|
+
* @return Атрибуты.
|
|
38
|
+
*/
|
|
39
|
+
function getConventionalRequestAttrs(req) {
|
|
40
|
+
const result = {
|
|
41
|
+
'request.path': req.originalUrl,
|
|
42
|
+
};
|
|
43
|
+
for (const headerName in req.headers) {
|
|
44
|
+
if (headerName.toLowerCase().startsWith('simaland-')) {
|
|
45
|
+
result[headerName] = req.header(headerName);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
exports.getConventionalRequestAttrs = getConventionalRequestAttrs;
|
|
32
51
|
//# sourceMappingURL=tracing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,4CAA8E;AAG9E;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,eAAe,GAAG,iBAAW,CAAC,OAAO,CAAC,kBAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAE1E,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,WAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE7D,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG;YACnB,QAAQ;YACR,WAAW;SACZ,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AA5BD,8CA4BC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,GAAY;IACtD,MAAM,MAAM,GAAuC;QACjD,cAAc,EAAE,GAAG,CAAC,WAAW;KAChC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE;QACpC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACpD,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7C;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,kEAYC"}
|
|
@@ -21,11 +21,18 @@ function createConsoleHandler(config) {
|
|
|
21
21
|
},
|
|
22
22
|
}
|
|
23
23
|
: (0, pino_pretty_1.default)({ colorize: true }));
|
|
24
|
-
return function (event) {
|
|
24
|
+
return function handler(event) {
|
|
25
25
|
switch (event.type) {
|
|
26
|
+
case 'log':
|
|
26
27
|
case 'info':
|
|
27
28
|
logger.info(event.data);
|
|
28
29
|
break;
|
|
30
|
+
case 'warn':
|
|
31
|
+
logger.warn(event.data);
|
|
32
|
+
break;
|
|
33
|
+
case 'debug':
|
|
34
|
+
logger.debug(event.data);
|
|
35
|
+
break;
|
|
29
36
|
case 'error':
|
|
30
37
|
logger.error(event.data);
|
|
31
38
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logger/handler/console.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/logger/handler/console.ts"],"names":[],"mappings":";;;;;;AAEA,gDAAwB;AACxB,8DAAqC;AAErC;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,YAAY,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAA,cAAI,EACjB,MAAM;QACJ,CAAC,CAAC;YACE,UAAU,EAAE;gBACV,0DAA0D;gBAC1D,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aACnC;SACF;QACH,CAAC,CAAC,IAAA,qBAAU,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACnC,CAAC;IAEF,OAAO,SAAS,OAAO,CAAC,KAAK;QAC3B,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;SACT;IACH,CAAC,CAAC;AACJ,CAAC;AA/BD,oDA+BC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { SentryLib } from '../../error-tracker/types';
|
|
2
1
|
import type { LoggerEventHandler } from '../types';
|
|
2
|
+
import type { Hub } from '@sentry/types';
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает новый handler для logger'а для отправки событий в Sentry.
|
|
5
|
-
* @param
|
|
5
|
+
* @param hub Набор данных для работы с Sentry.
|
|
6
6
|
* @return Handler.
|
|
7
7
|
*/
|
|
8
|
-
export declare function createSentryHandler(
|
|
8
|
+
export declare function createSentryHandler(hub: Hub): LoggerEventHandler;
|
package/logger/handler/sentry.js
CHANGED
|
@@ -4,16 +4,17 @@ exports.createSentryHandler = void 0;
|
|
|
4
4
|
const utils_1 = require("../../error-tracker/utils");
|
|
5
5
|
/**
|
|
6
6
|
* Возвращает новый handler для logger'а для отправки событий в Sentry.
|
|
7
|
-
* @param
|
|
7
|
+
* @param hub Набор данных для работы с Sentry.
|
|
8
8
|
* @return Handler.
|
|
9
9
|
*/
|
|
10
|
-
function createSentryHandler(
|
|
10
|
+
function createSentryHandler(hub) {
|
|
11
11
|
return event => {
|
|
12
|
+
// error
|
|
12
13
|
if (event.type === 'error') {
|
|
13
14
|
const error = event.data;
|
|
14
15
|
if (error instanceof utils_1.SentryError) {
|
|
15
16
|
const { level, context, extra } = error.data;
|
|
16
|
-
|
|
17
|
+
hub.withScope(scope => {
|
|
17
18
|
if (level) {
|
|
18
19
|
scope.setLevel(level);
|
|
19
20
|
}
|
|
@@ -23,13 +24,18 @@ function createSentryHandler(sentry) {
|
|
|
23
24
|
if (extra) {
|
|
24
25
|
scope.setExtra(extra.key, extra.data);
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
hub.captureException(error);
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
30
|
-
|
|
31
|
+
hub.captureException(error);
|
|
31
32
|
}
|
|
32
33
|
}
|
|
34
|
+
// breadcrumb
|
|
35
|
+
if (event.data instanceof utils_1.SentryBreadcrumb) {
|
|
36
|
+
const breadcrumb = event.data.data;
|
|
37
|
+
hub.addBreadcrumb(breadcrumb);
|
|
38
|
+
}
|
|
33
39
|
};
|
|
34
40
|
}
|
|
35
41
|
exports.createSentryHandler = createSentryHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/logger/handler/sentry.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/logger/handler/sentry.ts"],"names":[],"mappings":";;;AAEA,qDAA0E;AAE1E;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,KAAK,CAAC,EAAE;QACb,QAAQ;QACR,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YAEzB,IAAI,KAAK,YAAY,mBAAW,EAAE;gBAChC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;gBAE7C,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpB,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACvB;oBAED,IAAI,OAAO,EAAE;wBACX,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;qBAC7C;oBAED,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;qBACvC;oBAED,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAC7B;SACF;QAED,aAAa;QACb,IAAI,KAAK,CAAC,IAAI,YAAY,wBAAgB,EAAE;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAEnC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;AACJ,CAAC;AApCD,kDAoCC"}
|
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.10",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"@types/ejs": "^3.1.1",
|
|
23
23
|
"@types/express": "^4.17.13",
|
|
24
24
|
"@types/jest": "^27.4.1",
|
|
25
|
+
"@types/jsesc": "^3.0.1",
|
|
25
26
|
"@types/lodash": "^4.14.182",
|
|
26
27
|
"@types/react": "^17.0.40",
|
|
27
28
|
"@types/react-dom": "^17.0.13",
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
34
35
|
"@humanwhocodes/env": "^2.2.0",
|
|
35
|
-
"@opentelemetry/api": "^1.0
|
|
36
|
+
"@opentelemetry/api": "^1.1.0",
|
|
36
37
|
"@opentelemetry/exporter-jaeger": "^1.0.1",
|
|
37
38
|
"@opentelemetry/instrumentation": "^0.27.0",
|
|
38
39
|
"@opentelemetry/instrumentation-express": "^0.28.0",
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"dotenv": "^16.0.0",
|
|
47
48
|
"ejs": "^3.1.8",
|
|
48
49
|
"express": "^4.17.3",
|
|
50
|
+
"jsesc": "^3.0.2",
|
|
49
51
|
"middleware-axios": "^2.1.2",
|
|
50
52
|
"pino": "^7.9.1",
|
|
51
53
|
"pino-pretty": "^7.5.4",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PresetBrowser(): import("../../di").Preset;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PresetBrowser = void 0;
|
|
4
|
+
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
5
|
+
const di_1 = require("../../di");
|
|
6
|
+
const tokens_1 = require("../../tokens");
|
|
7
|
+
const base_1 = require("../../config/base");
|
|
8
|
+
const browser_1 = require("../../config/browser");
|
|
9
|
+
const logger_1 = require("../../logger");
|
|
10
|
+
const sentry_1 = require("../../logger/handler/sentry");
|
|
11
|
+
const saga_runner_1 = require("../../saga-runner");
|
|
12
|
+
const browser_2 = require("@sentry/browser");
|
|
13
|
+
const middleware_axios_1 = require("middleware-axios");
|
|
14
|
+
function PresetBrowser() {
|
|
15
|
+
return (0, di_1.createPreset)([
|
|
16
|
+
[tokens_1.KnownToken.Config.source, browser_1.createConfigSource],
|
|
17
|
+
[tokens_1.KnownToken.Config.base, provideBaseConfig],
|
|
18
|
+
[tokens_1.KnownToken.logger, provideLogger],
|
|
19
|
+
[tokens_1.KnownToken.sagaRunner, provideSagaRunner],
|
|
20
|
+
[tokens_1.KnownToken.Http.Client.factory, () => middleware_axios_1.create],
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
exports.PresetBrowser = PresetBrowser;
|
|
24
|
+
function provideBaseConfig(resolve) {
|
|
25
|
+
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
26
|
+
return (0, base_1.createBaseConfig)(source);
|
|
27
|
+
}
|
|
28
|
+
function provideLogger(resolve) {
|
|
29
|
+
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
30
|
+
const client = new browser_2.BrowserClient({
|
|
31
|
+
dsn: source.require('SENTRY_CLIENT_DSN'),
|
|
32
|
+
release: source.require('SENTRY_RELEASE'),
|
|
33
|
+
environment: source.require('SENTRY_ENVIRONMENT'),
|
|
34
|
+
integrations: [...browser_2.defaultIntegrations],
|
|
35
|
+
});
|
|
36
|
+
const hub = new browser_2.Hub(client);
|
|
37
|
+
const logger = (0, logger_1.createLogger)();
|
|
38
|
+
logger.subscribe((0, sentry_1.createSentryHandler)(hub));
|
|
39
|
+
return logger;
|
|
40
|
+
}
|
|
41
|
+
function provideSagaRunner(resolve) {
|
|
42
|
+
const logger = resolve(tokens_1.KnownToken.logger);
|
|
43
|
+
return (0, saga_runner_1.createSagaRunner)(logger);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/browser/index.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,iCAAiD;AACjD,yCAA0C;AAC1C,4CAAqD;AACrD,kDAA0D;AAC1D,yCAA4C;AAC5C,wDAAkE;AAClE,mDAAqD;AACrD,6CAA0E;AAI1E,uDAA0C;AAE1C,SAAgB,aAAa;IAC3B,OAAO,IAAA,iBAAY,EAAC;QAClB,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,4BAAkB,CAAC;QAC9C,CAAC,mBAAU,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC3C,CAAC,mBAAU,CAAC,MAAM,EAAE,aAAa,CAAC;QAClC,CAAC,mBAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC;QAC1C,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAM,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AARD,sCAQC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,IAAI,uBAAa,CAAC;QAC/B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACjD,YAAY,EAAE,CAAC,GAAG,6BAAmB,CAAC;KACvC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAA,qBAAY,GAAE,CAAC;IAE9B,MAAM,CAAC,SAAS,CAAC,IAAA,4BAAmB,EAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
|
package/preset/node/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { Preset } from '../types';
|
|
2
|
-
import type { Provider } from '../../container/types';
|
|
3
1
|
import type { BaseConfig } from '../../config/types';
|
|
4
2
|
import type { Logger } from '../../logger/types';
|
|
5
3
|
import type { Tracer } from '@opentelemetry/api';
|
|
6
4
|
import type { DefaultMiddleware } from '../../http-server/types';
|
|
5
|
+
import { Provider, Preset } from '../../di';
|
|
6
|
+
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
7
|
+
import { Resource } from '@opentelemetry/resources';
|
|
7
8
|
/**
|
|
8
9
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
9
10
|
* @return Preset.
|
|
@@ -12,4 +13,7 @@ export declare function PresetNode(): Preset;
|
|
|
12
13
|
export declare const provideBaseConfig: Provider<BaseConfig>;
|
|
13
14
|
export declare const provideLogger: Provider<Logger>;
|
|
14
15
|
export declare const provideTracer: Provider<Tracer>;
|
|
16
|
+
export declare const provideSpanExporter: Provider<SpanExporter>;
|
|
17
|
+
export declare const provideTracerProvider: Provider<BasicTracerProvider>;
|
|
18
|
+
export declare const provideTracerProviderResource: Provider<Resource>;
|
|
15
19
|
export declare const provideDefaultMiddleware: Provider<DefaultMiddleware>;
|
package/preset/node/index.js
CHANGED
|
@@ -3,77 +3,114 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.provideDefaultMiddleware = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
6
|
+
exports.provideDefaultMiddleware = exports.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
7
|
+
const di_1 = require("../../di");
|
|
8
|
+
const tracing_1 = require("@opentelemetry/tracing");
|
|
7
9
|
const tokens_1 = require("../../tokens");
|
|
8
|
-
const __1 = require("..");
|
|
9
10
|
const node_1 = require("../../config/node");
|
|
10
|
-
const
|
|
11
|
+
const base_1 = require("../../config/base");
|
|
11
12
|
const logger_1 = require("../../logger");
|
|
12
|
-
const node_2 = require("../../tracer/node");
|
|
13
13
|
const console_1 = require("../../logger/handler/console");
|
|
14
14
|
const sentry_1 = require("../../logger/handler/sentry");
|
|
15
|
-
const node_3 = require("../../error-tracker/node");
|
|
16
15
|
const logging_1 = require("../../http-server/middleware/logging");
|
|
17
|
-
const
|
|
16
|
+
const tracing_2 = require("../../http-server/middleware/tracing");
|
|
18
17
|
const metrics_1 = require("../../http-server/middleware/metrics");
|
|
19
|
-
const
|
|
18
|
+
const node_2 = require("../../metrics/node");
|
|
20
19
|
const exporter_jaeger_1 = require("@opentelemetry/exporter-jaeger");
|
|
21
20
|
const middleware_axios_1 = require("middleware-axios");
|
|
22
21
|
const express_1 = __importDefault(require("express"));
|
|
23
|
-
const
|
|
22
|
+
const node_3 = require("@sentry/node");
|
|
23
|
+
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
24
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
25
|
+
const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
|
|
26
|
+
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
27
|
+
const tracing_3 = require("../../tracing");
|
|
28
|
+
const os_1 = require("os");
|
|
24
29
|
/**
|
|
25
30
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
26
31
|
* @return Preset.
|
|
27
32
|
*/
|
|
28
33
|
function PresetNode() {
|
|
29
|
-
return (0,
|
|
34
|
+
return (0, di_1.createPreset)([
|
|
30
35
|
[tokens_1.KnownToken.Config.source, node_1.createConfigSource],
|
|
31
36
|
[tokens_1.KnownToken.Config.base, exports.provideBaseConfig],
|
|
32
37
|
[tokens_1.KnownToken.logger, exports.provideLogger],
|
|
33
|
-
[tokens_1.KnownToken.tracer, exports.provideTracer],
|
|
38
|
+
[tokens_1.KnownToken.Tracing.tracer, exports.provideTracer],
|
|
39
|
+
[tokens_1.KnownToken.Tracing.spanExporter, exports.provideSpanExporter],
|
|
40
|
+
[tokens_1.KnownToken.Tracing.tracerProvider, exports.provideTracerProvider],
|
|
41
|
+
[tokens_1.KnownToken.Tracing.tracerProviderResource, exports.provideTracerProviderResource],
|
|
34
42
|
[tokens_1.KnownToken.Http.Client.factory, () => middleware_axios_1.create],
|
|
35
43
|
[tokens_1.KnownToken.Http.Server.factory, () => express_1.default],
|
|
36
44
|
[tokens_1.KnownToken.Http.Server.Defaults.middleware, exports.provideDefaultMiddleware],
|
|
37
|
-
[tokens_1.KnownToken.Metrics.httpApp,
|
|
45
|
+
[tokens_1.KnownToken.Metrics.httpApp, node_2.createMetricsHttpApp],
|
|
38
46
|
]);
|
|
39
47
|
}
|
|
40
48
|
exports.PresetNode = PresetNode;
|
|
41
49
|
const provideBaseConfig = resolve => {
|
|
42
50
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
43
|
-
return (0,
|
|
51
|
+
return (0, base_1.createBaseConfig)(source);
|
|
44
52
|
};
|
|
45
53
|
exports.provideBaseConfig = provideBaseConfig;
|
|
46
54
|
const provideLogger = resolve => {
|
|
47
55
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
48
56
|
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
49
|
-
const
|
|
50
|
-
dsn: source.
|
|
51
|
-
release: source.
|
|
52
|
-
environment: source.
|
|
57
|
+
const client = new node_3.NodeClient({
|
|
58
|
+
dsn: source.require('SENTRY_SERVER_DSN'),
|
|
59
|
+
release: source.require('SENTRY_RELEASE'),
|
|
60
|
+
environment: source.require('SENTRY_ENVIRONMENT'),
|
|
61
|
+
integrations: [...node_3.defaultIntegrations],
|
|
53
62
|
});
|
|
63
|
+
const hub = new node_3.Hub(client);
|
|
54
64
|
const logger = (0, logger_1.createLogger)();
|
|
55
65
|
logger.subscribe((0, console_1.createConsoleHandler)(config));
|
|
56
|
-
logger.subscribe((0, sentry_1.createSentryHandler)(
|
|
66
|
+
logger.subscribe((0, sentry_1.createSentryHandler)(hub));
|
|
57
67
|
return logger;
|
|
58
68
|
};
|
|
59
69
|
exports.provideLogger = provideLogger;
|
|
60
70
|
const provideTracer = resolve => {
|
|
71
|
+
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
72
|
+
const provider = resolve(tokens_1.KnownToken.Tracing.tracerProvider);
|
|
73
|
+
return provider.getTracer(config.appName, config.appVersion);
|
|
74
|
+
};
|
|
75
|
+
exports.provideTracer = provideTracer;
|
|
76
|
+
const provideSpanExporter = resolve => {
|
|
61
77
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
62
78
|
const exporter = new exporter_jaeger_1.JaegerExporter({
|
|
63
|
-
|
|
79
|
+
host: source.require('JAEGER_AGENT_HOST'),
|
|
80
|
+
port: parseInt(source.require('JAEGER_AGENT_PORT')) || undefined,
|
|
64
81
|
});
|
|
65
|
-
return
|
|
82
|
+
return exporter;
|
|
66
83
|
};
|
|
67
|
-
exports.
|
|
84
|
+
exports.provideSpanExporter = provideSpanExporter;
|
|
85
|
+
const provideTracerProvider = resolve => {
|
|
86
|
+
const exporter = resolve(tokens_1.KnownToken.Tracing.spanExporter);
|
|
87
|
+
const resource = resolve(tokens_1.KnownToken.Tracing.tracerProviderResource);
|
|
88
|
+
const provider = new sdk_trace_node_1.NodeTracerProvider({
|
|
89
|
+
resource,
|
|
90
|
+
});
|
|
91
|
+
provider.addSpanProcessor(new tracing_1.BatchSpanProcessor(exporter)); // @todo разобраться с as any
|
|
92
|
+
provider.register({
|
|
93
|
+
propagator: new propagator_jaeger_1.JaegerPropagator(),
|
|
94
|
+
});
|
|
95
|
+
return provider; // @todo разобраться с as any
|
|
96
|
+
};
|
|
97
|
+
exports.provideTracerProvider = provideTracerProvider;
|
|
98
|
+
const provideTracerProviderResource = resolve => {
|
|
99
|
+
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
100
|
+
return (0, tracing_3.getConventionalResource)(config).merge(new resources_1.Resource({
|
|
101
|
+
[semantic_conventions_1.SemanticResourceAttributes.HOST_NAME]: (0, os_1.hostname)(),
|
|
102
|
+
}));
|
|
103
|
+
};
|
|
104
|
+
exports.provideTracerProviderResource = provideTracerProviderResource;
|
|
68
105
|
const provideDefaultMiddleware = resolve => {
|
|
69
106
|
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
70
107
|
const logger = resolve(tokens_1.KnownToken.logger);
|
|
71
|
-
const tracer = resolve(tokens_1.KnownToken.tracer);
|
|
72
|
-
const metrics = (0,
|
|
108
|
+
const tracer = resolve(tokens_1.KnownToken.Tracing.tracer);
|
|
109
|
+
const metrics = (0, node_2.createDefaultMetrics)();
|
|
73
110
|
return {
|
|
74
|
-
start: [
|
|
111
|
+
start: [node_3.Handlers.requestHandler()],
|
|
75
112
|
logging: [(0, logging_1.loggingMiddleware)(config, logger)],
|
|
76
|
-
tracing: [(0,
|
|
113
|
+
tracing: [(0, tracing_2.tracingMiddleware)(tracer)],
|
|
77
114
|
metrics: [
|
|
78
115
|
(0, metrics_1.responseMetricsMiddleware)(config, {
|
|
79
116
|
counter: metrics.requestCount,
|
|
@@ -83,7 +120,7 @@ const provideDefaultMiddleware = resolve => {
|
|
|
83
120
|
histogram: metrics.renderDuration,
|
|
84
121
|
}),
|
|
85
122
|
],
|
|
86
|
-
finish: [
|
|
123
|
+
finish: [node_3.Handlers.errorHandler()],
|
|
87
124
|
};
|
|
88
125
|
};
|
|
89
126
|
exports.provideDefaultMiddleware = provideDefaultMiddleware;
|
package/preset/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { Preset } from '../types';
|
|
3
|
-
import type { Provider, Resolve } from '../../container/types';
|
|
4
2
|
import type { SagaRunner } from '../../saga-runner/types';
|
|
5
3
|
import type { PageTemplate } from '../../http-server/types';
|
|
6
4
|
import type { Handler } from 'express';
|
|
7
|
-
import { Application } from '../../
|
|
5
|
+
import { Application, Preset, Provider, Resolve } from '../../di';
|
|
8
6
|
/**
|
|
9
7
|
* Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
|
|
10
8
|
* @return Preset.
|
|
@@ -14,4 +12,9 @@ export declare const provideSagaRunner: Provider<SagaRunner>;
|
|
|
14
12
|
export declare const provideRender: Provider<(el: JSX.Element) => string | Promise<string>>;
|
|
15
13
|
export declare const provideTemplate: Provider<PageTemplate>;
|
|
16
14
|
export declare const provideMain: Provider<() => void>;
|
|
15
|
+
/**
|
|
16
|
+
* Возвращает express-handler, создающий дочернее di-приложение при запросе.
|
|
17
|
+
* @param appFactory Фабрика di-приложения запроса.
|
|
18
|
+
* @return Обработчик.
|
|
19
|
+
*/
|
|
17
20
|
export declare function HandlerProvider(appFactory: () => Application): (resolve: Resolve) => Handler;
|
package/preset/node/response.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HandlerProvider = exports.provideMain = exports.provideTemplate = exports.provideRender = exports.provideSagaRunner = exports.PresetResponse = void 0;
|
|
4
|
-
const
|
|
4
|
+
const di_1 = require("../../di");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
const __1 = require("..");
|
|
7
6
|
const server_1 = require("react-dom/server");
|
|
8
7
|
const saga_runner_1 = require("../../saga-runner");
|
|
9
8
|
const constants_1 = require("../../http-server/constants");
|
|
@@ -14,8 +13,8 @@ const utils_1 = require("../../http-server/utils");
|
|
|
14
13
|
* @return Preset.
|
|
15
14
|
*/
|
|
16
15
|
function PresetResponse() {
|
|
17
|
-
return (0,
|
|
18
|
-
[tokens_1.KnownToken.
|
|
16
|
+
return (0, di_1.createPreset)([
|
|
17
|
+
[tokens_1.KnownToken.sagaRunner, exports.provideSagaRunner],
|
|
19
18
|
[tokens_1.KnownToken.Response.render, exports.provideRender],
|
|
20
19
|
[tokens_1.KnownToken.Response.template, exports.provideTemplate],
|
|
21
20
|
[tokens_1.KnownToken.Response.main, exports.provideMain],
|
|
@@ -63,9 +62,14 @@ const provideMain = resolve => {
|
|
|
63
62
|
};
|
|
64
63
|
};
|
|
65
64
|
exports.provideMain = provideMain;
|
|
65
|
+
/**
|
|
66
|
+
* Возвращает express-handler, создающий дочернее di-приложение при запросе.
|
|
67
|
+
* @param appFactory Фабрика di-приложения запроса.
|
|
68
|
+
* @return Обработчик.
|
|
69
|
+
*/
|
|
66
70
|
function HandlerProvider(appFactory) {
|
|
67
71
|
return function provider(resolve) {
|
|
68
|
-
const parent = resolve(
|
|
72
|
+
const parent = resolve(di_1.CURRENT_APP);
|
|
69
73
|
return function handler(req, res, next) {
|
|
70
74
|
const app = appFactory();
|
|
71
75
|
app.attach(parent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":"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"}
|