@sima-land/isomorph 11.0.0-alpha.54 → 11.0.0-alpha.56

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.
Files changed (42) hide show
  1. package/dist/cjs/config/source.js +5 -0
  2. package/dist/cjs/config/source.js.map +1 -1
  3. package/dist/cjs/package.json +1 -1
  4. package/dist/cjs/preset/node/index.js +2 -0
  5. package/dist/cjs/preset/node/index.js.map +1 -1
  6. package/dist/cjs/preset/node/providers/public-envs.js +22 -0
  7. package/dist/cjs/preset/node/providers/public-envs.js.map +1 -0
  8. package/dist/cjs/preset/node/providers/telemetry-tracer-span-exporter.js +5 -1
  9. package/dist/cjs/preset/node/providers/telemetry-tracer-span-exporter.js.map +1 -1
  10. package/dist/cjs/tokens.js +3 -1
  11. package/dist/cjs/tokens.js.map +1 -1
  12. package/dist/cjs/utils/ssr/index.js +2 -1
  13. package/dist/cjs/utils/ssr/index.js.map +1 -1
  14. package/dist/cjs/utils/webpack/env/index.js +1 -0
  15. package/dist/cjs/utils/webpack/env/index.js.map +1 -1
  16. package/dist/esm/config/source.js +5 -0
  17. package/dist/esm/config/source.js.map +1 -1
  18. package/dist/esm/package.json +1 -1
  19. package/dist/esm/preset/node/index.js +3 -0
  20. package/dist/esm/preset/node/index.js.map +1 -1
  21. package/dist/esm/preset/node/providers/public-envs.js +16 -0
  22. package/dist/esm/preset/node/providers/public-envs.js.map +1 -0
  23. package/dist/esm/preset/node/providers/telemetry-tracer-span-exporter.js +5 -1
  24. package/dist/esm/preset/node/providers/telemetry-tracer-span-exporter.js.map +1 -1
  25. package/dist/esm/tokens.js +3 -1
  26. package/dist/esm/tokens.js.map +1 -1
  27. package/dist/esm/utils/ssr/index.js +2 -1
  28. package/dist/esm/utils/ssr/index.js.map +1 -1
  29. package/dist/esm/utils/webpack/env/index.js +1 -0
  30. package/dist/esm/utils/webpack/env/index.js.map +1 -1
  31. package/dist/types/config/source.d.ts.map +1 -1
  32. package/dist/types/preset/node/index.d.ts.map +1 -1
  33. package/dist/types/preset/node/providers/public-envs.d.ts +6 -0
  34. package/dist/types/preset/node/providers/public-envs.d.ts.map +1 -0
  35. package/dist/types/preset/node/providers/telemetry-tracer-span-exporter.d.ts.map +1 -1
  36. package/dist/types/tokens.d.ts +2 -0
  37. package/dist/types/tokens.d.ts.map +1 -1
  38. package/dist/types/utils/ssr/index.d.ts +1 -0
  39. package/dist/types/utils/ssr/index.d.ts.map +1 -1
  40. package/dist/types/utils/webpack/env/index.d.ts +1 -0
  41. package/dist/types/utils/webpack/env/index.d.ts.map +1 -1
  42. package/package.json +1 -1
@@ -20,6 +20,11 @@ function createConfigSource(dictionary) {
20
20
  if (typeof __ISOMORPH_ENV__ !== 'undefined') {
21
21
  Object.assign(source, __ISOMORPH_ENV__);
22
22
  }
23
+
24
+ // докидываем публичные переменные сервиса из глобального окружения
25
+ if (source.APP_NAME && typeof globalThis[`${source.APP_NAME}__envs`] !== 'undefined') {
26
+ Object.assign(source, globalThis[`${source.APP_NAME}__envs`]);
27
+ }
23
28
  return new _env.Env(source);
24
29
  }
25
30
  //# sourceMappingURL=source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","names":["_env","require","createConfigSource","dictionary","source","Object","assign","__ISOMORPH_ENV__","Env"],"sources":["../../../src/config/source.ts"],"sourcesContent":["import type { ConfigSource, Dictionary } from './types';\nimport { Env } from '@humanwhocodes/env';\n\ndeclare const __ISOMORPH_ENV__: unknown;\n\n/**\n * Возвращает новый источник конфигурации.\n * @param dictionary Опции.\n * @return Источник.\n */\nexport function createConfigSource(dictionary: Dictionary): ConfigSource {\n const source: Dictionary = {};\n\n // берем все переменные из предоставленной среды\n Object.assign(source, dictionary);\n\n // докидываем зашиваемые переменные окружения\n if (typeof __ISOMORPH_ENV__ !== 'undefined') {\n Object.assign(source, __ISOMORPH_ENV__);\n }\n\n return new Env(source);\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,UAAsB,EAAgB;EACvE,MAAMC,MAAkB,GAAG,CAAC,CAAC;;EAE7B;EACAC,MAAM,CAACC,MAAM,CAACF,MAAM,EAAED,UAAU,CAAC;;EAEjC;EACA,IAAI,OAAOI,gBAAgB,KAAK,WAAW,EAAE;IAC3CF,MAAM,CAACC,MAAM,CAACF,MAAM,EAAEG,gBAAgB,CAAC;EACzC;EAEA,OAAO,IAAIC,QAAG,CAACJ,MAAM,CAAC;AACxB"}
