@tramvai/module-render 1.85.0 → 1.90.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/browser.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { Module, provide, commandLineListTokens, DI_TOKEN } from '@tramvai/core';
3
- import { STORE_TOKEN, LOGGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/module-common';
3
+ import { COMBINE_REDUCERS, STORE_TOKEN, LOGGER_TOKEN, CONTEXT_TOKEN, INITIAL_APP_STATE_TOKEN } from '@tramvai/tokens-common';
4
4
  import { DEFAULT_LAYOUT_COMPONENT, LAYOUT_OPTIONS, DEFAULT_FOOTER_COMPONENT, DEFAULT_HEADER_COMPONENT, TRAMVAI_RENDER_MODE, RESOURCES_REGISTRY, CUSTOM_RENDER, EXTEND_RENDER, RENDERER_CALLBACK, USE_REACT_STRICT_MODE, RENDER_MODE } from '@tramvai/tokens-render';
5
5
  export * from '@tramvai/tokens-render';
6
6
  import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
7
7
  import each from '@tinkoff/utils/array/each';
8
- import React, { PureComponent, useMemo, createElement, StrictMode } from 'react';
8
+ import { PureComponent, useMemo, createElement, StrictMode } from 'react';
9
+ import { jsx } from 'react/jsx-runtime';
9
10
  import { createEvent, createReducer, useStore, Provider } from '@tramvai/state';
10
11
  import { useDi, ERROR_BOUNDARY_TOKEN, ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, UniversalErrorBoundary, DIContext } from '@tramvai/react';
11
12
  import { useRoute, useUrl } from '@tramvai/module-router';
12
13
  import { useIsomorphicLayoutEffect } from '@tinkoff/react-hooks';
13
14
  import { composeLayoutOptions, createLayout } from '@tinkoff/layout-factory';
14
- import { COMBINE_REDUCERS } from '@tramvai/tokens-common';
15
15
 
16
16
  function serializeError(error) {
17
17
  return {
@@ -38,14 +38,12 @@ const PageErrorBoundary = (props) => {
38
38
  }, [serializedError]);
39
39
  const errorHandlers = useDi({ token: ERROR_BOUNDARY_TOKEN, optional: true });
40
40
  const fallbackFromDi = useDi({ token: ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
41
- return (React.createElement(UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, children));
41
+ return (jsx(UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
42
42
  };
43
43
  class RootComponent extends PureComponent {
44
44
  render() {
45
45
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent, ErrorBoundaryComponent, } = this.props;
46
- return (React.createElement(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent },
47
- React.createElement(PageErrorBoundary, { fallback: ErrorBoundaryComponent },
48
- React.createElement(PageComponent, null))));
46
+ return (jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsx(PageErrorBoundary, Object.assign({ fallback: ErrorBoundaryComponent }, { children: jsx(PageComponent, {}, void 0) }), void 0) }), void 0));
49
47
  }
50
48
  }
51
49
  const Root = ({ pageService }) => {
@@ -63,26 +61,28 @@ const Root = ({ pageService }) => {
63
61
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
64
62
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
65
63
  const ErrorBoundaryComponent = pageService.resolveComponentFromConfig('errorBoundary');
66
- return (React.createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }));
64
+ return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }, void 0));
67
65
  };
68
66
 
