@sima-land/isomorph 11.0.0-alpha.19 → 11.0.0-alpha.21
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/error-tracking/types.d.ts +2 -2
- package/http-client/middleware/logging.d.ts +3 -2
- package/http-client/middleware/logging.js +22 -7
- package/http-client/middleware/logging.js.map +1 -1
- package/logger/handler/console.js +4 -1
- package/logger/handler/console.js.map +1 -1
- package/package.json +23 -20
- package/preset/browser/index.d.ts +4 -0
- package/preset/browser/index.js +24 -3
- package/preset/browser/index.js.map +1 -1
- package/preset/node/index.d.ts +4 -0
- package/preset/node/index.js +23 -2
- package/preset/node/index.js.map +1 -1
- package/preset/types.d.ts +8 -0
- package/preset/types.js +3 -0
- package/preset/types.js.map +1 -0
- package/preset/utils.d.ts +15 -0
- package/preset/utils.js +26 -0
- package/preset/utils.js.map +1 -0
- package/tokens.d.ts +9 -0
- package/tokens.js +8 -0
- package/tokens.js.map +1 -1
- package/utils/ssr/index.d.ts +16 -8
- package/utils/ssr/index.js.map +1 -1
- package/utils/webpack/index.js +3 -1
- package/utils/webpack/index.js.map +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SeverityLevel, Context, Extra, Breadcrumb } from '@sentry/types';
|
|
2
2
|
/**
|
|
3
3
|
* Данные ошибки для Sentry.
|
|
4
4
|
*/
|
|
5
5
|
export interface SentryErrorData {
|
|
6
|
-
level?:
|
|
6
|
+
level?: SeverityLevel;
|
|
7
7
|
context?: {
|
|
8
8
|
key: string;
|
|
9
9
|
data: Context | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Middleware } from 'middleware-axios';
|
|
2
2
|
import { Logger } from '../../logger/types';
|
|
3
|
-
import {
|
|
3
|
+
import { SeverityLevel } from '@sentry/types';
|
|
4
4
|
/**
|
|
5
5
|
* Возвращает новый middleware для логирования запросов.
|
|
6
6
|
* @param logger Логгер.
|
|
@@ -9,7 +9,8 @@ import { Severity } from '@sentry/types';
|
|
|
9
9
|
export declare function loggingMiddleware(logger: Logger): Middleware<any>;
|
|
10
10
|
/**
|
|
11
11
|
* Возвращает уровень на основе статуса ответа.
|
|
12
|
+
* @todo Возможно стоит вынести в preset.
|
|
12
13
|
* @param status Статус.
|
|
13
14
|
* @return Уровень.
|
|
14
15
|
*/
|
|
15
|
-
export declare function severityFromStatus(status: number | undefined):
|
|
16
|
+
export declare function severityFromStatus(status: number | undefined): SeverityLevel;
|
|
@@ -6,7 +6,6 @@ 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 types_1 = require("@sentry/types");
|
|
10
9
|
/**
|
|
11
10
|
* Возвращает новый middleware для логирования запросов.
|
|
12
11
|
* @param logger Логгер.
|
|
@@ -28,7 +27,7 @@ function loggingMiddleware(logger) {
|
|
|
28
27
|
method: readyMethod,
|
|
29
28
|
params,
|
|
30
29
|
},
|
|
31
|
-
level:
|
|
30
|
+
level: 'info',
|
|
32
31
|
}));
|
|
33
32
|
const response = await next(config);
|
|
34
33
|
logger.info(new error_tracking_1.SentryBreadcrumb({
|
|
@@ -40,13 +39,14 @@ function loggingMiddleware(logger) {
|
|
|
40
39
|
method: readyMethod,
|
|
41
40
|
params,
|
|
42
41
|
},
|
|
43
|
-
level:
|
|
42
|
+
level: 'info',
|
|
44
43
|
}));
|
|
45
44
|
}
|
|
46
45
|
catch (error) {
|
|
47
46
|
if (axios_1.default.isAxiosError(error)) {
|
|
48
47
|
const statusCode = error.response?.status || 'UNKNOWN';
|
|
49
48
|
logger.error(new error_tracking_1.SentryError(`HTTP request failed with status code ${statusCode}`, {
|
|
49
|
+
// @todo в будущем дать возможность конфигурировать
|
|
50
50
|
level: severityFromStatus(error.response?.status),
|
|
51
51
|
context: {
|
|
52
52
|
key: 'Request details',
|
|
@@ -72,7 +72,7 @@ function loggingMiddleware(logger) {
|
|
|
72
72
|
method: readyMethod,
|
|
73
73
|
params,
|
|
74
74
|
},
|
|
75
|
-
level:
|
|
75
|
+
level: 'error',
|
|
76
76
|
}));
|
|
77
77
|
}
|
|
78
78
|
// ВАЖНО: не скрываем ошибку, сообщаем остальному миру про нее
|
|
@@ -83,13 +83,28 @@ function loggingMiddleware(logger) {
|
|
|
83
83
|
exports.loggingMiddleware = loggingMiddleware;
|
|
84
84
|
/**
|
|
85
85
|
* Возвращает уровень на основе статуса ответа.
|
|
86
|
+
* @todo Возможно стоит вынести в preset.
|
|
86
87
|
* @param status Статус.
|
|
87
88
|
* @return Уровень.
|
|
88
89
|
*/
|
|
89
90
|
function severityFromStatus(status) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
let result;
|
|
92
|
+
if (typeof status === 'number') {
|
|
93
|
+
switch (true) {
|
|
94
|
+
case status >= 200 && status <= 299:
|
|
95
|
+
result = 'info';
|
|
96
|
+
break;
|
|
97
|
+
case status >= 300 && status <= 499:
|
|
98
|
+
result = 'warning';
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
result = 'error';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
result = 'error';
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
93
108
|
}
|
|
94
109
|
exports.severityFromStatus = severityFromStatus;
|
|
95
110
|
//# sourceMappingURL=logging.js.map
|
|
@@ -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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"}
|
|
@@ -20,7 +20,10 @@ function createConsoleHandler(config) {
|
|
|
20
20
|
level: label => ({ level: label }),
|
|
21
21
|
},
|
|
22
22
|
}
|
|
23
|
-
: (0, pino_pretty_1.default)({
|
|
23
|
+
: (0, pino_pretty_1.default)({
|
|
24
|
+
colorize: true,
|
|
25
|
+
translateTime: 'yyyy-mm-dd HH:MM:ss.l o',
|
|
26
|
+
}));
|
|
24
27
|
return function handler(event) {
|
|
25
28
|
switch (event.type) {
|
|
26
29
|
case 'log':
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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;YACT,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,yBAAyB;SACzC,CAAC,CACP,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;AAlCD,oDAkCC"}
|
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.21",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -15,8 +15,11 @@
|
|
|
15
15
|
"test": "jest",
|
|
16
16
|
"test:coverage": "jest --clearCache && jest --coverage"
|
|
17
17
|
},
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=16.15.1"
|
|
20
|
+
},
|
|
18
21
|
"devDependencies": {
|
|
19
|
-
"@sima-land/linters": "^2.1.
|
|
22
|
+
"@sima-land/linters": "^2.1.5",
|
|
20
23
|
"@swc/jest": "^0.2.20",
|
|
21
24
|
"@testing-library/react": "^12.1.3",
|
|
22
25
|
"@types/ejs": "^3.1.1",
|
|
@@ -27,40 +30,40 @@
|
|
|
27
30
|
"@types/react": "^17.0.40",
|
|
28
31
|
"@types/react-dom": "^17.0.13",
|
|
29
32
|
"@types/webpack": "^5.28.0",
|
|
30
|
-
"husky": "^
|
|
33
|
+
"husky": "^8.0.1",
|
|
31
34
|
"jest": "^27.5.1",
|
|
32
|
-
"typescript": "^4.
|
|
35
|
+
"typescript": "^4.7.4"
|
|
33
36
|
},
|
|
34
37
|
"dependencies": {
|
|
35
|
-
"@humanwhocodes/env": "^2.2.
|
|
38
|
+
"@humanwhocodes/env": "^2.2.2",
|
|
36
39
|
"@opentelemetry/api": "^1.1.0",
|
|
37
|
-
"@opentelemetry/exporter-jaeger": "^1.0
|
|
38
|
-
"@opentelemetry/instrumentation": "^0.
|
|
39
|
-
"@opentelemetry/instrumentation-express": "^0.
|
|
40
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
41
|
-
"@opentelemetry/resources": "^1.0
|
|
42
|
-
"@opentelemetry/sdk-trace-node": "^1.0
|
|
43
|
-
"@opentelemetry/semantic-conventions": "^1.0
|
|
40
|
+
"@opentelemetry/exporter-jaeger": "^1.5.0",
|
|
41
|
+
"@opentelemetry/instrumentation": "^0.31.0",
|
|
42
|
+
"@opentelemetry/instrumentation-express": "^0.30.0",
|
|
43
|
+
"@opentelemetry/instrumentation-http": "^0.31.0",
|
|
44
|
+
"@opentelemetry/resources": "^1.5.0",
|
|
45
|
+
"@opentelemetry/sdk-trace-node": "^1.5.0",
|
|
46
|
+
"@opentelemetry/semantic-conventions": "^1.5.0",
|
|
44
47
|
"@opentelemetry/tracing": "^0.24.0",
|
|
45
|
-
"@sentry/browser": "^
|
|
46
|
-
"@sentry/node": "^
|
|
48
|
+
"@sentry/browser": "^7.10.0",
|
|
49
|
+
"@sentry/node": "^7.10.0",
|
|
47
50
|
"dotenv": "^16.0.0",
|
|
48
51
|
"ejs": "^3.1.8",
|
|
49
52
|
"express": "^4.17.3",
|
|
50
53
|
"jsesc": "^3.0.2",
|
|
51
54
|
"middleware-axios": "^2.1.2",
|
|
52
|
-
"pino": "^
|
|
53
|
-
"pino-pretty": "^
|
|
55
|
+
"pino": "^8.4.1",
|
|
56
|
+
"pino-pretty": "^9.0.0",
|
|
54
57
|
"prom-client": "^14.0.1",
|
|
55
|
-
"webpack": "^5.
|
|
58
|
+
"webpack": "^5.74.0"
|
|
56
59
|
},
|
|
57
60
|
"peerDependencies": {
|
|
58
|
-
"@reduxjs/toolkit": "^1.8.
|
|
61
|
+
"@reduxjs/toolkit": "^1.8.4",
|
|
59
62
|
"axios": "^0.24.0",
|
|
60
63
|
"lodash": "^4.17.21",
|
|
61
64
|
"react": "^17.0.2",
|
|
62
65
|
"react-dom": "^17.0.2",
|
|
63
|
-
"react-redux": "^
|
|
64
|
-
"redux-saga": "^1.
|
|
66
|
+
"react-redux": "^8.0.2",
|
|
67
|
+
"redux-saga": "^1.2.0"
|
|
65
68
|
}
|
|
66
69
|
}
|
|
@@ -2,7 +2,11 @@ import { Resolve } from '../../di';
|
|
|
2
2
|
import { Logger } from '../../logger';
|
|
3
3
|
import { SagaExtendedMiddleware } from '../../utils/redux-saga';
|
|
4
4
|
import type { BaseConfig } from '../../config/types';
|
|
5
|
+
import { BridgeClientSide } from '../../utils/ssr';
|
|
6
|
+
import { StrictMap, KnownHttpApiKey } from '../types';
|
|
5
7
|
export declare function PresetBrowser(): import("../../di").Preset;
|
|
6
8
|
export declare function provideBaseConfig(resolve: Resolve): BaseConfig;
|
|
7
9
|
export declare function provideLogger(resolve: Resolve): Logger;
|
|
8
10
|
export declare function provideSagaMiddleware(resolve: Resolve): SagaExtendedMiddleware;
|
|
11
|
+
export declare function provideBridgeClientSide(resolve: Resolve): BridgeClientSide<unknown>;
|
|
12
|
+
export declare function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey>;
|
package/preset/browser/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.provideSagaMiddleware = exports.provideLogger = exports.provideBaseConfig = exports.PresetBrowser = void 0;
|
|
3
|
+
exports.provideKnownHttpApiHosts = exports.provideBridgeClientSide = exports.provideSagaMiddleware = exports.provideLogger = exports.provideBaseConfig = exports.PresetBrowser = void 0;
|
|
4
4
|
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
5
5
|
const di_1 = require("../../di");
|
|
6
6
|
const tokens_1 = require("../../tokens");
|
|
@@ -11,6 +11,8 @@ const sentry_1 = require("../../logger/handler/sentry");
|
|
|
11
11
|
const redux_saga_1 = require("../../utils/redux-saga");
|
|
12
12
|
const browser_2 = require("@sentry/browser");
|
|
13
13
|
const middleware_axios_1 = require("middleware-axios");
|
|
14
|
+
const ssr_1 = require("../../utils/ssr");
|
|
15
|
+
const utils_1 = require("../utils");
|
|
14
16
|
function PresetBrowser() {
|
|
15
17
|
return (0, di_1.createPreset)([
|
|
16
18
|
[tokens_1.KnownToken.Config.source, browser_1.createConfigSource],
|
|
@@ -18,6 +20,8 @@ function PresetBrowser() {
|
|
|
18
20
|
[tokens_1.KnownToken.logger, provideLogger],
|
|
19
21
|
[tokens_1.KnownToken.sagaMiddleware, provideSagaMiddleware],
|
|
20
22
|
[tokens_1.KnownToken.Http.Client.factory, () => middleware_axios_1.create],
|
|
23
|
+
[tokens_1.KnownToken.SsrBridge.clientSide, provideBridgeClientSide],
|
|
24
|
+
[tokens_1.KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts],
|
|
21
25
|
]);
|
|
22
26
|
}
|
|
23
27
|
exports.PresetBrowser = PresetBrowser;
|
|
@@ -29,9 +33,11 @@ exports.provideBaseConfig = provideBaseConfig;
|
|
|
29
33
|
function provideLogger(resolve) {
|
|
30
34
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
31
35
|
const client = new browser_2.BrowserClient({
|
|
32
|
-
|
|
36
|
+
transport: browser_2.makeFetchTransport,
|
|
37
|
+
stackParser: browser_2.defaultStackParser,
|
|
38
|
+
dsn: source.require('PUBLIC_SENTRY_DSN'),
|
|
33
39
|
release: source.require('SENTRY_RELEASE'),
|
|
34
|
-
environment: source.require('
|
|
40
|
+
environment: source.require('PUBLIC_SENTRY_ENVIRONMENT'),
|
|
35
41
|
integrations: [...browser_2.defaultIntegrations],
|
|
36
42
|
});
|
|
37
43
|
const hub = new browser_2.Hub(client);
|
|
@@ -45,4 +51,19 @@ function provideSagaMiddleware(resolve) {
|
|
|
45
51
|
return (0, redux_saga_1.createSagaMiddleware)(logger);
|
|
46
52
|
}
|
|
47
53
|
exports.provideSagaMiddleware = provideSagaMiddleware;
|
|
54
|
+
function provideBridgeClientSide(resolve) {
|
|
55
|
+
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
56
|
+
return ssr_1.SsrBridge.resolve(config.appName);
|
|
57
|
+
}
|
|
58
|
+
exports.provideBridgeClientSide = provideBridgeClientSide;
|
|
59
|
+
function provideKnownHttpApiHosts(resolve) {
|
|
60
|
+
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
61
|
+
return new utils_1.HttpApiHostPool({
|
|
62
|
+
ilium: 'PUBLIC_API_URL_ILIUM',
|
|
63
|
+
simaV3: 'PUBLIC_API_URL_SIMALAND_V3',
|
|
64
|
+
simaV4: 'PUBLIC_API_URL_SIMALAND_V4',
|
|
65
|
+
simaV6: 'PUBLIC_API_URL_SIMALAND_V6',
|
|
66
|
+
}, source);
|
|
67
|
+
}
|
|
68
|
+
exports.provideKnownHttpApiHosts = provideKnownHttpApiHosts;
|
|
48
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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,yCAAoD;AACpD,wDAAkE;AAClE,uDAAsF;AACtF,
|
|
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,yCAAoD;AACpD,wDAAkE;AAClE,uDAAsF;AACtF,6CAMyB;AACzB,uDAA0C;AAE1C,yCAA8D;AAE9D,oCAA2C;AAE3C,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,cAAc,EAAE,qBAAqB,CAAC;QAClD,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAM,CAAC;QAC9C,CAAC,mBAAU,CAAC,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;QAC1D,CAAC,mBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAwB,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC;AAVD,sCAUC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAJD,8CAIC;AAED,SAAgB,aAAa,CAAC,OAAgB;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,IAAI,uBAAa,CAAC;QAC/B,SAAS,EAAE,4BAAkB;QAC7B,WAAW,EAAE,4BAAkB;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,2BAA2B,CAAC;QACxD,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;AAnBD,sCAmBC;AAED,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,IAAA,iCAAoB,EAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAJD,sDAIC;AAED,SAAgB,uBAAuB,CAAC,OAAgB;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE/C,OAAO,eAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAJD,0DAIC;AAED,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO,IAAI,uBAAe,CACxB;QACE,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,4BAA4B;QACpC,MAAM,EAAE,4BAA4B;QACpC,MAAM,EAAE,4BAA4B;KACrC,EACD,MAAM,CACP,CAAC;AACJ,CAAC;AAZD,4DAYC"}
|
package/preset/node/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ import type { DefaultMiddleware } from '../../http-server/types';
|
|
|
5
5
|
import { Resolve, Preset } from '../../di';
|
|
6
6
|
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
7
7
|
import { Resource } from '@opentelemetry/resources';
|
|
8
|
+
import { BridgeServerSide } from '../../utils/ssr';
|
|
9
|
+
import { StrictMap, KnownHttpApiKey } from '../types';
|
|
8
10
|
/**
|
|
9
11
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
10
12
|
* @return Preset.
|
|
@@ -17,3 +19,5 @@ export declare function provideSpanExporter(resolve: Resolve): SpanExporter;
|
|
|
17
19
|
export declare function provideTracerProvider(resolve: Resolve): BasicTracerProvider;
|
|
18
20
|
export declare function provideTracerProviderResource(resolve: Resolve): Resource;
|
|
19
21
|
export declare function provideDefaultMiddleware(resolve: Resolve): DefaultMiddleware;
|
|
22
|
+
export declare function provideBridgeServerSide(resolve: Resolve): BridgeServerSide;
|
|
23
|
+
export declare function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey>;
|
package/preset/node/index.js
CHANGED
|
@@ -3,7 +3,7 @@ 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.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
6
|
+
exports.provideKnownHttpApiHosts = exports.provideBridgeServerSide = exports.provideDefaultMiddleware = exports.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
7
7
|
const di_1 = require("../../di");
|
|
8
8
|
const tracing_1 = require("@opentelemetry/tracing");
|
|
9
9
|
const tokens_1 = require("../../tokens");
|
|
@@ -26,6 +26,8 @@ const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
|
|
|
26
26
|
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
27
27
|
const tracing_3 = require("../../tracing");
|
|
28
28
|
const os_1 = require("os");
|
|
29
|
+
const ssr_1 = require("../../utils/ssr");
|
|
30
|
+
const utils_1 = require("../utils");
|
|
29
31
|
/**
|
|
30
32
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
31
33
|
* @return Preset.
|
|
@@ -43,6 +45,8 @@ function PresetNode() {
|
|
|
43
45
|
[tokens_1.KnownToken.Http.Server.factory, () => express_1.default],
|
|
44
46
|
[tokens_1.KnownToken.Http.Server.Defaults.middleware, provideDefaultMiddleware],
|
|
45
47
|
[tokens_1.KnownToken.Metrics.httpApp, node_2.createMetricsHttpApp],
|
|
48
|
+
[tokens_1.KnownToken.SsrBridge.serverSide, provideBridgeServerSide],
|
|
49
|
+
[tokens_1.KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts],
|
|
46
50
|
]);
|
|
47
51
|
}
|
|
48
52
|
exports.PresetNode = PresetNode;
|
|
@@ -55,7 +59,9 @@ function provideLogger(resolve) {
|
|
|
55
59
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
56
60
|
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
57
61
|
const client = new node_3.NodeClient({
|
|
58
|
-
|
|
62
|
+
transport: node_3.makeNodeTransport,
|
|
63
|
+
stackParser: node_3.defaultStackParser,
|
|
64
|
+
dsn: source.require('SENTRY_DSN'),
|
|
59
65
|
release: source.require('SENTRY_RELEASE'),
|
|
60
66
|
environment: source.require('SENTRY_ENVIRONMENT'),
|
|
61
67
|
integrations: [...node_3.defaultIntegrations],
|
|
@@ -124,4 +130,19 @@ function provideDefaultMiddleware(resolve) {
|
|
|
124
130
|
};
|
|
125
131
|
}
|
|
126
132
|
exports.provideDefaultMiddleware = provideDefaultMiddleware;
|
|
133
|
+
function provideBridgeServerSide(resolve) {
|
|
134
|
+
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
135
|
+
return ssr_1.SsrBridge.prepare(config.appName);
|
|
136
|
+
}
|
|
137
|
+
exports.provideBridgeServerSide = provideBridgeServerSide;
|
|
138
|
+
function provideKnownHttpApiHosts(resolve) {
|
|
139
|
+
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
140
|
+
return new utils_1.HttpApiHostPool({
|
|
141
|
+
ilium: 'API_URL_ILIUM',
|
|
142
|
+
simaV3: 'API_URL_SIMALAND_V3',
|
|
143
|
+
simaV4: 'API_URL_SIMALAND_V4',
|
|
144
|
+
simaV6: 'API_URL_SIMALAND_V6',
|
|
145
|
+
}, source);
|
|
146
|
+
}
|
|
147
|
+
exports.provideKnownHttpApiHosts = provideKnownHttpApiHosts;
|
|
127
148
|
//# sourceMappingURL=index.js.map
|
package/preset/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":";;;;;;AAKA,iCAAyD;AACzD,oDAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare type KnownHttpApiKey = 'ilium' | 'simaV3' | 'simaV4' | 'simaV6';
|
|
2
|
+
/**
|
|
3
|
+
* Строгая версия Map без возможности добавлять/удалять.
|
|
4
|
+
*/
|
|
5
|
+
export interface StrictMap<Key extends string> {
|
|
6
|
+
/** Возвращает значение по ключу. */
|
|
7
|
+
get(key: Key): string;
|
|
8
|
+
}
|
package/preset/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/preset/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ConfigSource } from '../config/types';
|
|
2
|
+
import { StrictMap } from './types';
|
|
3
|
+
/** Реализация пула хостов. */
|
|
4
|
+
export declare class HttpApiHostPool<Key extends string> implements StrictMap<Key> {
|
|
5
|
+
private map;
|
|
6
|
+
private source;
|
|
7
|
+
/**
|
|
8
|
+
* Конструктор.
|
|
9
|
+
* @param map Карта значений по их ключам.
|
|
10
|
+
* @param source Источник конфигурации.
|
|
11
|
+
*/
|
|
12
|
+
constructor(map: Record<Key, string>, source: ConfigSource);
|
|
13
|
+
/** @inheritDoc */
|
|
14
|
+
get(key: Key): string;
|
|
15
|
+
}
|
package/preset/utils.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpApiHostPool = void 0;
|
|
4
|
+
/** Реализация пула хостов. */
|
|
5
|
+
class HttpApiHostPool {
|
|
6
|
+
/**
|
|
7
|
+
* Конструктор.
|
|
8
|
+
* @param map Карта значений по их ключам.
|
|
9
|
+
* @param source Источник конфигурации.
|
|
10
|
+
*/
|
|
11
|
+
constructor(map, source) {
|
|
12
|
+
this.map = map;
|
|
13
|
+
this.source = source;
|
|
14
|
+
}
|
|
15
|
+
/** @inheritDoc */
|
|
16
|
+
get(key) {
|
|
17
|
+
const variableName = this.map[key];
|
|
18
|
+
if (!variableName) {
|
|
19
|
+
throw Error(`Known HTTP API not found by key "${key}"`);
|
|
20
|
+
}
|
|
21
|
+
// "лениво" берём переменную, именно в момент вызова (чтобы не заставлять указывать в сервисах все переменные разом)
|
|
22
|
+
return this.source.require(variableName);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.HttpApiHostPool = HttpApiHostPool;
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/preset/utils.ts"],"names":[],"mappings":";;;AAGA,8BAA8B;AAC9B,MAAa,eAAe;IAI1B;;;;OAIG;IACH,YAAY,GAAwB,EAAE,MAAoB;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,kBAAkB;IAClB,GAAG,CAAC,GAAQ;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,KAAK,CAAC,oCAAoC,GAAG,GAAG,CAAC,CAAC;SACzD;QAED,oHAAoH;QACpH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;CACF;AAzBD,0CAyBC"}
|
package/tokens.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import type { Tracer } from '@opentelemetry/api';
|
|
|
9
9
|
import type { Cache } from './cache/types';
|
|
10
10
|
import type { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
11
11
|
import type { Resource } from '@opentelemetry/resources';
|
|
12
|
+
import { BridgeClientSide, BridgeServerSide } from './utils/ssr';
|
|
13
|
+
import { StrictMap, KnownHttpApiKey } from './preset/types';
|
|
12
14
|
export declare const KnownToken: {
|
|
13
15
|
readonly Config: {
|
|
14
16
|
readonly source: import("./di").Token<import("@humanwhocodes/env").Env>;
|
|
@@ -36,6 +38,9 @@ export declare const KnownToken: {
|
|
|
36
38
|
readonly middleware: import("./di").Token<DefaultMiddleware>;
|
|
37
39
|
};
|
|
38
40
|
};
|
|
41
|
+
readonly Api: {
|
|
42
|
+
readonly knownHosts: import("./di").Token<StrictMap<KnownHttpApiKey>>;
|
|
43
|
+
};
|
|
39
44
|
};
|
|
40
45
|
readonly Response: {
|
|
41
46
|
readonly params: import("./di").Token<Record<string, unknown>>;
|
|
@@ -46,4 +51,8 @@ export declare const KnownToken: {
|
|
|
46
51
|
readonly render: import("./di").Token<(element: JSX.Element) => string | Promise<string>>;
|
|
47
52
|
readonly main: import("./di").Token<() => void>;
|
|
48
53
|
};
|
|
54
|
+
readonly SsrBridge: {
|
|
55
|
+
readonly clientSide: import("./di").Token<BridgeClientSide<unknown>>;
|
|
56
|
+
readonly serverSide: import("./di").Token<BridgeServerSide>;
|
|
57
|
+
};
|
|
49
58
|
};
|
package/tokens.js
CHANGED
|
@@ -36,6 +36,9 @@ exports.KnownToken = {
|
|
|
36
36
|
middleware: (0, di_1.createToken)('http.server.defaults.middleware'),
|
|
37
37
|
},
|
|
38
38
|
},
|
|
39
|
+
Api: {
|
|
40
|
+
knownHosts: (0, di_1.createToken)('http.api.known-hosts'),
|
|
41
|
+
},
|
|
39
42
|
},
|
|
40
43
|
// scope: page response
|
|
41
44
|
Response: {
|
|
@@ -47,5 +50,10 @@ exports.KnownToken = {
|
|
|
47
50
|
render: (0, di_1.createToken)('response/render'),
|
|
48
51
|
main: (0, di_1.createToken)('response/main'),
|
|
49
52
|
},
|
|
53
|
+
// SSR
|
|
54
|
+
SsrBridge: {
|
|
55
|
+
clientSide: (0, di_1.createToken)('ssr-bridge/client-side'),
|
|
56
|
+
serverSide: (0, di_1.createToken)('ssr-bridge/server-side'),
|
|
57
|
+
},
|
|
50
58
|
};
|
|
51
59
|
//# sourceMappingURL=tokens.js.map
|
package/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAmBtB,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,MAAM,EAAE;QACN,MAAM,EAAE,IAAA,gBAAW,EAAe,eAAe,CAAC;QAClD,IAAI,EAAE,IAAA,gBAAW,EAAa,aAAa,CAAC;KAC7C;IAED,QAAQ;IACR,KAAK,EAAE,IAAA,gBAAW,EAAQ,OAAO,CAAC;IAElC,UAAU;IACV,MAAM,EAAE,IAAA,gBAAW,EAAS,QAAQ,CAAC;IAErC,cAAc;IACd,cAAc,EAAE,IAAA,gBAAW,EAAyB,iBAAiB,CAAC;IAEtE,UAAU;IACV,OAAO,EAAE;QACP,MAAM,EAAE,IAAA,gBAAW,EAAS,gBAAgB,CAAC;QAC7C,YAAY,EAAE,IAAA,gBAAW,EAAe,uBAAuB,CAAC;QAChE,cAAc,EAAE,IAAA,gBAAW,EAAsB,yBAAyB,CAAC;QAC3E,sBAAsB,EAAE,IAAA,gBAAW,EAAW,kCAAkC,CAAC;KAClF;IAED,UAAU;IACV,OAAO,EAAE;QACP,OAAO,EAAE,IAAA,gBAAW,EAAc,kBAAkB,CAAC;KACtD;IAED,OAAO;IACP,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;SAC/D;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;YAC9D,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAA,gBAAW,EAAoB,iCAAiC,CAAC;aAC9E;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,IAAA,gBAAW,EAA6B,sBAAsB,CAAC;SAC5E;KACF;IAED,uBAAuB;IACvB,QAAQ,EAAE;QACR,MAAM,EAAE,IAAA,gBAAW,EAA0B,iBAAiB,CAAC;QAC/D,QAAQ,EAAE,IAAA,gBAAW,EAAe,mBAAmB,CAAC;QACxD,OAAO,EAAE,IAAA,gBAAW,EAAkB,kBAAkB,CAAC;QACzD,MAAM,EAAE,IAAA,gBAAW,EAAa,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAA,gBAAW,EAA2C,kBAAkB,CAAC;QAClF,MAAM,EAAE,IAAA,gBAAW,EAAqD,iBAAiB,CAAC;QAC1F,IAAI,EAAE,IAAA,gBAAW,EAAa,eAAe,CAAC;KAC/C;IAED,MAAM;IACN,SAAS,EAAE;QACT,UAAU,EAAE,IAAA,gBAAW,EAA4B,wBAAwB,CAAC;QAC5E,UAAU,EAAE,IAAA,gBAAW,EAAmB,wBAAwB,CAAC;KACpE;CACO,CAAC"}
|
package/utils/ssr/index.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* Данные для SSR, сформированные на сервере.
|
|
4
|
+
*/
|
|
5
|
+
export interface BridgeServerSide {
|
|
6
|
+
rootElementId: string;
|
|
7
|
+
serverDataKey: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Данные для SSR, доступные на стороне клиента (в браузере).
|
|
11
|
+
*/
|
|
12
|
+
export interface BridgeClientSide<T> {
|
|
13
|
+
rootElement: HTMLElement;
|
|
14
|
+
serverSideData: T;
|
|
15
|
+
}
|
|
2
16
|
/**
|
|
3
17
|
* Набор методов для связывания серверного и клиентского приложений.
|
|
4
18
|
*/
|
|
@@ -8,19 +22,13 @@ export declare const SsrBridge: {
|
|
|
8
22
|
* @param serviceKey Идентификатор корневого элемента.
|
|
9
23
|
* @return Идентификатор корневого элемента и ключ для глобально.
|
|
10
24
|
*/
|
|
11
|
-
readonly prepare: (serviceKey: string) =>
|
|
12
|
-
rootElementId: string;
|
|
13
|
-
serverDataKey: string;
|
|
14
|
-
};
|
|
25
|
+
readonly prepare: (serviceKey: string) => BridgeServerSide;
|
|
15
26
|
/**
|
|
16
27
|
* Вызывается на клиенте.
|
|
17
28
|
* @param serviceKey Идентификатор корневого элемента.
|
|
18
29
|
* @return Корневой элемент и начальное состояние.
|
|
19
30
|
*/
|
|
20
|
-
readonly resolve: <T = any>(serviceKey: string) =>
|
|
21
|
-
rootElement: HTMLElement;
|
|
22
|
-
serverSideData: T;
|
|
23
|
-
};
|
|
31
|
+
readonly resolve: <T = any>(serviceKey: string) => BridgeClientSide<T>;
|
|
24
32
|
};
|
|
25
33
|
/**
|
|
26
34
|
* Скрипт, формирующий глобально доступные на странице данные.
|
package/utils/ssr/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/ssr/index.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,kDAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/ssr/index.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,kDAA0B;AAkB1B;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB;;;;OAIG;IACH,OAAO,CAAC,UAAkB;QACxB,OAAO;YACL,aAAa,EAAE,GAAG,UAAU,QAAQ;YACpC,aAAa,EAAE,GAAG,UAAU,cAAc;SAC3C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAU,UAAkB;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC;QACnE,MAAM,cAAc,GAAI,MAAc,CAAC,GAAG,UAAU,cAAc,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACpD;QAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IACzC,CAAC;CACO,CAAC;AAEX;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,GAIN;IACC,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACxC,IAAI,EAAE,IAAI;QACV,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,OAAO,CACL,0CACE,uBAAuB,EAAE;YACvB,+DAA+D;YAC/D,MAAM,EAAE,WAAW,QAAQ,mBAAmB,IAAI,IAAI;SACvD,GACD,CACH,CAAC;AACJ,CAAC;AApBD,4CAoBC"}
|
package/utils/webpack/index.js
CHANGED
|
@@ -54,7 +54,9 @@ class EnvPlugin {
|
|
|
54
54
|
};
|
|
55
55
|
new webpack_1.default.DefinePlugin({ __ISOMORPH_ENV__: JSON.stringify(valuesNode) }).apply(compiler);
|
|
56
56
|
if (this.options.define) {
|
|
57
|
-
new webpack_1.default.DefinePlugin(
|
|
57
|
+
new webpack_1.default.DefinePlugin(
|
|
58
|
+
// @todo похоже для консистентности здесь должно быть не this.options.define а valuesNode
|
|
59
|
+
Object.entries(this.options.define).reduce((acc, [key, value]) => {
|
|
58
60
|
acc[`process.env.${key}`] = JSON.stringify(value);
|
|
59
61
|
return acc;
|
|
60
62
|
}, {})).apply(compiler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/webpack/index.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAsC;AACtC,sDAA8B;AAC9B,oDAA4B;AAC5B,gDAAwB;AACxB,4CAAyC;AAEzC;;;;GAIG;AACH,MAAa,SAAS;IAMpB;;OAEG;IACH,YAAY,UAAsE,EAAE;QAClF,IAAI,CAAC,OAAO,GAAG;YACb,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAA0B;QAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,SAAG,EAAE,CAAC,QAAQ,CAAC;QAExC,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YACnD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;YACzB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9B,UAAU;QACV,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,SAAS,GAAuC;gBACpD,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBACtB,GAAG,IAAA,aAAI,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC9D,GAAG,IAAA,eAAM,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aAC9D,CAAC;YAEF,IAAI,iBAAO,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1F,IAAI,iBAAO,CAAC,YAAY,CACtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7E,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClD,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CACP,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACnB;QAED,OAAO;QACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,UAAU,GAAuC;gBACrD,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBACtB,GAAG,IAAA,aAAI,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAC/D,CAAC;YAEF,IAAI,iBAAO,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE3F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvB,IAAI,iBAAO,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/webpack/index.ts"],"names":[],"mappings":"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"}
|