@sima-land/isomorph 11.0.0-alpha.27 → 11.0.0-alpha.29
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/types.d.ts +1 -1
- package/di/preset.d.ts +1 -1
- package/di/types.d.ts +1 -1
- package/error-tracking/types.d.ts +1 -1
- package/http-client/middleware/logging.d.ts +1 -1
- package/http-client/sauce/index.d.ts +1 -1
- package/http-client/types.d.ts +1 -1
- package/http-server/utils.d.ts +1 -0
- package/http-server/utils.js +7 -6
- package/http-server/utils.js.map +1 -1
- package/logger/types.d.ts +2 -1
- package/package.json +12 -13
- package/preset/browser/index.d.ts +2 -2
- package/preset/browser/index.js +1 -0
- package/preset/browser/index.js.map +1 -1
- package/preset/node/index.d.ts +1 -1
- package/preset/node/index.js +8 -7
- package/preset/node/index.js.map +1 -1
- package/preset/node/response.js +4 -0
- package/preset/node/response.js.map +1 -1
- package/preset/parts/types.d.ts +1 -1
- package/preset/parts/utils.d.ts +35 -4
- package/preset/parts/utils.js +61 -1
- package/preset/parts/utils.js.map +1 -1
- package/utils/browser/analytics/oko.d.ts +1 -1
- package/utils/browser/storage/index.js +1 -1
- package/utils/browser/storage/index.js.map +1 -1
- package/utils/function.d.ts +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 +74 -5
- package/utils/redux/remote-data.js +80 -1
- package/utils/redux/remote-data.js.map +1 -1
- package/utils/redux-saga/index.d.ts +1 -1
- package/utils/redux-saga/types.d.ts +1 -1
- package/utils/webpack/module-federation/types.d.ts +4 -4
package/config/types.d.ts
CHANGED
package/di/preset.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Provider, Token, Preset } from './types';
|
|
2
|
-
|
|
2
|
+
type PresetEntry<T = any> = [Token<T>, Provider<T>];
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает новый "preset" для DI-приложения - набор предустановленных компонентов которые можно переопределять.
|
|
5
5
|
* @param defaults Предустановленные зависимости.
|
package/di/types.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface Binding<T> {
|
|
|
43
43
|
toProvider: (provider: Provider<T>) => void;
|
|
44
44
|
}
|
|
45
45
|
/** @internal */
|
|
46
|
-
export
|
|
46
|
+
export type ExtractType<T extends readonly Token<any>[]> = {
|
|
47
47
|
[index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
@@ -18,7 +18,7 @@ export interface LogMiddlewareHandler {
|
|
|
18
18
|
export interface LogMiddlewareHandlerFactory {
|
|
19
19
|
(data: SharedData): LogMiddlewareHandler;
|
|
20
20
|
}
|
|
21
|
-
export
|
|
21
|
+
export type LogMiddlewareHandlerInit = LogMiddlewareHandler | LogMiddlewareHandlerFactory;
|
|
22
22
|
/**
|
|
23
23
|
* Возвращает новый middleware для логирования запросов.
|
|
24
24
|
* @param handlerInit Обработчик.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AxiosInstance, AxiosResponse } from 'axios';
|
|
2
2
|
import { SafetyInfo } from '../../utils/function';
|
|
3
3
|
import type { AxiosInstanceWrapper, MethodName } from 'middleware-axios';
|
|
4
|
-
export
|
|
4
|
+
export type SauceResponse<T = any> = {
|
|
5
5
|
ok: true;
|
|
6
6
|
status: number;
|
|
7
7
|
data: T;
|
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-server/utils.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare function getXClientIp(req: Request): string;
|
|
|
15
15
|
export declare function getServiceHeaders(req: Request): Record<string, string | undefined>;
|
|
16
16
|
/**
|
|
17
17
|
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
18
|
+
* @todo Убрать в preset'ы?
|
|
18
19
|
* @param config Конфиг.
|
|
19
20
|
* @param request Входящий запрос.
|
|
20
21
|
* @return Заголовки для исходящих запросов.
|
package/http-server/utils.js
CHANGED
|
@@ -29,6 +29,7 @@ function getServiceHeaders(req) {
|
|
|
29
29
|
exports.getServiceHeaders = getServiceHeaders;
|
|
30
30
|
/**
|
|
31
31
|
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
32
|
+
* @todo Убрать в preset'ы?
|
|
32
33
|
* @param config Конфиг.
|
|
33
34
|
* @param request Входящий запрос.
|
|
34
35
|
* @return Заголовки для исходящих запросов.
|
|
@@ -44,12 +45,6 @@ function getRequestHeaders(config, request) {
|
|
|
44
45
|
exports.getRequestHeaders = getRequestHeaders;
|
|
45
46
|
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
46
47
|
class PageResponse {
|
|
47
|
-
constructor() {
|
|
48
|
-
this.type = 'html';
|
|
49
|
-
this.html = '';
|
|
50
|
-
this._assets = { js: '', css: '' };
|
|
51
|
-
this._template = PageResponse.defaultTemplate;
|
|
52
|
-
}
|
|
53
48
|
static defineFormat(req) {
|
|
54
49
|
let result = 'html';
|
|
55
50
|
if ((req.header('accept') || '').toLowerCase().includes('application/json')) {
|
|
@@ -60,6 +55,12 @@ class PageResponse {
|
|
|
60
55
|
static defaultTemplate({ markup }) {
|
|
61
56
|
return markup;
|
|
62
57
|
}
|
|
58
|
+
constructor() {
|
|
59
|
+
this.type = 'html';
|
|
60
|
+
this.html = '';
|
|
61
|
+
this._assets = { js: '', css: '' };
|
|
62
|
+
this._template = PageResponse.defaultTemplate;
|
|
63
|
+
}
|
|
63
64
|
markup(html) {
|
|
64
65
|
this.html = html;
|
|
65
66
|
return this;
|
package/http-server/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":";;;AAGA,6BAA2B;AAE3B;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAY;IACvC,MAAM,WAAW,GACf,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IAEzF,OAAO,IAAA,UAAI,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AALD,oCAKC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC/C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,8CAUC;AAED
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":"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"}
|
package/logger/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Тип события.
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
4
|
+
export type LoggerEventType = 'error' | 'log' | 'info' | 'warn' | 'debug';
|
|
5
5
|
/**
|
|
6
6
|
* Интерфейс события.
|
|
7
7
|
*/
|
|
@@ -29,6 +29,7 @@ export interface Logger {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Структура данных, которую необходимо выводить в терминал по соглашению внутри компании.
|
|
32
|
+
* @todo Убрать в preset'ы?
|
|
32
33
|
*/
|
|
33
34
|
export interface ConventionalFluentInfo {
|
|
34
35
|
version: string;
|
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.29",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,20 +32,19 @@
|
|
|
32
32
|
"husky": "^8.0.1",
|
|
33
33
|
"jest": "^28.1.3",
|
|
34
34
|
"jest-environment-jsdom": "^28.1.3",
|
|
35
|
-
"typescript": "^4.
|
|
35
|
+
"typescript": "^4.9.4"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@humanwhocodes/env": "^2.2.2",
|
|
39
|
-
"@opentelemetry/api": "^1.
|
|
40
|
-
"@opentelemetry/exporter-jaeger": "^1.
|
|
41
|
-
"@opentelemetry/instrumentation": "^0.
|
|
42
|
-
"@opentelemetry/instrumentation-express": "^0.
|
|
43
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
44
|
-
"@opentelemetry/resources": "^1.
|
|
45
|
-
"@opentelemetry/sdk-trace-base": "^1.
|
|
46
|
-
"@opentelemetry/sdk-trace-node": "^1.
|
|
47
|
-
"@opentelemetry/semantic-conventions": "^1.
|
|
48
|
-
"@opentelemetry/tracing": "^0.24.0",
|
|
39
|
+
"@opentelemetry/api": "^1.3.0",
|
|
40
|
+
"@opentelemetry/exporter-jaeger": "^1.8.0",
|
|
41
|
+
"@opentelemetry/instrumentation": "^0.34.0",
|
|
42
|
+
"@opentelemetry/instrumentation-express": "^0.32.0",
|
|
43
|
+
"@opentelemetry/instrumentation-http": "^0.34.0",
|
|
44
|
+
"@opentelemetry/resources": "^1.8.0",
|
|
45
|
+
"@opentelemetry/sdk-trace-base": "^1.8.0",
|
|
46
|
+
"@opentelemetry/sdk-trace-node": "^1.8.0",
|
|
47
|
+
"@opentelemetry/semantic-conventions": "^1.8.0",
|
|
49
48
|
"@sentry/browser": "^7.16.0",
|
|
50
49
|
"@sentry/node": "^7.16.0",
|
|
51
50
|
"dotenv": "^16.0.0",
|
|
@@ -59,7 +58,7 @@
|
|
|
59
58
|
"webpack": "^5.74.0"
|
|
60
59
|
},
|
|
61
60
|
"peerDependencies": {
|
|
62
|
-
"@reduxjs/toolkit": "^1.
|
|
61
|
+
"@reduxjs/toolkit": "^1.9.1",
|
|
63
62
|
"axios": "^1.2.0-alpha.1",
|
|
64
63
|
"lodash": "^4.17.21",
|
|
65
64
|
"react": "^17.0.2",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Resolve } from '../../di';
|
|
1
|
+
import { Resolve, Preset } from '../../di';
|
|
2
2
|
import { Logger } from '../../logger';
|
|
3
3
|
import { BridgeClientSide } from '../../utils/ssr';
|
|
4
4
|
import { StrictMap, KnownHttpApiKey } from '../parts/types';
|
|
5
5
|
import { HttpClientFactory } from '../../http-client/types';
|
|
6
|
-
export declare function PresetBrowser():
|
|
6
|
+
export declare function PresetBrowser(): Preset;
|
|
7
7
|
export declare function provideLogger(resolve: Resolve): Logger;
|
|
8
8
|
export declare function provideBridgeClientSide(resolve: Resolve): BridgeClientSide<unknown>;
|
|
9
9
|
export declare function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey>;
|
package/preset/browser/index.js
CHANGED
|
@@ -62,6 +62,7 @@ function provideHttpClientFactory(resolve) {
|
|
|
62
62
|
const loggingHandler = resolve(tokens_1.KnownToken.Http.Client.LogMiddleware.handler);
|
|
63
63
|
return function createHttpClient(config) {
|
|
64
64
|
const client = (0, middleware_axios_1.create)(config);
|
|
65
|
+
client.use(utils_1.HttpStatus.createMiddleware());
|
|
65
66
|
client.use((0, logging_1.loggingMiddleware)(loggingHandler));
|
|
66
67
|
return client;
|
|
67
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/browser/index.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/browser/index.ts"],"names":[],"mappings":"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"}
|
package/preset/node/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Logger, LoggerEventHandler } from '../../logger/types';
|
|
|
2
2
|
import type { Tracer } from '@opentelemetry/api';
|
|
3
3
|
import type { DefaultMiddleware } from '../../http-server/types';
|
|
4
4
|
import { Resolve, Preset } from '../../di';
|
|
5
|
-
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/
|
|
5
|
+
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
6
6
|
import { Resource } from '@opentelemetry/resources';
|
|
7
7
|
import { BridgeServerSide } from '../../utils/ssr';
|
|
8
8
|
import { StrictMap, KnownHttpApiKey } from '../parts/types';
|
package/preset/node/index.js
CHANGED
|
@@ -5,14 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.provideKnownHttpApiHosts = exports.provideBridgeServerSide = exports.provideDefaultMiddleware = exports.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.providePinoHandler = exports.provideSentryHandler = exports.provideLogger = exports.PresetNode = void 0;
|
|
7
7
|
const di_1 = require("../../di");
|
|
8
|
-
const
|
|
8
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
9
9
|
const tokens_1 = require("../../tokens");
|
|
10
10
|
const node_1 = require("../../config/node");
|
|
11
11
|
const logger_1 = require("../../logger");
|
|
12
12
|
const pino_1 = require("../../logger/handler/pino");
|
|
13
13
|
const sentry_1 = require("../../logger/handler/sentry");
|
|
14
14
|
const logging_1 = require("../../http-server/middleware/logging");
|
|
15
|
-
const
|
|
15
|
+
const tracing_1 = require("../../http-server/middleware/tracing");
|
|
16
16
|
const metrics_1 = require("../../http-server/middleware/metrics");
|
|
17
17
|
const node_2 = require("../../metrics/node");
|
|
18
18
|
const exporter_jaeger_1 = require("@opentelemetry/exporter-jaeger");
|
|
@@ -23,7 +23,7 @@ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
|
23
23
|
const resources_1 = require("@opentelemetry/resources");
|
|
24
24
|
const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
|
|
25
25
|
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
26
|
-
const
|
|
26
|
+
const tracing_2 = require("../../tracing");
|
|
27
27
|
const os_1 = require("os");
|
|
28
28
|
const ssr_1 = require("../../utils/ssr");
|
|
29
29
|
const utils_1 = require("../parts/utils");
|
|
@@ -54,6 +54,7 @@ function PresetNode() {
|
|
|
54
54
|
exports.PresetNode = PresetNode;
|
|
55
55
|
function provideLogger(resolve) {
|
|
56
56
|
const logger = (0, logger_1.createLogger)();
|
|
57
|
+
// @todo возможно надо придумать как не давать вызывать провайдеры внутри провайдеров
|
|
57
58
|
logger.subscribe(providePinoHandler(resolve));
|
|
58
59
|
logger.subscribe(provideSentryHandler(resolve));
|
|
59
60
|
return logger;
|
|
@@ -109,16 +110,16 @@ function provideTracerProvider(resolve) {
|
|
|
109
110
|
const provider = new sdk_trace_node_1.NodeTracerProvider({
|
|
110
111
|
resource,
|
|
111
112
|
});
|
|
112
|
-
provider.addSpanProcessor(new
|
|
113
|
+
provider.addSpanProcessor(new sdk_trace_base_1.BatchSpanProcessor(exporter));
|
|
113
114
|
provider.register({
|
|
114
115
|
propagator: new propagator_jaeger_1.JaegerPropagator(),
|
|
115
116
|
});
|
|
116
|
-
return provider;
|
|
117
|
+
return provider;
|
|
117
118
|
}
|
|
118
119
|
exports.provideTracerProvider = provideTracerProvider;
|
|
119
120
|
function provideTracerProviderResource(resolve) {
|
|
120
121
|
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
121
|
-
return (0,
|
|
122
|
+
return (0, tracing_2.getConventionalResource)(config).merge(new resources_1.Resource({
|
|
122
123
|
[semantic_conventions_1.SemanticResourceAttributes.HOST_NAME]: (0, os_1.hostname)(),
|
|
123
124
|
}));
|
|
124
125
|
}
|
|
@@ -131,7 +132,7 @@ function provideDefaultMiddleware(resolve) {
|
|
|
131
132
|
return {
|
|
132
133
|
start: [node_3.Handlers.requestHandler()],
|
|
133
134
|
logging: [(0, logging_1.loggingMiddleware)(config, logger)],
|
|
134
|
-
tracing: [(0,
|
|
135
|
+
tracing: [(0, tracing_1.tracingMiddleware)(tracer)],
|
|
135
136
|
metrics: [
|
|
136
137
|
(0, metrics_1.responseMetricsMiddleware)(config, {
|
|
137
138
|
counter: metrics.requestCount,
|
package/preset/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":";;;;;;AAIA,iCAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":"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"}
|
package/preset/node/response.js
CHANGED
|
@@ -14,6 +14,7 @@ const headers_1 = require("../../http-client/middleware/headers");
|
|
|
14
14
|
const cookie_1 = require("../../http-client/middleware/cookie");
|
|
15
15
|
const errors_1 = require("../../http-server/errors");
|
|
16
16
|
const providers_1 = require("../parts/providers");
|
|
17
|
+
const utils_2 = require("../parts/utils");
|
|
17
18
|
/**
|
|
18
19
|
* Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
|
|
19
20
|
* @return Preset.
|
|
@@ -32,6 +33,8 @@ function PresetResponse() {
|
|
|
32
33
|
}
|
|
33
34
|
exports.PresetResponse = PresetResponse;
|
|
34
35
|
function provideHttpClientFactory(resolve) {
|
|
36
|
+
// @todo а что если привести все зависимости к виду:
|
|
37
|
+
// const getAppConfig = resolve.lazy(KnownToken.Config.base);
|
|
35
38
|
const appConfig = resolve(tokens_1.KnownToken.Config.base);
|
|
36
39
|
const tracer = resolve(tokens_1.KnownToken.Tracing.tracer);
|
|
37
40
|
const context = resolve(tokens_1.KnownToken.Response.context);
|
|
@@ -44,6 +47,7 @@ function provideHttpClientFactory(resolve) {
|
|
|
44
47
|
...config.headers,
|
|
45
48
|
},
|
|
46
49
|
});
|
|
50
|
+
client.use(utils_2.HttpStatus.createMiddleware());
|
|
47
51
|
client.use((0, tracing_1.tracingMiddleware)(tracer, context.res.locals.tracing.rootContext));
|
|
48
52
|
client.use((0, logging_1.loggingMiddleware)(loggingHandler));
|
|
49
53
|
client.use((0, headers_1.passHeadersMiddleware)(context.req, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":";;;AAGA,iCAAmF;AACnF,yCAA0C;AAC1C,6CAAkD;AAClD,2DAA6D;AAC7D,yDAA0D;AAC1D,mDAA0E;AAE1E,uDAA0C;AAC1C,kEAAyE;AACzE,kEAAyE;AACzE,kEAA6E;AAC7E,gEAA8E;AAC9E,qDAAoD;AACpD,kDAAwF;
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":"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"}
|
package/preset/parts/types.d.ts
CHANGED
package/preset/parts/utils.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SeverityLevel } from '@sentry/browser';
|
|
2
|
+
import type { Middleware } from 'middleware-axios';
|
|
2
3
|
import { ConfigSource } from '../../config/types';
|
|
3
4
|
import { SharedData, DoneSharedData, FailSharedData, LogMiddlewareHandler } from '../../http-client/middleware/logging';
|
|
5
|
+
import { applyAxiosDefaults } from '../../http-client/utils';
|
|
4
6
|
import { Logger } from '../../logger';
|
|
5
7
|
import { SagaErrorInfo, SagaInterruptInfo, SagaMiddlewareHandler } from '../../utils/redux-saga/types';
|
|
6
8
|
import { StrictMap } from './types';
|
|
@@ -22,14 +24,16 @@ export declare class HttpApiHostPool<Key extends string> implements StrictMap<Ke
|
|
|
22
24
|
* @param status Статус HTTP-ответа.
|
|
23
25
|
* @return Уровень.
|
|
24
26
|
*/
|
|
25
|
-
export declare function severityFromStatus(status:
|
|
27
|
+
export declare function severityFromStatus(status: unknown): SeverityLevel;
|
|
26
28
|
/**
|
|
27
29
|
* Обработчик для промежуточного слоя логирования исходящих http-запросов.
|
|
28
30
|
* Отправляет хлебные крошки и данные ошибки, пригодные для Sentry.
|
|
29
31
|
*/
|
|
30
32
|
export declare class HttpClientLogging implements LogMiddlewareHandler {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
protected logger: Logger;
|
|
34
|
+
protected readonly requestInfo: ReturnType<typeof applyAxiosDefaults> & {
|
|
35
|
+
readyURL: string;
|
|
36
|
+
};
|
|
33
37
|
/**
|
|
34
38
|
* Конструктор.
|
|
35
39
|
* @param logger Logger.
|
|
@@ -55,7 +59,7 @@ export declare class HttpClientLogging implements LogMiddlewareHandler {
|
|
|
55
59
|
* Лог событий запуска и выполнения redux-saga.
|
|
56
60
|
*/
|
|
57
61
|
export declare class SagaLogging implements SagaMiddlewareHandler {
|
|
58
|
-
|
|
62
|
+
protected logger: Logger;
|
|
59
63
|
/**
|
|
60
64
|
* @param logger Logger.
|
|
61
65
|
*/
|
|
@@ -77,3 +81,30 @@ export declare class SagaLogging implements SagaMiddlewareHandler {
|
|
|
77
81
|
*/
|
|
78
82
|
onTimeoutInterrupt({ timeout }: SagaInterruptInfo): void;
|
|
79
83
|
}
|
|
84
|
+
/** Работа с HTTP-статусами по соглашению. */
|
|
85
|
+
export declare abstract class HttpStatus {
|
|
86
|
+
/**
|
|
87
|
+
* Определяет, является ли переданный статус успешным.
|
|
88
|
+
* @param status Статус.
|
|
89
|
+
* @return Признак.
|
|
90
|
+
*/
|
|
91
|
+
static isOk(status: unknown): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Определяет, является ли переданный статус успешным POST.
|
|
94
|
+
* @param status Статус.
|
|
95
|
+
* @return Признак.
|
|
96
|
+
*/
|
|
97
|
+
static isPostOk(status: unknown): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Определяет, является ли переданный статус успешным DELETE.
|
|
100
|
+
* @param status Статус.
|
|
101
|
+
* @return Признак.
|
|
102
|
+
*/
|
|
103
|
+
static isDeleteOk(status: unknown): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Возвращает новый промежуточный слой для валидации статуса HTTP-ответа.
|
|
106
|
+
* Валидация применяется только если в конфиге запроса не указан validateStatus.
|
|
107
|
+
* @return Промежуточный слой.
|
|
108
|
+
*/
|
|
109
|
+
static createMiddleware(): Middleware<unknown>;
|
|
110
|
+
}
|
package/preset/parts/utils.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.SagaLogging = exports.HttpClientLogging = exports.severityFromStatus = exports.HttpApiHostPool = void 0;
|
|
6
|
+
exports.HttpStatus = exports.SagaLogging = exports.HttpClientLogging = exports.severityFromStatus = exports.HttpApiHostPool = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const error_tracking_1 = require("../../error-tracking");
|
|
9
9
|
const utils_1 = require("../../http-client/utils");
|
|
@@ -114,6 +114,8 @@ class HttpClientLogging {
|
|
|
114
114
|
if (axios_1.default.isAxiosError(error)) {
|
|
115
115
|
const { requestInfo } = this;
|
|
116
116
|
const statusCode = error.response?.status || 'UNKNOWN';
|
|
117
|
+
// @todo выяснить: нужно ли нам отправлять ответы с кодом <500 в Sentry на уровне всех команд
|
|
118
|
+
// если да то можно добавить метод в духе errorStatusFilter(s => s !== 422)
|
|
117
119
|
this.logger.error(new error_tracking_1.SentryError(`HTTP request failed, status code: ${statusCode}, error message: ${error.message}`, {
|
|
118
120
|
level: severityFromStatus(error.response?.status),
|
|
119
121
|
context: [
|
|
@@ -198,4 +200,62 @@ class SagaLogging {
|
|
|
198
200
|
}
|
|
199
201
|
}
|
|
200
202
|
exports.SagaLogging = SagaLogging;
|
|
203
|
+
/** Работа с HTTP-статусами по соглашению. */
|
|
204
|
+
class HttpStatus {
|
|
205
|
+
/**
|
|
206
|
+
* Определяет, является ли переданный статус успешным.
|
|
207
|
+
* @param status Статус.
|
|
208
|
+
* @return Признак.
|
|
209
|
+
*/
|
|
210
|
+
static isOk(status) {
|
|
211
|
+
return typeof status === 'number' && status === 200;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Определяет, является ли переданный статус успешным POST.
|
|
215
|
+
* @param status Статус.
|
|
216
|
+
* @return Признак.
|
|
217
|
+
*/
|
|
218
|
+
static isPostOk(status) {
|
|
219
|
+
return typeof status === 'number' && status === 201;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Определяет, является ли переданный статус успешным DELETE.
|
|
223
|
+
* @param status Статус.
|
|
224
|
+
* @return Признак.
|
|
225
|
+
*/
|
|
226
|
+
static isDeleteOk(status) {
|
|
227
|
+
return typeof status === 'number' && (status === 204 || status === 200);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Возвращает новый промежуточный слой для валидации статуса HTTP-ответа.
|
|
231
|
+
* Валидация применяется только если в конфиге запроса не указан validateStatus.
|
|
232
|
+
* @return Промежуточный слой.
|
|
233
|
+
*/
|
|
234
|
+
static createMiddleware() {
|
|
235
|
+
return async (config, next, defaults) => {
|
|
236
|
+
if (config.validateStatus !== undefined || defaults.validateStatus !== undefined) {
|
|
237
|
+
// если validateStatus указан явно то не применяем валидацию по умолчанию
|
|
238
|
+
await next(config);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
let validateStatus = null;
|
|
242
|
+
switch (config.method?.toLowerCase()) {
|
|
243
|
+
case 'get':
|
|
244
|
+
case 'put':
|
|
245
|
+
case undefined:
|
|
246
|
+
validateStatus = HttpStatus.isOk;
|
|
247
|
+
break;
|
|
248
|
+
case 'post':
|
|
249
|
+
validateStatus = HttpStatus.isPostOk;
|
|
250
|
+
break;
|
|
251
|
+
case 'delete':
|
|
252
|
+
validateStatus = HttpStatus.isDeleteOk;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
await next({ ...config, validateStatus });
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.HttpStatus = HttpStatus;
|
|
201
261
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/preset/parts/utils.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/preset/parts/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ exports.createStorageUtils = void 0;
|
|
|
10
10
|
function createStorageUtils(getStorage) {
|
|
11
11
|
function isAvailable() {
|
|
12
12
|
try {
|
|
13
|
-
const testKey = `
|
|
13
|
+
const testKey = `storage_test_key::${Date.now()}`;
|
|
14
14
|
getStorage().setItem(testKey, testKey);
|
|
15
15
|
getStorage().removeItem(testKey);
|
|
16
16
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/browser/storage/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAUvD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,UAAyB;IAC1D,SAAS,WAAW;QAClB,IAAI;YACF,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/browser/storage/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAUvD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,UAAyB;IAC1D,SAAS,WAAW;QAClB,IAAI;YACF,MAAM,OAAO,GAAG,qBAAqB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAElD,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY;QAC3B,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,GAAG,CAAC,KAAa;QACxB,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;QAC1C,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnC;IACH,CAAC;IAED,SAAS,MAAM;QACb,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC;SAC5B;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO;QACL,WAAW;QAEX,KAAK;QACL,OAAO;QACP,GAAG;QACH,UAAU;QACV,OAAO;QACP,IAAI,MAAM;YACR,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAnED,gDAmEC"}
|
package/utils/function.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ interface SafetyFailInfo {
|
|
|
6
6
|
ok: false;
|
|
7
7
|
error: unknown;
|
|
8
8
|
}
|
|
9
|
-
export
|
|
9
|
+
export type SafetyInfo<T> = SafetyDoneInfo<T> | SafetyFailInfo;
|
|
10
10
|
interface SafetyFormatter<T, F> {
|
|
11
11
|
(info: SafetyInfo<T>): F;
|
|
12
12
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRemoteDataReducers = exports.RemoteData = exports.STATUS = void 0;
|
|
4
|
+
const remote_data_1 = require("./remote-data");
|
|
5
|
+
Object.defineProperty(exports, "STATUS", { enumerable: true, get: function () { return remote_data_1.STATUS; } });
|
|
6
|
+
Object.defineProperty(exports, "RemoteData", { enumerable: true, get: function () { return remote_data_1.RemoteData; } });
|
|
7
|
+
Object.defineProperty(exports, "createRemoteDataReducers", { enumerable: true, get: function () { return remote_data_1.createRemoteDataReducers; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/redux/index.ts"],"names":[],"mappings":";;;AAAA,+CAMuB;AAGd,uFANP,oBAAM,OAMO;AAAE,2FALf,wBAAU,OAKe;AAAE,yGAJ3B,sCAAwB,OAI2B"}
|
|
@@ -1,22 +1,90 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ActionReducerMapBuilder, Draft, PayloadAction, PayloadActionCreator } from '@reduxjs/toolkit';
|
|
2
|
+
interface RemoteDataActions<TData, TError = unknown, TPayload = void> {
|
|
3
|
+
request: PayloadActionCreator<TPayload, string>;
|
|
4
|
+
success: PayloadActionCreator<TData, string>;
|
|
5
|
+
failure: PayloadActionCreator<TError, string>;
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* Статус загрузки данных.
|
|
4
9
|
*/
|
|
5
|
-
export
|
|
10
|
+
export type Status = 'initial' | 'fetching' | 'success' | 'failure';
|
|
6
11
|
/**
|
|
7
12
|
* Базовая структура хранилища удаленных данных.
|
|
8
13
|
*/
|
|
9
14
|
export interface RemoteDataState<TData, TError> {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
/** Загружаемые данные. */
|
|
16
|
+
readonly data: TData;
|
|
17
|
+
/** Данные ошибки запроса. */
|
|
18
|
+
readonly error: TError;
|
|
19
|
+
/** Статус загрузки данных. */
|
|
20
|
+
readonly status: Status;
|
|
21
|
+
/** Количество запросов. */
|
|
22
|
+
readonly fetchCount?: number;
|
|
13
23
|
}
|
|
14
24
|
/**
|
|
15
25
|
* Возможные статусы загрузки данных.
|
|
16
26
|
*/
|
|
17
27
|
export declare const STATUS: Record<Status, Status>;
|
|
28
|
+
/** Работа с удаленными данными. */
|
|
29
|
+
export declare abstract class RemoteData {
|
|
30
|
+
static get STATUS(): Record<Status, Status>;
|
|
31
|
+
/**
|
|
32
|
+
* Возвращает action'ы для работы с удаленными данными.
|
|
33
|
+
* @param name Префикс имён.
|
|
34
|
+
* @return Набор.
|
|
35
|
+
*/
|
|
36
|
+
static createActions<TData = never, TError = never, TPayload = void>(name: string): RemoteDataActions<TData, TError, TPayload>;
|
|
37
|
+
/**
|
|
38
|
+
* Возвращает набор обработчиков для работы с удаленными данными.
|
|
39
|
+
* @return Набор.
|
|
40
|
+
*/
|
|
41
|
+
static createHandlers<TData, TError, S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>>(): {
|
|
42
|
+
readonly request: (state: S | Draft<S>) => S | Draft<S>;
|
|
43
|
+
readonly success: (state: S | Draft<S>, action: PayloadAction<TData>) => S | Draft<S>;
|
|
44
|
+
readonly failure: (state: S | Draft<S>, action: PayloadAction<TError>) => S | Draft<S>;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Применяет обработчики для работы с удаленными данными.
|
|
48
|
+
* @param actions Набор action'ов.
|
|
49
|
+
* @param builder Builder.
|
|
50
|
+
*/
|
|
51
|
+
static applyHandlers<TData, TError>(actions: RemoteDataActions<TData, TError, any | never>, builder: Pick<ActionReducerMapBuilder<RemoteDataState<TData, TError>>, 'addCase'>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Возвращает новый набор селекторов данных.
|
|
54
|
+
* @param selectRoot Функция получения состояния.
|
|
55
|
+
* @return Набор селекторов.
|
|
56
|
+
*/
|
|
57
|
+
static createSelectors<S extends RemoteDataState<unknown, unknown>>(selectRoot: (...args: any[]) => S): {
|
|
58
|
+
readonly isInitial: ((state: any) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
|
|
59
|
+
clearCache: () => void;
|
|
60
|
+
}> & {
|
|
61
|
+
clearCache: () => void;
|
|
62
|
+
};
|
|
63
|
+
readonly isFetching: ((state: any) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
|
|
64
|
+
clearCache: () => void;
|
|
65
|
+
}> & {
|
|
66
|
+
clearCache: () => void;
|
|
67
|
+
};
|
|
68
|
+
readonly isSuccess: ((state: any) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
|
|
69
|
+
clearCache: () => void;
|
|
70
|
+
}> & {
|
|
71
|
+
clearCache: () => void;
|
|
72
|
+
};
|
|
73
|
+
readonly isFailed: ((state: any) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
|
|
74
|
+
clearCache: () => void;
|
|
75
|
+
}> & {
|
|
76
|
+
clearCache: () => void;
|
|
77
|
+
};
|
|
78
|
+
readonly wasFetched: ((state: any) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
|
|
79
|
+
clearCache: () => void;
|
|
80
|
+
}> & {
|
|
81
|
+
clearCache: () => void;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
}
|
|
18
85
|
/**
|
|
19
86
|
* Возвращает набор обработчиков для работы с удаленными данными.
|
|
87
|
+
* @deprecated Теперь нужно использовать RemoteData.createHandlers.
|
|
20
88
|
* @return Набор.
|
|
21
89
|
*/
|
|
22
90
|
export declare const createRemoteDataReducers: <S extends RemoteDataState<any, any>>() => {
|
|
@@ -30,3 +98,4 @@ export declare const createRemoteDataReducers: <S extends RemoteDataState<any, a
|
|
|
30
98
|
type: string;
|
|
31
99
|
}) => void;
|
|
32
100
|
};
|
|
101
|
+
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRemoteDataReducers = exports.STATUS = void 0;
|
|
3
|
+
exports.createRemoteDataReducers = exports.RemoteData = exports.STATUS = void 0;
|
|
4
|
+
/* eslint-disable require-jsdoc */
|
|
5
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
4
6
|
/**
|
|
5
7
|
* Возможные статусы загрузки данных.
|
|
6
8
|
*/
|
|
@@ -10,8 +12,85 @@ exports.STATUS = {
|
|
|
10
12
|
success: 'success',
|
|
11
13
|
failure: 'failure',
|
|
12
14
|
};
|
|
15
|
+
/** Работа с удаленными данными. */
|
|
16
|
+
class RemoteData {
|
|
17
|
+
static get STATUS() {
|
|
18
|
+
return exports.STATUS;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Возвращает action'ы для работы с удаленными данными.
|
|
22
|
+
* @param name Префикс имён.
|
|
23
|
+
* @return Набор.
|
|
24
|
+
*/
|
|
25
|
+
static createActions(name) {
|
|
26
|
+
return {
|
|
27
|
+
request: (0, toolkit_1.createAction)(`${name}/request`),
|
|
28
|
+
success: (0, toolkit_1.createAction)(`${name}/success`),
|
|
29
|
+
failure: (0, toolkit_1.createAction)(`${name}/failure`),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Возвращает набор обработчиков для работы с удаленными данными.
|
|
34
|
+
* @return Набор.
|
|
35
|
+
*/
|
|
36
|
+
static createHandlers() {
|
|
37
|
+
// ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.
|
|
38
|
+
return {
|
|
39
|
+
request(state) {
|
|
40
|
+
return {
|
|
41
|
+
...state,
|
|
42
|
+
status: exports.STATUS.fetching,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
success(state, action) {
|
|
46
|
+
return {
|
|
47
|
+
...state,
|
|
48
|
+
data: action.payload,
|
|
49
|
+
status: exports.STATUS.success,
|
|
50
|
+
fetchCount: (state.fetchCount ?? 0) + 1,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
failure(state, action) {
|
|
54
|
+
return {
|
|
55
|
+
...state,
|
|
56
|
+
error: action.payload,
|
|
57
|
+
status: exports.STATUS.failure,
|
|
58
|
+
fetchCount: (state.fetchCount ?? 0) + 1,
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Применяет обработчики для работы с удаленными данными.
|
|
65
|
+
* @param actions Набор action'ов.
|
|
66
|
+
* @param builder Builder.
|
|
67
|
+
*/
|
|
68
|
+
static applyHandlers(actions, builder) {
|
|
69
|
+
const handlers = RemoteData.createHandlers();
|
|
70
|
+
// @todo разобраться с проблемой когда убираешь ".type"
|
|
71
|
+
builder.addCase(actions.request.type, handlers.request);
|
|
72
|
+
builder.addCase(actions.success.type, handlers.success);
|
|
73
|
+
builder.addCase(actions.failure.type, handlers.failure);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Возвращает новый набор селекторов данных.
|
|
77
|
+
* @param selectRoot Функция получения состояния.
|
|
78
|
+
* @return Набор селекторов.
|
|
79
|
+
*/
|
|
80
|
+
static createSelectors(selectRoot) {
|
|
81
|
+
return {
|
|
82
|
+
isInitial: (0, toolkit_1.createSelector)(selectRoot, state => state.status === 'initial'),
|
|
83
|
+
isFetching: (0, toolkit_1.createSelector)(selectRoot, state => state.status === 'fetching'),
|
|
84
|
+
isSuccess: (0, toolkit_1.createSelector)(selectRoot, state => state.status === 'success'),
|
|
85
|
+
isFailed: (0, toolkit_1.createSelector)(selectRoot, state => state.status === 'failure'),
|
|
86
|
+
wasFetched: (0, toolkit_1.createSelector)(selectRoot, state => (state.fetchCount ?? 0) > 0),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.RemoteData = RemoteData;
|
|
13
91
|
/**
|
|
14
92
|
* Возвращает набор обработчиков для работы с удаленными данными.
|
|
93
|
+
* @deprecated Теперь нужно использовать RemoteData.createHandlers.
|
|
15
94
|
* @return Набор.
|
|
16
95
|
*/
|
|
17
96
|
const createRemoteDataReducers = () => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../../src/utils/redux/remote-data.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../../src/utils/redux/remote-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Middleware } from '@reduxjs/toolkit';
|
|
2
2
|
import type { Saga, SagaMiddlewareOptions } from 'redux-saga';
|
|
3
|
-
export
|
|
3
|
+
export type SagaErrorInfo = Parameters<Required<SagaMiddlewareOptions>['onError']>[1];
|
|
4
4
|
export interface SagaInterruptInfo {
|
|
5
5
|
timeout: number;
|
|
6
6
|
}
|
|
@@ -6,9 +6,9 @@ export interface RemoteProperty {
|
|
|
6
6
|
version?: string;
|
|
7
7
|
}
|
|
8
8
|
/** @internal */
|
|
9
|
-
export
|
|
9
|
+
export type OriginalModuleFederationPluginOptions = ConstructorParameters<typeof container.ModuleFederationPlugin>[0];
|
|
10
10
|
/** @internal */
|
|
11
|
-
export
|
|
11
|
+
export type Shared = OriginalModuleFederationPluginOptions['shared'];
|
|
12
12
|
/** @internal */
|
|
13
13
|
export interface ModuleFederationPluginOptions {
|
|
14
14
|
/** Имя сервиса. */
|
|
@@ -27,8 +27,8 @@ export interface ModuleFederationPluginOptions {
|
|
|
27
27
|
containersGlobalKey?: string;
|
|
28
28
|
}
|
|
29
29
|
/** @internal */
|
|
30
|
-
export
|
|
30
|
+
export type ReadyOptions = Omit<ModuleFederationPluginOptions, 'remoteEntriesGlobalKey' | 'containersGlobalKey'> & Required<Pick<ModuleFederationPluginOptions, 'remoteEntriesGlobalKey' | 'containersGlobalKey'>> & {
|
|
31
31
|
library: Required<OriginalModuleFederationPluginOptions>['library'];
|
|
32
32
|
};
|
|
33
33
|
/** @internal */
|
|
34
|
-
export
|
|
34
|
+
export type SharedArray = Extract<Shared, Array<unknown>>;
|