69
- function renderReact({ pageService, di }, context) {
70
- return (React.createElement(Provider, { context: context },
71
- React.createElement(DIContext.Provider, { value: di },
72
- React.createElement(Root, { pageService: pageService }))));
67
+ function renderReact({ pageService, di, initialState }, context) {
68
+ return (jsx(Provider, Object.assign({ context: context, serverState: initialState === null || initialState === void 0 ? void 0 : initialState.stores }, { children: jsx(DIContext.Provider, Object.assign({ value: di }, { children: jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0));
73
69
  }
74
70
 
75
- const ExecuteRenderCallback = ({ children, callback }) => {
71
+ let hydrateRoot;
72
+ try {
73
+ // eslint-disable-next-line import/no-unresolved, import/extensions
74
+ hydrateRoot = require('react-dom/client').hydrateRoot;
75
+ }
76
+ catch { }
77
+ const ExecuteRenderCallback = ({ children, callback, }) => {
76
78
  // eslint-disable-next-line react-hooks/exhaustive-deps
77
79
  useIsomorphicLayoutEffect(callback, []);
78
80
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
81
  return children;
80
82
  };
81
83
  const renderer = ({ element, container, callback, log }) => {
82
- if (process.env.__TRAMVAI_CONCURRENT_FEATURES) {
84
+ if (process.env.__TRAMVAI_CONCURRENT_FEATURES !== 'false' && typeof hydrateRoot === 'function') {
83
85
  const wrappedElement = createElement(ExecuteRenderCallback, { callback }, element);
84
- // eslint-disable-next-line import/no-unresolved, import/extensions
85
- const { hydrateRoot } = require('react-dom/client');
86
86
  return hydrateRoot(container, wrappedElement, {
87
87
  onRecoverableError: (error) => {
88
88
  log.error({
@@ -96,9 +96,9 @@ const renderer = ({ element, container, callback, log }) => {
96
96
  return hydrate(element, container, callback);
97
97
  };
98
98
 
99
- function rendering({ pageService, log, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, }) {
99
+ function rendering({ pageService, log, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, initialState, }) {
100
100
  return new Promise((resolve, reject) => {
101
- let renderResult = renderReact({ pageService, di }, consumerContext);
101
+ let renderResult = renderReact({ pageService, di, initialState }, consumerContext);
102
102
  if (extendRender) {
103
103
  each((render) => {
104
104
  renderResult = render(renderResult);
@@ -252,6 +252,7 @@ RenderModule = RenderModule_1 = __decorate([
252
252
  consumerContext: CONTEXT_TOKEN,
253
253
  di: DI_TOKEN,
254
254
  useStrictMode: USE_REACT_STRICT_MODE,
255
+ initialState: INITIAL_APP_STATE_TOKEN,
255
256
  },
256
257
  multi: true,
257
258
  }),
@@ -1,6 +1,7 @@
1
1
  import type { EXTEND_RENDER, RENDERER_CALLBACK, USE_REACT_STRICT_MODE } from '@tramvai/tokens-render';
2
2
  import type { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
3
- export declare function rendering({ pageService, log, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, }: {
3
+ import type { INITIAL_APP_STATE_TOKEN } from '@tramvai/tokens-common';
4
+ export declare function rendering({ pageService, log, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, initialState, }: {
4
5
  pageService: typeof PAGE_SERVICE_TOKEN;
5
6
  log: any;
6
7
  consumerContext: any;
@@ -9,4 +10,5 @@ export declare function rendering({ pageService, log, consumerContext, customRen
9
10
  di: any;
10
11
  useStrictMode: typeof USE_REACT_STRICT_MODE;
11
12
  rendererCallback?: typeof RENDERER_CALLBACK;
13
+ initialState?: typeof INITIAL_APP_STATE_TOKEN;
12
14
  }): Promise<void>;
@@ -1,4 +1,5 @@
1
- export declare function renderReact({ pageService, di }: {
1
+ export declare function renderReact({ pageService, di, initialState }: {
2
2
  pageService: any;
3
3
  di: any;
4
+ initialState: any;
4
5
  }, context: any): JSX.Element;
@@ -7,11 +7,13 @@ export interface ResourcesInlinerType {
7
7
  export declare class ResourcesInliner implements ResourcesInlinerType {
8
8
  private resourceInlineThreshold?;
9
9
  private resourcesRegistryCache;
10
+ private log;
10
11
  private scheduleFileLoad;
11
12
  private scheduleFileSizeLoad;
12
- constructor({ resourcesRegistryCache, resourceInlineThreshold }: {
13
+ constructor({ resourcesRegistryCache, resourceInlineThreshold, logger }: {
13
14
  resourcesRegistryCache: any;
14
15
  resourceInlineThreshold: any;
16
+ logger: any;
15
17
  });
16
18
  shouldAddResource(resource: PageResource): boolean;
17
19
  shouldInline(resource: PageResource): boolean;
package/lib/server.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from 'tslib';
2
- import React, { PureComponent, useMemo, createElement } from 'react';
2
+ import { PureComponent, useMemo, createElement } from 'react';
3
3
  import { renderToString } from 'react-dom/server';
4
4
  import { Module, provide, commandLineListTokens, DI_TOKEN } from '@tramvai/core';
5
5
  import { CREATE_CACHE_TOKEN, LOGGER_TOKEN, REQUEST_MANAGER_TOKEN, RESPONSE_MANAGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/module-common';
@@ -29,6 +29,7 @@ import * as path from 'path';
29
29
  import each from '@tinkoff/utils/array/each';
30
30
  import path$1 from '@tinkoff/utils/object/path';
31
31
  import { o as onload } from './server_inline.inline.es.js';
32
+ import { jsx } from 'react/jsx-runtime';
32
33
  import { createEvent, createReducer, useStore, Provider } from '@tramvai/state';
33
34
  import { useRoute, useUrl } from '@tramvai/module-router';
34
35
  import { composeLayoutOptions, createLayout } from '@tinkoff/layout-factory';
@@ -93,7 +94,7 @@ const getResourceUrl = (resource) => {
93
94
  : resource.payload;
94
95
  };
95
96
  class ResourcesInliner {
96
- constructor({ resourcesRegistryCache, resourceInlineThreshold }) {
97
+ constructor({ resourcesRegistryCache, resourceInlineThreshold, logger }) {
97
98
  this.scheduleFileLoad = (resource, resourceInlineThreshold) => {
98
99
  const url = getResourceUrl(resource);
99
100
  const requestKey = `file${url}`;
@@ -115,6 +116,13 @@ class ResourcesInliner {
115
116
  this.resourcesRegistryCache.filesCache.set(url, processFile(resource, file));
116
117
  }
117
118
  this.resourcesRegistryCache.sizeCache.set(url, size);
119
+ })
120
+ .catch((error) => {
121
+ this.log.warn({
122
+ event: 'file-load-failed',
123
+ url,
124
+ error,
125
+ });
118
126
  })
119
127
  .finally(() => {
120
128
  this.resourcesRegistryCache.requestsCache.set(requestKey, undefined);
@@ -139,6 +147,13 @@ class ResourcesInliner {
139
147
  if (size < resourceInlineThreshold) {
140
148
  this.scheduleFileLoad(resource, resourceInlineThreshold);
141
149
  }
150
+ })
151
+ .catch((error) => {
152
+ this.log.warn({
153
+ event: 'file-content-length-load-failed',
154
+ url,
155
+ error,
156
+ });
142
157
  })
143
158
  .finally(() => {
144
159
  this.resourcesRegistryCache.requestsCache.set(requestKey, undefined);
@@ -148,6 +163,7 @@ class ResourcesInliner {
148
163
  };
149
164
  this.resourcesRegistryCache = resourcesRegistryCache;
150
165
  this.resourceInlineThreshold = resourceInlineThreshold;
166
+ this.log = logger('resources-inliner');
151
167
  }
152
168
  // Метод проверки, стоит ли добавлять preload-ресурс
153
169
  shouldAddResource(resource) {
@@ -625,14 +641,12 @@ const PageErrorBoundary = (props) => {
625
641
  }, [serializedError]);
626
642
  const errorHandlers = useDi({ token: ERROR_BOUNDARY_TOKEN, optional: true });
627
643
  const fallbackFromDi = useDi({ token: ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
628
- return (React.createElement(UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, children));
644
+ return (jsx(UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
629
645
  };
630
646
  class RootComponent extends PureComponent {
631
647
  render() {
632
648
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent, ErrorBoundaryComponent, } = this.props;
633
- return (React.createElement(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent },
634
- React.createElement(PageErrorBoundary, { fallback: ErrorBoundaryComponent },
635
- React.createElement(PageComponent, null))));
649
+ return (jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsx(PageErrorBoundary, Object.assign({ fallback: ErrorBoundaryComponent }, { children: jsx(PageComponent, {}, void 0) }), void 0) }), void 0));
636
650
  }
637
651
  }
638
652
  const Root = ({ pageService }) => {
@@ -650,13 +664,11 @@ const Root = ({ pageService }) => {
650
664
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
651
665
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
652
666
  const ErrorBoundaryComponent = pageService.resolveComponentFromConfig('errorBoundary');
653
- return (React.createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }));
667
+ return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }, void 0));
654
668
  };
655
669
 
656
- function renderReact({ pageService, di }, context) {
657
- return (React.createElement(Provider, { context: context },
658
- React.createElement(DIContext.Provider, { value: di },
659
- React.createElement(Root, { pageService: pageService }))));
670
+ function renderReact({ pageService, di, initialState }, context) {
671
+ return (jsx(Provider, Object.assign({ context: context, serverState: initialState === null || initialState === void 0 ? void 0 : initialState.stores }, { children: jsx(DIContext.Provider, Object.assign({ value: di }, { children: jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0));
660
672
  }
661
673
 
662
674
  class ReactRenderServer {
@@ -669,7 +681,7 @@ class ReactRenderServer {
669
681
  }
670
682
  render(extractor) {
671
683
  var _a;
672
- let renderResult = renderReact({ pageService: this.pageService, di: this.di }, this.context);
684
+ let renderResult = renderReact({ pageService: this.pageService, di: this.di, initialState: null }, this.context);
673
685
  each((render) => {
674
686
  renderResult = render(renderResult);
675
687
  }, (_a = this.extendRender) !== null && _a !== void 0 ? _a : []);
@@ -773,6 +785,7 @@ RenderModule = RenderModule_1 = __decorate([
773
785
  deps: {
774
786
  resourcesRegistryCache: RESOURCES_REGISTRY_CACHE,
775
787
  resourceInlineThreshold: { token: RESOURCE_INLINE_OPTIONS, optional: true },
788
+ logger: LOGGER_TOKEN,
776
789
  },
777
790
  }),
778
791
  provide({
package/lib/server.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
- var React = require('react');
6
+ var react = require('react');
7
7
  var server$1 = require('react-dom/server');
8
8
  var core = require('@tramvai/core');
9
9
  var moduleCommon = require('@tramvai/module-common');
@@ -12,7 +12,7 @@ var moduleClientHints = require('@tramvai/module-client-hints');
12
12
  var tokensRender = require('@tramvai/tokens-render');
13
13
  var dippy = require('@tinkoff/dippy');
14
14
  var tokensServerPrivate = require('@tramvai/tokens-server-private');
15
- var react = require('@tramvai/react');
15
+ var react$1 = require('@tramvai/react');
16
16
  var url = require('@tinkoff/url');
17
17
  var userAgent = require('@tinkoff/user-agent');
18
18
  var isUndefined = require('@tinkoff/utils/is/undefined');
@@ -32,6 +32,7 @@ var path = require('path');
32
32
  var each = require('@tinkoff/utils/array/each');
33
33
  var path$1 = require('@tinkoff/utils/object/path');
34
34
  var inline_inline = require('./server_inline.inline.js');
35
+ var jsxRuntime = require('react/jsx-runtime');
35
36
  var state = require('@tramvai/state');
36
37
  var moduleRouter = require('@tramvai/module-router');
37
38
  var layoutFactory = require('@tinkoff/layout-factory');
@@ -57,7 +58,6 @@ function _interopNamespace(e) {
57
58
  return n;
58
59
  }
59
60
 
60
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
61
61
  var isUndefined__default = /*#__PURE__*/_interopDefaultLegacy(isUndefined);
62
62
  var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
63
63
  var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
@@ -130,7 +130,7 @@ const getResourceUrl = (resource) => {
130
130
  : resource.payload;
131
131
  };
132
132
  class ResourcesInliner {
133
- constructor({ resourcesRegistryCache, resourceInlineThreshold }) {
133
+ constructor({ resourcesRegistryCache, resourceInlineThreshold, logger }) {
134
134
  this.scheduleFileLoad = (resource, resourceInlineThreshold) => {
135
135
  const url = getResourceUrl(resource);
136
136
  const requestKey = `file${url}`;
@@ -152,6 +152,13 @@ class ResourcesInliner {
152
152
  this.resourcesRegistryCache.filesCache.set(url, processFile(resource, file));
153
153
  }
154
154
  this.resourcesRegistryCache.sizeCache.set(url, size);
155
+ })
156
+ .catch((error) => {
157
+ this.log.warn({
158
+ event: 'file-load-failed',
159
+ url,
160
+ error,
161
+ });
155
162
  })
156
163
  .finally(() => {
157
164
  this.resourcesRegistryCache.requestsCache.set(requestKey, undefined);
@@ -176,6 +183,13 @@ class ResourcesInliner {
176
183
  if (size < resourceInlineThreshold) {
177
184
  this.scheduleFileLoad(resource, resourceInlineThreshold);
178
185
  }
186
+ })
187
+ .catch((error) => {
188
+ this.log.warn({
189
+ event: 'file-content-length-load-failed',
190
+ url,
191
+ error,
192
+ });
179
193
  })
180
194
  .finally(() => {
181
195
  this.resourcesRegistryCache.requestsCache.set(requestKey, undefined);
@@ -185,6 +199,7 @@ class ResourcesInliner {
185
199
  };
186
200
  this.resourcesRegistryCache = resourcesRegistryCache;
187
201
  this.resourceInlineThreshold = resourceInlineThreshold;
202
+ this.log = logger('resources-inliner');
188
203
  }
189
204
  // Метод проверки, стоит ли добавлять preload-ресурс
190
205
  shouldAddResource(resource) {
@@ -657,19 +672,17 @@ const PageErrorBoundary = (props) => {
657
672
  const { children, fallback } = props;
658
673
  const url = moduleRouter.useUrl();
659
674
  const serializedError = state.useStore(PageErrorStore);
660
- const error = React.useMemo(() => {
675
+ const error = react.useMemo(() => {
661
676
  return serializedError && deserializeError(serializedError);
662
677
  }, [serializedError]);
663
- const errorHandlers = react.useDi({ token: react.ERROR_BOUNDARY_TOKEN, optional: true });
664
- const fallbackFromDi = react.useDi({ token: react.ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
665
- return (React__default["default"].createElement(react.UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, children));
678
+ const errorHandlers = react$1.useDi({ token: react$1.ERROR_BOUNDARY_TOKEN, optional: true });
679
+ const fallbackFromDi = react$1.useDi({ token: react$1.ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
680
+ return (jsxRuntime.jsx(react$1.UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
666
681
  };
667
- class RootComponent extends React.PureComponent {
682
+ class RootComponent extends react.PureComponent {
668
683
  render() {
669
684
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent, ErrorBoundaryComponent, } = this.props;
670
- return (React__default["default"].createElement(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent },
671
- React__default["default"].createElement(PageErrorBoundary, { fallback: ErrorBoundaryComponent },
672
- React__default["default"].createElement(PageComponent, null))));
685
+ return (jsxRuntime.jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsxRuntime.jsx(PageErrorBoundary, Object.assign({ fallback: ErrorBoundaryComponent }, { children: jsxRuntime.jsx(PageComponent, {}, void 0) }), void 0) }), void 0));
673
686
  }
674
687
  }
675
688
  const Root = ({ pageService }) => {
@@ -687,13 +700,11 @@ const Root = ({ pageService }) => {
687
700
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
688
701
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
689
702
  const ErrorBoundaryComponent = pageService.resolveComponentFromConfig('errorBoundary');
690
- return (React__default["default"].createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }));
703
+ return (jsxRuntime.jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent, ErrorBoundaryComponent: ErrorBoundaryComponent }, void 0));
691
704
  };
692
705
 
693
- function renderReact({ pageService, di }, context) {
694
- return (React__default["default"].createElement(state.Provider, { context: context },
695
- React__default["default"].createElement(react.DIContext.Provider, { value: di },
696
- React__default["default"].createElement(Root, { pageService: pageService }))));
706
+ function renderReact({ pageService, di, initialState }, context) {
707
+ return (jsxRuntime.jsx(state.Provider, Object.assign({ context: context, serverState: initialState === null || initialState === void 0 ? void 0 : initialState.stores }, { children: jsxRuntime.jsx(react$1.DIContext.Provider, Object.assign({ value: di }, { children: jsxRuntime.jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0));
697
708
  }
698
709
 
699
710
  class ReactRenderServer {
@@ -706,7 +717,7 @@ class ReactRenderServer {
706
717
  }
707
718
  render(extractor) {
708
719
  var _a;
709
- let renderResult = renderReact({ pageService: this.pageService, di: this.di }, this.context);
720
+ let renderResult = renderReact({ pageService: this.pageService, di: this.di, initialState: null }, this.context);
710
721
  each__default["default"]((render) => {
711
722
  renderResult = render(renderResult);
712
723
  }, (_a = this.extendRender) !== null && _a !== void 0 ? _a : []);
@@ -810,6 +821,7 @@ exports.RenderModule = RenderModule_1 = tslib.__decorate([
810
821
  deps: {
811
822
  resourcesRegistryCache: RESOURCES_REGISTRY_CACHE,
812
823
  resourceInlineThreshold: { token: tokensRender.RESOURCE_INLINE_OPTIONS, optional: true },
824
+ logger: moduleCommon.LOGGER_TOKEN,
813
825
  },
814
826
  }),
815
827
  core.provide({
@@ -932,7 +944,7 @@ exports.RenderModule = RenderModule_1 = tslib.__decorate([
932
944
  let body;
933
945
  try {
934
946
  log.info({ event: 'render-root-boundary' });
935
- body = server$1.renderToString(React.createElement(RootErrorBoundary, { error, url: url.parse(request.url) }));
947
+ body = server$1.renderToString(react.createElement(RootErrorBoundary, { error, url: url.parse(request.url) }));
936
948
  reply.status(error.httpStatus || error.status || 500);
937
949
  reply.header('Content-Type', 'text/html; charset=utf-8');
938
950
  reply.header('Content-Length', Buffer.byteLength(body, 'utf8'));
@@ -945,7 +957,7 @@ exports.RenderModule = RenderModule_1 = tslib.__decorate([
945
957
  };
946
958
  },
947
959
  deps: {
948
- RootErrorBoundary: { token: react.ROOT_ERROR_BOUNDARY_COMPONENT_TOKEN, optional: true },
960
+ RootErrorBoundary: { token: react$1.ROOT_ERROR_BOUNDARY_COMPONENT_TOKEN, optional: true },
949
961
  logger: moduleCommon.LOGGER_TOKEN,
950
962
  },
951
963
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-render",
3
- "version": "1.85.0",
3
+ "version": "1.90.2",
4
4
  "description": "",
5
5
  "browser": "lib/browser.js",
6
6
  "main": "lib/server.js",
@@ -24,13 +24,13 @@
24
24
  "@tinkoff/htmlpagebuilder": "0.4.22",
25
25
  "@tinkoff/layout-factory": "0.2.28",
26
26
  "@tinkoff/url": "0.7.37",
27
- "@tinkoff/user-agent": "0.3.290",
28
- "@tramvai/module-client-hints": "1.85.0",
29
- "@tramvai/module-router": "1.85.0",
30
- "@tramvai/react": "1.85.0",
27
+ "@tinkoff/user-agent": "0.3.303",
28
+ "@tramvai/module-client-hints": "1.90.2",
29
+ "@tramvai/module-router": "1.90.2",
30
+ "@tramvai/react": "1.90.2",
31
31
  "@tramvai/safe-strings": "0.4.3",
32
- "@tramvai/tokens-render": "1.85.0",
33
- "@tramvai/experiments": "1.85.0",
32
+ "@tramvai/tokens-render": "1.90.2",
33
+ "@tramvai/experiments": "1.90.2",
34
34
  "@types/loadable__server": "^5.12.6",
35
35
  "node-fetch": "^2.6.1"
36
36
  },
@@ -38,14 +38,14 @@
38
38
  "@tinkoff/dippy": "0.7.39",
39
39
  "@tinkoff/utils": "^2.1.2",
40
40
  "@tinkoff/react-hooks": "0.0.24",
41
- "@tramvai/cli": "1.85.0",
42
- "@tramvai/core": "1.85.0",
43
- "@tramvai/module-common": "1.85.0",
44
- "@tramvai/state": "1.85.0",
45
- "@tramvai/test-helpers": "1.85.0",
46
- "@tramvai/tokens-common": "1.85.0",
47
- "@tramvai/tokens-router": "1.85.0",
48
- "@tramvai/tokens-server-private": "1.85.0",
41
+ "@tramvai/cli": "1.90.2",
42
+ "@tramvai/core": "1.90.2",
43
+ "@tramvai/module-common": "1.90.2",
44
+ "@tramvai/state": "1.90.2",
45
+ "@tramvai/test-helpers": "1.90.2",
46
+ "@tramvai/tokens-common": "1.90.2",
47
+ "@tramvai/tokens-router": "1.90.2",
48
+ "@tramvai/tokens-server-private": "1.90.2",
49
49
  "express": "^4.17.1",
50
50
  "prop-types": "^15.6.2",
51
51
  "react": ">=16.8.0",