1
+ {"version":3,"file":"source.js","names":["_env","require","createConfigSource","dictionary","source","Object","assign","__ISOMORPH_ENV__","APP_NAME","globalThis","Env"],"sources":["../../../src/config/source.ts"],"sourcesContent":["import type { ConfigSource, Dictionary } from './types';\nimport { Env } from '@humanwhocodes/env';\n\ndeclare const __ISOMORPH_ENV__: unknown;\n\n/**\n * Возвращает новый источник конфигурации.\n * @param dictionary Опции.\n * @return Источник.\n */\nexport function createConfigSource(dictionary: Dictionary): ConfigSource {\n const source: Dictionary = {};\n\n // берем все переменные из предоставленной среды\n Object.assign(source, dictionary);\n\n // докидываем зашиваемые переменные окружения\n if (typeof __ISOMORPH_ENV__ !== 'undefined') {\n Object.assign(source, __ISOMORPH_ENV__);\n }\n\n // докидываем публичные переменные сервиса из глобального окружения\n if (source.APP_NAME && typeof (globalThis as any)[`${source.APP_NAME}__envs`] !== 'undefined') {\n Object.assign(source, (globalThis as any)[`${source.APP_NAME}__envs`]);\n }\n\n return new Env(source);\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,UAAsB,EAAgB;EACvE,MAAMC,MAAkB,GAAG,CAAC,CAAC;;EAE7B;EACAC,MAAM,CAACC,MAAM,CAACF,MAAM,EAAED,UAAU,CAAC;;EAEjC;EACA,IAAI,OAAOI,gBAAgB,KAAK,WAAW,EAAE;IAC3CF,MAAM,CAACC,MAAM,CAACF,MAAM,EAAEG,gBAAgB,CAAC;EACzC;;EAEA;EACA,IAAIH,MAAM,CAACI,QAAQ,IAAI,OAAQC,UAAU,CAAU,GAAEL,MAAM,CAACI,QAAS,QAAO,CAAC,KAAK,WAAW,EAAE;IAC7FH,MAAM,CAACC,MAAM,CAACF,MAAM,EAAGK,UAAU,CAAU,GAAEL,MAAM,CAACI,QAAS,QAAO,CAAC,CAAC;EACxE;EAEA,OAAO,IAAIE,QAAG,CAACN,MAAM,CAAC;AACxB"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "name": "@sima-land/isomorph",
4
- "version": "11.0.0-alpha.54",
4
+ "version": "11.0.0-alpha.56",
5
5
  "dependencies": {
6
6
  "@humanwhocodes/env": "^3.0.5",
7
7
  "@krutoo/fetch-tools": "^0.0.16",
@@ -50,6 +50,7 @@ var _ssrBridgeServerSide = require("../server/providers/ssr-bridge-server-side")
50
50
  var _telemetryTracerProvider = require("./providers/telemetry-tracer-provider");
51
51
  var _telemetryTracerResource = require("./providers/telemetry-tracer-resource");
52
52
  var _mainExpressApp = require("./providers/main-express-app");
53
+ var _publicEnvs = require("./providers/public-envs");
53
54
  var _getClientIp = require("./utils/get-client-ip");
54
55
  var _getForwardedHeaders = require("./utils/get-forwarded-headers");
55
56
  var _getPageResponseFormat = require("./utils/get-page-response-format");
@@ -66,6 +67,7 @@ function PresetNode(customize) {
66
67
  // config
67
68
  preset.set(_tokens.KnownToken.Config.source, _configSource.provideConfigSource);
68
69
  preset.set(_tokens.KnownToken.Config.base, _baseConfig.provideBaseConfig);
70
+ preset.set(_tokens.KnownToken.Config.publicEnvs, _publicEnvs.providePublicEnvs);
69
71
 
70
72
  // log
71
73
  preset.set(_tokens.KnownToken.logger, _logger.provideLogger);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_tokens","require","_axiosFactory","_fetch","_baseConfig","_di","_healthCheck","_configSource","_expressErrorMiddleware","_expressFactory","_expressLogMiddleware","_expressMetricsMiddleware","_expressRequestMiddleware","_expressTracingMiddleware","_knownHttpApiHosts","_logger","_metricsExpressApp","_telemetryTracer","_telemetryTracerSpanExporter","_ssrBridgeServerSide","_telemetryTracerProvider","_telemetryTracerResource","_mainExpressApp","_getClientIp","_getForwardedHeaders","_getPageResponseFormat","_handlerProvider","PresetNode","customize","preset","createPreset","set","KnownToken","Config","source","provideConfigSource","base","provideBaseConfig","logger","provideLogger","Tracing","tracer","provideTracer","spanExporter","provideSpanExporter","provider","provideTracingProvider","resource","provideTracingResource","Metrics","expressApp","provideMetricsExpressApp","Http","fetch","provideFetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","provideAxiosFactory","Express","app","provideMainExpressApp","pageRoutes","serviceRoutes","resolve","Handlers","healthCheck","Middleware","request","log","metrics","tracing","endMiddleware","error","provideExpressFactory","provideExpressRequestMiddleware","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressTracingMiddleware","provideExpressErrorMiddleware","Api","knownHosts","provideKnownHttpApiHosts","SsrBridge","serverSide","provideSsrBridgeServerSide","override","bind"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideTracer } from './providers/telemetry-tracer';\nimport { provideSpanExporter } from './providers/telemetry-tracer-span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracingProvider } from './providers/telemetry-tracer-provider';\nimport { provideTracingResource } from './providers/telemetry-tracer-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.provider, provideTracingProvider);\n preset.set(KnownToken.Tracing.resource, provideTracingResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_tokens","require","_axiosFactory","_fetch","_baseConfig","_di","_healthCheck","_configSource","_expressErrorMiddleware","_expressFactory","_expressLogMiddleware","_expressMetricsMiddleware","_expressRequestMiddleware","_expressTracingMiddleware","_knownHttpApiHosts","_logger","_metricsExpressApp","_telemetryTracer","_telemetryTracerSpanExporter","_ssrBridgeServerSide","_telemetryTracerProvider","_telemetryTracerResource","_mainExpressApp","_publicEnvs","_getClientIp","_getForwardedHeaders","_getPageResponseFormat","_handlerProvider","PresetNode","customize","preset","createPreset","set","KnownToken","Config","source","provideConfigSource","base","provideBaseConfig","publicEnvs","providePublicEnvs","logger","provideLogger","Tracing","tracer","provideTracer","spanExporter","provideSpanExporter","provider","provideTracingProvider","resource","provideTracingResource","Metrics","expressApp","provideMetricsExpressApp","Http","fetch","provideFetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","provideAxiosFactory","Express","app","provideMainExpressApp","pageRoutes","serviceRoutes","resolve","Handlers","healthCheck","Middleware","request","log","metrics","tracing","endMiddleware","error","provideExpressFactory","provideExpressRequestMiddleware","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressTracingMiddleware","provideExpressErrorMiddleware","Api","knownHosts","provideKnownHttpApiHosts","SsrBridge","serverSide","provideSsrBridgeServerSide","override","bind"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideTracer } from './providers/telemetry-tracer';\nimport { provideSpanExporter } from './providers/telemetry-tracer-span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracingProvider } from './providers/telemetry-tracer-provider';\nimport { provideTracingResource } from './providers/telemetry-tracer-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\nimport { providePublicEnvs } from './providers/public-envs';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n preset.set(KnownToken.Config.publicEnvs, providePublicEnvs);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.provider, provideTracingProvider);\n preset.set(KnownToken.Tracing.resource, provideTracingResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.providePublicEnvs = providePublicEnvs;
7
+ /**
8
+ * Провайдер публичных переменных среды.
9
+ * @return Объект с публичными переменными среды.
10
+ */
11
+ function providePublicEnvs() {
12
+ const publicEnvs = {
13
+ IS_REDUX_DEVTOOLS_ENABLED: process.env.IS_REDUX_DEVTOOLS_ENABLED
14
+ };
15
+ for (const key in process.env) {
16
+ if (key.startsWith('PUBLIC_')) {
17
+ publicEnvs[key] = process.env[key];
18
+ }
19
+ }
20
+ return publicEnvs;
21
+ }
22
+ //# sourceMappingURL=public-envs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-envs.js","names":["providePublicEnvs","publicEnvs","IS_REDUX_DEVTOOLS_ENABLED","process","env","key","startsWith"],"sources":["../../../../../src/preset/node/providers/public-envs.ts"],"sourcesContent":["/**\n * Провайдер публичных переменных среды.\n * @return Объект с публичными переменными среды.\n */\nexport function providePublicEnvs() {\n const publicEnvs: Record<string, string | undefined> = {\n IS_REDUX_DEVTOOLS_ENABLED: process.env.IS_REDUX_DEVTOOLS_ENABLED,\n };\n for (const key in process.env) {\n if (key.startsWith('PUBLIC_')) {\n publicEnvs[key] = process.env[key];\n }\n }\n return publicEnvs;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACO,SAASA,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,UAA8C,GAAG;IACrDC,yBAAyB,EAAEC,OAAO,CAACC,GAAG,CAACF;EACzC,CAAC;EACD,KAAK,MAAMG,GAAG,IAAIF,OAAO,CAACC,GAAG,EAAE;IAC7B,IAAIC,GAAG,CAACC,UAAU,CAAC,SAAS,CAAC,EAAE;MAC7BL,UAAU,CAACI,GAAG,CAAC,GAAGF,OAAO,CAACC,GAAG,CAACC,GAAG,CAAC;IACpC;EACF;EACA,OAAOJ,UAAU;AACnB"}
@@ -15,8 +15,12 @@ const envPrefix = 'OTEL_EXPORTER_OTLP_';
15
15
  */
16
16
  function provideSpanExporter(resolve) {
17
17
  const source = resolve(_tokens.KnownToken.Config.source);
18
+ const headers = source.has(`${envPrefix}HEADERS`) ? JSON.parse(source.get(`${envPrefix}HEADERS`, '{}')) : undefined;
19
+ const url = new URL(source.get(`${envPrefix}URL`, 'http://localhost:4317'));
20
+ if (source.has(`${envPrefix}PORT`)) url.port = source.get(`${envPrefix}PORT`, '');
18
21
  return new _exporterTraceOtlpGrpc.OTLPTraceExporter({
19
- url: source.get(`${envPrefix}URL`, '')
22
+ url: url.toString(),
23
+ headers
20
24
  });
21
25
  }
22
26
  //# sourceMappingURL=telemetry-tracer-span-exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-tracer-span-exporter.js","names":["_exporterTraceOtlpGrpc","require","_tokens","envPrefix","provideSpanExporter","resolve","source","KnownToken","Config","OTLPTraceExporter","url","get"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"sourcesContent":["import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\nconst envPrefix = 'OTEL_EXPORTER_OTLP_';\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): OTLPTraceExporter {\n const source = resolve(KnownToken.Config.source);\n\n return new OTLPTraceExporter({\n url: source.get(`${envPrefix}URL`, ''),\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,MAAME,SAAS,GAAG,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,OAAgB,EAAqB;EACvE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,wCAAiB,CAAC;IAC3BC,GAAG,EAAEJ,MAAM,CAACK,GAAG,CAAE,GAAER,SAAU,KAAI,EAAE,EAAE;EACvC,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"telemetry-tracer-span-exporter.js","names":["_exporterTraceOtlpGrpc","require","_tokens","envPrefix","provideSpanExporter","resolve","source","KnownToken","Config","headers","has","JSON","parse","get","undefined","url","URL","port","OTLPTraceExporter","toString"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"sourcesContent":["import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\nconst envPrefix = 'OTEL_EXPORTER_OTLP_';\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): OTLPTraceExporter {\n const source = resolve(KnownToken.Config.source);\n const headers = source.has(`${envPrefix}HEADERS`)\n ? JSON.parse(source.get(`${envPrefix}HEADERS`, '{}'))\n : undefined;\n const url = new URL(source.get(`${envPrefix}URL`, 'http://localhost:4317'));\n\n if (source.has(`${envPrefix}PORT`)) url.port = source.get(`${envPrefix}PORT`, '');\n\n return new OTLPTraceExporter({\n url: url.toString(),\n headers,\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,MAAME,SAAS,GAAG,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,OAAgB,EAAqB;EACvE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAChD,MAAMG,OAAO,GAAGH,MAAM,CAACI,GAAG,CAAE,GAAEP,SAAU,SAAQ,CAAC,GAC7CQ,IAAI,CAACC,KAAK,CAACN,MAAM,CAACO,GAAG,CAAE,GAAEV,SAAU,SAAQ,EAAE,IAAI,CAAC,CAAC,GACnDW,SAAS;EACb,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACV,MAAM,CAACO,GAAG,CAAE,GAAEV,SAAU,KAAI,EAAE,uBAAuB,CAAC,CAAC;EAE3E,IAAIG,MAAM,CAACI,GAAG,CAAE,GAAEP,SAAU,MAAK,CAAC,EAAEY,GAAG,CAACE,IAAI,GAAGX,MAAM,CAACO,GAAG,CAAE,GAAEV,SAAU,MAAK,EAAE,EAAE,CAAC;EAEjF,OAAO,IAAIe,wCAAiB,CAAC;IAC3BH,GAAG,EAAEA,GAAG,CAACI,QAAQ,CAAC,CAAC;IACnBV;EACF,CAAC,CAAC;AACJ"}
@@ -17,7 +17,9 @@ const KnownToken = exports.KnownToken = {
17
17
  /** Токен "источника конфигурации". */
18
18
  source: (0, _di.createToken)('config/source'),
19
19
  /** Токен базовой конфигурации. */
20
- base: (0, _di.createToken)('config/base')
20
+ base: (0, _di.createToken)('config/base'),
21
+ /** Токен публичных переменных среды. */
22
+ publicEnvs: (0, _di.createToken)('config/public-envs')
21
23
  },
22
24
  /** Токен компонента кеша. */
23
25
  cache: (0, _di.createToken)('cache'),
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","names":["_di","require","KnownToken","exports","Config","source","createToken","base","cache","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n provider: createToken<BasicTracerProvider>('tracing/provider'),\n resource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","names":["_di","require","KnownToken","exports","Config","source","createToken","base","publicEnvs","cache","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n\n /** Токен публичных переменных среды. */\n publicEnvs: createToken<Record<string, string | undefined>>('config/public-envs'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n provider: createToken<BasicTracerProvider>('tracing/provider'),\n resource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
@@ -28,7 +28,8 @@ const SsrBridge = exports.SsrBridge = {
28
28
  prepare(serviceKey) {
29
29
  return {
30
30
  rootElementId: `${serviceKey}__root`,
31
- serverDataKey: `${serviceKey}__serverData`
31
+ serverDataKey: `${serviceKey}__serverData`,
32
+ publicEnvsKey: `${serviceKey}__envs`
32
33
  };
33
34
  },
34
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_jsesc","_interopRequireDefault","require","_jsxRuntime","obj","__esModule","default","SsrBridge","exports","prepare","serviceKey","rootElementId","serverDataKey","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}\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 };\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,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B;AACA;AACA;;AAMA;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;IAC/B,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEG,OAAOA,CAAUH,UAAkB,EAAuB;IACxD,MAAMI,WAAW,GAAGC,QAAQ,CAACC,cAAc,CAAE,GAAEN,UAAW,QAAO,CAAC;IAClE,MAAMO,cAAc,GAAIC,MAAM,CAAU,GAAER,UAAW,cAAa,CAAC;IAEnE,IAAI,CAACI,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,IAAAxB,WAAA,CAAAyB,GAAA;IACEC,uBAAuB,EAAE;MACvB;MACAC,MAAM,EAAG,WAAUT,QAAS,mBAAkBE,IAAK;IACrD;EAAE,CACH,CAAC;AAEN"}
1
+ {"version":3,"file":"index.js","names":["_jsesc","_interopRequireDefault","require","_jsxRuntime","obj","__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,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;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"}
@@ -9,6 +9,7 @@ var _utils = require("./utils");
9
9
  * Плагин для зашивания переменных среды в сборки.
10
10
  * В браузерную сборку зашьёт только переменные с префиксом "PUBLIC_".
11
11
  * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.
12
+ * @deprecated
12
13
  */
13
14
  class EnvPlugin {
14
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_utils","require","EnvPlugin","constructor","options","target","dotenvUsage","additional","define","apply","compiler","webpack","env","defineEnv","onError","error","hooks","compilation","tap","warnings","push","WebpackError","String","values","undefined","targetKeys","name","Object","keys","includes","startsWith","DefinePlugin","__ISOMORPH_ENV__","JSON","stringify","asEnvVariables","exports"],"sources":["../../../../../src/utils/webpack/env/index.ts"],"sourcesContent":["import { defineEnv, asEnvVariables } from './utils';\nimport type { Compiler, WebpackPluginInstance } from 'webpack';\nimport type { EnvPluginOptions } from './types';\n\n/**\n * Плагин для зашивания переменных среды в сборки.\n * В браузерную сборку зашьёт только переменные с префиксом \"PUBLIC_\".\n * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.\n */\nexport class EnvPlugin implements WebpackPluginInstance {\n options: Required<EnvPluginOptions>;\n\n /**\n * @param options Опции.\n */\n constructor(options: EnvPluginOptions = {}) {\n this.options = {\n target: options.target ?? 'auto',\n dotenvUsage: options.dotenvUsage ?? true,\n additional: options.additional ?? [],\n define: options.define ?? {},\n };\n }\n\n /**\n * @param compiler Компилятор.\n */\n apply(compiler: Compiler) {\n const { webpack } = compiler;\n\n const env = defineEnv({\n dotenvUsage: this.options.dotenvUsage,\n onError: error => {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(new webpack.WebpackError(`[EnvPlugin] ${String(error)}`));\n });\n },\n });\n\n let values: Record<string, string | undefined> | null = null;\n let target: string | undefined;\n\n // define target\n if (this.options.target === 'auto') {\n target = typeof compiler.options.target === 'string' ? compiler.options.target : undefined;\n } else {\n target = this.options.target;\n }\n\n // define values based on target\n switch (target) {\n case 'web': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n case 'node': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n default: {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(\n new webpack.WebpackError('[EnvPlugin] Target is unknown, variables will NOT be added'),\n );\n });\n break;\n }\n }\n\n if (values) {\n new webpack.DefinePlugin({ __ISOMORPH_ENV__: JSON.stringify(values) }).apply(compiler);\n new webpack.DefinePlugin(asEnvVariables(values)).apply(compiler);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_utils","require","EnvPlugin","constructor","options","target","dotenvUsage","additional","define","apply","compiler","webpack","env","defineEnv","onError","error","hooks","compilation","tap","warnings","push","WebpackError","String","values","undefined","targetKeys","name","Object","keys","includes","startsWith","DefinePlugin","__ISOMORPH_ENV__","JSON","stringify","asEnvVariables","exports"],"sources":["../../../../../src/utils/webpack/env/index.ts"],"sourcesContent":["import { defineEnv, asEnvVariables } from './utils';\nimport type { Compiler, WebpackPluginInstance } from 'webpack';\nimport type { EnvPluginOptions } from './types';\n\n/**\n * Плагин для зашивания переменных среды в сборки.\n * В браузерную сборку зашьёт только переменные с префиксом \"PUBLIC_\".\n * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.\n * @deprecated\n */\nexport class EnvPlugin implements WebpackPluginInstance {\n options: Required<EnvPluginOptions>;\n\n /**\n * @param options Опции.\n */\n constructor(options: EnvPluginOptions = {}) {\n this.options = {\n target: options.target ?? 'auto',\n dotenvUsage: options.dotenvUsage ?? true,\n additional: options.additional ?? [],\n define: options.define ?? {},\n };\n }\n\n /**\n * @param compiler Компилятор.\n */\n apply(compiler: Compiler) {\n const { webpack } = compiler;\n\n const env = defineEnv({\n dotenvUsage: this.options.dotenvUsage,\n onError: error => {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(new webpack.WebpackError(`[EnvPlugin] ${String(error)}`));\n });\n },\n });\n\n let values: Record<string, string | undefined> | null = null;\n let target: string | undefined;\n\n // define target\n if (this.options.target === 'auto') {\n target = typeof compiler.options.target === 'string' ? compiler.options.target : undefined;\n } else {\n target = this.options.target;\n }\n\n // define values based on target\n switch (target) {\n case 'web': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n case 'node': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n default: {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(\n new webpack.WebpackError('[EnvPlugin] Target is unknown, variables will NOT be added'),\n );\n });\n break;\n }\n }\n\n if (values) {\n new webpack.DefinePlugin({ __ISOMORPH_ENV__: JSON.stringify(values) }).apply(compiler);\n new webpack.DefinePlugin(asEnvVariables(values)).apply(compiler);\n }\n }\n}\n"],"mappings":"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"}
@@ -14,6 +14,11 @@ export function createConfigSource(dictionary) {
14
14
  if (typeof __ISOMORPH_ENV__ !== 'undefined') {
15
15
  Object.assign(source, __ISOMORPH_ENV__);
16
16
  }
17
+
18
+ // докидываем публичные переменные сервиса из глобального окружения
19
+ if (source.APP_NAME && typeof globalThis[`${source.APP_NAME}__envs`] !== 'undefined') {
20
+ Object.assign(source, globalThis[`${source.APP_NAME}__envs`]);
21
+ }
17
22
  return new Env(source);
18
23
  }
19
24
  //# sourceMappingURL=source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","names":["Env","createConfigSource","dictionary","source","Object","assign","__ISOMORPH_ENV__"],"sources":["../../../src/config/source.ts"],"sourcesContent":["import type { ConfigSource, Dictionary } from './types';\nimport { Env } from '@humanwhocodes/env';\n\ndeclare const __ISOMORPH_ENV__: unknown;\n\n/**\n * Возвращает новый источник конфигурации.\n * @param dictionary Опции.\n * @return Источник.\n */\nexport function createConfigSource(dictionary: Dictionary): ConfigSource {\n const source: Dictionary = {};\n\n // берем все переменные из предоставленной среды\n Object.assign(source, dictionary);\n\n // докидываем зашиваемые переменные окружения\n if (typeof __ISOMORPH_ENV__ !== 'undefined') {\n Object.assign(source, __ISOMORPH_ENV__);\n }\n\n return new Env(source);\n}\n"],"mappings":"AACA,SAASA,GAAG,QAAQ,oBAAoB;AAIxC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,UAAsB,EAAgB;EACvE,MAAMC,MAAkB,GAAG,CAAC,CAAC;;EAE7B;EACAC,MAAM,CAACC,MAAM,CAACF,MAAM,EAAED,UAAU,CAAC;;EAEjC;EACA,IAAI,OAAOI,gBAAgB,KAAK,WAAW,EAAE;IAC3CF,MAAM,CAACC,MAAM,CAACF,MAAM,EAAEG,gBAAgB,CAAC;EACzC;EAEA,OAAO,IAAIN,GAAG,CAACG,MAAM,CAAC;AACxB"}
1
+ {"version":3,"file":"source.js","names":["Env","createConfigSource","dictionary","source","Object","assign","__ISOMORPH_ENV__","APP_NAME","globalThis"],"sources":["../../../src/config/source.ts"],"sourcesContent":["import type { ConfigSource, Dictionary } from './types';\nimport { Env } from '@humanwhocodes/env';\n\ndeclare const __ISOMORPH_ENV__: unknown;\n\n/**\n * Возвращает новый источник конфигурации.\n * @param dictionary Опции.\n * @return Источник.\n */\nexport function createConfigSource(dictionary: Dictionary): ConfigSource {\n const source: Dictionary = {};\n\n // берем все переменные из предоставленной среды\n Object.assign(source, dictionary);\n\n // докидываем зашиваемые переменные окружения\n if (typeof __ISOMORPH_ENV__ !== 'undefined') {\n Object.assign(source, __ISOMORPH_ENV__);\n }\n\n // докидываем публичные переменные сервиса из глобального окружения\n if (source.APP_NAME && typeof (globalThis as any)[`${source.APP_NAME}__envs`] !== 'undefined') {\n Object.assign(source, (globalThis as any)[`${source.APP_NAME}__envs`]);\n }\n\n return new Env(source);\n}\n"],"mappings":"AACA,SAASA,GAAG,QAAQ,oBAAoB;AAIxC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,UAAsB,EAAgB;EACvE,MAAMC,MAAkB,GAAG,CAAC,CAAC;;EAE7B;EACAC,MAAM,CAACC,MAAM,CAACF,MAAM,EAAED,UAAU,CAAC;;EAEjC;EACA,IAAI,OAAOI,gBAAgB,KAAK,WAAW,EAAE;IAC3CF,MAAM,CAACC,MAAM,CAACF,MAAM,EAAEG,gBAAgB,CAAC;EACzC;;EAEA;EACA,IAAIH,MAAM,CAACI,QAAQ,IAAI,OAAQC,UAAU,CAAU,GAAEL,MAAM,CAACI,QAAS,QAAO,CAAC,KAAK,WAAW,EAAE;IAC7FH,MAAM,CAACC,MAAM,CAACF,MAAM,EAAGK,UAAU,CAAU,GAAEL,MAAM,CAACI,QAAS,QAAO,CAAC,CAAC;EACxE;EAEA,OAAO,IAAIP,GAAG,CAACG,MAAM,CAAC;AACxB"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sima-land/isomorph",
4
- "version": "11.0.0-alpha.54",
4
+ "version": "11.0.0-alpha.56",
5
5
  "dependencies": {
6
6
  "@humanwhocodes/env": "^3.0.5",
7
7
  "@krutoo/fetch-tools": "^0.0.16",
@@ -20,6 +20,8 @@ import { provideSsrBridgeServerSide } from "../server/providers/ssr-bridge-serve
20
20
  import { provideTracingProvider } from "./providers/telemetry-tracer-provider.js";
21
21
  import { provideTracingResource } from "./providers/telemetry-tracer-resource.js";
22
22
  import { provideMainExpressApp } from "./providers/main-express-app.js";
23
+ import { providePublicEnvs } from "./providers/public-envs.js";
24
+
23
25
  /**
24
26
  * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
25
27
  * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
@@ -32,6 +34,7 @@ export function PresetNode(customize) {
32
34
  // config
33
35
  preset.set(KnownToken.Config.source, provideConfigSource);
34
36
  preset.set(KnownToken.Config.base, provideBaseConfig);
37
+ preset.set(KnownToken.Config.publicEnvs, providePublicEnvs);
35
38
 
36
39
  // log
37
40
  preset.set(KnownToken.logger, provideLogger);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","provideMetricsExpressApp","provideTracer","provideSpanExporter","provideSsrBridgeServerSide","provideTracingProvider","provideTracingResource","provideMainExpressApp","PresetNode","customize","preset","set","Config","source","base","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","Http","fetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","Express","app","pageRoutes","serviceRoutes","resolve","Handlers","Middleware","request","log","metrics","tracing","endMiddleware","error","Api","knownHosts","SsrBridge","serverSide","override","bind","getClientIp","getForwardedHeaders","getPageResponseFormat","HandlerProvider"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideTracer } from './providers/telemetry-tracer';\nimport { provideSpanExporter } from './providers/telemetry-tracer-span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracingProvider } from './providers/telemetry-tracer-provider';\nimport { provideTracingResource } from './providers/telemetry-tracer-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.provider, provideTracingProvider);\n preset.set(KnownToken.Tracing.resource, provideTracingResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iBAAc;AACzC,SAASC,mBAAmB,QAAQ,0CAAuC;AAC3E,SAASC,YAAY,QAAQ,kCAA+B;AAC5D,SAASC,iBAAiB,QAAQ,wCAAqC;AACvE,SAAiBC,YAAY,QAAQ,qBAAU;AAE/C,SAASC,WAAW,QAAQ,6CAA0C;AACtE,SAASC,mBAAmB,QAAQ,8BAA2B;AAC/D,SAASC,6BAA6B,QAAQ,yCAAsC;AACpF,SAASC,qBAAqB,QAAQ,gCAA6B;AACnE,SAASC,2BAA2B,QAAQ,uCAAoC;AAChF,SAASC,+BAA+B,QAAQ,2CAAwC;AACxF,SAASC,+BAA+B,QAAQ,2CAAwC;AACxF,SAASC,+BAA+B,QAAQ,2CAAwC;AACxF,SAASC,wBAAwB,QAAQ,6CAA0C;AACnF,SAASC,aAAa,QAAQ,uBAAoB;AAClD,SAASC,wBAAwB,QAAQ,oCAAiC;AAC1E,SAASC,aAAa,QAAQ,iCAA8B;AAC5D,SAASC,mBAAmB,QAAQ,+CAA4C;AAChF,SAASC,0BAA0B,QAAQ,+CAA4C;AACvF,SAASC,sBAAsB,QAAQ,0CAAuC;AAC9E,SAASC,sBAAsB,QAAQ,0CAAuC;AAC9E,SAASC,qBAAqB,QAAQ,iCAA8B;AAGpE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,SAAuB,EAAU;EAC1D;EACA,MAAMC,MAAM,GAAGpB,YAAY,CAAC,CAAC;;EAE7B;EACAoB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC0B,MAAM,CAACC,MAAM,EAAErB,mBAAmB,CAAC;EACzDkB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC0B,MAAM,CAACE,IAAI,EAAEzB,iBAAiB,CAAC;;EAErD;EACAqB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC6B,MAAM,EAAEf,aAAa,CAAC;;EAE5C;EACAU,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8B,OAAO,CAACC,MAAM,EAAEf,aAAa,CAAC;EACpDQ,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8B,OAAO,CAACE,YAAY,EAAEf,mBAAmB,CAAC;EAChEO,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8B,OAAO,CAACG,QAAQ,EAAEd,sBAAsB,CAAC;EAC/DK,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8B,OAAO,CAACI,QAAQ,EAAEd,sBAAsB,CAAC;;EAE/D;EACAI,MAAM,CAACC,GAAG,CAACzB,UAAU,CAACmC,OAAO,CAACC,UAAU,EAAErB,wBAAwB,CAAC;;EAEnE;EACAS,MAAM,CAACC,GAAG,CAACzB,UAAU,CAACqC,IAAI,CAACC,KAAK,EAAEpC,YAAY,CAAC;EAC/CsB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAACqC,IAAI,CAACE,KAAK,CAACC,UAAU,EAAE,MAAM,EAAE,CAAC;EACtDhB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAACqC,IAAI,CAACI,KAAK,CAACC,KAAK,CAACC,MAAM,EAAE,MAAM,IAAI,CAAC;;EAE1D;EACAnB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC4C,KAAK,CAACC,OAAO,EAAE5C,mBAAmB,CAAC;EACzDuB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC4C,KAAK,CAACJ,UAAU,EAAE,MAAM,EAAE,CAAC;;EAEjD;EACAhB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACC,GAAG,EAAE1B,qBAAqB,CAAC;EACzDG,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACE,UAAU,EAAE,MAAM,EAAE,CAAC;EACnDxB,MAAM,CAACC,GAAG,CACRzB,UAAU,CAAC8C,OAAO,CAACG,aAAa,EAC/BC,OAAO,IAAuB,CAC7B,CAAC,cAAc,EAAEA,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACK,QAAQ,CAAC9C,WAAW,CAAC,CAAC,CAEtE,CAAC;EACDmB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACN,UAAU,EAAEU,OAAO,IAAI,CACnDA,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACC,OAAO,CAAC,EAC9CH,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACE,GAAG,CAAC,EAC1CJ,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACG,OAAO,CAAC,EAC9CL,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACI,OAAO,CAAC,CAC/C,CAAC;EACFhC,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACW,aAAa,EAAEP,OAAO,IAAI,CACtDA,OAAO,CAAClD,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACM,KAAK,CAAC,CAC7C,CAAC;EACFlC,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACD,OAAO,EAAErC,qBAAqB,CAAC;EAC7DgB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACK,QAAQ,CAAC9C,WAAW,EAAEA,WAAW,CAAC;EAChEmB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACC,OAAO,EAAE1C,+BAA+B,CAAC;EAClFa,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACE,GAAG,EAAE7C,2BAA2B,CAAC;EAC1Ee,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACG,OAAO,EAAE7C,+BAA+B,CAAC;EAClFc,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACI,OAAO,EAAE5C,+BAA+B,CAAC;EAClFY,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC8C,OAAO,CAACM,UAAU,CAACM,KAAK,EAAEnD,6BAA6B,CAAC;;EAE9E;EACAiB,MAAM,CAACC,GAAG,CAACzB,UAAU,CAACqC,IAAI,CAACsB,GAAG,CAACC,UAAU,EAAE/C,wBAAwB,CAAC;;EAEpE;EACAW,MAAM,CAACC,GAAG,CAACzB,UAAU,CAAC6D,SAAS,CAACC,UAAU,EAAE5C,0BAA0B,CAAC;EAEvE,IAAIK,SAAS,EAAE;IACbA,SAAS,CAAC;MAAEwC,QAAQ,EAAEvC,MAAM,CAACC,GAAG,CAACuC,IAAI,CAACxC,MAAM;IAAE,CAAC,CAAC;EAClD;EAEA,OAAOA,MAAM;AACf;AAIA;AACA,SAASyC,WAAW,QAAQ,0BAAuB;AACnD,SAASC,mBAAmB,QAAQ,kCAA+B;AACnE,SAASC,qBAAqB,QAAQ,qCAAkC;AACxE,SAASC,eAAe,QAAQ,6BAA0B"}
1
+ {"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","provideMetricsExpressApp","provideTracer","provideSpanExporter","provideSsrBridgeServerSide","provideTracingProvider","provideTracingResource","provideMainExpressApp","providePublicEnvs","PresetNode","customize","preset","set","Config","source","base","publicEnvs","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","Http","fetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","Express","app","pageRoutes","serviceRoutes","resolve","Handlers","Middleware","request","log","metrics","tracing","endMiddleware","error","Api","knownHosts","SsrBridge","serverSide","override","bind","getClientIp","getForwardedHeaders","getPageResponseFormat","HandlerProvider"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideTracer } from './providers/telemetry-tracer';\nimport { provideSpanExporter } from './providers/telemetry-tracer-span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracingProvider } from './providers/telemetry-tracer-provider';\nimport { provideTracingResource } from './providers/telemetry-tracer-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\nimport { providePublicEnvs } from './providers/public-envs';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n preset.set(KnownToken.Config.publicEnvs, providePublicEnvs);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.provider, provideTracingProvider);\n preset.set(KnownToken.Tracing.resource, provideTracingResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Провайдер публичных переменных среды.
3
+ * @return Объект с публичными переменными среды.
4
+ */
5
+ export function providePublicEnvs() {
6
+ const publicEnvs = {
7
+ IS_REDUX_DEVTOOLS_ENABLED: process.env.IS_REDUX_DEVTOOLS_ENABLED
8
+ };
9
+ for (const key in process.env) {
10
+ if (key.startsWith('PUBLIC_')) {
11
+ publicEnvs[key] = process.env[key];
12
+ }
13
+ }
14
+ return publicEnvs;
15
+ }
16
+ //# sourceMappingURL=public-envs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-envs.js","names":["providePublicEnvs","publicEnvs","IS_REDUX_DEVTOOLS_ENABLED","process","env","key","startsWith"],"sources":["../../../../../src/preset/node/providers/public-envs.ts"],"sourcesContent":["/**\n * Провайдер публичных переменных среды.\n * @return Объект с публичными переменными среды.\n */\nexport function providePublicEnvs() {\n const publicEnvs: Record<string, string | undefined> = {\n IS_REDUX_DEVTOOLS_ENABLED: process.env.IS_REDUX_DEVTOOLS_ENABLED,\n };\n for (const key in process.env) {\n if (key.startsWith('PUBLIC_')) {\n publicEnvs[key] = process.env[key];\n }\n }\n return publicEnvs;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,UAA8C,GAAG;IACrDC,yBAAyB,EAAEC,OAAO,CAACC,GAAG,CAACF;EACzC,CAAC;EACD,KAAK,MAAMG,GAAG,IAAIF,OAAO,CAACC,GAAG,EAAE;IAC7B,IAAIC,GAAG,CAACC,UAAU,CAAC,SAAS,CAAC,EAAE;MAC7BL,UAAU,CAACI,GAAG,CAAC,GAAGF,OAAO,CAACC,GAAG,CAACC,GAAG,CAAC;IACpC;EACF;EACA,OAAOJ,UAAU;AACnB"}
@@ -9,8 +9,12 @@ const envPrefix = 'OTEL_EXPORTER_OTLP_';
9
9
  */
10
10
  export function provideSpanExporter(resolve) {
11
11
  const source = resolve(KnownToken.Config.source);
12
+ const headers = source.has(`${envPrefix}HEADERS`) ? JSON.parse(source.get(`${envPrefix}HEADERS`, '{}')) : undefined;
13
+ const url = new URL(source.get(`${envPrefix}URL`, 'http://localhost:4317'));
14
+ if (source.has(`${envPrefix}PORT`)) url.port = source.get(`${envPrefix}PORT`, '');
12
15
  return new OTLPTraceExporter({
13
- url: source.get(`${envPrefix}URL`, '')
16
+ url: url.toString(),
17
+ headers
14
18
  });
15
19
  }
16
20
  //# sourceMappingURL=telemetry-tracer-span-exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-tracer-span-exporter.js","names":["OTLPTraceExporter","KnownToken","envPrefix","provideSpanExporter","resolve","source","Config","url","get"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"sourcesContent":["import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\nconst envPrefix = 'OTEL_EXPORTER_OTLP_';\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): OTLPTraceExporter {\n const source = resolve(KnownToken.Config.source);\n\n return new OTLPTraceExporter({\n url: source.get(`${envPrefix}URL`, ''),\n });\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yCAAyC;AAC3E,SAASC,UAAU,QAAQ,oBAAiB;AAI5C,MAAMC,SAAS,GAAG,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,OAAgB,EAAqB;EACvE,MAAMC,MAAM,GAAGD,OAAO,CAACH,UAAU,CAACK,MAAM,CAACD,MAAM,CAAC;EAEhD,OAAO,IAAIL,iBAAiB,CAAC;IAC3BO,GAAG,EAAEF,MAAM,CAACG,GAAG,CAAE,GAAEN,SAAU,KAAI,EAAE,EAAE;EACvC,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"telemetry-tracer-span-exporter.js","names":["OTLPTraceExporter","KnownToken","envPrefix","provideSpanExporter","resolve","source","Config","headers","has","JSON","parse","get","undefined","url","URL","port","toString"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"sourcesContent":["import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\nconst envPrefix = 'OTEL_EXPORTER_OTLP_';\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): OTLPTraceExporter {\n const source = resolve(KnownToken.Config.source);\n const headers = source.has(`${envPrefix}HEADERS`)\n ? JSON.parse(source.get(`${envPrefix}HEADERS`, '{}'))\n : undefined;\n const url = new URL(source.get(`${envPrefix}URL`, 'http://localhost:4317'));\n\n if (source.has(`${envPrefix}PORT`)) url.port = source.get(`${envPrefix}PORT`, '');\n\n return new OTLPTraceExporter({\n url: url.toString(),\n headers,\n });\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yCAAyC;AAC3E,SAASC,UAAU,QAAQ,oBAAiB;AAI5C,MAAMC,SAAS,GAAG,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,OAAgB,EAAqB;EACvE,MAAMC,MAAM,GAAGD,OAAO,CAACH,UAAU,CAACK,MAAM,CAACD,MAAM,CAAC;EAChD,MAAME,OAAO,GAAGF,MAAM,CAACG,GAAG,CAAE,GAAEN,SAAU,SAAQ,CAAC,GAC7CO,IAAI,CAACC,KAAK,CAACL,MAAM,CAACM,GAAG,CAAE,GAAET,SAAU,SAAQ,EAAE,IAAI,CAAC,CAAC,GACnDU,SAAS;EACb,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACT,MAAM,CAACM,GAAG,CAAE,GAAET,SAAU,KAAI,EAAE,uBAAuB,CAAC,CAAC;EAE3E,IAAIG,MAAM,CAACG,GAAG,CAAE,GAAEN,SAAU,MAAK,CAAC,EAAEW,GAAG,CAACE,IAAI,GAAGV,MAAM,CAACM,GAAG,CAAE,GAAET,SAAU,MAAK,EAAE,EAAE,CAAC;EAEjF,OAAO,IAAIF,iBAAiB,CAAC;IAC3Ba,GAAG,EAAEA,GAAG,CAACG,QAAQ,CAAC,CAAC;IACnBT;EACF,CAAC,CAAC;AACJ"}
@@ -12,7 +12,9 @@ export const KnownToken = {
12
12
  /** Токен "источника конфигурации". */
13
13
  source: createToken('config/source'),
14
14
  /** Токен базовой конфигурации. */
15
- base: createToken('config/base')
15
+ base: createToken('config/base'),
16
+ /** Токен публичных переменных среды. */
17
+ publicEnvs: createToken('config/public-envs')
16
18
  },
17
19
  /** Токен компонента кеша. */
18
20
  cache: createToken('cache'),
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","names":["createToken","KnownToken","Config","source","base","cache","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n provider: createToken<BasicTracerProvider>('tracing/provider'),\n resource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","names":["createToken","KnownToken","Config","source","base","publicEnvs","cache","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n\n /** Токен публичных переменных среды. */\n publicEnvs: createToken<Record<string, string | undefined>>('config/public-envs'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n provider: createToken<BasicTracerProvider>('tracing/provider'),\n resource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
@@ -21,7 +21,8 @@ export const SsrBridge = {
21
21
  prepare(serviceKey) {
22
22
  return {
23
23
  rootElementId: `${serviceKey}__root`,
24
- serverDataKey: `${serviceKey}__serverData`
24
+ serverDataKey: `${serviceKey}__serverData`,
25
+ publicEnvsKey: `${serviceKey}__envs`
25
26
  };
26
27
  },
27
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["jsesc","SsrBridge","prepare","serviceKey","rootElementId","serverDataKey","resolve","rootElement","document","getElementById","serverSideData","window","Error","GlobalDataScript","property","value","json","JSON","stringify","isScriptContext","React","createElement","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}\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 };\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,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,OAAOA,CAACC,UAAkB,EAAoB;IAC5C,OAAO;MACLC,aAAa,EAAG,GAAED,UAAW,QAAO;MACpCE,aAAa,EAAG,GAAEF,UAAW;IAC/B,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEG,OAAOA,CAAUH,UAAkB,EAAuB;IACxD,MAAMI,WAAW,GAAGC,QAAQ,CAACC,cAAc,CAAE,GAAEN,UAAW,QAAO,CAAC;IAClE,MAAMO,cAAc,GAAIC,MAAM,CAAU,GAAER,UAAW,cAAa,CAAC;IAEnE,IAAI,CAACI,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;AACA,OAAO,SAASG,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,MAAMC,IAAI,GAAGhB,KAAK,CAACiB,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC,EAAE;IACxCC,IAAI,EAAE,IAAI;IACVG,eAAe,EAAE;EACnB,CAAC,CAAC;EAEF,oBACEC,KAAA,CAAAC,aAAA;IACEC,uBAAuB,EAAE;MACvB;MACAC,MAAM,EAAG,WAAUT,QAAS,mBAAkBE,IAAK;IACrD;EAAE,CACH,CAAC;AAEN"}
1
+ {"version":3,"file":"index.js","names":["jsesc","SsrBridge","prepare","serviceKey","rootElementId","serverDataKey","publicEnvsKey","resolve","rootElement","document","getElementById","serverSideData","window","Error","GlobalDataScript","property","value","json","JSON","stringify","isScriptContext","React","createElement","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,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA;AACA;;AAOA;AACA;AACA;;AAMA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,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;AACA,OAAO,SAASG,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,MAAMC,IAAI,GAAGjB,KAAK,CAACkB,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC,EAAE;IACxCC,IAAI,EAAE,IAAI;IACVG,eAAe,EAAE;EACnB,CAAC,CAAC;EAEF,oBACEC,KAAA,CAAAC,aAAA;IACEC,uBAAuB,EAAE;MACvB;MACAC,MAAM,EAAG,WAAUT,QAAS,mBAAkBE,IAAK;IACrD;EAAE,CACH,CAAC;AAEN"}
@@ -3,6 +3,7 @@ import { defineEnv, asEnvVariables } from "./utils.js";
3
3
  * Плагин для зашивания переменных среды в сборки.
4
4
  * В браузерную сборку зашьёт только переменные с префиксом "PUBLIC_".
5
5
  * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.
6
+ * @deprecated
6
7
  */
7
8
  export class EnvPlugin {
8
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["defineEnv","asEnvVariables","EnvPlugin","constructor","options","target","dotenvUsage","additional","define","apply","compiler","webpack","env","onError","error","hooks","compilation","tap","warnings","push","WebpackError","String","values","undefined","targetKeys","name","Object","keys","includes","startsWith","DefinePlugin","__ISOMORPH_ENV__","JSON","stringify"],"sources":["../../../../../src/utils/webpack/env/index.ts"],"sourcesContent":["import { defineEnv, asEnvVariables } from './utils';\nimport type { Compiler, WebpackPluginInstance } from 'webpack';\nimport type { EnvPluginOptions } from './types';\n\n/**\n * Плагин для зашивания переменных среды в сборки.\n * В браузерную сборку зашьёт только переменные с префиксом \"PUBLIC_\".\n * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.\n */\nexport class EnvPlugin implements WebpackPluginInstance {\n options: Required<EnvPluginOptions>;\n\n /**\n * @param options Опции.\n */\n constructor(options: EnvPluginOptions = {}) {\n this.options = {\n target: options.target ?? 'auto',\n dotenvUsage: options.dotenvUsage ?? true,\n additional: options.additional ?? [],\n define: options.define ?? {},\n };\n }\n\n /**\n * @param compiler Компилятор.\n */\n apply(compiler: Compiler) {\n const { webpack } = compiler;\n\n const env = defineEnv({\n dotenvUsage: this.options.dotenvUsage,\n onError: error => {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(new webpack.WebpackError(`[EnvPlugin] ${String(error)}`));\n });\n },\n });\n\n let values: Record<string, string | undefined> | null = null;\n let target: string | undefined;\n\n // define target\n if (this.options.target === 'auto') {\n target = typeof compiler.options.target === 'string' ? compiler.options.target : undefined;\n } else {\n target = this.options.target;\n }\n\n // define values based on target\n switch (target) {\n case 'web': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n case 'node': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n default: {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(\n new webpack.WebpackError('[EnvPlugin] Target is unknown, variables will NOT be added'),\n );\n });\n break;\n }\n }\n\n if (values) {\n new webpack.DefinePlugin({ __ISOMORPH_ENV__: JSON.stringify(values) }).apply(compiler);\n new webpack.DefinePlugin(asEnvVariables(values)).apply(compiler);\n }\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,cAAc,QAAQ,YAAS;AAInD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,CAAkC;EAGtD;AACF;AACA;EACEC,WAAWA,CAACC,OAAyB,GAAG,CAAC,CAAC,EAAE;IAC1C,IAAI,CAACA,OAAO,GAAG;MACbC,MAAM,EAAED,OAAO,CAACC,MAAM,IAAI,MAAM;MAChCC,WAAW,EAAEF,OAAO,CAACE,WAAW,IAAI,IAAI;MACxCC,UAAU,EAAEH,OAAO,CAACG,UAAU,IAAI,EAAE;MACpCC,MAAM,EAAEJ,OAAO,CAACI,MAAM,IAAI,CAAC;IAC7B,CAAC;EACH;;EAEA;AACF;AACA;EACEC,KAAKA,CAACC,QAAkB,EAAE;IACxB,MAAM;MAAEC;IAAQ,CAAC,GAAGD,QAAQ;IAE5B,MAAME,GAAG,GAAGZ,SAAS,CAAC;MACpBM,WAAW,EAAE,IAAI,CAACF,OAAO,CAACE,WAAW;MACrCO,OAAO,EAAEC,KAAK,IAAI;QAChBJ,QAAQ,CAACK,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,WAAW,EAAED,WAAW,IAAI;UACzDA,WAAW,CAACE,QAAQ,CAACC,IAAI,CAAC,IAAIR,OAAO,CAACS,YAAY,CAAE,eAAcC,MAAM,CAACP,KAAK,CAAE,EAAC,CAAC,CAAC;QACrF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,IAAIQ,MAAiD,GAAG,IAAI;IAC5D,IAAIjB,MAA0B;;IAE9B;IACA,IAAI,IAAI,CAACD,OAAO,CAACC,MAAM,KAAK,MAAM,EAAE;MAClCA,MAAM,GAAG,OAAOK,QAAQ,CAACN,OAAO,CAACC,MAAM,KAAK,QAAQ,GAAGK,QAAQ,CAACN,OAAO,CAACC,MAAM,GAAGkB,SAAS;IAC5F,CAAC,MAAM;MACLlB,MAAM,GAAG,IAAI,CAACD,OAAO,CAACC,MAAM;IAC9B;;IAEA;IACA,QAAQA,MAAM;MACZ,KAAK,KAAK;QAAE;UACV,MAAMmB,UAAU,GAAG,CAAC,GAAG,IAAI,CAACpB,OAAO,CAACG,UAAU,EAAE,UAAU,CAAC;UAE3De,MAAM,GAAG;YAAE,GAAG,IAAI,CAAClB,OAAO,CAACI;UAAO,CAAC;UAEnC,KAAK,MAAMiB,IAAI,IAAIC,MAAM,CAACC,IAAI,CAACf,GAAG,CAAC,EAAE;YACnC,IAAIY,UAAU,CAACI,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,CAACI,UAAU,CAAC,SAAS,CAAC,EAAE;cAC3DP,MAAM,CAACG,IAAI,CAAC,GAAGb,GAAG,CAACa,IAAI,CAAC;YAC1B;UACF;UACA;QACF;MACA,KAAK,MAAM;QAAE;UACX,MAAMD,UAAU,GAAG,CAAC,GAAG,IAAI,CAACpB,OAAO,CAACG,UAAU,EAAE,UAAU,CAAC;UAE3De,MAAM,GAAG;YAAE,GAAG,IAAI,CAAClB,OAAO,CAACI;UAAO,CAAC;UAEnC,KAAK,MAAMiB,IAAI,IAAIC,MAAM,CAACC,IAAI,CAACf,GAAG,CAAC,EAAE;YACnC,IAAIY,UAAU,CAACI,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,CAACI,UAAU,CAAC,SAAS,CAAC,EAAE;cAC3DP,MAAM,CAACG,IAAI,CAAC,GAAGb,GAAG,CAACa,IAAI,CAAC;YAC1B;UACF;UACA;QACF;MACA;QAAS;UACPf,QAAQ,CAACK,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,WAAW,EAAED,WAAW,IAAI;YACzDA,WAAW,CAACE,QAAQ,CAACC,IAAI,CACvB,IAAIR,OAAO,CAACS,YAAY,CAAC,4DAA4D,CACvF,CAAC;UACH,CAAC,CAAC;UACF;QACF;IACF;IAEA,IAAIE,MAAM,EAAE;MACV,IAAIX,OAAO,CAACmB,YAAY,CAAC;QAAEC,gBAAgB,EAAEC,IAAI,CAACC,SAAS,CAACX,MAAM;MAAE,CAAC,CAAC,CAACb,KAAK,CAACC,QAAQ,CAAC;MACtF,IAAIC,OAAO,CAACmB,YAAY,CAAC7B,cAAc,CAACqB,MAAM,CAAC,CAAC,CAACb,KAAK,CAACC,QAAQ,CAAC;IAClE;EACF;AACF"}
1
+ {"version":3,"file":"index.js","names":["defineEnv","asEnvVariables","EnvPlugin","constructor","options","target","dotenvUsage","additional","define","apply","compiler","webpack","env","onError","error","hooks","compilation","tap","warnings","push","WebpackError","String","values","undefined","targetKeys","name","Object","keys","includes","startsWith","DefinePlugin","__ISOMORPH_ENV__","JSON","stringify"],"sources":["../../../../../src/utils/webpack/env/index.ts"],"sourcesContent":["import { defineEnv, asEnvVariables } from './utils';\nimport type { Compiler, WebpackPluginInstance } from 'webpack';\nimport type { EnvPluginOptions } from './types';\n\n/**\n * Плагин для зашивания переменных среды в сборки.\n * В браузерную сборку зашьёт только переменные с префиксом \"PUBLIC_\".\n * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.\n * @deprecated\n */\nexport class EnvPlugin implements WebpackPluginInstance {\n options: Required<EnvPluginOptions>;\n\n /**\n * @param options Опции.\n */\n constructor(options: EnvPluginOptions = {}) {\n this.options = {\n target: options.target ?? 'auto',\n dotenvUsage: options.dotenvUsage ?? true,\n additional: options.additional ?? [],\n define: options.define ?? {},\n };\n }\n\n /**\n * @param compiler Компилятор.\n */\n apply(compiler: Compiler) {\n const { webpack } = compiler;\n\n const env = defineEnv({\n dotenvUsage: this.options.dotenvUsage,\n onError: error => {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(new webpack.WebpackError(`[EnvPlugin] ${String(error)}`));\n });\n },\n });\n\n let values: Record<string, string | undefined> | null = null;\n let target: string | undefined;\n\n // define target\n if (this.options.target === 'auto') {\n target = typeof compiler.options.target === 'string' ? compiler.options.target : undefined;\n } else {\n target = this.options.target;\n }\n\n // define values based on target\n switch (target) {\n case 'web': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n case 'node': {\n const targetKeys = [...this.options.additional, 'NODE_ENV'];\n\n values = { ...this.options.define };\n\n for (const name of Object.keys(env)) {\n if (targetKeys.includes(name) || name.startsWith('PUBLIC_')) {\n values[name] = env[name];\n }\n }\n break;\n }\n default: {\n compiler.hooks.compilation.tap('EnvPlugin', compilation => {\n compilation.warnings.push(\n new webpack.WebpackError('[EnvPlugin] Target is unknown, variables will NOT be added'),\n );\n });\n break;\n }\n }\n\n if (values) {\n new webpack.DefinePlugin({ __ISOMORPH_ENV__: JSON.stringify(values) }).apply(compiler);\n new webpack.DefinePlugin(asEnvVariables(values)).apply(compiler);\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/config/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKxD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAYvE"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/config/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKxD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAiBvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/preset/node/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAoBlD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAkE1D;AAED,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/preset/node/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqBlD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAmE1D;AAED,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Провайдер публичных переменных среды.
3
+ * @return Объект с публичными переменными среды.
4
+ */
5
+ export declare function providePublicEnvs(): Record<string, string | undefined>;
6
+ //# sourceMappingURL=public-envs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-envs.d.ts","sourceRoot":"","sources":["../../../../../src/preset/node/providers/public-envs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,uCAUhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-tracer-span-exporter.d.ts","sourceRoot":"","sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAMvE"}
1
+ {"version":3,"file":"telemetry-tracer-span-exporter.d.ts","sourceRoot":"","sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAavE"}
@@ -29,6 +29,8 @@ export declare const KnownToken: {
29
29
  readonly source: import("./di").Token<ConfigSource>;
30
30
  /** Токен базовой конфигурации. */
31
31
  readonly base: import("./di").Token<BaseConfig>;
32
+ /** Токен публичных переменных среды. */
33
+ readonly publicEnvs: import("./di").Token<Record<string, string | undefined>>;
32
34
  };
33
35
  /** Токен компонента кеша. */
34
36
  readonly cache: import("./di").Token<Cache>;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tokens.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  export interface BridgeServerSide {
5
5
  rootElementId: string;
6
6
  serverDataKey: string;
7
+ publicEnvsKey: string;
7
8
  }
8
9
  /**
9
10
  * Данные для SSR, доступные на стороне клиента (в браузере).
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/ssr/index.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;;;OAIG;mCACiB,MAAM,KAAG,gBAAgB;IAO7C;;;;OAIG;4CAC0B,MAAM;CAU3B,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACzB,2CAcA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/ssr/index.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;;;OAIG;mCACiB,MAAM,KAAG,gBAAgB;IAQ7C;;;;OAIG;4CAC0B,MAAM;CAU3B,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACzB,2CAcA"}
@@ -4,6 +4,7 @@ import type { EnvPluginOptions } from './types';
4
4
  * Плагин для зашивания переменных среды в сборки.
5
5
  * В браузерную сборку зашьёт только переменные с префиксом "PUBLIC_".
6
6
  * ВАЖНО: все зашиваемые переменные будут доступны через глобальный объект __ISOMORPH_ENV__.
7
+ * @deprecated
7
8
  */
8
9
  export declare class EnvPlugin implements WebpackPluginInstance {
9
10
  options: Required<EnvPluginOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/webpack/env/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,SAAU,YAAW,qBAAqB;IACrD,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEpC;;OAEG;gBACS,OAAO,GAAE,gBAAqB;IAS1C;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,QAAQ;CA+DzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/webpack/env/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,qBAAqB;IACrD,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEpC;;OAEG;gBACS,OAAO,GAAE,gBAAqB;IAS1C;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,QAAQ;CA+DzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sima-land/isomorph",
3
- "version": "11.0.0-alpha.54",
3
+ "version": "11.0.0-alpha.56",
4
4
  "description": "Tiny framework for fast start frontend microservices",
5
5
  "author": "www.sima-land.ru team",
6
6
  "license": "Apache-2.0",