@sima-land/isomorph 11.0.0-alpha.60 → 11.0.0-alpha.61
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/dist/cjs/log/handler/sentry.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/preset/isomorphic/providers/redux-middleware-saga.js +1 -1
- package/dist/cjs/preset/isomorphic/providers/redux-middleware-saga.js.map +1 -1
- package/dist/cjs/preset/isomorphic/utils/axios-logging.js +1 -1
- package/dist/cjs/preset/isomorphic/utils/axios-logging.js.map +1 -1
- package/dist/cjs/preset/node/providers/config-source.js +1 -1
- package/dist/cjs/preset/node/providers/config-source.js.map +1 -1
- package/dist/cjs/preset/node/providers/express-factory.js +1 -1
- package/dist/cjs/preset/node/providers/express-factory.js.map +1 -1
- package/dist/cjs/preset/node/providers/log-handler-pino.js +1 -1
- package/dist/cjs/preset/node/providers/log-handler-pino.js.map +1 -1
- package/dist/cjs/preset/node/providers/main-express-app.js +1 -1
- package/dist/cjs/preset/node/providers/main-express-app.js.map +1 -1
- package/dist/cjs/preset/node/providers/metrics-express-app.js +2 -3
- package/dist/cjs/preset/node/providers/metrics-express-app.js.map +1 -1
- package/dist/cjs/preset/node/providers/telemetry-tracer-resource.js +1 -2
- package/dist/cjs/preset/node/providers/telemetry-tracer-resource.js.map +1 -1
- package/dist/cjs/preset/node/utils/get-client-ip.js +1 -1
- package/dist/cjs/preset/node/utils/get-client-ip.js.map +1 -1
- package/dist/cjs/preset/node/utils/get-handler-metrics.js +1 -1
- package/dist/cjs/preset/node/utils/get-handler-metrics.js.map +1 -1
- package/dist/cjs/utils/axios/sauce/index.js +1 -1
- package/dist/cjs/utils/axios/sauce/index.js.map +1 -1
- package/dist/cjs/utils/redux/remote-data.js +1 -2
- package/dist/cjs/utils/redux/remote-data.js.map +1 -1
- package/dist/cjs/utils/redux-saga/middleware.js +1 -2
- package/dist/cjs/utils/redux-saga/middleware.js.map +1 -1
- package/dist/cjs/utils/ssr/index.js +1 -1
- package/dist/cjs/utils/ssr/index.js.map +1 -1
- package/dist/cjs/utils/webpack/env/utils.js +1 -1
- package/dist/cjs/utils/webpack/env/utils.js.map +1 -1
- package/dist/cjs/utils/webpack/module-federation/index.js +1 -2
- package/dist/cjs/utils/webpack/module-federation/index.js.map +1 -1
- package/dist/esm/log/handler/sentry.js +0 -1
- package/dist/esm/log/handler/sentry.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/types/log/handler/sentry.d.ts +4 -1
- package/dist/types/log/handler/sentry.d.ts.map +1 -1
- package/dist/types/preset/node/utils/get-handler-metrics.d.ts +3 -3
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.js","names":["_log","require","createSentryHandler","scopeInit","getScope","event","scope","type","error","data","DetailedError","level","context","extra","setLevel","list","Array","isArray","item","setContext","key","setExtra","captureException","Breadcrumb","breadcrumb","addBreadcrumb"],"sources":["../../../../src/log/handler/sentry.ts"],"sourcesContent":["import type { LogHandler } from '../types';\nimport type { Scope } from '@sentry/
|
|
1
|
+
{"version":3,"file":"sentry.js","names":["_log","require","createSentryHandler","scopeInit","getScope","event","scope","type","error","data","DetailedError","level","context","extra","setLevel","list","Array","isArray","item","setContext","key","setExtra","captureException","Breadcrumb","breadcrumb","addBreadcrumb"],"sources":["../../../../src/log/handler/sentry.ts"],"sourcesContent":["import type { LogHandler } from '../types';\nimport { Breadcrumb, DetailedError } from '../../log';\nimport type { Scope as BrowserScope } from '@sentry/browser';\nimport type { Scope as NodeScope } from '@sentry/node';\n\ntype Scope = BrowserScope | NodeScope;\n\n/**\n * Возвращает новый handler для logger'а для отправки событий в Sentry.\n * @param scopeInit Sentry Hub или функция которая его вернёт.\n * @return Handler.\n */\nexport function createSentryHandler(scopeInit: Scope | (() => Scope)): LogHandler {\n const getScope = typeof scopeInit === 'function' ? scopeInit : () => scopeInit;\n\n return event => {\n // ВАЖНО: каждый входящий http-запрос должен иметь свой собственный hub (ныне scope)\n // подробности: https://github.com/getsentry/sentry-javascript/discussions/5648\n // поэтому если передана функция - вызываем каждый раз (внутри обработчика)\n const scope = getScope();\n\n // error\n if (event.type === 'error') {\n const error = event.data;\n\n if (error instanceof DetailedError) {\n const { level, context, extra } = error.data;\n\n if (level) {\n scope.setLevel(level);\n }\n\n if (context) {\n const list = Array.isArray(context) ? context : [context];\n\n for (const item of list) {\n scope.setContext(item.key, item.data);\n }\n }\n\n if (extra) {\n scope.setExtra(extra.key, extra.data);\n }\n }\n\n scope.captureException(error);\n }\n\n // breadcrumb\n if (event.data instanceof Breadcrumb) {\n const breadcrumb = event.data.data;\n\n scope.addBreadcrumb(breadcrumb);\n }\n };\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,SAAgC,EAAc;EAChF,MAAMC,QAAQ,GAAG,OAAOD,SAAS,KAAK,UAAU,GAAGA,SAAS,GAAG,MAAMA,SAAS;EAE9E,OAAOE,KAAK,IAAI;IACd;IACA;IACA;IACA,MAAMC,KAAK,GAAGF,QAAQ,CAAC,CAAC;;IAExB;IACA,IAAIC,KAAK,CAACE,IAAI,KAAK,OAAO,EAAE;MAC1B,MAAMC,KAAK,GAAGH,KAAK,CAACI,IAAI;MAExB,IAAID,KAAK,YAAYE,kBAAa,EAAE;QAClC,MAAM;UAAEC,KAAK;UAAEC,OAAO;UAAEC;QAAM,CAAC,GAAGL,KAAK,CAACC,IAAI;QAE5C,IAAIE,KAAK,EAAE;UACTL,KAAK,CAACQ,QAAQ,CAACH,KAAK,CAAC;QACvB;QAEA,IAAIC,OAAO,EAAE;UACX,MAAMG,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACL,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;UAEzD,KAAK,MAAMM,IAAI,IAAIH,IAAI,EAAE;YACvBT,KAAK,CAACa,UAAU,CAACD,IAAI,CAACE,GAAG,EAAEF,IAAI,CAACT,IAAI,CAAC;UACvC;QACF;QAEA,IAAII,KAAK,EAAE;UACTP,KAAK,CAACe,QAAQ,CAACR,KAAK,CAACO,GAAG,EAAEP,KAAK,CAACJ,IAAI,CAAC;QACvC;MACF;MAEAH,KAAK,CAACgB,gBAAgB,CAACd,KAAK,CAAC;IAC/B;;IAEA;IACA,IAAIH,KAAK,CAACI,IAAI,YAAYc,eAAU,EAAE;MACpC,MAAMC,UAAU,GAAGnB,KAAK,CAACI,IAAI,CAACA,IAAI;MAElCH,KAAK,CAACmB,aAAa,CAACD,UAAU,CAAC;IACjC;EACF,CAAC;AACH"}
|
package/dist/cjs/package.json
CHANGED
|
@@ -7,7 +7,7 @@ exports.provideReduxMiddlewareSaga = provideReduxMiddlewareSaga;
|
|
|
7
7
|
var _tokens = require("../../../tokens");
|
|
8
8
|
var _sagaLogging = require("../utils/saga-logging");
|
|
9
9
|
var _reduxSaga = _interopRequireDefault(require("redux-saga"));
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Провайдер промежуточного слоя redux-saga для redux-хранилища.
|
|
13
13
|
* @param resolve Функция для получения зависимости по токену.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redux-middleware-saga.js","names":["_tokens","require","_sagaLogging","_reduxSaga","_interopRequireDefault","
|
|
1
|
+
{"version":3,"file":"redux-middleware-saga.js","names":["_tokens","require","_sagaLogging","_reduxSaga","_interopRequireDefault","e","__esModule","default","provideReduxMiddlewareSaga","resolve","logger","KnownToken","logHandler","SagaLogging","createSagaMiddleware","onError","error","errorInfo","onSagaError"],"sources":["../../../../../src/preset/isomorphic/providers/redux-middleware-saga.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { SagaLogging } from '../utils/saga-logging';\nimport createSagaMiddleware, { SagaMiddleware } from 'redux-saga';\n\n/**\n * Провайдер промежуточного слоя redux-saga для redux-хранилища.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой для redux-хранилища.\n */\nexport function provideReduxMiddlewareSaga(resolve: Resolve): SagaMiddleware {\n const logger = resolve(KnownToken.logger);\n\n const logHandler = new SagaLogging(logger);\n\n return createSagaMiddleware({\n /** @inheritdoc */\n onError(error, errorInfo) {\n logHandler.onSagaError(error, errorInfo);\n },\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAkE,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElE;AACA;AACA;AACA;AACA;AACO,SAASG,0BAA0BA,CAACC,OAAgB,EAAkB;EAC3E,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACD,MAAM,CAAC;EAEzC,MAAME,UAAU,GAAG,IAAIC,wBAAW,CAACH,MAAM,CAAC;EAE1C,OAAO,IAAAI,kBAAoB,EAAC;IAC1B;IACAC,OAAOA,CAACC,KAAK,EAAEC,SAAS,EAAE;MACxBL,UAAU,CAACM,WAAW,CAACF,KAAK,EAAEC,SAAS,CAAC;IAC1C;EACF,CAAC,CAAC;AACJ"}
|
|
@@ -11,7 +11,7 @@ var _disableable = require("./disableable");
|
|
|
11
11
|
var _displayUrl = require("./display-url");
|
|
12
12
|
var _severityFromStatus = require("./severity-from-status");
|
|
13
13
|
var _axios2 = _interopRequireDefault(require("axios"));
|
|
14
|
-
function _interopRequireDefault(
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
15
|
/**
|
|
16
16
|
* Обработчик для промежуточного слоя логирования исходящих http-запросов.
|
|
17
17
|
* Отправляет хлебные крошки и данные ошибки, пригодные для Sentry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-logging.js","names":["_utils","require","_log","_axios","_disableable","_displayUrl","_severityFromStatus","_axios2","_interopRequireDefault","
|
|
1
|
+
{"version":3,"file":"axios-logging.js","names":["_utils","require","_log","_axios","_disableable","_displayUrl","_severityFromStatus","_axios2","_interopRequireDefault","e","__esModule","default","AxiosLogging","Disableable","constructor","logger","data","config","applyAxiosDefaults","defaults","requestInfo","readyURL","displayUrl","baseURL","url","beforeRequest","isDisabled","method","params","info","Breadcrumb","category","type","level","afterResponse","response","status_code","status","onCatch","error","axios","isAxiosError","statusCode","isNetworkError","cause","isAbortError","DetailedError","message","severityFromStatus","context","key","headers","toJSON","exports"],"sources":["../../../../../src/preset/isomorphic/utils/axios-logging.ts"],"sourcesContent":["import { isAbortError, isNetworkError } from '../../../http/utils';\nimport { Breadcrumb, DetailedError, type Logger } from '../../../log';\nimport {\n type LogMiddlewareHandler,\n applyAxiosDefaults,\n SharedData,\n DoneSharedData,\n FailSharedData,\n} from '../../../utils/axios';\nimport { Disableable } from './disableable';\nimport { displayUrl } from './display-url';\nimport { severityFromStatus } from './severity-from-status';\nimport axios from 'axios';\n\n/**\n * Обработчик для промежуточного слоя логирования исходящих http-запросов.\n * Отправляет хлебные крошки и данные ошибки, пригодные для Sentry.\n */\nexport class AxiosLogging extends Disableable implements LogMiddlewareHandler {\n logger: Logger;\n\n protected readonly requestInfo: ReturnType<typeof applyAxiosDefaults> & {\n readyURL: string;\n };\n\n /**\n * Конструктор.\n * @param logger Logger.\n * @param data Данные запроса.\n */\n constructor(logger: Logger, data: SharedData) {\n super();\n const config = applyAxiosDefaults(data.config, data.defaults);\n\n this.logger = logger;\n\n this.requestInfo = {\n ...config,\n readyURL: displayUrl(config.baseURL, config.url),\n };\n }\n\n /**\n * Отправит хлебные крошки перед запросом.\n */\n beforeRequest() {\n if (this.isDisabled()) {\n return;\n }\n\n const { readyURL, method, params } = this.requestInfo;\n\n this.logger.info(\n new Breadcrumb({\n category: 'http.request',\n type: 'http',\n data: {\n url: readyURL,\n method,\n params,\n },\n level: 'info',\n }),\n );\n }\n\n /**\n * Отправит хлебные крошки после запроса.\n * @param data Данные ответа.\n */\n afterResponse({ response }: DoneSharedData) {\n if (this.isDisabled()) {\n return;\n }\n\n const { readyURL, method, params } = this.requestInfo;\n\n this.logger.info(\n new Breadcrumb({\n category: 'http.response',\n type: 'http',\n data: {\n url: readyURL,\n method,\n status_code: response.status,\n params,\n },\n level: 'info',\n }),\n );\n }\n\n /**\n * Отправит данные ошибки при перехвате.\n * @param data Данные запроса.\n */\n onCatch({ error }: FailSharedData) {\n if (this.isDisabled()) {\n return;\n }\n\n // если это не AxiosError тогда выполняем простое логирование\n if (!axios.isAxiosError(error)) {\n this.logger.error(error);\n return;\n }\n\n const statusCode = error.response?.status ?? 'UNKNOWN';\n const { requestInfo } = this;\n\n if (typeof statusCode === 'number') {\n this.logger.info(\n new Breadcrumb({\n category: 'http.response',\n type: 'http',\n data: {\n url: requestInfo.readyURL,\n method: requestInfo.method,\n status_code: statusCode,\n params: requestInfo.params,\n },\n level: 'error',\n }),\n );\n }\n\n // по общему соглашению фильтруем сетевые ошибки\n if (isNetworkError(error.cause)) {\n return;\n }\n\n // по общему соглашению фильтруем ошибки обрывания\n if (isAbortError(error.cause)) {\n return;\n }\n\n // по общему соглашению фильтруем все статусы < 500\n if (typeof statusCode === 'number' && statusCode < 500) {\n return;\n }\n\n // @todo добавить метод в духе errorStatusFilter(s => s !== 422)\n\n this.logger.error(\n new DetailedError(\n `HTTP request failed, status code: ${statusCode}, error message: ${error.message}`,\n {\n level: severityFromStatus(error.response?.status),\n context: [\n {\n key: 'Request details',\n data: {\n url: requestInfo.url,\n baseURL: requestInfo.baseURL,\n method: requestInfo.method,\n headers: requestInfo.headers,\n data: requestInfo.data,\n params: requestInfo.params,\n },\n },\n {\n key: 'Response details',\n data: {\n data: error.response?.data,\n\n // копируем так как в Sentry падает ошибка: **non-serializable** (TypeError: Object.getPrototypeOf(...) is null)\n headers: { ...error.response?.headers },\n\n error: error.toJSON(),\n },\n },\n ],\n },\n ),\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ exports.provideConfigSource = provideConfigSource;
|
|
|
7
7
|
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
8
8
|
var _dotenv = require("dotenv");
|
|
9
9
|
var _config = require("../../../config");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Провайдер источника конфигурации.
|
|
13
13
|
* @return Источник конфигурации.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-source.js","names":["_nodePath","_interopRequireDefault","require","_dotenv","_config","
|
|
1
|
+
{"version":3,"file":"config-source.js","names":["_nodePath","_interopRequireDefault","require","_dotenv","_config","e","__esModule","default","provideConfigSource","envName","process","env","NODE_ENV","applyDotenv","path","resolve","cwd","createConfigSource"],"sources":["../../../../../src/preset/node/providers/config-source.ts"],"sourcesContent":["import path from 'node:path';\nimport { config as applyDotenv } from 'dotenv';\nimport { ConfigSource, createConfigSource } from '../../../config';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`) });\n }\n\n // @todo подключать .env, .env.local, .env.<envName>, .env.<envName>.local как в Vite/Bun\n\n return createConfigSource(process.env);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAAmE,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnE;AACA;AACA;AACA;AACO,SAASG,mBAAmBA,CAAA,EAAiB;EAClD,MAAMC,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ;;EAEpC;EACA,IAAIH,OAAO,EAAE;IACX,IAAAI,cAAW,EAAC;MAAEC,IAAI,EAAEA,iBAAI,CAACC,OAAO,CAACL,OAAO,CAACM,GAAG,CAAC,CAAC,EAAG,UAASP,OAAQ,EAAC;IAAE,CAAC,CAAC;EACzE;;EAEA;;EAEA,OAAO,IAAAQ,0BAAkB,EAACP,OAAO,CAACC,GAAG,CAAC;AACxC"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.provideExpressFactory = provideExpressFactory;
|
|
7
7
|
var _express = _interopRequireDefault(require("express"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
/**
|
|
10
10
|
* Провайдер фабрики http-серверов.
|
|
11
11
|
* @return Фабрика.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-factory.js","names":["_express","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"express-factory.js","names":["_express","_interopRequireDefault","require","e","__esModule","default","provideExpressFactory","express"],"sources":["../../../../../src/preset/node/providers/express-factory.ts"],"sourcesContent":["import express from 'express';\n\n/**\n * Провайдер фабрики http-серверов.\n * @return Фабрика.\n */\nexport function provideExpressFactory() {\n return express;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B;AACA;AACA;AACA;AACO,SAASG,qBAAqBA,CAAA,EAAG;EACtC,OAAOC,gBAAO;AAChB"}
|
|
@@ -8,7 +8,7 @@ var _pino = _interopRequireDefault(require("pino"));
|
|
|
8
8
|
var _pinoPretty = _interopRequireDefault(require("pino-pretty"));
|
|
9
9
|
var _pino2 = require("../../../log/handler/pino");
|
|
10
10
|
var _tokens = require("../../../tokens");
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
/**
|
|
13
13
|
* Провайдер обработчика логирования для Pino.
|
|
14
14
|
* @param resolve Функция для получения зависимости по токену.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-handler-pino.js","names":["_pino","_interopRequireDefault","require","_pinoPretty","_pino2","_tokens","
|
|
1
|
+
{"version":3,"file":"log-handler-pino.js","names":["_pino","_interopRequireDefault","require","_pinoPretty","_pino2","_tokens","e","__esModule","default","provideLogHandlerPino","resolve","config","KnownToken","Config","base","pinoLogger","pino","env","formatters","level","label","PinoPretty","colorize","translateTime","createPinoHandler"],"sources":["../../../../../src/preset/node/providers/log-handler-pino.ts"],"sourcesContent":["import pino from 'pino';\nimport PinoPretty from 'pino-pretty';\nimport { Resolve } from '../../../di';\nimport { LogHandler } from '../../../log';\nimport { createPinoHandler } from '../../../log/handler/pino';\nimport { KnownToken } from '../../../tokens';\n\n/**\n * Провайдер обработчика логирования для Pino.\n * @param resolve Функция для получения зависимости по токену.\n * @return Обработчик.\n */\nexport function provideLogHandlerPino(resolve: Resolve): LogHandler {\n const config = resolve(KnownToken.Config.base);\n\n const pinoLogger = pino(\n config.env === 'production'\n ? {\n formatters: {\n // ВАЖНО: для Fluent необходимо наличие поля level: string\n level: label => ({ level: label }),\n },\n }\n : PinoPretty({\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss.l o',\n }),\n );\n\n return createPinoHandler(pinoLogger);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAA6C,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7C;AACA;AACA;AACA;AACA;AACO,SAASG,qBAAqBA,CAACC,OAAgB,EAAc;EAClE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAE9C,MAAMC,UAAU,GAAG,IAAAC,aAAI,EACrBL,MAAM,CAACM,GAAG,KAAK,YAAY,GACvB;IACEC,UAAU,EAAE;MACV;MACAC,KAAK,EAAEC,KAAK,KAAK;QAAED,KAAK,EAAEC;MAAM,CAAC;IACnC;EACF,CAAC,GACD,IAAAC,mBAAU,EAAC;IACTC,QAAQ,EAAE,IAAI;IACdC,aAAa,EAAE;EACjB,CAAC,CACP,CAAC;EAED,OAAO,IAAAC,wBAAiB,EAACT,UAAU,CAAC;AACtC"}
|
|
@@ -7,7 +7,7 @@ exports.provideMainExpressApp = provideMainExpressApp;
|
|
|
7
7
|
var _tokens = require("../../../tokens");
|
|
8
8
|
var _express = _interopRequireDefault(require("express"));
|
|
9
9
|
var _httpProxyMiddleware = require("http-proxy-middleware");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Провайдер основного express-приложения.
|
|
13
13
|
* @param resolve Функция для получения зависимости по токену.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-express-app.js","names":["_tokens","require","_express","_interopRequireDefault","_httpProxyMiddleware","
|
|
1
|
+
{"version":3,"file":"main-express-app.js","names":["_tokens","require","_express","_interopRequireDefault","_httpProxyMiddleware","e","__esModule","default","provideMainExpressApp","resolve","config","KnownToken","Config","base","pageRoutes","Express","serviceRoutes","middleware","endMiddleware","proxyConfig","Http","Serve","Proxy","app","express","env","proxyConfigs","Array","isArray","target","filter","pathRewrite","Error","proxyPaths","proxyMiddleware","createProxyMiddleware","changeOrigin","use","req","res","next","some","proxyPath","path","startsWith","routePath","routeHandler","method"],"sources":["../../../../../src/preset/node/providers/main-express-app.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport express from 'express';\nimport { createProxyMiddleware } from 'http-proxy-middleware';\n\n/**\n * Провайдер основного express-приложения.\n * @param resolve Функция для получения зависимости по токену.\n * @return Основное express-приложение.\n */\nexport function provideMainExpressApp(resolve: Resolve): express.Application {\n const config = resolve(KnownToken.Config.base);\n const pageRoutes = resolve(KnownToken.Express.pageRoutes);\n const serviceRoutes = resolve(KnownToken.Express.serviceRoutes);\n const middleware = resolve(KnownToken.Express.middleware);\n const endMiddleware = resolve(KnownToken.Express.endMiddleware);\n const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);\n\n const app = express();\n\n if (config.env === 'development' && proxyConfig) {\n const proxyConfigs = Array.isArray(proxyConfig) ? proxyConfig : [proxyConfig];\n\n for (const { target, filter, pathRewrite } of proxyConfigs) {\n // ВАЖНО: так как не можем предоставить web-интерфейс Request бросаем ошибку\n if (typeof filter === 'function') {\n throw new Error('Currently function is not supported for proxy \"filter\"');\n }\n\n const proxyPaths = Array.isArray(filter) ? filter : [filter];\n\n const proxyMiddleware = createProxyMiddleware({\n target,\n changeOrigin: true,\n pathRewrite,\n\n // ВАЖНО: не используем pathFilter тк если в проекте есть webpack-dev-server,\n // он тащит за собой http-proxy-middleware@2 который не поддерживает pathFilter\n // pathFilter: inputPath => proxyPaths.some(proxyPath => inputPath.startsWith(proxyPath)),\n });\n\n app.use((req, res, next) => {\n // ВАЖНО: поскольку не используем pathFilter - фильтруем запросы проверкой\n if (proxyPaths.some(proxyPath => req.path.startsWith(proxyPath))) {\n proxyMiddleware(req, res, next);\n } else {\n next();\n }\n });\n }\n }\n\n // маршруты страниц\n for (const [routePath, routeHandler] of pageRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app[method](path, middleware, routeHandler, endMiddleware);\n }\n\n // служебные маршруты (к ним не применяются промежуточные слои)\n for (const [routePath, routeHandler] of serviceRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app[method](path, routeHandler);\n }\n\n // @todo также добавить apiRoutes?\n return app;\n}\n"],"mappings":"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"}
|
|
@@ -6,9 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.provideMetricsExpressApp = provideMetricsExpressApp;
|
|
7
7
|
var PromClient = _interopRequireWildcard(require("prom-client"));
|
|
8
8
|
var _express = _interopRequireDefault(require("express"));
|
|
9
|
-
function _interopRequireDefault(
|
|
10
|
-
function
|
|
11
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
11
|
/**
|
|
13
12
|
* Провайдер express-приложения метрик.
|
|
14
13
|
* @return Пул известных http-хостов.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-express-app.js","names":["PromClient","_interopRequireWildcard","require","_express","_interopRequireDefault","
|
|
1
|
+
{"version":3,"file":"metrics-express-app.js","names":["PromClient","_interopRequireWildcard","require","_express","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","provideMetricsExpressApp","collectDefaultMetrics","app","express","req","res","metrics","register","setHeader","contentType","send"],"sources":["../../../../../src/preset/node/providers/metrics-express-app.ts"],"sourcesContent":["import * as PromClient from 'prom-client';\nimport express from 'express';\n\n/**\n * Провайдер express-приложения метрик.\n * @return Пул известных http-хостов.\n */\nexport function provideMetricsExpressApp(): express.Application {\n PromClient.collectDefaultMetrics();\n\n const app = express();\n\n app.get('/', async function (req, res) {\n const metrics = await PromClient.register.metrics();\n\n res.setHeader('Content-Type', PromClient.register.contentType);\n res.send(metrics);\n });\n\n return app;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAI,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAE9B;AACA;AACA;AACA;AACO,SAASgB,wBAAwBA,CAAA,EAAwB;EAC9DxB,UAAU,CAACyB,qBAAqB,CAAC,CAAC;EAElC,MAAMC,GAAG,GAAG,IAAAC,gBAAO,EAAC,CAAC;EAErBD,GAAG,CAACT,GAAG,CAAC,GAAG,EAAE,gBAAgBW,GAAG,EAAEC,GAAG,EAAE;IACrC,MAAMC,OAAO,GAAG,MAAM9B,UAAU,CAAC+B,QAAQ,CAACD,OAAO,CAAC,CAAC;IAEnDD,GAAG,CAACG,SAAS,CAAC,cAAc,EAAEhC,UAAU,CAAC+B,QAAQ,CAACE,WAAW,CAAC;IAC9DJ,GAAG,CAACK,IAAI,CAACJ,OAAO,CAAC;EACnB,CAAC,CAAC;EAEF,OAAOJ,GAAG;AACZ"}
|
|
@@ -7,8 +7,7 @@ exports.provideTracingResource = provideTracingResource;
|
|
|
7
7
|
var _resources = require("@opentelemetry/resources");
|
|
8
8
|
var SemanticArgs = _interopRequireWildcard(require("@opentelemetry/semantic-conventions/incubating"));
|
|
9
9
|
var _tokens = require("../../../tokens");
|
|
10
|
-
function
|
|
11
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
11
|
/**
|
|
13
12
|
* Провайдер объекта Resource.
|
|
14
13
|
* @param resolve Функция для получения зависимости по токену.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-tracer-resource.js","names":["_resources","require","SemanticArgs","_interopRequireWildcard","_tokens","
|
|
1
|
+
{"version":3,"file":"telemetry-tracer-resource.js","names":["_resources","require","SemanticArgs","_interopRequireWildcard","_tokens","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","provideTracingResource","resolve","config","KnownToken","Config","base","resource","defaultResource","merge","resourceFromAttributes","ATTR_SERVICE_NAME","appName","ATTR_SERVICE_VERSION","appVersion","ATTR_DEPLOYMENT_ENVIRONMENT_NAME","env","detectResources","detectors","osDetector","envDetector","hostDetector","processDetector"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-resource.ts"],"sourcesContent":["import {\n resourceFromAttributes,\n detectResources,\n defaultResource,\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n Resource,\n} from '@opentelemetry/resources';\nimport * as SemanticArgs from '@opentelemetry/semantic-conventions/incubating';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\n/**\n * Провайдер объекта Resource.\n * @param resolve Функция для получения зависимости по токену.\n * @return Resource.\n */\nexport function provideTracingResource(resolve: Resolve): Resource {\n const config = resolve(KnownToken.Config.base);\n\n const resource = defaultResource()\n .merge(\n resourceFromAttributes({\n [SemanticArgs.ATTR_SERVICE_NAME]: config.appName,\n [SemanticArgs.ATTR_SERVICE_VERSION]: config.appVersion,\n [SemanticArgs.ATTR_DEPLOYMENT_ENVIRONMENT_NAME]: config.env,\n }),\n )\n .merge(\n detectResources({\n detectors: [osDetector, envDetector, hostDetector, processDetector],\n }),\n );\n\n return resource;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAUA,IAAAC,YAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAA6C,SAAAE,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAI7C;AACA;AACA;AACA;AACA;AACO,SAASkB,sBAAsBA,CAACC,OAAgB,EAAY;EACjE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAE9C,MAAMC,QAAQ,GAAG,IAAAC,0BAAe,EAAC,CAAC,CAC/BC,KAAK,CACJ,IAAAC,iCAAsB,EAAC;IACrB,CAAC/B,YAAY,CAACgC,iBAAiB,GAAGR,MAAM,CAACS,OAAO;IAChD,CAACjC,YAAY,CAACkC,oBAAoB,GAAGV,MAAM,CAACW,UAAU;IACtD,CAACnC,YAAY,CAACoC,gCAAgC,GAAGZ,MAAM,CAACa;EAC1D,CAAC,CACH,CAAC,CACAP,KAAK,CACJ,IAAAQ,0BAAe,EAAC;IACdC,SAAS,EAAE,CAACC,qBAAU,EAAEC,sBAAW,EAAEC,uBAAY,EAAEC,0BAAe;EACpE,CAAC,CACH,CAAC;EAEH,OAAOf,QAAQ;AACjB"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getClientIp = getClientIp;
|
|
7
7
|
var _nodeNet = _interopRequireDefault(require("node:net"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
/**
|
|
10
10
|
* Определяет IP входящего запроса.
|
|
11
11
|
* @param request Входящий запрос.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-client-ip.js","names":["_nodeNet","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"get-client-ip.js","names":["_nodeNet","_interopRequireDefault","require","e","__esModule","default","getClientIp","request","headerValue","header","socket","remoteAddress","net","isIP","undefined"],"sources":["../../../../../src/preset/node/utils/get-client-ip.ts"],"sourcesContent":["import type express from 'express';\nimport net from 'node:net';\n\n/**\n * Определяет IP входящего запроса.\n * @param request Входящий запрос.\n * @return IP.\n */\nexport function getClientIp(request: express.Request): string | undefined {\n const headerValue =\n request.header('x-client-ip') ||\n request.header('x-forwarded-for') ||\n request.socket.remoteAddress ||\n '';\n\n return net.isIP(headerValue) ? headerValue : undefined;\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3B;AACA;AACA;AACA;AACA;AACO,SAASG,WAAWA,CAACC,OAAwB,EAAsB;EACxE,MAAMC,WAAW,GACfD,OAAO,CAACE,MAAM,CAAC,aAAa,CAAC,IAC7BF,OAAO,CAACE,MAAM,CAAC,iBAAiB,CAAC,IACjCF,OAAO,CAACG,MAAM,CAACC,aAAa,IAC5B,EAAE;EAEJ,OAAOC,gBAAG,CAACC,IAAI,CAACL,WAAW,CAAC,GAAGA,WAAW,GAAGM,SAAS;AACxD"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.LABEL_NAMES = void 0;
|
|
7
7
|
exports.getHandlerMetrics = getHandlerMetrics;
|
|
8
8
|
var _promClient = _interopRequireDefault(require("prom-client"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
const LABEL_NAMES = exports.LABEL_NAMES = {
|
|
11
11
|
httpResponse: ['version', 'route', 'code', 'method'],
|
|
12
12
|
pageRender: ['version', 'route', 'method']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-handler-metrics.js","names":["_promClient","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"get-handler-metrics.js","names":["_promClient","_interopRequireDefault","require","e","__esModule","default","LABEL_NAMES","exports","httpResponse","pageRender","getHandlerMetrics","requestCount","PromClient","Counter","name","help","labelNames","responseDuration","Histogram","buckets","renderDuration"],"sources":["../../../../../src/preset/node/utils/get-handler-metrics.ts"],"sourcesContent":["import PromClient from 'prom-client';\n\nexport const LABEL_NAMES = {\n httpResponse: ['version', 'route', 'code', 'method'],\n pageRender: ['version', 'route', 'method'],\n} as const;\n\n/**\n * Возвращает метрики обработки входящего http-запроса.\n * @return Метрики.\n */\nexport function getHandlerMetrics() {\n const requestCount = new PromClient.Counter({\n name: 'http_request_count',\n help: 'Incoming HTTP request count',\n labelNames: LABEL_NAMES.httpResponse,\n });\n\n const responseDuration = new PromClient.Histogram({\n name: 'http_response_duration_ms',\n help: 'Duration of incoming HTTP requests in ms',\n labelNames: LABEL_NAMES.httpResponse,\n buckets: [30, 100, 200, 500, 1000, 2500, 5000, 10000],\n });\n\n const renderDuration = new PromClient.Histogram({\n name: 'render_duration_ms',\n help: 'Duration of SSR ms',\n labelNames: LABEL_NAMES.pageRender,\n buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500],\n });\n\n return {\n requestCount,\n renderDuration,\n responseDuration,\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;EACpDC,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ;AAC3C,CAAU;;AAEV;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,YAAY,GAAG,IAAIC,mBAAU,CAACC,OAAO,CAAC;IAC1CC,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,6BAA6B;IACnCC,UAAU,EAAEV,WAAW,CAACE;EAC1B,CAAC,CAAC;EAEF,MAAMS,gBAAgB,GAAG,IAAIL,mBAAU,CAACM,SAAS,CAAC;IAChDJ,IAAI,EAAE,2BAA2B;IACjCC,IAAI,EAAE,0CAA0C;IAChDC,UAAU,EAAEV,WAAW,CAACE,YAAY;IACpCW,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;EACtD,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG,IAAIR,mBAAU,CAACM,SAAS,CAAC;IAC9CJ,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,oBAAoB;IAC1BC,UAAU,EAAEV,WAAW,CAACG,UAAU;IAClCU,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;EACjD,CAAC,CAAC;EAEF,OAAO;IACLR,YAAY;IACZS,cAAc;IACdH;EACF,CAAC;AACH"}
|
|
@@ -7,7 +7,7 @@ exports.formatResultInfo = formatResultInfo;
|
|
|
7
7
|
exports.sauce = sauce;
|
|
8
8
|
var _axios = _interopRequireDefault(require("axios"));
|
|
9
9
|
var _ = require("../..");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
// @todo передавать заголовки ответа
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_axios","_interopRequireDefault","require","_","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_axios","_interopRequireDefault","require","_","e","__esModule","default","sauce","instance","request","safetyAsync","formatResultInfo","get","delete","head","options","post","put","patch","info","ok","data","result","status","axios","isAxiosError","error","response","undefined"],"sources":["../../../../../src/utils/axios/sauce/index.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { safetyAsync, SafetyInfo } from '../..';\nimport type { AxiosInstanceWrapper, MethodName } from 'middleware-axios';\n\n// @todo передавать заголовки ответа\nexport type SauceResponse<T = any> =\n | {\n ok: true;\n status: number;\n data: T;\n }\n | {\n ok: false;\n status?: unknown; // unknown так как не факт что упали именно по статусу, например может быть exception\n data?: unknown; // иногда хочется узнать, что прислал сервер вместе с ошибкой (например 422)\n error: any;\n };\n\nexport interface SauceMethod<K extends MethodName | 'request'> {\n <T>(...args: Parameters<(AxiosInstance | AxiosInstanceWrapper)[K]>): Promise<SauceResponse<T>>;\n}\n\n/**\n * Обёртка над экземпляром axios.\n * Все методы возвращают promise, который никогда переходят в состояние rejected.\n */\nexport interface Sauce {\n readonly request: SauceMethod<'request'>;\n readonly get: SauceMethod<'get'>;\n readonly delete: SauceMethod<'delete'>;\n readonly head: SauceMethod<'head'>;\n readonly options: SauceMethod<'options'>;\n readonly post: SauceMethod<'post'>;\n readonly put: SauceMethod<'put'>;\n readonly patch: SauceMethod<'patch'>;\n}\n\n/**\n * Оборачивает экземпляр axios. Все методы обертки возвращают promise, которые никогда не попадают в состояние rejected.\n * @param instance Экземпляр axios или AxiosInstanceWrapper.\n * @return Обертка.\n */\nexport function sauce(instance: AxiosInstance | AxiosInstanceWrapper): Sauce {\n return {\n request: safetyAsync(instance.request, formatResultInfo),\n get: safetyAsync(instance.get, formatResultInfo),\n delete: safetyAsync(instance.delete, formatResultInfo),\n head: safetyAsync(instance.head, formatResultInfo),\n options: safetyAsync(instance.options, formatResultInfo),\n post: safetyAsync(instance.post, formatResultInfo),\n put: safetyAsync(instance.put, formatResultInfo),\n patch: safetyAsync(instance.patch, formatResultInfo),\n };\n}\n\n/**\n * Функция форматирования результата, используемая в sauce.\n * @param info Результат вызова метода экземпляра axios.\n * @return Отформатированный ответ.\n */\nexport function formatResultInfo<T>(info: SafetyInfo<AxiosResponse<T>>): SauceResponse<T> {\n if (info.ok) {\n return {\n ok: true,\n data: info.result.data,\n status: info.result.status,\n };\n } else {\n return {\n ok: false,\n data: axios.isAxiosError(info.error) ? info.error.response?.data : undefined,\n status: axios.isAxiosError(info.error) ? info.error.response?.status : undefined,\n error: info.error,\n };\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,CAAA,GAAAD,OAAA;AAAgD,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGhD;;AAkBA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACO,SAASG,KAAKA,CAACC,QAA8C,EAAS;EAC3E,OAAO;IACLC,OAAO,EAAE,IAAAC,aAAW,EAACF,QAAQ,CAACC,OAAO,EAAEE,gBAAgB,CAAC;IACxDC,GAAG,EAAE,IAAAF,aAAW,EAACF,QAAQ,CAACI,GAAG,EAAED,gBAAgB,CAAC;IAChDE,MAAM,EAAE,IAAAH,aAAW,EAACF,QAAQ,CAACK,MAAM,EAAEF,gBAAgB,CAAC;IACtDG,IAAI,EAAE,IAAAJ,aAAW,EAACF,QAAQ,CAACM,IAAI,EAAEH,gBAAgB,CAAC;IAClDI,OAAO,EAAE,IAAAL,aAAW,EAACF,QAAQ,CAACO,OAAO,EAAEJ,gBAAgB,CAAC;IACxDK,IAAI,EAAE,IAAAN,aAAW,EAACF,QAAQ,CAACQ,IAAI,EAAEL,gBAAgB,CAAC;IAClDM,GAAG,EAAE,IAAAP,aAAW,EAACF,QAAQ,CAACS,GAAG,EAAEN,gBAAgB,CAAC;IAChDO,KAAK,EAAE,IAAAR,aAAW,EAACF,QAAQ,CAACU,KAAK,EAAEP,gBAAgB;EACrD,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,CAAIQ,IAAkC,EAAoB;EACxF,IAAIA,IAAI,CAACC,EAAE,EAAE;IACX,OAAO;MACLA,EAAE,EAAE,IAAI;MACRC,IAAI,EAAEF,IAAI,CAACG,MAAM,CAACD,IAAI;MACtBE,MAAM,EAAEJ,IAAI,CAACG,MAAM,CAACC;IACtB,CAAC;EACH,CAAC,MAAM;IACL,OAAO;MACLH,EAAE,EAAE,KAAK;MACTC,IAAI,EAAEG,cAAK,CAACC,YAAY,CAACN,IAAI,CAACO,KAAK,CAAC,GAAGP,IAAI,CAACO,KAAK,CAACC,QAAQ,EAAEN,IAAI,GAAGO,SAAS;MAC5EL,MAAM,EAAEC,cAAK,CAACC,YAAY,CAACN,IAAI,CAACO,KAAK,CAAC,GAAGP,IAAI,CAACO,KAAK,CAACC,QAAQ,EAAEJ,MAAM,GAAGK,SAAS;MAChFF,KAAK,EAAEP,IAAI,CAACO;IACd,CAAC;EACH;AACF"}
|
|
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.STATUS = exports.RemoteData = void 0;
|
|
7
7
|
var redux = _interopRequireWildcard(require("@reduxjs/toolkit"));
|
|
8
|
-
function
|
|
9
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
9
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
11
10
|
|
|
12
11
|
// @todo "* as" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-data.js","names":["redux","_interopRequireWildcard","require","
|
|
1
|
+
{"version":3,"file":"remote-data.js","names":["redux","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createAction","createSelector","STATUS","exports","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS: Record<Status, Status> = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(state: S | redux.Draft<S>): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError>(\n actions: RemoteDataActions<TData, TError, any | never>,\n builder: Pick<redux.ActionReducerMapBuilder<RemoteDataState<TData, TError>>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createSagaMiddleware = createSagaExtendedMiddleware;
|
|
7
7
|
var _reduxSaga = _interopRequireWildcard(require("redux-saga"));
|
|
8
8
|
var _effects = require("redux-saga/effects");
|
|
9
|
-
function
|
|
10
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
10
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
12
11
|
|
|
13
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["_reduxSaga","_interopRequireWildcard","require","_effects","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createSagaExtendedMiddleware","handler","MiddlewareControl","toMiddleware","constructor","sagaMiddleware","createSagaMiddleware","onError","error","info","onSagaError","middleware","api","timeout","milliseconds","config","configInterrupt","run","saga","args","interruptTimeout","interruptStrategy","strategy","Number","isFinite","runWithBreakTask","runWithBreakMiddleware","toPromise","data","result","runWithTimeLimit","done","onTimeoutInterrupt","Error","onConfigError","promises","ready","timerId","push","then","finally","undefined","clearTimeout","Promise","resolve","setTimeout","dispatch","END","race","task","fork","needCancel","taskResult","delay","cancel","SagaCancelSignal","value","name"],"sources":["../../../../src/utils/redux-saga/middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { MiddlewareAPI } from '@reduxjs/toolkit';\nimport {\n SagaExtendedMiddleware,\n SagaInterruptConfig,\n SagaMiddlewareHandler,\n SagaTimeoutRunData,\n} from './types';\nimport createSagaMiddleware, { END, Saga, Task, SagaMiddleware } from 'redux-saga';\nimport { call, cancel, delay, fork, race } from 'redux-saga/effects';\n\n/**\n * Возвращает расширенную версию SagaMiddleware.\n * @param handler Обработчик событий.\n * @return Middleware.\n */\nfunction createSagaExtendedMiddleware(handler: SagaMiddlewareHandler): SagaExtendedMiddleware {\n return new MiddlewareControl(handler).toMiddleware();\n}\n\nclass MiddlewareControl {\n private api?: MiddlewareAPI;\n private interruptTimeout?: number;\n private interruptStrategy?: SagaInterruptConfig['strategy'];\n private handler: SagaMiddlewareHandler;\n private sagaMiddleware: SagaMiddleware;\n\n constructor(handler: SagaMiddlewareHandler) {\n this.handler = handler;\n\n this.sagaMiddleware = createSagaMiddleware({\n onError: (error, info) => {\n handler.onSagaError(error, info);\n },\n });\n }\n\n toMiddleware(): SagaExtendedMiddleware {\n const middleware: SagaExtendedMiddleware = api => {\n this.api = api;\n return this.sagaMiddleware(api);\n };\n\n middleware.timeout = (milliseconds, config) => {\n this.configInterrupt(milliseconds, config);\n return middleware;\n };\n\n middleware.run = async (saga, ...args) => {\n await this.run(saga, ...args);\n };\n\n return middleware;\n }\n\n private configInterrupt(milliseconds: number, config?: SagaInterruptConfig) {\n this.interruptTimeout = milliseconds;\n this.interruptStrategy = config?.strategy ?? 'cancel-task';\n }\n\n private async run<S extends Saga>(saga: S, ...args: Parameters<S>): Promise<void> {\n const { interruptTimeout } = this;\n\n if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {\n switch (this.interruptStrategy) {\n case 'cancel-task':\n await this.runWithBreakTask({ saga, args, timeout: interruptTimeout });\n return;\n case 'dispatch-end':\n await this.runWithBreakMiddleware({ saga, args, timeout: interruptTimeout });\n return;\n }\n }\n\n await this.sagaMiddleware.run(saga, ...args).toPromise();\n }\n\n private async runWithBreakTask<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const result: Either<unknown, unknown> = await this.sagaMiddleware\n .run(runWithTimeLimit, data)\n .toPromise();\n\n if (!result.done) {\n this.handler.onTimeoutInterrupt({ timeout: data.timeout });\n }\n }\n\n private async runWithBreakMiddleware<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const { saga, args, timeout } = data;\n const { api } = this;\n\n if (!api) {\n const error = new Error('Middleware is not applied to the store');\n\n this.handler.onConfigError(error);\n\n throw error;\n }\n\n const promises: Promise<void>[] = [];\n\n let ready = false;\n let timerId: ReturnType<typeof setTimeout>;\n\n promises.push(\n this.sagaMiddleware\n .run(saga, ...args)\n .toPromise()\n .then(() => {\n ready = true;\n })\n .finally(() => {\n // вне зависимости от результата отключаем таймер если он есть\n timerId !== undefined && clearTimeout(timerId);\n }),\n );\n\n promises.push(\n new Promise<void>(resolve => {\n timerId = setTimeout(() => {\n if (!ready) {\n this.handler.onTimeoutInterrupt({ timeout });\n api.dispatch(END);\n }\n\n resolve();\n }, timeout);\n }),\n );\n\n await Promise.race(promises);\n }\n}\n\nfunction* runWithTimeLimit<S extends Saga>(\n data: SagaTimeoutRunData<S>,\n): Generator<any, Either<SagaCancelSignal, ReturnType<S>>, any> {\n const { saga, args, timeout } = data;\n const task: Task = yield fork(saga, ...args);\n\n const [needCancel, taskResult]: [boolean, ReturnType<S>] = yield race([\n delay(timeout, true),\n call(() => task.toPromise()),\n ]);\n\n if (needCancel) {\n yield cancel(task);\n\n // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)\n // чтобы не логировать лишний раз возвращаем значение\n return { done: false, error: new SagaCancelSignal() };\n } else {\n return { done: true, value: taskResult };\n }\n}\n\n// @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип\ntype Either<E, V> = { done: false; error: E } | { done: true; value: V };\n\nclass SagaCancelSignal {\n name: string;\n\n constructor() {\n this.name = 'SagaCancelSignal';\n }\n}\n\nexport { createSagaExtendedMiddleware as createSagaMiddleware };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["_reduxSaga","_interopRequireWildcard","require","_effects","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createSagaExtendedMiddleware","handler","MiddlewareControl","toMiddleware","constructor","sagaMiddleware","createSagaMiddleware","onError","error","info","onSagaError","middleware","api","timeout","milliseconds","config","configInterrupt","run","saga","args","interruptTimeout","interruptStrategy","strategy","Number","isFinite","runWithBreakTask","runWithBreakMiddleware","toPromise","data","result","runWithTimeLimit","done","onTimeoutInterrupt","Error","onConfigError","promises","ready","timerId","push","then","finally","undefined","clearTimeout","Promise","resolve","setTimeout","dispatch","END","race","task","fork","needCancel","taskResult","delay","cancel","SagaCancelSignal","value","name"],"sources":["../../../../src/utils/redux-saga/middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { MiddlewareAPI } from '@reduxjs/toolkit';\nimport {\n SagaExtendedMiddleware,\n SagaInterruptConfig,\n SagaMiddlewareHandler,\n SagaTimeoutRunData,\n} from './types';\nimport createSagaMiddleware, { END, Saga, Task, SagaMiddleware } from 'redux-saga';\nimport { call, cancel, delay, fork, race } from 'redux-saga/effects';\n\n/**\n * Возвращает расширенную версию SagaMiddleware.\n * @param handler Обработчик событий.\n * @return Middleware.\n */\nfunction createSagaExtendedMiddleware(handler: SagaMiddlewareHandler): SagaExtendedMiddleware {\n return new MiddlewareControl(handler).toMiddleware();\n}\n\nclass MiddlewareControl {\n private api?: MiddlewareAPI;\n private interruptTimeout?: number;\n private interruptStrategy?: SagaInterruptConfig['strategy'];\n private handler: SagaMiddlewareHandler;\n private sagaMiddleware: SagaMiddleware;\n\n constructor(handler: SagaMiddlewareHandler) {\n this.handler = handler;\n\n this.sagaMiddleware = createSagaMiddleware({\n onError: (error, info) => {\n handler.onSagaError(error, info);\n },\n });\n }\n\n toMiddleware(): SagaExtendedMiddleware {\n const middleware: SagaExtendedMiddleware = api => {\n this.api = api;\n return this.sagaMiddleware(api);\n };\n\n middleware.timeout = (milliseconds, config) => {\n this.configInterrupt(milliseconds, config);\n return middleware;\n };\n\n middleware.run = async (saga, ...args) => {\n await this.run(saga, ...args);\n };\n\n return middleware;\n }\n\n private configInterrupt(milliseconds: number, config?: SagaInterruptConfig) {\n this.interruptTimeout = milliseconds;\n this.interruptStrategy = config?.strategy ?? 'cancel-task';\n }\n\n private async run<S extends Saga>(saga: S, ...args: Parameters<S>): Promise<void> {\n const { interruptTimeout } = this;\n\n if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {\n switch (this.interruptStrategy) {\n case 'cancel-task':\n await this.runWithBreakTask({ saga, args, timeout: interruptTimeout });\n return;\n case 'dispatch-end':\n await this.runWithBreakMiddleware({ saga, args, timeout: interruptTimeout });\n return;\n }\n }\n\n await this.sagaMiddleware.run(saga, ...args).toPromise();\n }\n\n private async runWithBreakTask<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const result: Either<unknown, unknown> = await this.sagaMiddleware\n .run(runWithTimeLimit, data)\n .toPromise();\n\n if (!result.done) {\n this.handler.onTimeoutInterrupt({ timeout: data.timeout });\n }\n }\n\n private async runWithBreakMiddleware<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const { saga, args, timeout } = data;\n const { api } = this;\n\n if (!api) {\n const error = new Error('Middleware is not applied to the store');\n\n this.handler.onConfigError(error);\n\n throw error;\n }\n\n const promises: Promise<void>[] = [];\n\n let ready = false;\n let timerId: ReturnType<typeof setTimeout>;\n\n promises.push(\n this.sagaMiddleware\n .run(saga, ...args)\n .toPromise()\n .then(() => {\n ready = true;\n })\n .finally(() => {\n // вне зависимости от результата отключаем таймер если он есть\n timerId !== undefined && clearTimeout(timerId);\n }),\n );\n\n promises.push(\n new Promise<void>(resolve => {\n timerId = setTimeout(() => {\n if (!ready) {\n this.handler.onTimeoutInterrupt({ timeout });\n api.dispatch(END);\n }\n\n resolve();\n }, timeout);\n }),\n );\n\n await Promise.race(promises);\n }\n}\n\nfunction* runWithTimeLimit<S extends Saga>(\n data: SagaTimeoutRunData<S>,\n): Generator<any, Either<SagaCancelSignal, ReturnType<S>>, any> {\n const { saga, args, timeout } = data;\n const task: Task = yield fork(saga, ...args);\n\n const [needCancel, taskResult]: [boolean, ReturnType<S>] = yield race([\n delay(timeout, true),\n call(() => task.toPromise()),\n ]);\n\n if (needCancel) {\n yield cancel(task);\n\n // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)\n // чтобы не логировать лишний раз возвращаем значение\n return { done: false, error: new SagaCancelSignal() };\n } else {\n return { done: true, value: taskResult };\n }\n}\n\n// @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип\ntype Either<E, V> = { done: false; error: E } | { done: true; value: V };\n\nclass SagaCancelSignal {\n name: string;\n\n constructor() {\n this.name = 'SagaCancelSignal';\n }\n}\n\nexport { createSagaExtendedMiddleware as createSagaMiddleware };\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ exports.GlobalDataScript = GlobalDataScript;
|
|
|
7
7
|
exports.SsrBridge = void 0;
|
|
8
8
|
var _jsesc = _interopRequireDefault(require("jsesc"));
|
|
9
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Данные для SSR, сформированные на сервере.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_jsesc","_interopRequireDefault","require","_jsxRuntime","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_jsesc","_interopRequireDefault","require","_jsxRuntime","e","__esModule","default","SsrBridge","exports","prepare","serviceKey","rootElementId","serverDataKey","publicEnvsKey","resolve","rootElement","document","getElementById","serverSideData","window","Error","GlobalDataScript","property","value","json","jsesc","JSON","stringify","isScriptContext","jsx","dangerouslySetInnerHTML","__html"],"sources":["../../../../src/utils/ssr/index.tsx"],"sourcesContent":["import jsesc from 'jsesc';\n\n/**\n * Данные для SSR, сформированные на сервере.\n */\nexport interface BridgeServerSide {\n rootElementId: string;\n serverDataKey: string;\n publicEnvsKey: string;\n}\n\n/**\n * Данные для SSR, доступные на стороне клиента (в браузере).\n */\nexport interface BridgeClientSide<T> {\n rootElement: HTMLElement;\n serverSideData: T;\n}\n\n/**\n * Набор методов для связывания серверного и клиентского приложений.\n */\nexport const SsrBridge = {\n /**\n * Вызывается на сервере.\n * @param serviceKey Идентификатор корневого элемента.\n * @return Идентификатор корневого элемента и ключ для глобальной переменной.\n */\n prepare(serviceKey: string): BridgeServerSide {\n return {\n rootElementId: `${serviceKey}__root`,\n serverDataKey: `${serviceKey}__serverData`,\n publicEnvsKey: `${serviceKey}__envs`,\n };\n },\n\n /**\n * Вызывается на клиенте.\n * @param serviceKey Идентификатор корневого элемента.\n * @return Корневой элемент и начальное состояние.\n */\n resolve<T = any>(serviceKey: string): BridgeClientSide<T> {\n const rootElement = document.getElementById(`${serviceKey}__root`);\n const serverSideData = (window as any)[`${serviceKey}__serverData`];\n\n if (!rootElement) {\n throw Error('SSR: Не был найден корневой элемент');\n }\n\n return { rootElement, serverSideData };\n },\n} as const;\n\n/**\n * Скрипт, формирующий глобально доступные на странице данные.\n * @todo Перенести в utils/react.\n * @param props Свойства.\n * @return Элемент.\n */\nexport function GlobalDataScript({\n property,\n value,\n}: {\n property: string;\n value: Record<any, any>;\n}) {\n const json = jsesc(JSON.stringify(value), {\n json: true,\n isScriptContext: true,\n });\n\n return (\n <script\n dangerouslySetInnerHTML={{\n // @todo возможно стоит также экранировать символы в \"property\"\n __html: `window[\"${property}\"] = JSON.parse(${json});`,\n }}\n />\n );\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,IAAAC,WAAA,GAAAD,OAAA;AAAA,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B;AACA;AACA;;AAOA;AACA;AACA;;AAMA;AACA;AACA;AACO,MAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEE,OAAOA,CAACC,UAAkB,EAAoB;IAC5C,OAAO;MACLC,aAAa,EAAG,GAAED,UAAW,QAAO;MACpCE,aAAa,EAAG,GAAEF,UAAW,cAAa;MAC1CG,aAAa,EAAG,GAAEH,UAAW;IAC/B,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEI,OAAOA,CAAUJ,UAAkB,EAAuB;IACxD,MAAMK,WAAW,GAAGC,QAAQ,CAACC,cAAc,CAAE,GAAEP,UAAW,QAAO,CAAC;IAClE,MAAMQ,cAAc,GAAIC,MAAM,CAAU,GAAET,UAAW,cAAa,CAAC;IAEnE,IAAI,CAACK,WAAW,EAAE;MAChB,MAAMK,KAAK,CAAC,qCAAqC,CAAC;IACpD;IAEA,OAAO;MAAEL,WAAW;MAAEG;IAAe,CAAC;EACxC;AACF,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,MAAMC,IAAI,GAAG,IAAAC,cAAK,EAACC,IAAI,CAACC,SAAS,CAACJ,KAAK,CAAC,EAAE;IACxCC,IAAI,EAAE,IAAI;IACVI,eAAe,EAAE;EACnB,CAAC,CAAC;EAEF,oBACE,IAAAzB,WAAA,CAAA0B,GAAA;IACEC,uBAAuB,EAAE;MACvB;MACAC,MAAM,EAAG,WAAUT,QAAS,mBAAkBE,IAAK;IACrD;EAAE,CACH,CAAC;AAEN"}
|
|
@@ -8,7 +8,7 @@ exports.defineEnv = defineEnv;
|
|
|
8
8
|
var _nodeFs = _interopRequireDefault(require("node:fs"));
|
|
9
9
|
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
10
10
|
var _dotenv = _interopRequireDefault(require("dotenv"));
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
/**
|
|
13
13
|
* Формирует объект с переменными среды с учетом .env файлов.
|
|
14
14
|
* @param options Опции.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["_nodeFs","_interopRequireDefault","require","_nodePath","_dotenv","
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_nodeFs","_interopRequireDefault","require","_nodePath","_dotenv","e","__esModule","default","defineEnv","options","result","process","env","dotenvUsage","NODE_ENV","dotenvPath","path","join","cwd","fs","existsSync","parsed","dotenv","parse","readFileSync","key","Object","keys","prototype","hasOwnProperty","call","error","onError","asEnvVariables","input","value","entries","JSON","stringify"],"sources":["../../../../../src/utils/webpack/env/utils.ts"],"sourcesContent":["import { EnvPluginOptions } from './types';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport dotenv from 'dotenv';\n\n/**\n * Формирует объект с переменными среды с учетом .env файлов.\n * @param options Опции.\n * @return Объект с переменными среды.\n */\nexport function defineEnv(\n options: Pick<EnvPluginOptions, 'dotenvUsage'> & { onError?: (error: unknown) => void },\n): Record<string, string | undefined> {\n const result = { ...process.env };\n\n if (options.dotenvUsage && process.env.NODE_ENV) {\n try {\n const dotenvPath = path.join(process.cwd(), `.env.${process.env.NODE_ENV}`);\n\n if (fs.existsSync(dotenvPath)) {\n const parsed = dotenv.parse(fs.readFileSync(dotenvPath, 'utf-8'));\n\n // @todo дёрнуть бы эту логику из пакета dotenv, https://github.com/motdotla/dotenv/issues/690\n for (const key of Object.keys(parsed)) {\n if (!Object.prototype.hasOwnProperty.call(result, key)) {\n result[key] = parsed[key];\n }\n }\n }\n } catch (error) {\n options.onError?.(error);\n }\n }\n\n return result;\n}\n\n/**\n * Получив таблицу \"название переменной среды >> значение переменной среды\" вернёт определение для DefinePlugin.\n * @param input Таблица переменных.\n * @return Определение для DefinePlugin.\n */\nexport function asEnvVariables(input: Record<string, string | undefined>): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (key && typeof value === 'string') {\n result[`process.env.${key}`] = JSON.stringify(value);\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA4B,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5B;AACA;AACA;AACA;AACA;AACO,SAASG,SAASA,CACvBC,OAAuF,EACnD;EACpC,MAAMC,MAAM,GAAG;IAAE,GAAGC,OAAO,CAACC;EAAI,CAAC;EAEjC,IAAIH,OAAO,CAACI,WAAW,IAAIF,OAAO,CAACC,GAAG,CAACE,QAAQ,EAAE;IAC/C,IAAI;MACF,MAAMC,UAAU,GAAGC,iBAAI,CAACC,IAAI,CAACN,OAAO,CAACO,GAAG,CAAC,CAAC,EAAG,QAAOP,OAAO,CAACC,GAAG,CAACE,QAAS,EAAC,CAAC;MAE3E,IAAIK,eAAE,CAACC,UAAU,CAACL,UAAU,CAAC,EAAE;QAC7B,MAAMM,MAAM,GAAGC,eAAM,CAACC,KAAK,CAACJ,eAAE,CAACK,YAAY,CAACT,UAAU,EAAE,OAAO,CAAC,CAAC;;QAEjE;QACA,KAAK,MAAMU,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC,EAAE;UACrC,IAAI,CAACK,MAAM,CAACE,SAAS,CAACC,cAAc,CAACC,IAAI,CAACpB,MAAM,EAAEe,GAAG,CAAC,EAAE;YACtDf,MAAM,CAACe,GAAG,CAAC,GAAGJ,MAAM,CAACI,GAAG,CAAC;UAC3B;QACF;MACF;IACF,CAAC,CAAC,OAAOM,KAAK,EAAE;MACdtB,OAAO,CAACuB,OAAO,GAAGD,KAAK,CAAC;IAC1B;EACF;EAEA,OAAOrB,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASuB,cAAcA,CAACC,KAAyC,EAA0B;EAChG,MAAMxB,MAA8B,GAAG,CAAC,CAAC;EAEzC,KAAK,MAAM,CAACe,GAAG,EAAEU,KAAK,CAAC,IAAIT,MAAM,CAACU,OAAO,CAACF,KAAK,CAAC,EAAE;IAChD,IAAIT,GAAG,IAAI,OAAOU,KAAK,KAAK,QAAQ,EAAE;MACpCzB,MAAM,CAAE,eAAce,GAAI,EAAC,CAAC,GAAGY,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC;IACtD;EACF;EAEA,OAAOzB,MAAM;AACf"}
|
|
@@ -12,8 +12,7 @@ Object.defineProperty(exports, "DEFAULT_SHARED", {
|
|
|
12
12
|
exports.REMOTE_ERROR_TEXT = exports.ModuleFederationPlugin = exports.LIBRARY_ERROR_TEXT = void 0;
|
|
13
13
|
var webpack = _interopRequireWildcard(require("webpack"));
|
|
14
14
|
var _utils = require("./utils");
|
|
15
|
-
function
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
16
|
const {
|
|
18
17
|
container,
|
|
19
18
|
WebpackError
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["webpack","_interopRequireWildcard","require","_utils","
|
|
1
|
+
{"version":3,"file":"index.js","names":["webpack","_interopRequireWildcard","require","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","container","WebpackError","LIBRARY_ERROR_TEXT","exports","join","REMOTE_ERROR_TEXT","CustomModuleFederationPlugin","constructor","options","name","remotes","remoteEntriesGlobalKey","containersGlobalKey","value","values","readyOptions","library","type","apply","compiler","shared","restOptions","configuredShared","DEFAULT_SHARED","configuredRemotes","key","entries","serviceName","remoteEntryPath","undefined","external","createExternalConfig","hooks","environment","tap","ModuleFederationPlugin"],"sources":["../../../../../src/utils/webpack/module-federation/index.ts"],"sourcesContent":["import type { ModuleFederationPluginOptions, ReadyOptions } from './types';\nimport * as webpack from 'webpack';\nimport { createExternalConfig, DEFAULT_SHARED } from './utils';\n\nconst { container, WebpackError } = webpack;\n\n/** @internal */\nexport const LIBRARY_ERROR_TEXT = [\n 'Property \"library\" set internally as \"global\" and not overridden.',\n 'For override global variable name use \"containersGlobalKey\" property.',\n 'For override \"library\" type use ModuleFederationPlugin.',\n].join(' ');\n\n/** @internal */\nexport const REMOTE_ERROR_TEXT = [\n 'The value of the remote element must be a string,',\n 'or an object with field \"name\" for dynamic resolution of \"remoteEntry\".',\n 'Set \"remoteEntryPath\" field to object for a static path to \"remoteEntry\".',\n].join(' ');\n\n/**\n * Создает плагин ModuleFederation с опциями, необходимыми для оркестрации удаленных модулей в браузере.\n */\nclass CustomModuleFederationPlugin {\n /**\n * Проверенные, готовые опции.\n */\n readonly readyOptions: ReadyOptions;\n\n /**\n * @param options Опции.\n * @param options.shared Общие модули. Если не переданы, используются дефолтные модули.\n * Для отключения общих модулей задать false.\n */\n constructor(options: ModuleFederationPluginOptions) {\n const {\n name,\n remotes,\n remoteEntriesGlobalKey = '__RemoteEntriesList__',\n containersGlobalKey = '__FederationContainers__',\n } = options;\n\n if ('library' in options) {\n throw new WebpackError(LIBRARY_ERROR_TEXT);\n }\n\n if (remotes) {\n for (const value of Object.values(remotes)) {\n if (typeof value !== 'string' && !value.name) {\n throw new WebpackError(REMOTE_ERROR_TEXT);\n }\n }\n }\n\n this.readyOptions = {\n ...options,\n remoteEntriesGlobalKey,\n containersGlobalKey,\n library: {\n type: 'global',\n name: [containersGlobalKey, name],\n },\n };\n }\n\n /**\n * @param compiler Компилятор.\n */\n apply(compiler: webpack.Compiler) {\n const { remotes, remoteEntriesGlobalKey, containersGlobalKey, shared, ...restOptions } =\n this.readyOptions;\n\n const configuredShared = shared || DEFAULT_SHARED;\n const configuredRemotes: Record<string, any> = {};\n\n if (remotes) {\n for (const [key, value] of Object.entries(remotes)) {\n const serviceName = typeof value === 'string' ? value : value.name;\n const remoteEntryPath = typeof value === 'string' ? undefined : value.remoteEntryPath;\n\n configuredRemotes[key] = {\n external: createExternalConfig({\n serviceName,\n remoteEntryPath,\n remoteEntriesGlobalKey,\n containersGlobalKey,\n }),\n };\n }\n }\n\n compiler.hooks.environment.tap('[isomorph]ModuleFederationPlugin', () => {\n new container.ModuleFederationPlugin({\n ...(remotes && { remotes: configuredRemotes }),\n ...(shared !== false && { shared: configuredShared }),\n ...restOptions,\n }).apply(compiler);\n });\n }\n}\n\nexport { CustomModuleFederationPlugin as ModuleFederationPlugin, DEFAULT_SHARED };\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.js","names":["Breadcrumb","DetailedError","createSentryHandler","scopeInit","getScope","event","scope","type","error","data","level","context","extra","setLevel","list","Array","isArray","item","setContext","key","setExtra","captureException","breadcrumb","addBreadcrumb"],"sources":["../../../../src/log/handler/sentry.ts"],"sourcesContent":["import type { LogHandler } from '../types';\nimport type { Scope } from '@sentry/
|
|
1
|
+
{"version":3,"file":"sentry.js","names":["Breadcrumb","DetailedError","createSentryHandler","scopeInit","getScope","event","scope","type","error","data","level","context","extra","setLevel","list","Array","isArray","item","setContext","key","setExtra","captureException","breadcrumb","addBreadcrumb"],"sources":["../../../../src/log/handler/sentry.ts"],"sourcesContent":["import type { LogHandler } from '../types';\nimport { Breadcrumb, DetailedError } from '../../log';\nimport type { Scope as BrowserScope } from '@sentry/browser';\nimport type { Scope as NodeScope } from '@sentry/node';\n\ntype Scope = BrowserScope | NodeScope;\n\n/**\n * Возвращает новый handler для logger'а для отправки событий в Sentry.\n * @param scopeInit Sentry Hub или функция которая его вернёт.\n * @return Handler.\n */\nexport function createSentryHandler(scopeInit: Scope | (() => Scope)): LogHandler {\n const getScope = typeof scopeInit === 'function' ? scopeInit : () => scopeInit;\n\n return event => {\n // ВАЖНО: каждый входящий http-запрос должен иметь свой собственный hub (ныне scope)\n // подробности: https://github.com/getsentry/sentry-javascript/discussions/5648\n // поэтому если передана функция - вызываем каждый раз (внутри обработчика)\n const scope = getScope();\n\n // error\n if (event.type === 'error') {\n const error = event.data;\n\n if (error instanceof DetailedError) {\n const { level, context, extra } = error.data;\n\n if (level) {\n scope.setLevel(level);\n }\n\n if (context) {\n const list = Array.isArray(context) ? context : [context];\n\n for (const item of list) {\n scope.setContext(item.key, item.data);\n }\n }\n\n if (extra) {\n scope.setExtra(extra.key, extra.data);\n }\n }\n\n scope.captureException(error);\n }\n\n // breadcrumb\n if (event.data instanceof Breadcrumb) {\n const breadcrumb = event.data.data;\n\n scope.addBreadcrumb(breadcrumb);\n }\n };\n}\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,aAAa,QAAQ,sBAAW;AAMrD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,SAAgC,EAAc;EAChF,MAAMC,QAAQ,GAAG,OAAOD,SAAS,KAAK,UAAU,GAAGA,SAAS,GAAG,MAAMA,SAAS;EAE9E,OAAOE,KAAK,IAAI;IACd;IACA;IACA;IACA,MAAMC,KAAK,GAAGF,QAAQ,CAAC,CAAC;;IAExB;IACA,IAAIC,KAAK,CAACE,IAAI,KAAK,OAAO,EAAE;MAC1B,MAAMC,KAAK,GAAGH,KAAK,CAACI,IAAI;MAExB,IAAID,KAAK,YAAYP,aAAa,EAAE;QAClC,MAAM;UAAES,KAAK;UAAEC,OAAO;UAAEC;QAAM,CAAC,GAAGJ,KAAK,CAACC,IAAI;QAE5C,IAAIC,KAAK,EAAE;UACTJ,KAAK,CAACO,QAAQ,CAACH,KAAK,CAAC;QACvB;QAEA,IAAIC,OAAO,EAAE;UACX,MAAMG,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACL,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;UAEzD,KAAK,MAAMM,IAAI,IAAIH,IAAI,EAAE;YACvBR,KAAK,CAACY,UAAU,CAACD,IAAI,CAACE,GAAG,EAAEF,IAAI,CAACR,IAAI,CAAC;UACvC;QACF;QAEA,IAAIG,KAAK,EAAE;UACTN,KAAK,CAACc,QAAQ,CAACR,KAAK,CAACO,GAAG,EAAEP,KAAK,CAACH,IAAI,CAAC;QACvC;MACF;MAEAH,KAAK,CAACe,gBAAgB,CAACb,KAAK,CAAC;IAC/B;;IAEA;IACA,IAAIH,KAAK,CAACI,IAAI,YAAYT,UAAU,EAAE;MACpC,MAAMsB,UAAU,GAAGjB,KAAK,CAACI,IAAI,CAACA,IAAI;MAElCH,KAAK,CAACiB,aAAa,CAACD,UAAU,CAAC;IACjC;EACF,CAAC;AACH"}
|
package/dist/esm/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { LogHandler } from '../types';
|
|
2
|
-
import type { Scope } from '@sentry/
|
|
2
|
+
import type { Scope as BrowserScope } from '@sentry/browser';
|
|
3
|
+
import type { Scope as NodeScope } from '@sentry/node';
|
|
4
|
+
type Scope = BrowserScope | NodeScope;
|
|
3
5
|
/**
|
|
4
6
|
* Возвращает новый handler для logger'а для отправки событий в Sentry.
|
|
5
7
|
* @param scopeInit Sentry Hub или функция которая его вернёт.
|
|
6
8
|
* @return Handler.
|
|
7
9
|
*/
|
|
8
10
|
export declare function createSentryHandler(scopeInit: Scope | (() => Scope)): LogHandler;
|
|
11
|
+
export {};
|
|
9
12
|
//# sourceMappingURL=sentry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../../src/log/handler/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../../src/log/handler/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AAEvD,KAAK,KAAK,GAAG,YAAY,GAAG,SAAS,CAAC;AAEtC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CA2ChF"}
|
|
@@ -8,8 +8,8 @@ export declare const LABEL_NAMES: {
|
|
|
8
8
|
* @return Метрики.
|
|
9
9
|
*/
|
|
10
10
|
export declare function getHandlerMetrics(): {
|
|
11
|
-
requestCount: PromClient.Counter<"method" | "code" | "
|
|
12
|
-
renderDuration: PromClient.Histogram<"method" | "
|
|
13
|
-
responseDuration: PromClient.Histogram<"method" | "code" | "
|
|
11
|
+
requestCount: PromClient.Counter<"method" | "code" | "route" | "version">;
|
|
12
|
+
renderDuration: PromClient.Histogram<"method" | "route" | "version">;
|
|
13
|
+
responseDuration: PromClient.Histogram<"method" | "code" | "route" | "version">;
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=get-handler-metrics.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/isomorph",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.61",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"engines": {
|
|
8
|
-
"node": ">=
|
|
8
|
+
"node": ">=22.0.0"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"
|
|
11
|
+
"typecheck": "npx tsc -p . --noEmit",
|
|
12
12
|
"build:before": "rm -rf dist cache config di http log preset utils",
|
|
13
13
|
"build:esm": "babel src --config-file ./babel.config.esm.js -d dist/esm --source-maps --extensions '.ts,.tsx' --ignore='**/__test__/**/*' --ignore='**/*.d.ts' && node scripts/make-pkg-esm.mjs",
|
|
14
14
|
"build:cjs": "babel src --config-file ./babel.config.cjs.js -d dist/cjs --source-maps --extensions '.ts,.tsx' --ignore='**/__test__/**/*' --ignore='**/*.d.ts' && node scripts/make-pkg-cjs.mjs",
|