@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 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-cache, no-store, must-revalidate');
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
- return cache.get(reqUserAgent);
260
+ result = cache.get(reqUserAgent);
258
261
  }
259
- const result = satisfies(userAgent, null, { env: 'modern' });
260
- cache.set(reqUserAgent, result);
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-cache, no-store, must-revalidate');
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
- return cache.get(reqUserAgent);
261
+ result = cache.get(reqUserAgent);
259
262
  }
260
- const result = userAgent.satisfies(userAgent$1, null, { env: 'modern' });
261
- cache.set(reqUserAgent, result);
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.98.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.279",
30
- "@tramvai/module-client-hints": "2.98.2",
31
- "@tramvai/module-page-render-mode": "2.98.2",
32
- "@tramvai/module-router": "2.98.2",
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.98.2",
36
- "@tramvai/experiments": "2.98.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.98.2",
45
- "@tramvai/core": "2.98.2",
46
- "@tramvai/module-common": "2.98.2",
47
- "@tramvai/state": "2.98.2",
48
- "@tramvai/test-helpers": "2.98.2",
49
- "@tramvai/tokens-common": "2.98.2",
50
- "@tramvai/tokens-router": "2.98.2",
51
- "@tramvai/tokens-server-private": "2.98.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",