@tramvai/module-page-render-mode 2.70.1 → 2.72.0

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.
@@ -0,0 +1,85 @@
1
+ import { declareModule, provide, commandLineListTokens } from '@tramvai/core';
2
+ import { ENV_USED_TOKEN, ENV_MANAGER_TOKEN, COMPONENT_REGISTRY_TOKEN } from '@tramvai/tokens-common';
3
+ import { TRAMVAI_RENDER_MODE } from '@tramvai/tokens-render';
4
+ import { ROUTER_TOKEN } from '@tramvai/tokens-router';
5
+ import { PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT } from './tokens.browser.js';
6
+
7
+ // default internal bundle, used for File-System components
8
+ const FALLBACK_GROUP = '__default';
9
+ // just some unic name
10
+ const FALLBACK_NAME = '__csr_fallback__';
11
+ // just some unic path
12
+ const FALLBACK_PATH = '/__csr_fallback__/';
13
+ // env for force CSR mode
14
+ const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
15
+ const FALLBACK_ROUTE = {
16
+ name: FALLBACK_NAME,
17
+ path: FALLBACK_PATH,
18
+ config: {
19
+ bundle: FALLBACK_GROUP,
20
+ pageComponent: FALLBACK_NAME,
21
+ },
22
+ };
23
+ /**
24
+ * Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
25
+ */
26
+ const ForceCSRModule = declareModule({
27
+ name: 'ForceCSRModule',
28
+ providers: [
29
+ provide({
30
+ provide: ENV_USED_TOKEN,
31
+ useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
32
+ }),
33
+ // set CSR mode globally
34
+ provide({
35
+ provide: TRAMVAI_RENDER_MODE,
36
+ useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
37
+ deps: {
38
+ envManager: ENV_MANAGER_TOKEN,
39
+ },
40
+ }),
41
+ // register CSR fallback component
42
+ provide({
43
+ provide: commandLineListTokens.listen,
44
+ useFactory: ({ componentRegistry, fallback, envManager }) => {
45
+ return function addCSRFallbackCompnent() {
46
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
47
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
48
+ }
49
+ };
50
+ },
51
+ deps: {
52
+ componentRegistry: COMPONENT_REGISTRY_TOKEN,
53
+ fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
54
+ envManager: ENV_MANAGER_TOKEN,
55
+ },
56
+ }),
57
+ // add CSR fallback route
58
+ provide({
59
+ provide: commandLineListTokens.customerStart,
60
+ useFactory: ({ router, envManager }) => {
61
+ return function addCSRFallbackRoute() {
62
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
63
+ router.registerHook('beforeResolve', async () => {
64
+ router.addRoute(FALLBACK_ROUTE);
65
+ });
66
+ }
67
+ };
68
+ },
69
+ deps: {
70
+ router: ROUTER_TOKEN,
71
+ envManager: ENV_MANAGER_TOKEN,
72
+ },
73
+ }),
74
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
75
+ {
76
+ provide: 'router bundleInfoAdditional',
77
+ useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
78
+ deps: {
79
+ envManager: ENV_MANAGER_TOKEN,
80
+ },
81
+ },
82
+ ],
83
+ });
84
+
85
+ export { ForceCSRModule };
@@ -0,0 +1,85 @@
1
+ import { declareModule, provide, commandLineListTokens } from '@tramvai/core';
2
+ import { ENV_USED_TOKEN, ENV_MANAGER_TOKEN, COMPONENT_REGISTRY_TOKEN } from '@tramvai/tokens-common';
3
+ import { TRAMVAI_RENDER_MODE } from '@tramvai/tokens-render';
4
+ import { ROUTER_TOKEN } from '@tramvai/tokens-router';
5
+ import { PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT } from './tokens.es.js';
6
+
7
+ // default internal bundle, used for File-System components
8
+ const FALLBACK_GROUP = '__default';
9
+ // just some unic name
10
+ const FALLBACK_NAME = '__csr_fallback__';
11
+ // just some unic path
12
+ const FALLBACK_PATH = '/__csr_fallback__/';
13
+ // env for force CSR mode
14
+ const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
15
+ const FALLBACK_ROUTE = {
16
+ name: FALLBACK_NAME,
17
+ path: FALLBACK_PATH,
18
+ config: {
19
+ bundle: FALLBACK_GROUP,
20
+ pageComponent: FALLBACK_NAME,
21
+ },
22
+ };
23
+ /**
24
+ * Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
25
+ */
26
+ const ForceCSRModule = declareModule({
27
+ name: 'ForceCSRModule',
28
+ providers: [
29
+ provide({
30
+ provide: ENV_USED_TOKEN,
31
+ useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
32
+ }),
33
+ // set CSR mode globally
34
+ provide({
35
+ provide: TRAMVAI_RENDER_MODE,
36
+ useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
37
+ deps: {
38
+ envManager: ENV_MANAGER_TOKEN,
39
+ },
40
+ }),
41
+ // register CSR fallback component
42
+ provide({
43
+ provide: commandLineListTokens.listen,
44
+ useFactory: ({ componentRegistry, fallback, envManager }) => {
45
+ return function addCSRFallbackCompnent() {
46
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
47
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
48
+ }
49
+ };
50
+ },
51
+ deps: {
52
+ componentRegistry: COMPONENT_REGISTRY_TOKEN,
53
+ fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
54
+ envManager: ENV_MANAGER_TOKEN,
55
+ },
56
+ }),
57
+ // add CSR fallback route
58
+ provide({
59
+ provide: commandLineListTokens.customerStart,
60
+ useFactory: ({ router, envManager }) => {
61
+ return function addCSRFallbackRoute() {
62
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
63
+ router.registerHook('beforeResolve', async () => {
64
+ router.addRoute(FALLBACK_ROUTE);
65
+ });
66
+ }
67
+ };
68
+ },
69
+ deps: {
70
+ router: ROUTER_TOKEN,
71
+ envManager: ENV_MANAGER_TOKEN,
72
+ },
73
+ }),
74
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
75
+ {
76
+ provide: 'router bundleInfoAdditional',
77
+ useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
78
+ deps: {
79
+ envManager: ENV_MANAGER_TOKEN,
80
+ },
81
+ },
82
+ ],
83
+ });
84
+
85
+ export { ForceCSRModule };
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@tramvai/core');
6
+ var tokensCommon = require('@tramvai/tokens-common');
7
+ var tokensRender = require('@tramvai/tokens-render');
8
+ var tokensRouter = require('@tramvai/tokens-router');
9
+ var tokens = require('./tokens.js');
10
+
11
+ // default internal bundle, used for File-System components
12
+ const FALLBACK_GROUP = '__default';
13
+ // just some unic name
14
+ const FALLBACK_NAME = '__csr_fallback__';
15
+ // just some unic path
16
+ const FALLBACK_PATH = '/__csr_fallback__/';
17
+ // env for force CSR mode
18
+ const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
19
+ const FALLBACK_ROUTE = {
20
+ name: FALLBACK_NAME,
21
+ path: FALLBACK_PATH,
22
+ config: {
23
+ bundle: FALLBACK_GROUP,
24
+ pageComponent: FALLBACK_NAME,
25
+ },
26
+ };
27
+ /**
28
+ * Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
29
+ */
30
+ const ForceCSRModule = core.declareModule({
31
+ name: 'ForceCSRModule',
32
+ providers: [
33
+ core.provide({
34
+ provide: tokensCommon.ENV_USED_TOKEN,
35
+ useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
36
+ }),
37
+ // set CSR mode globally
38
+ core.provide({
39
+ provide: tokensRender.TRAMVAI_RENDER_MODE,
40
+ useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
41
+ deps: {
42
+ envManager: tokensCommon.ENV_MANAGER_TOKEN,
43
+ },
44
+ }),
45
+ // register CSR fallback component
46
+ core.provide({
47
+ provide: core.commandLineListTokens.listen,
48
+ useFactory: ({ componentRegistry, fallback, envManager }) => {
49
+ return function addCSRFallbackCompnent() {
50
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
51
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
52
+ }
53
+ };
54
+ },
55
+ deps: {
56
+ componentRegistry: tokensCommon.COMPONENT_REGISTRY_TOKEN,
57
+ fallback: { token: tokens.PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
58
+ envManager: tokensCommon.ENV_MANAGER_TOKEN,
59
+ },
60
+ }),
61
+ // add CSR fallback route
62
+ core.provide({
63
+ provide: core.commandLineListTokens.customerStart,
64
+ useFactory: ({ router, envManager }) => {
65
+ return function addCSRFallbackRoute() {
66
+ if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
67
+ router.registerHook('beforeResolve', async () => {
68
+ router.addRoute(FALLBACK_ROUTE);
69
+ });
70
+ }
71
+ };
72
+ },
73
+ deps: {
74
+ router: tokensRouter.ROUTER_TOKEN,
75
+ envManager: tokensCommon.ENV_MANAGER_TOKEN,
76
+ },
77
+ }),
78
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
79
+ {
80
+ provide: 'router bundleInfoAdditional',
81
+ useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
82
+ deps: {
83
+ envManager: tokensCommon.ENV_MANAGER_TOKEN,
84
+ },
85
+ },
86
+ ],
87
+ });
88
+
89
+ exports.ForceCSRModule = ForceCSRModule;
@@ -0,0 +1,37 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import { useDi } from '@tramvai/react';
4
+ import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
5
+ import { PAGE_RENDER_FALLBACK_COMPONENT_PREFIX, PAGE_RENDER_DEFAULT_MODE, PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT } from './tokens.browser.js';
6
+ import { getPageRenderMode } from './utils/getPageRenderMode.browser.js';
7
+
8
+ const PageRenderWrapper = ({ children }) => {
9
+ const [mounted, setMounted] = useState(false);
10
+ const pageService = useDi(PAGE_SERVICE_TOKEN);
11
+ const fallbackKey = useDi(PAGE_RENDER_FALLBACK_COMPONENT_PREFIX);
12
+ const defaultRenderMode = useDi(PAGE_RENDER_DEFAULT_MODE);
13
+ const DefaultFallbackComponent = useDi({
14
+ token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
15
+ optional: true,
16
+ });
17
+ const FallbackComponent = pageService.resolveComponentFromConfig(fallbackKey) || DefaultFallbackComponent;
18
+ const mode = getPageRenderMode({ pageService, defaultRenderMode });
19
+ useEffect(() => {
20
+ if (mode === 'client') {
21
+ setMounted(true);
22
+ }
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, []);
25
+ if (mode === 'client' && !mounted) {
26
+ if (FallbackComponent) {
27
+ return jsx(FallbackComponent, {});
28
+ }
29
+ return null;
30
+ }
31
+ return jsx(Fragment, { children: children });
32
+ };
33
+ const pageRenderHOC = (WrapperPage) => (props) => {
34
+ return (jsx(PageRenderWrapper, { children: jsx(WrapperPage, { ...props }) }));
35
+ };
36
+
37
+ export { PageRenderWrapper, pageRenderHOC };
@@ -0,0 +1,37 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import { useDi } from '@tramvai/react';
4
+ import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
5
+ import { PAGE_RENDER_FALLBACK_COMPONENT_PREFIX, PAGE_RENDER_DEFAULT_MODE, PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT } from './tokens.es.js';
6
+ import { getPageRenderMode } from './utils/getPageRenderMode.es.js';
7
+
8
+ const PageRenderWrapper = ({ children }) => {
9
+ const [mounted, setMounted] = useState(false);
10
+ const pageService = useDi(PAGE_SERVICE_TOKEN);
11
+ const fallbackKey = useDi(PAGE_RENDER_FALLBACK_COMPONENT_PREFIX);
12
+ const defaultRenderMode = useDi(PAGE_RENDER_DEFAULT_MODE);
13
+ const DefaultFallbackComponent = useDi({
14
+ token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
15
+ optional: true,
16
+ });
17
+ const FallbackComponent = pageService.resolveComponentFromConfig(fallbackKey) || DefaultFallbackComponent;
18
+ const mode = getPageRenderMode({ pageService, defaultRenderMode });
19
+ useEffect(() => {
20
+ if (mode === 'client') {
21
+ setMounted(true);
22
+ }
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, []);
25
+ if (mode === 'client' && !mounted) {
26
+ if (FallbackComponent) {
27
+ return jsx(FallbackComponent, {});
28
+ }
29
+ return null;
30
+ }
31
+ return jsx(Fragment, { children: children });
32
+ };
33
+ const pageRenderHOC = (WrapperPage) => (props) => {
34
+ return (jsx(PageRenderWrapper, { children: jsx(WrapperPage, { ...props }) }));
35
+ };
36
+
37
+ export { PageRenderWrapper, pageRenderHOC };
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var react$1 = require('@tramvai/react');
8
+ var tokensRouter = require('@tramvai/tokens-router');
9
+ var tokens = require('./tokens.js');
10
+ var getPageRenderMode = require('./utils/getPageRenderMode.js');
11
+
12
+ const PageRenderWrapper = ({ children }) => {
13
+ const [mounted, setMounted] = react.useState(false);
14
+ const pageService = react$1.useDi(tokensRouter.PAGE_SERVICE_TOKEN);
15
+ const fallbackKey = react$1.useDi(tokens.PAGE_RENDER_FALLBACK_COMPONENT_PREFIX);
16
+ const defaultRenderMode = react$1.useDi(tokens.PAGE_RENDER_DEFAULT_MODE);
17
+ const DefaultFallbackComponent = react$1.useDi({
18
+ token: tokens.PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
19
+ optional: true,
20
+ });
21
+ const FallbackComponent = pageService.resolveComponentFromConfig(fallbackKey) || DefaultFallbackComponent;
22
+ const mode = getPageRenderMode.getPageRenderMode({ pageService, defaultRenderMode });
23
+ react.useEffect(() => {
24
+ if (mode === 'client') {
25
+ setMounted(true);
26
+ }
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, []);
29
+ if (mode === 'client' && !mounted) {
30
+ if (FallbackComponent) {
31
+ return jsxRuntime.jsx(FallbackComponent, {});
32
+ }
33
+ return null;
34
+ }
35
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
36
+ };
37
+ const pageRenderHOC = (WrapperPage) => (props) => {
38
+ return (jsxRuntime.jsx(PageRenderWrapper, { children: jsxRuntime.jsx(WrapperPage, { ...props }) }));
39
+ };
40
+
41
+ exports.PageRenderWrapper = PageRenderWrapper;
42
+ exports.pageRenderHOC = pageRenderHOC;
package/lib/browser.js CHANGED
@@ -1,176 +1,7 @@
1
- import { declareModule, provide, commandLineListTokens } from '@tramvai/core';
2
- import { ENV_USED_TOKEN, ENV_MANAGER_TOKEN, COMPONENT_REGISTRY_TOKEN } from '@tramvai/tokens-common';
3
- import { TRAMVAI_RENDER_MODE, LAYOUT_OPTIONS } from '@tramvai/tokens-render';
4
- import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
5
- import { createToken } from '@tinkoff/dippy';
6
- import { jsx, Fragment } from 'react/jsx-runtime';
7
- import { useState, useEffect } from 'react';
8
- import { useDi } from '@tramvai/react';
9
-
10
- const PAGE_RENDER_FALLBACK_COMPONENT_PREFIX = createToken('pageRenderFallbackComponentName');
11
- /**
12
- * @deprecated Use token `TRAMVAI_RENDER_MODE` from `@tramvai/tokens-render`
13
- */
14
- const PAGE_RENDER_DEFAULT_MODE = createToken('pageRenderDefaultMode');
15
- const PAGE_RENDER_WRAPPER_TYPE = createToken('pageRenderWrapperType');
16
- const PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT = createToken('pageRenderDefaultFallbackComponent');
17
- const STATIC_PAGES_CACHE_TOKEN = createToken('static pages cache');
18
- const STATIC_PAGES_SHOULD_USE_CACHE = createToken('static pages should use cache');
19
- const STATIC_PAGES_SHOULD_SET_TO_CACHE = createToken('static pages should set to cache');
20
- const STATIC_PAGES_BACKGROUND_FETCH_ENABLED = createToken('static pages can fetch page');
21
- const STATIC_PAGES_OPTIONS_TOKEN = createToken('static pages options');
22
- const STATIC_PAGES_COMMAND_LINE = createToken('static pages command line');
23
- const STATIC_PAGES_MODIFY_CACHE = createToken('static pages modify cache', { multi: true });
24
- const STATIC_PAGES_CACHE_5xx_RESPONSE = createToken('static pages cache 5xx response');
25
-
26
- // default internal bundle, used for File-System components
27
- const FALLBACK_GROUP = '__default';
28
- // just some unic name
29
- const FALLBACK_NAME = '__csr_fallback__';
30
- // just some unic path
31
- const FALLBACK_PATH = '/__csr_fallback__/';
32
- // env for force CSR mode
33
- const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
34
- const FALLBACK_ROUTE = {
35
- name: FALLBACK_NAME,
36
- path: FALLBACK_PATH,
37
- config: {
38
- bundle: FALLBACK_GROUP,
39
- pageComponent: FALLBACK_NAME,
40
- },
41
- };
42
- /**
43
- * Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
44
- */
45
- const ForceCSRModule = declareModule({
46
- name: 'ForceCSRModule',
47
- providers: [
48
- provide({
49
- provide: ENV_USED_TOKEN,
50
- useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
51
- }),
52
- // set CSR mode globally
53
- provide({
54
- provide: TRAMVAI_RENDER_MODE,
55
- useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
56
- deps: {
57
- envManager: ENV_MANAGER_TOKEN,
58
- },
59
- }),
60
- // register CSR fallback component
61
- provide({
62
- provide: commandLineListTokens.listen,
63
- useFactory: ({ componentRegistry, fallback, envManager }) => {
64
- return function addCSRFallbackCompnent() {
65
- if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
66
- componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
67
- }
68
- };
69
- },
70
- deps: {
71
- componentRegistry: COMPONENT_REGISTRY_TOKEN,
72
- fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
73
- envManager: ENV_MANAGER_TOKEN,
74
- },
75
- }),
76
- // add CSR fallback route
77
- provide({
78
- provide: commandLineListTokens.customerStart,
79
- useFactory: ({ router, envManager }) => {
80
- return function addCSRFallbackRoute() {
81
- if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
82
- router.registerHook('beforeResolve', async () => {
83
- router.addRoute(FALLBACK_ROUTE);
84
- });
85
- }
86
- };
87
- },
88
- deps: {
89
- router: ROUTER_TOKEN,
90
- envManager: ENV_MANAGER_TOKEN,
91
- },
92
- }),
93
- // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
94
- {
95
- provide: 'router bundleInfoAdditional',
96
- useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
97
- deps: {
98
- envManager: ENV_MANAGER_TOKEN,
99
- },
100
- },
101
- ],
102
- });
103
-
104
- const getPageRenderMode = ({ pageService, defaultRenderMode, }) => {
105
- var _a;
106
- const { pageComponent, pageRenderMode } = pageService.getConfig();
107
- const { renderMode } = (_a = pageService.getComponent(pageComponent)) !== null && _a !== void 0 ? _a : {};
108
- const mode = pageRenderMode || renderMode || defaultRenderMode;
109
- return mode;
110
- };
111
-
112
- const PageRenderWrapper = ({ children }) => {
113
- const [mounted, setMounted] = useState(false);
114
- const pageService = useDi(PAGE_SERVICE_TOKEN);
115
- const fallbackKey = useDi(PAGE_RENDER_FALLBACK_COMPONENT_PREFIX);
116
- const defaultRenderMode = useDi(PAGE_RENDER_DEFAULT_MODE);
117
- const DefaultFallbackComponent = useDi({
118
- token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
119
- optional: true,
120
- });
121
- const FallbackComponent = pageService.resolveComponentFromConfig(fallbackKey) || DefaultFallbackComponent;
122
- const mode = getPageRenderMode({ pageService, defaultRenderMode });
123
- useEffect(() => {
124
- if (mode === 'client') {
125
- setMounted(true);
126
- }
127
- // eslint-disable-next-line react-hooks/exhaustive-deps
128
- }, []);
129
- if (mode === 'client' && !mounted) {
130
- if (FallbackComponent) {
131
- return jsx(FallbackComponent, {});
132
- }
133
- return null;
134
- }
135
- return jsx(Fragment, { children: children });
136
- };
137
- const pageRenderHOC = (WrapperPage) => (props) => {
138
- return (jsx(PageRenderWrapper, { children: jsx(WrapperPage, { ...props }) }));
139
- };
140
-
141
- const sharedProviders = [
142
- {
143
- provide: LAYOUT_OPTIONS,
144
- multi: true,
145
- useFactory: ({ wrapperType }) => {
146
- return {
147
- wrappers: {
148
- [wrapperType]: pageRenderHOC,
149
- },
150
- };
151
- },
152
- deps: {
153
- wrapperType: PAGE_RENDER_WRAPPER_TYPE,
154
- },
155
- },
156
- {
157
- provide: PAGE_RENDER_FALLBACK_COMPONENT_PREFIX,
158
- useValue: 'pageRenderFallback',
159
- },
160
- {
161
- provide: PAGE_RENDER_DEFAULT_MODE,
162
- useFactory: ({ tramvaiRenderMode }) => {
163
- return tramvaiRenderMode;
164
- },
165
- deps: {
166
- tramvaiRenderMode: TRAMVAI_RENDER_MODE,
167
- },
168
- },
169
- {
170
- provide: PAGE_RENDER_WRAPPER_TYPE,
171
- useValue: 'page',
172
- },
173
- ];
1
+ import { declareModule } from '@tramvai/core';
2
+ import { ForceCSRModule } from './ForceCSRModule.browser.js';
3
+ import { sharedProviders } from './shared.browser.js';
4
+ export { PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, PAGE_RENDER_DEFAULT_MODE, PAGE_RENDER_FALLBACK_COMPONENT_PREFIX, PAGE_RENDER_WRAPPER_TYPE, STATIC_PAGES_BACKGROUND_FETCH_ENABLED, STATIC_PAGES_CACHE_5xx_RESPONSE, STATIC_PAGES_CACHE_TOKEN, STATIC_PAGES_COMMAND_LINE, STATIC_PAGES_MODIFY_CACHE, STATIC_PAGES_OPTIONS_TOKEN, STATIC_PAGES_SHOULD_SET_TO_CACHE, STATIC_PAGES_SHOULD_USE_CACHE } from './tokens.browser.js';
174
5
 
175
6
  // @todo: перенести в @tramvai/module-render
176
7
  const PageRenderModeModule = declareModule({
@@ -179,4 +10,4 @@ const PageRenderModeModule = declareModule({
179
10
  providers: [...sharedProviders],
180
11
  });
181
12
 
182
- export { PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, PAGE_RENDER_DEFAULT_MODE, PAGE_RENDER_FALLBACK_COMPONENT_PREFIX, PAGE_RENDER_WRAPPER_TYPE, PageRenderModeModule, STATIC_PAGES_BACKGROUND_FETCH_ENABLED, STATIC_PAGES_CACHE_5xx_RESPONSE, STATIC_PAGES_CACHE_TOKEN, STATIC_PAGES_COMMAND_LINE, STATIC_PAGES_MODIFY_CACHE, STATIC_PAGES_OPTIONS_TOKEN, STATIC_PAGES_SHOULD_SET_TO_CACHE, STATIC_PAGES_SHOULD_USE_CACHE };
13
+ export { PageRenderModeModule };
@@ -0,0 +1,11 @@
1
+ import { SilentError } from '@tinkoff/errors';
2
+
3
+ class StopCommandLineRunnerError extends SilentError {
4
+ constructor() {
5
+ super('Prevent CommandLineRunner from execution');
6
+ this.name = StopCommandLineRunnerError.errorName;
7
+ }
8
+ }
9
+ StopCommandLineRunnerError.errorName = 'StopCommandLineRunnerError';
10
+
11
+ export { StopCommandLineRunnerError };
package/lib/error.js ADDED
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var errors = require('@tinkoff/errors');
6
+
7
+ class StopCommandLineRunnerError extends errors.SilentError {
8
+ constructor() {
9
+ super('Prevent CommandLineRunner from execution');
10
+ this.name = StopCommandLineRunnerError.errorName;
11
+ }
12
+ }
13
+ StopCommandLineRunnerError.errorName = 'StopCommandLineRunnerError';
14
+
15
+ exports.StopCommandLineRunnerError = StopCommandLineRunnerError;