@tramvai/module-render 1.30.1 → 1.32.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 +14 -13
- package/lib/client/index.d.ts +3 -2
- package/lib/react/index.d.ts +2 -2
- package/lib/react/root.d.ts +3 -3
- package/lib/server/ReactRenderServer.d.ts +5 -4
- package/lib/server.es.js +14 -14
- package/lib/server.js +13 -13
- package/package.json +14 -14
package/lib/browser.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { Module, commandLineListTokens, DI_TOKEN } from '@tramvai/core';
|
|
3
|
-
import { LOGGER_TOKEN,
|
|
3
|
+
import { LOGGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/module-common';
|
|
4
4
|
import { DEFAULT_LAYOUT_COMPONENT, LAYOUT_OPTIONS, DEFAULT_FOOTER_COMPONENT, DEFAULT_HEADER_COMPONENT, RESOURCES_REGISTRY, CUSTOM_RENDER, EXTEND_RENDER, RENDERER_CALLBACK, RENDER_MODE } from '@tramvai/tokens-render';
|
|
5
5
|
export * from '@tramvai/tokens-render';
|
|
6
|
+
import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
6
7
|
import each from '@tinkoff/utils/array/each';
|
|
7
8
|
import React, { PureComponent, createElement, StrictMode, useEffect } from 'react';
|
|
8
9
|
import { Provider } from '@tramvai/state';
|
|
@@ -22,24 +23,24 @@ class RootComponent extends PureComponent {
|
|
|
22
23
|
}
|
|
23
24
|
const layoutWrapper = memoOne(withError(), strictEqual);
|
|
24
25
|
const pageWrapper = memoOne(withError(), strictEqual);
|
|
25
|
-
const Root = withError()(({
|
|
26
|
+
const Root = withError()(({ pageService }) => {
|
|
26
27
|
const { config } = useRoute();
|
|
27
|
-
const {
|
|
28
|
-
const PageComponent =
|
|
29
|
-
// Достаем компоненты
|
|
30
|
-
const LayoutComponent =
|
|
31
|
-
const HeaderComponent =
|
|
32
|
-
const FooterComponent =
|
|
28
|
+
const { pageComponent, layoutComponent = 'layoutDefault', headerComponent = 'headerDefault', footerComponent = 'footerDefault', } = config;
|
|
29
|
+
const PageComponent = pageService.getComponent(pageComponent);
|
|
30
|
+
// Достаем компоненты для текущей страницы, либо берем default реализации
|
|
31
|
+
const LayoutComponent = pageService.getComponent(layoutComponent) || pageService.getComponent('layoutDefault');
|
|
32
|
+
const HeaderComponent = pageService.getComponent(headerComponent) || pageService.getComponent('headerDefault');
|
|
33
|
+
const FooterComponent = pageService.getComponent(footerComponent) || pageService.getComponent('footerDefault');
|
|
33
34
|
if (!PageComponent) {
|
|
34
35
|
throw new Error(`Page component '${pageComponent}' not found`);
|
|
35
36
|
}
|
|
36
37
|
return (React.createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: layoutWrapper(LayoutComponent), PageComponent: pageWrapper(PageComponent) }));
|
|
37
38
|
});
|
|
38
39
|
|
|
39
|
-
function renderReact({
|
|
40
|
+
function renderReact({ pageService, di }, context) {
|
|
40
41
|
return (React.createElement(Provider, { context: context },
|
|
41
42
|
React.createElement(DIContext.Provider, { value: di },
|
|
42
|
-
React.createElement(Root, {
|
|
43
|
+
React.createElement(Root, { pageService: pageService }))));
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
const legacyRenderer = ({ element, container, callback }) => hydrate(element, container, callback);
|
|
@@ -69,8 +70,8 @@ const blockingRenderer = rendererFactory(ReactDOM.createBlockingRoot);
|
|
|
69
70
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
71
|
const concurrentRenderer = rendererFactory(ReactDOM.createRoot);
|
|
71
72
|
|
|
72
|
-
function rendering({
|
|
73
|
-
let renderResult = renderReact({
|
|
73
|
+
function rendering({ pageService, log, consumerContext, customRender, extendRender, di, mode, rendererCallback, }) {
|
|
74
|
+
let renderResult = renderReact({ pageService, di }, consumerContext);
|
|
74
75
|
if (extendRender) {
|
|
75
76
|
each((render) => {
|
|
76
77
|
renderResult = render(renderResult);
|
|
@@ -191,7 +192,7 @@ RenderModule = RenderModule_1 = __decorate([
|
|
|
191
192
|
};
|
|
192
193
|
},
|
|
193
194
|
deps: {
|
|
194
|
-
|
|
195
|
+
pageService: PAGE_SERVICE_TOKEN,
|
|
195
196
|
log: LOGGER_TOKEN,
|
|
196
197
|
customRender: { token: CUSTOM_RENDER, optional: true },
|
|
197
198
|
extendRender: { token: EXTEND_RENDER, optional: true },
|
package/lib/client/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EXTEND_RENDER, RenderMode, RENDERER_CALLBACK } from '@tramvai/tokens-render';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import type { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
3
|
+
export declare function rendering({ pageService, log, consumerContext, customRender, extendRender, di, mode, rendererCallback, }: {
|
|
4
|
+
pageService: typeof PAGE_SERVICE_TOKEN;
|
|
4
5
|
log: any;
|
|
5
6
|
consumerContext: any;
|
|
6
7
|
extendRender?: typeof EXTEND_RENDER;
|
package/lib/react/index.d.ts
CHANGED
package/lib/react/root.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
export declare const Root: ({
|
|
4
|
-
|
|
2
|
+
import type { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
3
|
+
export declare const Root: ({ pageService }: {
|
|
4
|
+
pageService: typeof PAGE_SERVICE_TOKEN;
|
|
5
5
|
children?: React.ReactNode;
|
|
6
6
|
}) => JSX.Element;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { DI_TOKEN } from '@tramvai/core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { CONTEXT_TOKEN } from '@tramvai/module-common';
|
|
3
3
|
import type { EXTEND_RENDER, CUSTOM_RENDER } from '@tramvai/tokens-render';
|
|
4
|
+
import type { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
4
5
|
import type { ChunkExtractor } from '@loadable/server';
|
|
5
6
|
export declare class ReactRenderServer {
|
|
6
7
|
customRender: typeof CUSTOM_RENDER;
|
|
7
8
|
extendRender: typeof EXTEND_RENDER;
|
|
8
9
|
context: typeof CONTEXT_TOKEN;
|
|
9
|
-
|
|
10
|
+
pageService: typeof PAGE_SERVICE_TOKEN;
|
|
10
11
|
di: typeof DI_TOKEN;
|
|
11
|
-
constructor({
|
|
12
|
-
|
|
12
|
+
constructor({ pageService, context, customRender, extendRender, di }: {
|
|
13
|
+
pageService: any;
|
|
13
14
|
context: any;
|
|
14
15
|
customRender: any;
|
|
15
16
|
extendRender: any;
|
package/lib/server.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { Module, commandLineListTokens, DI_TOKEN, provide } from '@tramvai/core';
|
|
3
|
-
import { CREATE_CACHE_TOKEN, RESPONSE_MANAGER_TOKEN, CONTEXT_TOKEN
|
|
3
|
+
import { CREATE_CACHE_TOKEN, RESPONSE_MANAGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/module-common';
|
|
4
4
|
import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
5
5
|
import { ClientHintsModule, USER_AGENT_TOKEN } from '@tramvai/module-client-hints';
|
|
6
6
|
import { ResourceType, ResourceSlot, DEFAULT_LAYOUT_COMPONENT, LAYOUT_OPTIONS, DEFAULT_FOOTER_COMPONENT, DEFAULT_HEADER_COMPONENT, RESOURCES_REGISTRY, RESOURCE_INLINE_OPTIONS, RENDER_SLOTS, POLYFILL_CONDITION, HTML_ATTRS, CUSTOM_RENDER, EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
@@ -607,29 +607,29 @@ class RootComponent extends PureComponent {
|
|
|
607
607
|
}
|
|
608
608
|
const layoutWrapper = memoOne(withError(), strictEqual);
|
|
609
609
|
const pageWrapper = memoOne(withError(), strictEqual);
|
|
610
|
-
const Root = withError()(({
|
|
610
|
+
const Root = withError()(({ pageService }) => {
|
|
611
611
|
const { config } = useRoute();
|
|
612
|
-
const {
|
|
613
|
-
const PageComponent =
|
|
614
|
-
// Достаем компоненты
|
|
615
|
-
const LayoutComponent =
|
|
616
|
-
const HeaderComponent =
|
|
617
|
-
const FooterComponent =
|
|
612
|
+
const { pageComponent, layoutComponent = 'layoutDefault', headerComponent = 'headerDefault', footerComponent = 'footerDefault', } = config;
|
|
613
|
+
const PageComponent = pageService.getComponent(pageComponent);
|
|
614
|
+
// Достаем компоненты для текущей страницы, либо берем default реализации
|
|
615
|
+
const LayoutComponent = pageService.getComponent(layoutComponent) || pageService.getComponent('layoutDefault');
|
|
616
|
+
const HeaderComponent = pageService.getComponent(headerComponent) || pageService.getComponent('headerDefault');
|
|
617
|
+
const FooterComponent = pageService.getComponent(footerComponent) || pageService.getComponent('footerDefault');
|
|
618
618
|
if (!PageComponent) {
|
|
619
619
|
throw new Error(`Page component '${pageComponent}' not found`);
|
|
620
620
|
}
|
|
621
621
|
return (React.createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: layoutWrapper(LayoutComponent), PageComponent: pageWrapper(PageComponent) }));
|
|
622
622
|
});
|
|
623
623
|
|
|
624
|
-
function renderReact({
|
|
624
|
+
function renderReact({ pageService, di }, context) {
|
|
625
625
|
return (React.createElement(Provider, { context: context },
|
|
626
626
|
React.createElement(DIContext.Provider, { value: di },
|
|
627
|
-
React.createElement(Root, {
|
|
627
|
+
React.createElement(Root, { pageService: pageService }))));
|
|
628
628
|
}
|
|
629
629
|
|
|
630
630
|
class ReactRenderServer {
|
|
631
|
-
constructor({
|
|
632
|
-
this.
|
|
631
|
+
constructor({ pageService, context, customRender, extendRender, di }) {
|
|
632
|
+
this.pageService = pageService;
|
|
633
633
|
this.context = context;
|
|
634
634
|
this.customRender = customRender;
|
|
635
635
|
this.extendRender = extendRender;
|
|
@@ -637,7 +637,7 @@ class ReactRenderServer {
|
|
|
637
637
|
}
|
|
638
638
|
render(extractor) {
|
|
639
639
|
var _a;
|
|
640
|
-
let renderResult = renderReact({
|
|
640
|
+
let renderResult = renderReact({ pageService: this.pageService, di: this.di }, this.context);
|
|
641
641
|
each((render) => {
|
|
642
642
|
renderResult = render(renderResult);
|
|
643
643
|
}, (_a = this.extendRender) !== null && _a !== void 0 ? _a : []);
|
|
@@ -769,7 +769,7 @@ RenderModule = RenderModule_1 = __decorate([
|
|
|
769
769
|
useClass: ReactRenderServer,
|
|
770
770
|
deps: {
|
|
771
771
|
context: CONTEXT_TOKEN,
|
|
772
|
-
|
|
772
|
+
pageService: PAGE_SERVICE_TOKEN,
|
|
773
773
|
customRender: { token: CUSTOM_RENDER, optional: true },
|
|
774
774
|
extendRender: { token: EXTEND_RENDER, optional: true },
|
|
775
775
|
di: DI_TOKEN,
|
package/lib/server.js
CHANGED
|
@@ -646,29 +646,29 @@ class RootComponent extends React.PureComponent {
|
|
|
646
646
|
}
|
|
647
647
|
const layoutWrapper = memoOne__default["default"](react.withError(), strictEqual__default["default"]);
|
|
648
648
|
const pageWrapper = memoOne__default["default"](react.withError(), strictEqual__default["default"]);
|
|
649
|
-
const Root = react.withError()(({
|
|
649
|
+
const Root = react.withError()(({ pageService }) => {
|
|
650
650
|
const { config } = moduleRouter.useRoute();
|
|
651
|
-
const {
|
|
652
|
-
const PageComponent =
|
|
653
|
-
// Достаем компоненты
|
|
654
|
-
const LayoutComponent =
|
|
655
|
-
const HeaderComponent =
|
|
656
|
-
const FooterComponent =
|
|
651
|
+
const { pageComponent, layoutComponent = 'layoutDefault', headerComponent = 'headerDefault', footerComponent = 'footerDefault', } = config;
|
|
652
|
+
const PageComponent = pageService.getComponent(pageComponent);
|
|
653
|
+
// Достаем компоненты для текущей страницы, либо берем default реализации
|
|
654
|
+
const LayoutComponent = pageService.getComponent(layoutComponent) || pageService.getComponent('layoutDefault');
|
|
655
|
+
const HeaderComponent = pageService.getComponent(headerComponent) || pageService.getComponent('headerDefault');
|
|
656
|
+
const FooterComponent = pageService.getComponent(footerComponent) || pageService.getComponent('footerDefault');
|
|
657
657
|
if (!PageComponent) {
|
|
658
658
|
throw new Error(`Page component '${pageComponent}' not found`);
|
|
659
659
|
}
|
|
660
660
|
return (React__default["default"].createElement(RootComponent, { HeaderComponent: HeaderComponent, FooterComponent: FooterComponent, LayoutComponent: layoutWrapper(LayoutComponent), PageComponent: pageWrapper(PageComponent) }));
|
|
661
661
|
});
|
|
662
662
|
|
|
663
|
-
function renderReact({
|
|
663
|
+
function renderReact({ pageService, di }, context) {
|
|
664
664
|
return (React__default["default"].createElement(state.Provider, { context: context },
|
|
665
665
|
React__default["default"].createElement(react.DIContext.Provider, { value: di },
|
|
666
|
-
React__default["default"].createElement(Root, {
|
|
666
|
+
React__default["default"].createElement(Root, { pageService: pageService }))));
|
|
667
667
|
}
|
|
668
668
|
|
|
669
669
|
class ReactRenderServer {
|
|
670
|
-
constructor({
|
|
671
|
-
this.
|
|
670
|
+
constructor({ pageService, context, customRender, extendRender, di }) {
|
|
671
|
+
this.pageService = pageService;
|
|
672
672
|
this.context = context;
|
|
673
673
|
this.customRender = customRender;
|
|
674
674
|
this.extendRender = extendRender;
|
|
@@ -676,7 +676,7 @@ class ReactRenderServer {
|
|
|
676
676
|
}
|
|
677
677
|
render(extractor) {
|
|
678
678
|
var _a;
|
|
679
|
-
let renderResult = renderReact({
|
|
679
|
+
let renderResult = renderReact({ pageService: this.pageService, di: this.di }, this.context);
|
|
680
680
|
each__default["default"]((render) => {
|
|
681
681
|
renderResult = render(renderResult);
|
|
682
682
|
}, (_a = this.extendRender) !== null && _a !== void 0 ? _a : []);
|
|
@@ -808,7 +808,7 @@ exports.RenderModule = RenderModule_1 = tslib.__decorate([
|
|
|
808
808
|
useClass: ReactRenderServer,
|
|
809
809
|
deps: {
|
|
810
810
|
context: moduleCommon.CONTEXT_TOKEN,
|
|
811
|
-
|
|
811
|
+
pageService: tokensRouter.PAGE_SERVICE_TOKEN,
|
|
812
812
|
customRender: { token: tokensRender.CUSTOM_RENDER, optional: true },
|
|
813
813
|
extendRender: { token: tokensRender.EXTEND_RENDER, optional: true },
|
|
814
814
|
di: core.DI_TOKEN,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-render",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
@@ -24,26 +24,26 @@
|
|
|
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.
|
|
28
|
-
"@tramvai/module-client-hints": "1.
|
|
29
|
-
"@tramvai/module-router": "1.
|
|
30
|
-
"@tramvai/react": "1.
|
|
27
|
+
"@tinkoff/user-agent": "0.3.156",
|
|
28
|
+
"@tramvai/module-client-hints": "1.32.1",
|
|
29
|
+
"@tramvai/module-router": "1.32.1",
|
|
30
|
+
"@tramvai/react": "1.32.1",
|
|
31
31
|
"@tramvai/safe-strings": "0.4.3",
|
|
32
|
-
"@tramvai/tokens-render": "1.
|
|
33
|
-
"@tramvai/experiments": "1.
|
|
32
|
+
"@tramvai/tokens-render": "1.32.1",
|
|
33
|
+
"@tramvai/experiments": "1.32.1",
|
|
34
34
|
"@types/loadable__server": "^5.12.6",
|
|
35
35
|
"node-fetch": "^2.6.1"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@tinkoff/dippy": "0.7.35",
|
|
39
39
|
"@tinkoff/utils": "^2.1.2",
|
|
40
|
-
"@tramvai/cli": "1.
|
|
41
|
-
"@tramvai/core": "1.
|
|
42
|
-
"@tramvai/module-common": "1.
|
|
43
|
-
"@tramvai/state": "1.
|
|
44
|
-
"@tramvai/test-helpers": "1.
|
|
45
|
-
"@tramvai/tokens-common": "1.
|
|
46
|
-
"@tramvai/tokens-router": "1.
|
|
40
|
+
"@tramvai/cli": "1.32.1",
|
|
41
|
+
"@tramvai/core": "1.32.1",
|
|
42
|
+
"@tramvai/module-common": "1.32.1",
|
|
43
|
+
"@tramvai/state": "1.32.1",
|
|
44
|
+
"@tramvai/test-helpers": "1.32.1",
|
|
45
|
+
"@tramvai/tokens-common": "1.32.1",
|
|
46
|
+
"@tramvai/tokens-router": "1.32.1",
|
|
47
47
|
"prop-types": "^15.6.2",
|
|
48
48
|
"react": ">=16.8.0",
|
|
49
49
|
"react-dom": ">=16.8.0",
|