@tramvai/module-render 2.24.3 → 2.25.1

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
@@ -16,7 +16,7 @@ import { composeLayoutOptions, createLayout } from '@tinkoff/layout-factory';
16
16
  class RootComponent extends PureComponent {
17
17
  render() {
18
18
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent } = this.props;
19
- return (jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsx(PageComponent, {}, void 0) }), void 0));
19
+ return (jsx(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent, children: jsx(PageComponent, {}) }));
20
20
  }
21
21
  }
22
22
  const Root = ({ pageService }) => {
@@ -24,7 +24,6 @@ const Root = ({ pageService }) => {
24
24
  const { pageComponent } = config;
25
25
  let PageComponent = pageService.getComponent(pageComponent);
26
26
  if (!PageComponent) {
27
- // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop
28
27
  PageComponent = () => {
29
28
  throw new Error(`Page component '${pageComponent}' not found`);
30
29
  };
@@ -33,7 +32,7 @@ const Root = ({ pageService }) => {
33
32
  const LayoutComponent = pageService.resolveComponentFromConfig('layout');
34
33
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
35
34
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
36
- return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }, void 0));
35
+ return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }));
37
36
  };
38
37
 
39
38
  function serializeError(error) {
@@ -62,12 +61,12 @@ const PageErrorBoundary = (props) => {
62
61
  const errorHandlers = useDi({ token: ERROR_BOUNDARY_TOKEN, optional: true });
63
62
  const fallbackFromDi = useDi({ token: ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
64
63
  const fallback = pageService.resolveComponentFromConfig('errorBoundary');
65
- return (jsx(UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
64
+ return (jsx(UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi, children: children }));
66
65
  };
67
66
 
68
67
  function renderReact({ pageService, di }, context) {
69
68
  const serverState = typeof window !== 'undefined' ? context.getState() : undefined;
70
- return (jsx(Provider, Object.assign({ context: context, serverState: serverState }, { children: jsx(DIContext.Provider, Object.assign({ value: di }, { children: jsx(PageErrorBoundary, Object.assign({ pageService: pageService }, { children: jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0) }), void 0));
69
+ return (jsx(Provider, { context: context, serverState: serverState, children: jsx(DIContext.Provider, { value: di, children: jsx(PageErrorBoundary, { pageService: pageService, children: jsx(Root, { pageService: pageService }) }) }) }));
71
70
  }
72
71
 
73
72
  let hydrateRoot;
@@ -1,3 +1,4 @@
1
+ import type { ExtractDependencyType } from '@tinkoff/dippy';
1
2
  import type { DI_TOKEN } from '@tramvai/core';
2
3
  import type { CONTEXT_TOKEN } from '@tramvai/module-common';
3
4
  import type { EXTEND_RENDER, CUSTOM_RENDER } from '@tramvai/tokens-render';
@@ -5,7 +6,7 @@ import type { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
5
6
  import type { ChunkExtractor } from '@loadable/server';
6
7
  export declare class ReactRenderServer {
7
8
  customRender: typeof CUSTOM_RENDER;
8
- extendRender: typeof EXTEND_RENDER;
9
+ extendRender: ExtractDependencyType<typeof EXTEND_RENDER>;
9
10
  context: typeof CONTEXT_TOKEN;
10
11
  pageService: typeof PAGE_SERVICE_TOKEN;
11
12
  di: typeof DI_TOKEN;
package/lib/server.es.js CHANGED
@@ -19,7 +19,7 @@ import startsWith from '@tinkoff/utils/string/startsWith';
19
19
  import toArray from '@tinkoff/utils/array/toArray';
20
20
  import flatten from '@tinkoff/utils/array/flatten';
21
21
  import { buildPage, staticRender, dynamicRender } from '@tinkoff/htmlpagebuilder';
22
- import { safeDehydrate } from '@tramvai/safe-strings';
22
+ import { safeStringify } from '@tramvai/safe-strings';
23
23
  import { ChunkExtractor } from '@loadable/server';
24
24
  import has from '@tinkoff/utils/object/has';
25
25
  import last from '@tinkoff/utils/array/last';
@@ -573,9 +573,10 @@ class PageBuilder {
573
573
  }
574
574
  dehydrateState() {
575
575
  this.resourcesRegistry.register({
576
- type: ResourceType.inlineScript,
576
+ type: ResourceType.asIs,
577
577
  slot: ResourceSlot.BODY_END,
578
- payload: `var initialState = '${safeDehydrate(this.context.dehydrate().dispatcher)}'`,
578
+ // String much better than big object, source https://v8.dev/blog/cost-of-javascript-2019#json
579
+ payload: `<script id="__TRAMVAI_STATE__" type="application/json">${safeStringify(this.context.dehydrate().dispatcher)}</script>`,
579
580
  });
580
581
  }
581
582
  async fetchChunksInfo(extractor) {
@@ -643,7 +644,7 @@ const htmlPageSchemaFactory = ({ htmlAttrs, }) => {
643
644
  class RootComponent extends PureComponent {
644
645
  render() {
645
646
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent } = this.props;
646
- return (jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsx(PageComponent, {}, void 0) }), void 0));
647
+ return (jsx(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent, children: jsx(PageComponent, {}) }));
647
648
  }
648
649
  }
649
650
  const Root = ({ pageService }) => {
@@ -651,7 +652,6 @@ const Root = ({ pageService }) => {
651
652
  const { pageComponent } = config;
652
653
  let PageComponent = pageService.getComponent(pageComponent);
653
654
  if (!PageComponent) {
654
- // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop
655
655
  PageComponent = () => {
656
656
  throw new Error(`Page component '${pageComponent}' not found`);
657
657
  };
@@ -660,7 +660,7 @@ const Root = ({ pageService }) => {
660
660
  const LayoutComponent = pageService.resolveComponentFromConfig('layout');
661
661
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
662
662
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
663
- return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }, void 0));
663
+ return (jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }));
664
664
  };
665
665
 
666
666
  function serializeError(error) {
@@ -689,12 +689,12 @@ const PageErrorBoundary = (props) => {
689
689
  const errorHandlers = useDi({ token: ERROR_BOUNDARY_TOKEN, optional: true });
690
690
  const fallbackFromDi = useDi({ token: ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
691
691
  const fallback = pageService.resolveComponentFromConfig('errorBoundary');
692
- return (jsx(UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
692
+ return (jsx(UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi, children: children }));
693
693
  };
694
694
 
695
695
  function renderReact({ pageService, di }, context) {
696
696
  const serverState = typeof window !== 'undefined' ? context.getState() : undefined;
697
- return (jsx(Provider, Object.assign({ context: context, serverState: serverState }, { children: jsx(DIContext.Provider, Object.assign({ value: di }, { children: jsx(PageErrorBoundary, Object.assign({ pageService: pageService }, { children: jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0) }), void 0));
697
+ return (jsx(Provider, { context: context, serverState: serverState, children: jsx(DIContext.Provider, { value: di, children: jsx(PageErrorBoundary, { pageService: pageService, children: jsx(Root, { pageService: pageService }) }) }) }));
698
698
  }
699
699
 
700
700
  class ReactRenderServer {
package/lib/server.js CHANGED
@@ -609,9 +609,10 @@ class PageBuilder {
609
609
  }
610
610
  dehydrateState() {
611
611
  this.resourcesRegistry.register({
612
- type: tokensRender.ResourceType.inlineScript,
612
+ type: tokensRender.ResourceType.asIs,
613
613
  slot: tokensRender.ResourceSlot.BODY_END,
614
- payload: `var initialState = '${safeStrings.safeDehydrate(this.context.dehydrate().dispatcher)}'`,
614
+ // String much better than big object, source https://v8.dev/blog/cost-of-javascript-2019#json
615
+ payload: `<script id="__TRAMVAI_STATE__" type="application/json">${safeStrings.safeStringify(this.context.dehydrate().dispatcher)}</script>`,
615
616
  });
616
617
  }
617
618
  async fetchChunksInfo(extractor) {
@@ -679,7 +680,7 @@ const htmlPageSchemaFactory = ({ htmlAttrs, }) => {
679
680
  class RootComponent extends react.PureComponent {
680
681
  render() {
681
682
  const { LayoutComponent, PageComponent, HeaderComponent, FooterComponent } = this.props;
682
- return (jsxRuntime.jsx(LayoutComponent, Object.assign({ Header: HeaderComponent, Footer: FooterComponent }, { children: jsxRuntime.jsx(PageComponent, {}, void 0) }), void 0));
683
+ return (jsxRuntime.jsx(LayoutComponent, { Header: HeaderComponent, Footer: FooterComponent, children: jsxRuntime.jsx(PageComponent, {}) }));
683
684
  }
684
685
  }
685
686
  const Root = ({ pageService }) => {
@@ -687,7 +688,6 @@ const Root = ({ pageService }) => {
687
688
  const { pageComponent } = config;
688
689
  let PageComponent = pageService.getComponent(pageComponent);
689
690
  if (!PageComponent) {
690
- // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop
691
691
  PageComponent = () => {
692
692
  throw new Error(`Page component '${pageComponent}' not found`);
693
693
  };
@@ -696,7 +696,7 @@ const Root = ({ pageService }) => {
696
696
  const LayoutComponent = pageService.resolveComponentFromConfig('layout');
697
697
  const HeaderComponent = pageService.resolveComponentFromConfig('header');
698
698
  const FooterComponent = pageService.resolveComponentFromConfig('footer');
699
- return (jsxRuntime.jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }, void 0));
699
+ return (jsxRuntime.jsx(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: LayoutComponent, PageComponent: PageComponent }));
700
700
  };
701
701
 
702
702
  function serializeError(error) {
@@ -725,12 +725,12 @@ const PageErrorBoundary = (props) => {
725
725
  const errorHandlers = react$1.useDi({ token: react$1.ERROR_BOUNDARY_TOKEN, optional: true });
726
726
  const fallbackFromDi = react$1.useDi({ token: react$1.ERROR_BOUNDARY_FALLBACK_COMPONENT_TOKEN, optional: true });
727
727
  const fallback = pageService.resolveComponentFromConfig('errorBoundary');
728
- return (jsxRuntime.jsx(react$1.UniversalErrorBoundary, Object.assign({ url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi }, { children: children }), void 0));
728
+ return (jsxRuntime.jsx(react$1.UniversalErrorBoundary, { url: url, error: error, errorHandlers: errorHandlers, fallback: fallback, fallbackFromDi: fallbackFromDi, children: children }));
729
729
  };
730
730
 
731
731
  function renderReact({ pageService, di }, context) {
732
732
  const serverState = typeof window !== 'undefined' ? context.getState() : undefined;
733
- return (jsxRuntime.jsx(state.Provider, Object.assign({ context: context, serverState: serverState }, { children: jsxRuntime.jsx(react$1.DIContext.Provider, Object.assign({ value: di }, { children: jsxRuntime.jsx(PageErrorBoundary, Object.assign({ pageService: pageService }, { children: jsxRuntime.jsx(Root, { pageService: pageService }, void 0) }), void 0) }), void 0) }), void 0));
733
+ return (jsxRuntime.jsx(state.Provider, { context: context, serverState: serverState, children: jsxRuntime.jsx(react$1.DIContext.Provider, { value: di, children: jsxRuntime.jsx(PageErrorBoundary, { pageService: pageService, children: jsxRuntime.jsx(Root, { pageService: pageService }) }) }) }));
734
734
  }
735
735
 
736
736
  class ReactRenderServer {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-render",
3
- "version": "2.24.3",
3
+ "version": "2.25.1",
4
4
  "description": "",
5
5
  "browser": "lib/browser.js",
6
6
  "main": "lib/server.js",
@@ -23,36 +23,36 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@loadable/server": "^5.15.0",
26
- "@tinkoff/htmlpagebuilder": "0.5.2",
27
- "@tinkoff/layout-factory": "0.3.2",
28
- "@tinkoff/url": "0.8.2",
29
- "@tinkoff/user-agent": "0.4.60",
30
- "@tramvai/module-client-hints": "2.24.3",
31
- "@tramvai/module-router": "2.24.3",
32
- "@tramvai/react": "2.24.3",
33
- "@tramvai/safe-strings": "0.5.2",
34
- "@tramvai/tokens-render": "2.24.3",
35
- "@tramvai/experiments": "2.24.3",
26
+ "@tinkoff/htmlpagebuilder": "0.5.3",
27
+ "@tinkoff/layout-factory": "0.3.3",
28
+ "@tinkoff/url": "0.8.3",
29
+ "@tinkoff/user-agent": "0.4.62",
30
+ "@tramvai/module-client-hints": "2.25.1",
31
+ "@tramvai/module-router": "2.25.1",
32
+ "@tramvai/react": "2.25.1",
33
+ "@tramvai/safe-strings": "0.5.4",
34
+ "@tramvai/tokens-render": "2.25.1",
35
+ "@tramvai/experiments": "2.25.1",
36
36
  "@types/loadable__server": "^5.12.6",
37
37
  "node-fetch": "^2.6.1"
38
38
  },
39
39
  "peerDependencies": {
40
- "@tinkoff/dippy": "0.8.3",
40
+ "@tinkoff/dippy": "0.8.5",
41
41
  "@tinkoff/utils": "^2.1.2",
42
- "@tinkoff/react-hooks": "0.1.2",
43
- "@tramvai/cli": "2.24.3",
44
- "@tramvai/core": "2.24.3",
45
- "@tramvai/module-common": "2.24.3",
46
- "@tramvai/state": "2.24.3",
47
- "@tramvai/test-helpers": "2.24.3",
48
- "@tramvai/tokens-common": "2.24.3",
49
- "@tramvai/tokens-router": "2.24.3",
50
- "@tramvai/tokens-server-private": "2.24.3",
42
+ "@tinkoff/react-hooks": "0.1.3",
43
+ "@tramvai/cli": "2.25.1",
44
+ "@tramvai/core": "2.25.1",
45
+ "@tramvai/module-common": "2.25.1",
46
+ "@tramvai/state": "2.25.1",
47
+ "@tramvai/test-helpers": "2.25.1",
48
+ "@tramvai/tokens-common": "2.25.1",
49
+ "@tramvai/tokens-router": "2.25.1",
50
+ "@tramvai/tokens-server-private": "2.25.1",
51
51
  "express": "^4.17.1",
52
52
  "prop-types": "^15.6.2",
53
53
  "react": ">=16.14.0",
54
54
  "react-dom": ">=16.14.0",
55
- "tslib": "^2.0.3"
55
+ "tslib": "^2.4.0"
56
56
  },
57
57
  "devDependencies": {},
58
58
  "gitHead": "8e826a214c87b188fc4d254cdd8f2a2b2c55f3a8",