@tramvai/module-page-render-mode 2.66.2 → 2.67.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.
- package/lib/ForceCSRModule.d.ts +1 -1
- package/lib/browser.js +30 -12
- package/lib/server.es.js +30 -12
- package/lib/server.js +29 -11
- package/package.json +13 -13
package/lib/ForceCSRModule.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Module for force CSR mode, only
|
|
2
|
+
* Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
|
|
3
3
|
*/
|
|
4
4
|
export declare const ForceCSRModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
|
|
5
5
|
[x: string]: (...args: any[]) => {
|
package/lib/browser.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { declareModule, provide, commandLineListTokens } from '@tramvai/core';
|
|
2
|
-
import { COMPONENT_REGISTRY_TOKEN } from '@tramvai/tokens-common';
|
|
2
|
+
import { ENV_USED_TOKEN, ENV_MANAGER_TOKEN, COMPONENT_REGISTRY_TOKEN } from '@tramvai/tokens-common';
|
|
3
3
|
import { TRAMVAI_RENDER_MODE, LAYOUT_OPTIONS } from '@tramvai/tokens-render';
|
|
4
4
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
5
5
|
import { createToken } from '@tinkoff/dippy';
|
|
@@ -29,6 +29,8 @@ const FALLBACK_GROUP = '__default';
|
|
|
29
29
|
const FALLBACK_NAME = '__csr_fallback__';
|
|
30
30
|
// just some unic path
|
|
31
31
|
const FALLBACK_PATH = '/__csr_fallback__/';
|
|
32
|
+
// env for force CSR mode
|
|
33
|
+
const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
|
|
32
34
|
const FALLBACK_ROUTE = {
|
|
33
35
|
name: FALLBACK_NAME,
|
|
34
36
|
path: FALLBACK_PATH,
|
|
@@ -38,47 +40,63 @@ const FALLBACK_ROUTE = {
|
|
|
38
40
|
},
|
|
39
41
|
};
|
|
40
42
|
/**
|
|
41
|
-
* Module for force CSR mode, only
|
|
43
|
+
* Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
|
|
42
44
|
*/
|
|
43
45
|
const ForceCSRModule = declareModule({
|
|
44
46
|
name: 'ForceCSRModule',
|
|
45
47
|
providers: [
|
|
48
|
+
provide({
|
|
49
|
+
provide: ENV_USED_TOKEN,
|
|
50
|
+
useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
|
|
51
|
+
}),
|
|
46
52
|
// set CSR mode globally
|
|
47
53
|
provide({
|
|
48
54
|
provide: TRAMVAI_RENDER_MODE,
|
|
49
|
-
|
|
55
|
+
useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
|
|
56
|
+
deps: {
|
|
57
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
58
|
+
},
|
|
50
59
|
}),
|
|
51
60
|
// register CSR fallback component
|
|
52
61
|
provide({
|
|
53
62
|
provide: commandLineListTokens.listen,
|
|
54
|
-
useFactory: ({ componentRegistry, fallback }) => {
|
|
63
|
+
useFactory: ({ componentRegistry, fallback, envManager }) => {
|
|
55
64
|
return function addCSRFallbackCompnent() {
|
|
56
|
-
|
|
65
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
66
|
+
componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
|
|
67
|
+
}
|
|
57
68
|
};
|
|
58
69
|
},
|
|
59
70
|
deps: {
|
|
60
71
|
componentRegistry: COMPONENT_REGISTRY_TOKEN,
|
|
61
|
-
fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
|
|
72
|
+
fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
|
|
73
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
62
74
|
},
|
|
63
75
|
}),
|
|
64
76
|
// add CSR fallback route
|
|
65
77
|
provide({
|
|
66
78
|
provide: commandLineListTokens.customerStart,
|
|
67
|
-
useFactory: ({ router }) => {
|
|
79
|
+
useFactory: ({ router, envManager }) => {
|
|
68
80
|
return function addCSRFallbackRoute() {
|
|
69
|
-
|
|
70
|
-
router.
|
|
71
|
-
|
|
81
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
82
|
+
router.registerHook('beforeResolve', async () => {
|
|
83
|
+
router.addRoute(FALLBACK_ROUTE);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
72
86
|
};
|
|
73
87
|
},
|
|
74
88
|
deps: {
|
|
75
89
|
router: ROUTER_TOKEN,
|
|
90
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
76
91
|
},
|
|
77
92
|
}),
|
|
78
93
|
// tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
|
|
79
94
|
{
|
|
80
95
|
provide: 'router bundleInfoAdditional',
|
|
81
|
-
|
|
96
|
+
useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
|
|
97
|
+
deps: {
|
|
98
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
99
|
+
},
|
|
82
100
|
},
|
|
83
101
|
],
|
|
84
102
|
});
|
|
@@ -157,7 +175,7 @@ const sharedProviders = [
|
|
|
157
175
|
// @todo: перенести в @tramvai/module-render
|
|
158
176
|
const PageRenderModeModule = declareModule({
|
|
159
177
|
name: 'PageRenderModeModule',
|
|
160
|
-
imports: [
|
|
178
|
+
imports: [ForceCSRModule],
|
|
161
179
|
providers: [...sharedProviders],
|
|
162
180
|
});
|
|
163
181
|
|
package/lib/server.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { declareModule, provide, commandLineListTokens, createToken as createToken$1, Scope, DI_TOKEN } from '@tramvai/core';
|
|
2
|
-
import { COMPONENT_REGISTRY_TOKEN, CREATE_CACHE_TOKEN, REQUEST_MANAGER_TOKEN, LOGGER_TOKEN, RESPONSE_MANAGER_TOKEN
|
|
2
|
+
import { ENV_USED_TOKEN, ENV_MANAGER_TOKEN, COMPONENT_REGISTRY_TOKEN, CREATE_CACHE_TOKEN, REQUEST_MANAGER_TOKEN, LOGGER_TOKEN, RESPONSE_MANAGER_TOKEN } from '@tramvai/tokens-common';
|
|
3
3
|
import { TRAMVAI_RENDER_MODE, LAYOUT_OPTIONS, MODERN_SATISFIES_TOKEN } from '@tramvai/tokens-render';
|
|
4
4
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
5
5
|
import { createToken } from '@tinkoff/dippy';
|
|
@@ -38,6 +38,8 @@ const FALLBACK_GROUP = '__default';
|
|
|
38
38
|
const FALLBACK_NAME = '__csr_fallback__';
|
|
39
39
|
// just some unic path
|
|
40
40
|
const FALLBACK_PATH = '/__csr_fallback__/';
|
|
41
|
+
// env for force CSR mode
|
|
42
|
+
const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
|
|
41
43
|
const FALLBACK_ROUTE = {
|
|
42
44
|
name: FALLBACK_NAME,
|
|
43
45
|
path: FALLBACK_PATH,
|
|
@@ -47,47 +49,63 @@ const FALLBACK_ROUTE = {
|
|
|
47
49
|
},
|
|
48
50
|
};
|
|
49
51
|
/**
|
|
50
|
-
* Module for force CSR mode, only
|
|
52
|
+
* Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
|
|
51
53
|
*/
|
|
52
54
|
const ForceCSRModule = declareModule({
|
|
53
55
|
name: 'ForceCSRModule',
|
|
54
56
|
providers: [
|
|
57
|
+
provide({
|
|
58
|
+
provide: ENV_USED_TOKEN,
|
|
59
|
+
useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
|
|
60
|
+
}),
|
|
55
61
|
// set CSR mode globally
|
|
56
62
|
provide({
|
|
57
63
|
provide: TRAMVAI_RENDER_MODE,
|
|
58
|
-
|
|
64
|
+
useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
|
|
65
|
+
deps: {
|
|
66
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
67
|
+
},
|
|
59
68
|
}),
|
|
60
69
|
// register CSR fallback component
|
|
61
70
|
provide({
|
|
62
71
|
provide: commandLineListTokens.listen,
|
|
63
|
-
useFactory: ({ componentRegistry, fallback }) => {
|
|
72
|
+
useFactory: ({ componentRegistry, fallback, envManager }) => {
|
|
64
73
|
return function addCSRFallbackCompnent() {
|
|
65
|
-
|
|
74
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
75
|
+
componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
|
|
76
|
+
}
|
|
66
77
|
};
|
|
67
78
|
},
|
|
68
79
|
deps: {
|
|
69
80
|
componentRegistry: COMPONENT_REGISTRY_TOKEN,
|
|
70
|
-
fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
|
|
81
|
+
fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
|
|
82
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
71
83
|
},
|
|
72
84
|
}),
|
|
73
85
|
// add CSR fallback route
|
|
74
86
|
provide({
|
|
75
87
|
provide: commandLineListTokens.customerStart,
|
|
76
|
-
useFactory: ({ router }) => {
|
|
88
|
+
useFactory: ({ router, envManager }) => {
|
|
77
89
|
return function addCSRFallbackRoute() {
|
|
78
|
-
|
|
79
|
-
router.
|
|
80
|
-
|
|
90
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
91
|
+
router.registerHook('beforeResolve', async () => {
|
|
92
|
+
router.addRoute(FALLBACK_ROUTE);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
81
95
|
};
|
|
82
96
|
},
|
|
83
97
|
deps: {
|
|
84
98
|
router: ROUTER_TOKEN,
|
|
99
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
85
100
|
},
|
|
86
101
|
}),
|
|
87
102
|
// tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
|
|
88
103
|
{
|
|
89
104
|
provide: 'router bundleInfoAdditional',
|
|
90
|
-
|
|
105
|
+
useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
|
|
106
|
+
deps: {
|
|
107
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
108
|
+
},
|
|
91
109
|
},
|
|
92
110
|
],
|
|
93
111
|
});
|
|
@@ -563,7 +581,7 @@ const staticPagesProviders = [
|
|
|
563
581
|
// @todo: перенести в @tramvai/module-render
|
|
564
582
|
const PageRenderModeModule = declareModule({
|
|
565
583
|
name: 'PageRenderModeModule',
|
|
566
|
-
imports: [
|
|
584
|
+
imports: [ForceCSRModule],
|
|
567
585
|
providers: [...sharedProviders, ...staticPagesProviders],
|
|
568
586
|
});
|
|
569
587
|
|
package/lib/server.js
CHANGED
|
@@ -47,6 +47,8 @@ const FALLBACK_GROUP = '__default';
|
|
|
47
47
|
const FALLBACK_NAME = '__csr_fallback__';
|
|
48
48
|
// just some unic path
|
|
49
49
|
const FALLBACK_PATH = '/__csr_fallback__/';
|
|
50
|
+
// env for force CSR mode
|
|
51
|
+
const FORCE_RENDER_ENV_KEY = 'TRAMVAI_FORCE_CLIENT_SIDE_RENDERING';
|
|
50
52
|
const FALLBACK_ROUTE = {
|
|
51
53
|
name: FALLBACK_NAME,
|
|
52
54
|
path: FALLBACK_PATH,
|
|
@@ -56,47 +58,63 @@ const FALLBACK_ROUTE = {
|
|
|
56
58
|
},
|
|
57
59
|
};
|
|
58
60
|
/**
|
|
59
|
-
* Module for force CSR mode, only
|
|
61
|
+
* Module for force CSR mode, only add logic when `TRAMVAI_FORCE_CLIENT_SIDE_RENDERING=true` env variable is set
|
|
60
62
|
*/
|
|
61
63
|
const ForceCSRModule = core.declareModule({
|
|
62
64
|
name: 'ForceCSRModule',
|
|
63
65
|
providers: [
|
|
66
|
+
core.provide({
|
|
67
|
+
provide: tokensCommon.ENV_USED_TOKEN,
|
|
68
|
+
useValue: [{ key: FORCE_RENDER_ENV_KEY, optional: true }],
|
|
69
|
+
}),
|
|
64
70
|
// set CSR mode globally
|
|
65
71
|
core.provide({
|
|
66
72
|
provide: tokensRender.TRAMVAI_RENDER_MODE,
|
|
67
|
-
|
|
73
|
+
useFactory: ({ envManager }) => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? 'client' : 'ssr',
|
|
74
|
+
deps: {
|
|
75
|
+
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
76
|
+
},
|
|
68
77
|
}),
|
|
69
78
|
// register CSR fallback component
|
|
70
79
|
core.provide({
|
|
71
80
|
provide: core.commandLineListTokens.listen,
|
|
72
|
-
useFactory: ({ componentRegistry, fallback }) => {
|
|
81
|
+
useFactory: ({ componentRegistry, fallback, envManager }) => {
|
|
73
82
|
return function addCSRFallbackCompnent() {
|
|
74
|
-
|
|
83
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
84
|
+
componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
|
|
85
|
+
}
|
|
75
86
|
};
|
|
76
87
|
},
|
|
77
88
|
deps: {
|
|
78
89
|
componentRegistry: tokensCommon.COMPONENT_REGISTRY_TOKEN,
|
|
79
|
-
fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
|
|
90
|
+
fallback: { token: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT, optional: true },
|
|
91
|
+
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
80
92
|
},
|
|
81
93
|
}),
|
|
82
94
|
// add CSR fallback route
|
|
83
95
|
core.provide({
|
|
84
96
|
provide: core.commandLineListTokens.customerStart,
|
|
85
|
-
useFactory: ({ router }) => {
|
|
97
|
+
useFactory: ({ router, envManager }) => {
|
|
86
98
|
return function addCSRFallbackRoute() {
|
|
87
|
-
|
|
88
|
-
router.
|
|
89
|
-
|
|
99
|
+
if (envManager.get(FORCE_RENDER_ENV_KEY) === 'true') {
|
|
100
|
+
router.registerHook('beforeResolve', async () => {
|
|
101
|
+
router.addRoute(FALLBACK_ROUTE);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
90
104
|
};
|
|
91
105
|
},
|
|
92
106
|
deps: {
|
|
93
107
|
router: tokensRouter.ROUTER_TOKEN,
|
|
108
|
+
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
94
109
|
},
|
|
95
110
|
}),
|
|
96
111
|
// tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
|
|
97
112
|
{
|
|
98
113
|
provide: 'router bundleInfoAdditional',
|
|
99
|
-
|
|
114
|
+
useFactory: ({ envManager }) => () => envManager.get(FORCE_RENDER_ENV_KEY) === 'true' ? FALLBACK_ROUTE : null,
|
|
115
|
+
deps: {
|
|
116
|
+
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
117
|
+
},
|
|
100
118
|
},
|
|
101
119
|
],
|
|
102
120
|
});
|
|
@@ -572,7 +590,7 @@ const staticPagesProviders = [
|
|
|
572
590
|
// @todo: перенести в @tramvai/module-render
|
|
573
591
|
const PageRenderModeModule = core.declareModule({
|
|
574
592
|
name: 'PageRenderModeModule',
|
|
575
|
-
imports: [
|
|
593
|
+
imports: [ForceCSRModule],
|
|
576
594
|
providers: [...sharedProviders, ...staticPagesProviders],
|
|
577
595
|
});
|
|
578
596
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-page-render-mode",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.67.0",
|
|
4
4
|
"description": "Enable different rendering modes for pages",
|
|
5
5
|
"main": "./lib/server.js",
|
|
6
6
|
"module": "./lib/server.es.js",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@tinkoff/utils": "^2.1.2",
|
|
33
33
|
"@tinkoff/dippy": "0.8.12",
|
|
34
|
-
"@tramvai/core": "2.
|
|
35
|
-
"@tramvai/react": "2.
|
|
36
|
-
"@tramvai/papi": "2.
|
|
37
|
-
"@tramvai/module-router": "2.
|
|
38
|
-
"@tramvai/module-client-hints": "2.
|
|
39
|
-
"@tramvai/tokens-common": "2.
|
|
40
|
-
"@tramvai/tokens-core": "2.
|
|
41
|
-
"@tramvai/tokens-render": "2.
|
|
42
|
-
"@tramvai/tokens-router": "2.
|
|
43
|
-
"@tramvai/tokens-server": "2.
|
|
44
|
-
"@tramvai/tokens-server-private": "2.
|
|
45
|
-
"@tramvai/tokens-metrics": "2.
|
|
34
|
+
"@tramvai/core": "2.67.0",
|
|
35
|
+
"@tramvai/react": "2.67.0",
|
|
36
|
+
"@tramvai/papi": "2.67.0",
|
|
37
|
+
"@tramvai/module-router": "2.67.0",
|
|
38
|
+
"@tramvai/module-client-hints": "2.67.0",
|
|
39
|
+
"@tramvai/tokens-common": "2.67.0",
|
|
40
|
+
"@tramvai/tokens-core": "2.67.0",
|
|
41
|
+
"@tramvai/tokens-render": "2.67.0",
|
|
42
|
+
"@tramvai/tokens-router": "2.67.0",
|
|
43
|
+
"@tramvai/tokens-server": "2.67.0",
|
|
44
|
+
"@tramvai/tokens-server-private": "2.67.0",
|
|
45
|
+
"@tramvai/tokens-metrics": "2.67.0",
|
|
46
46
|
"prom-client": "^12.0.0",
|
|
47
47
|
"react": ">=16.14.0",
|
|
48
48
|
"tslib": "^2.4.0"
|