@tramvai/module-render 2.98.2 → 2.101.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/browser.js +12 -1
- package/lib/server.es.js +18 -7
- package/lib/server.js +17 -6
- package/package.json +15 -16
package/lib/browser.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { Module, provide, commandLineListTokens, DI_TOKEN } from '@tramvai/core';
|
|
3
3
|
import { STORE_TOKEN, LOGGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
|
|
4
|
-
import { RESOURCES_REGISTRY, CUSTOM_RENDER, EXTEND_RENDER, RENDERER_CALLBACK, USE_REACT_STRICT_MODE, RENDER_MODE } from '@tramvai/tokens-render';
|
|
4
|
+
import { RESOURCES_REGISTRY, CUSTOM_RENDER, EXTEND_RENDER, RENDERER_CALLBACK, USE_REACT_STRICT_MODE, RENDER_MODE, MODERN_SATISFIES_TOKEN } from '@tramvai/tokens-render';
|
|
5
5
|
export * from '@tramvai/tokens-render';
|
|
6
6
|
import { beforeResolveHooksToken, PageErrorStore, setPageErrorEvent } from '@tramvai/module-router';
|
|
7
7
|
export { PageErrorStore, setPageErrorEvent } from '@tramvai/module-router';
|
|
8
|
+
import { COOKIE_MANAGER_TOKEN } from '@tramvai/module-common';
|
|
8
9
|
import { rendering } from './client/index.browser.js';
|
|
9
10
|
import { LayoutModule } from './shared/LayoutModule.browser.js';
|
|
10
11
|
import { providers } from './shared/providers.browser.js';
|
|
@@ -107,6 +108,16 @@ RenderModule = RenderModule_1 = __decorate([
|
|
|
107
108
|
provide: RENDER_MODE,
|
|
108
109
|
useValue: 'legacy',
|
|
109
110
|
}),
|
|
111
|
+
provide({
|
|
112
|
+
provide: MODERN_SATISFIES_TOKEN,
|
|
113
|
+
useFactory: ({ cookieManager }) => {
|
|
114
|
+
const result = cookieManager.get('_t_modern');
|
|
115
|
+
return result === 'true' || result === 'false' ? JSON.parse(result) : false;
|
|
116
|
+
},
|
|
117
|
+
deps: {
|
|
118
|
+
cookieManager: COOKIE_MANAGER_TOKEN,
|
|
119
|
+
},
|
|
120
|
+
}),
|
|
110
121
|
],
|
|
111
122
|
})
|
|
112
123
|
], RenderModule);
|
package/lib/server.es.js
CHANGED
|
@@ -3,13 +3,14 @@ import { Module, provide, commandLineListTokens, DI_TOKEN } from '@tramvai/core'
|
|
|
3
3
|
import { CREATE_CACHE_TOKEN, LOGGER_TOKEN, REQUEST_MANAGER_TOKEN, RESPONSE_MANAGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
|
|
4
4
|
import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
|
|
5
5
|
import { ClientHintsModule, USER_AGENT_TOKEN } from '@tramvai/module-client-hints';
|
|
6
|
-
import { RESOURCES_REGISTRY, RESOURCE_INLINE_OPTIONS, RENDER_SLOTS, POLYFILL_CONDITION, HTML_ATTRS, MODERN_SATISFIES_TOKEN, RENDER_FLOW_AFTER_TOKEN, FETCH_WEBPACK_STATS_TOKEN, CUSTOM_RENDER, EXTEND_RENDER, REACT_SERVER_RENDER_MODE, ResourceType } from '@tramvai/tokens-render';
|
|
6
|
+
import { RESOURCES_REGISTRY, RESOURCE_INLINE_OPTIONS, BACK_FORWARD_CACHE_ENABLED, RENDER_SLOTS, POLYFILL_CONDITION, HTML_ATTRS, MODERN_SATISFIES_TOKEN, RENDER_FLOW_AFTER_TOKEN, FETCH_WEBPACK_STATS_TOKEN, CUSTOM_RENDER, EXTEND_RENDER, REACT_SERVER_RENDER_MODE, ResourceType } from '@tramvai/tokens-render';
|
|
7
7
|
export * from '@tramvai/tokens-render';
|
|
8
8
|
import { Scope } from '@tinkoff/dippy';
|
|
9
9
|
import { satisfies } from '@tinkoff/user-agent';
|
|
10
10
|
import { isRedirectFoundError } from '@tinkoff/errors';
|
|
11
11
|
import { setPageErrorEvent, PageErrorStore, deserializeError } from '@tramvai/module-router';
|
|
12
12
|
export { PageErrorStore, setPageErrorEvent } from '@tramvai/module-router';
|
|
13
|
+
import { COOKIE_MANAGER_TOKEN } from '@tramvai/module-common';
|
|
13
14
|
import { ResourcesInliner } from './resourcesInliner/resourcesInliner.es.js';
|
|
14
15
|
import { RESOURCE_INLINER, RESOURCES_REGISTRY_CACHE } from './resourcesInliner/tokens.es.js';
|
|
15
16
|
import { ResourcesRegistry } from './resourcesRegistry/index.es.js';
|
|
@@ -77,7 +78,7 @@ RenderModule = RenderModule_1 = __decorate([
|
|
|
77
78
|
}),
|
|
78
79
|
provide({
|
|
79
80
|
provide: commandLineListTokens.generatePage,
|
|
80
|
-
useFactory: ({ htmlBuilder, logger, requestManager, responseManager, context, pageService, }) => {
|
|
81
|
+
useFactory: ({ htmlBuilder, logger, requestManager, responseManager, context, bfcacheEnabled, pageService, }) => {
|
|
81
82
|
const log = logger('module-render');
|
|
82
83
|
// eslint-disable-next-line max-statements
|
|
83
84
|
return async function render() {
|
|
@@ -165,7 +166,7 @@ Page Error Boundary will be rendered for the client`,
|
|
|
165
166
|
// TODO Заменить после выкатки на прод и прохода всех тестов на cache-control = no-cache,no-store,max-age=0,must-revalidate
|
|
166
167
|
responseManager.setHeader('expires', '0');
|
|
167
168
|
responseManager.setHeader('pragma', 'no-cache');
|
|
168
|
-
responseManager.setHeader('cache-control', 'no-
|
|
169
|
+
responseManager.setHeader('cache-control', `${bfcacheEnabled ? '' : 'no-store, '}no-cache, must-revalidate`);
|
|
169
170
|
responseManager.setBody(html);
|
|
170
171
|
};
|
|
171
172
|
},
|
|
@@ -176,6 +177,7 @@ Page Error Boundary will be rendered for the client`,
|
|
|
176
177
|
htmlBuilder: 'htmlBuilder',
|
|
177
178
|
context: CONTEXT_TOKEN,
|
|
178
179
|
pageService: PAGE_SERVICE_TOKEN,
|
|
180
|
+
bfcacheEnabled: BACK_FORWARD_CACHE_ENABLED,
|
|
179
181
|
},
|
|
180
182
|
multi: true,
|
|
181
183
|
}),
|
|
@@ -251,19 +253,24 @@ Page Error Boundary will be rendered for the client`,
|
|
|
251
253
|
}),
|
|
252
254
|
provide({
|
|
253
255
|
provide: MODERN_SATISFIES_TOKEN,
|
|
254
|
-
useFactory: ({ requestManager, userAgent, cache }) => {
|
|
256
|
+
useFactory: ({ requestManager, userAgent, cache, cookieManager }) => {
|
|
255
257
|
const reqUserAgent = requestManager.getHeader('user-agent');
|
|
258
|
+
let result;
|
|
256
259
|
if (cache.has(reqUserAgent)) {
|
|
257
|
-
|
|
260
|
+
result = cache.get(reqUserAgent);
|
|
258
261
|
}
|
|
259
|
-
|
|
260
|
-
|
|
262
|
+
else {
|
|
263
|
+
result = satisfies(userAgent, null, { env: 'modern' });
|
|
264
|
+
cache.set(reqUserAgent, result);
|
|
265
|
+
}
|
|
266
|
+
cookieManager.set({ name: '_t_modern', value: JSON.stringify(result) });
|
|
261
267
|
return result;
|
|
262
268
|
},
|
|
263
269
|
deps: {
|
|
264
270
|
requestManager: REQUEST_MANAGER_TOKEN,
|
|
265
271
|
userAgent: USER_AGENT_TOKEN,
|
|
266
272
|
cache: 'modernSatisfiesLruCache',
|
|
273
|
+
cookieManager: COOKIE_MANAGER_TOKEN,
|
|
267
274
|
},
|
|
268
275
|
}),
|
|
269
276
|
provide({
|
|
@@ -280,6 +287,10 @@ Page Error Boundary will be rendered for the client`,
|
|
|
280
287
|
provide: FETCH_WEBPACK_STATS_TOKEN,
|
|
281
288
|
useValue: fetchWebpackStats,
|
|
282
289
|
}),
|
|
290
|
+
provide({
|
|
291
|
+
provide: BACK_FORWARD_CACHE_ENABLED,
|
|
292
|
+
useValue: true,
|
|
293
|
+
}),
|
|
283
294
|
],
|
|
284
295
|
})
|
|
285
296
|
], RenderModule);
|
package/lib/server.js
CHANGED
|
@@ -12,6 +12,7 @@ var dippy = require('@tinkoff/dippy');
|
|
|
12
12
|
var userAgent = require('@tinkoff/user-agent');
|
|
13
13
|
var errors = require('@tinkoff/errors');
|
|
14
14
|
var moduleRouter = require('@tramvai/module-router');
|
|
15
|
+
var moduleCommon = require('@tramvai/module-common');
|
|
15
16
|
var resourcesInliner = require('./resourcesInliner/resourcesInliner.js');
|
|
16
17
|
var tokens = require('./resourcesInliner/tokens.js');
|
|
17
18
|
var index = require('./resourcesRegistry/index.js');
|
|
@@ -78,7 +79,7 @@ exports.RenderModule = RenderModule_1 = tslib.__decorate([
|
|
|
78
79
|
}),
|
|
79
80
|
core.provide({
|
|
80
81
|
provide: core.commandLineListTokens.generatePage,
|
|
81
|
-
useFactory: ({ htmlBuilder, logger, requestManager, responseManager, context, pageService, }) => {
|
|
82
|
+
useFactory: ({ htmlBuilder, logger, requestManager, responseManager, context, bfcacheEnabled, pageService, }) => {
|
|
82
83
|
const log = logger('module-render');
|
|
83
84
|
// eslint-disable-next-line max-statements
|
|
84
85
|
return async function render() {
|
|
@@ -166,7 +167,7 @@ Page Error Boundary will be rendered for the client`,
|
|
|
166
167
|
// TODO Заменить после выкатки на прод и прохода всех тестов на cache-control = no-cache,no-store,max-age=0,must-revalidate
|
|
167
168
|
responseManager.setHeader('expires', '0');
|
|
168
169
|
responseManager.setHeader('pragma', 'no-cache');
|
|
169
|
-
responseManager.setHeader('cache-control', 'no-
|
|
170
|
+
responseManager.setHeader('cache-control', `${bfcacheEnabled ? '' : 'no-store, '}no-cache, must-revalidate`);
|
|
170
171
|
responseManager.setBody(html);
|
|
171
172
|
};
|
|
172
173
|
},
|
|
@@ -177,6 +178,7 @@ Page Error Boundary will be rendered for the client`,
|
|
|
177
178
|
htmlBuilder: 'htmlBuilder',
|
|
178
179
|
context: tokensCommon.CONTEXT_TOKEN,
|
|
179
180
|
pageService: tokensRouter.PAGE_SERVICE_TOKEN,
|
|
181
|
+
bfcacheEnabled: tokensRender.BACK_FORWARD_CACHE_ENABLED,
|
|
180
182
|
},
|
|
181
183
|
multi: true,
|
|
182
184
|
}),
|
|
@@ -252,19 +254,24 @@ Page Error Boundary will be rendered for the client`,
|
|
|
252
254
|
}),
|
|
253
255
|
core.provide({
|
|
254
256
|
provide: tokensRender.MODERN_SATISFIES_TOKEN,
|
|
255
|
-
useFactory: ({ requestManager, userAgent: userAgent$1, cache }) => {
|
|
257
|
+
useFactory: ({ requestManager, userAgent: userAgent$1, cache, cookieManager }) => {
|
|
256
258
|
const reqUserAgent = requestManager.getHeader('user-agent');
|
|
259
|
+
let result;
|
|
257
260
|
if (cache.has(reqUserAgent)) {
|
|
258
|
-
|
|
261
|
+
result = cache.get(reqUserAgent);
|
|
259
262
|
}
|
|
260
|
-
|
|
261
|
-
|
|
263
|
+
else {
|
|
264
|
+
result = userAgent.satisfies(userAgent$1, null, { env: 'modern' });
|
|
265
|
+
cache.set(reqUserAgent, result);
|
|
266
|
+
}
|
|
267
|
+
cookieManager.set({ name: '_t_modern', value: JSON.stringify(result) });
|
|
262
268
|
return result;
|
|
263
269
|
},
|
|
264
270
|
deps: {
|
|
265
271
|
requestManager: tokensCommon.REQUEST_MANAGER_TOKEN,
|
|
266
272
|
userAgent: moduleClientHints.USER_AGENT_TOKEN,
|
|
267
273
|
cache: 'modernSatisfiesLruCache',
|
|
274
|
+
cookieManager: moduleCommon.COOKIE_MANAGER_TOKEN,
|
|
268
275
|
},
|
|
269
276
|
}),
|
|
270
277
|
core.provide({
|
|
@@ -281,6 +288,10 @@ Page Error Boundary will be rendered for the client`,
|
|
|
281
288
|
provide: tokensRender.FETCH_WEBPACK_STATS_TOKEN,
|
|
282
289
|
useValue: fetchWebpackStats.fetchWebpackStats,
|
|
283
290
|
}),
|
|
291
|
+
core.provide({
|
|
292
|
+
provide: tokensRender.BACK_FORWARD_CACHE_ENABLED,
|
|
293
|
+
useValue: true,
|
|
294
|
+
}),
|
|
284
295
|
],
|
|
285
296
|
})
|
|
286
297
|
], exports.RenderModule);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-render",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.101.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
@@ -26,14 +26,13 @@
|
|
|
26
26
|
"@tinkoff/layout-factory": "0.3.8",
|
|
27
27
|
"@tinkoff/errors": "0.3.8",
|
|
28
28
|
"@tinkoff/url": "0.8.6",
|
|
29
|
-
"@tinkoff/user-agent": "0.4.
|
|
30
|
-
"@tramvai/module-client-hints": "2.
|
|
31
|
-
"@tramvai/module-
|
|
32
|
-
"@tramvai/
|
|
33
|
-
"@tramvai/react": "2.98.2",
|
|
29
|
+
"@tinkoff/user-agent": "0.4.284",
|
|
30
|
+
"@tramvai/module-client-hints": "2.101.0",
|
|
31
|
+
"@tramvai/module-router": "2.101.0",
|
|
32
|
+
"@tramvai/react": "2.101.0",
|
|
34
33
|
"@tramvai/safe-strings": "0.5.9",
|
|
35
|
-
"@tramvai/tokens-render": "2.
|
|
36
|
-
"@tramvai/experiments": "2.
|
|
34
|
+
"@tramvai/tokens-render": "2.101.0",
|
|
35
|
+
"@tramvai/experiments": "2.101.0",
|
|
37
36
|
"@types/loadable__server": "^5.12.6",
|
|
38
37
|
"node-fetch": "^2.6.1"
|
|
39
38
|
},
|
|
@@ -41,14 +40,14 @@
|
|
|
41
40
|
"@tinkoff/dippy": "0.8.15",
|
|
42
41
|
"@tinkoff/utils": "^2.1.2",
|
|
43
42
|
"@tinkoff/react-hooks": "0.1.6",
|
|
44
|
-
"@tramvai/cli": "2.
|
|
45
|
-
"@tramvai/core": "2.
|
|
46
|
-
"@tramvai/module-common": "2.
|
|
47
|
-
"@tramvai/state": "2.
|
|
48
|
-
"@tramvai/test-helpers": "2.
|
|
49
|
-
"@tramvai/tokens-common": "2.
|
|
50
|
-
"@tramvai/tokens-router": "2.
|
|
51
|
-
"@tramvai/tokens-server-private": "2.
|
|
43
|
+
"@tramvai/cli": "2.101.0",
|
|
44
|
+
"@tramvai/core": "2.101.0",
|
|
45
|
+
"@tramvai/module-common": "2.101.0",
|
|
46
|
+
"@tramvai/state": "2.101.0",
|
|
47
|
+
"@tramvai/test-helpers": "2.101.0",
|
|
48
|
+
"@tramvai/tokens-common": "2.101.0",
|
|
49
|
+
"@tramvai/tokens-router": "2.101.0",
|
|
50
|
+
"@tramvai/tokens-server-private": "2.101.0",
|
|
52
51
|
"express": "^4.17.1",
|
|
53
52
|
"prop-types": "^15.6.2",
|
|
54
53
|
"react": ">=16.14.0",
|