@tramvai/module-page-render-mode 2.61.1 → 2.63.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,9 @@
1
+ /**
2
+ * Module for force CSR mode, only connected when `@tramvai/cli` commands run with `--csr` flag
3
+ */
4
+ export declare const ForceCSRModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
5
+ [x: string]: (...args: any[]) => {
6
+ mainModule: import("@tramvai/core").ModuleType<import("@tinkoff/dippy/lib/modules/module.h").ModuleClass>;
7
+ providers: import("@tramvai/core").Provider<any, any>[];
8
+ };
9
+ };
package/lib/browser.d.ts CHANGED
@@ -5,5 +5,9 @@ declare module '@tramvai/react' {
5
5
  renderMode?: TramvaiRenderMode;
6
6
  }
7
7
  }
8
- export declare class PageRenderModeModule {
9
- }
8
+ export declare const PageRenderModeModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
9
+ [x: string]: (...args: any[]) => {
10
+ mainModule: import("@tramvai/core").ModuleType<import("@tinkoff/dippy/lib/modules/module.h").ModuleClass>;
11
+ providers: import("@tramvai/core").Provider<any, any>[];
12
+ };
13
+ };
package/lib/browser.js CHANGED
@@ -1,11 +1,11 @@
1
- import { __decorate } from 'tslib';
2
- import { Module } from '@tramvai/core';
3
- import { LAYOUT_OPTIONS, TRAMVAI_RENDER_MODE } from '@tramvai/tokens-render';
1
+ import { declareModule, provide, commandLineListTokens } from '@tramvai/core';
2
+ import { 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';
4
6
  import { jsx, Fragment } from 'react/jsx-runtime';
5
7
  import { useState, useEffect } from 'react';
6
8
  import { useDi } from '@tramvai/react';
7
- import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
8
- import { createToken } from '@tinkoff/dippy';
9
9
 
10
10
  const PAGE_RENDER_FALLBACK_COMPONENT_PREFIX = createToken('pageRenderFallbackComponentName');
11
11
  /**
@@ -23,6 +23,66 @@ const STATIC_PAGES_COMMAND_LINE = createToken('static pages command line');
23
23
  const STATIC_PAGES_MODIFY_CACHE = createToken('static pages modify cache', { multi: true });
24
24
  const STATIC_PAGES_CACHE_5xx_RESPONSE = createToken('static pages cache 5xx response');
25
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
+ const FALLBACK_ROUTE = {
33
+ name: FALLBACK_NAME,
34
+ path: FALLBACK_PATH,
35
+ config: {
36
+ bundle: FALLBACK_GROUP,
37
+ pageComponent: FALLBACK_NAME,
38
+ },
39
+ };
40
+ /**
41
+ * Module for force CSR mode, only connected when `@tramvai/cli` commands run with `--csr` flag
42
+ */
43
+ const ForceCSRModule = declareModule({
44
+ name: 'ForceCSRModule',
45
+ providers: [
46
+ // set CSR mode globally
47
+ provide({
48
+ provide: TRAMVAI_RENDER_MODE,
49
+ useValue: 'client',
50
+ }),
51
+ // register CSR fallback component
52
+ provide({
53
+ provide: commandLineListTokens.listen,
54
+ useFactory: ({ componentRegistry, fallback }) => {
55
+ return function addCSRFallbackCompnent() {
56
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
57
+ };
58
+ },
59
+ deps: {
60
+ componentRegistry: COMPONENT_REGISTRY_TOKEN,
61
+ fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
62
+ },
63
+ }),
64
+ // add CSR fallback route
65
+ provide({
66
+ provide: commandLineListTokens.customerStart,
67
+ useFactory: ({ router }) => {
68
+ return function addCSRFallbackRoute() {
69
+ router.registerHook('beforeResolve', async () => {
70
+ router.addRoute(FALLBACK_ROUTE);
71
+ });
72
+ };
73
+ },
74
+ deps: {
75
+ router: ROUTER_TOKEN,
76
+ },
77
+ }),
78
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
79
+ {
80
+ provide: 'router bundleInfoAdditional',
81
+ useValue: () => FALLBACK_ROUTE,
82
+ },
83
+ ],
84
+ });
85
+
26
86
  const getPageRenderMode = ({ pageService, defaultRenderMode, }) => {
27
87
  var _a;
28
88
  const { pageComponent, pageRenderMode } = pageService.getConfig();
@@ -94,12 +154,11 @@ const sharedProviders = [
94
154
  },
95
155
  ];
96
156
 
97
- let PageRenderModeModule = class PageRenderModeModule {
98
- };
99
- PageRenderModeModule = __decorate([
100
- Module({
101
- providers: [...sharedProviders],
102
- })
103
- ], PageRenderModeModule);
157
+ // @todo: перенести в @tramvai/module-render
158
+ const PageRenderModeModule = declareModule({
159
+ name: 'PageRenderModeModule',
160
+ imports: [...(process.env.__TRAMVAI_FORCE_CLIENT_SIDE_RENDERING ? [ForceCSRModule] : [])],
161
+ providers: [...sharedProviders],
162
+ });
104
163
 
105
164
  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 };
package/lib/server.d.ts CHANGED
@@ -5,5 +5,9 @@ declare module '@tramvai/react' {
5
5
  renderMode?: TramvaiRenderMode;
6
6
  }
7
7
  }
8
- export declare class PageRenderModeModule {
9
- }
8
+ export declare const PageRenderModeModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
9
+ [x: string]: (...args: any[]) => {
10
+ mainModule: import("@tramvai/core").ModuleType<import("@tinkoff/dippy/lib/modules/module.h").ModuleClass>;
11
+ providers: import("@tramvai/core").Provider<any, any>[];
12
+ };
13
+ };
package/lib/server.es.js CHANGED
@@ -1,13 +1,12 @@
1
- import { __decorate } from 'tslib';
2
- import { createToken as createToken$1, provide, Scope, commandLineListTokens, DI_TOKEN, Module } from '@tramvai/core';
3
- import { LAYOUT_OPTIONS, TRAMVAI_RENDER_MODE, MODERN_SATISFIES_TOKEN } from '@tramvai/tokens-render';
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, ENV_MANAGER_TOKEN } from '@tramvai/tokens-common';
3
+ import { TRAMVAI_RENDER_MODE, LAYOUT_OPTIONS, MODERN_SATISFIES_TOKEN } from '@tramvai/tokens-render';
4
+ import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
5
+ import { createToken } from '@tinkoff/dippy';
4
6
  import { jsx, Fragment } from 'react/jsx-runtime';
5
7
  import { useState, useEffect } from 'react';
6
8
  import { useDi } from '@tramvai/react';
7
- import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
8
- import { createToken } from '@tinkoff/dippy';
9
9
  import isEmpty from '@tinkoff/utils/is/empty';
10
- import { CREATE_CACHE_TOKEN, REQUEST_MANAGER_TOKEN, LOGGER_TOKEN, RESPONSE_MANAGER_TOKEN, ENV_MANAGER_TOKEN } from '@tramvai/tokens-common';
11
10
  import { FASTIFY_RESPONSE } from '@tramvai/tokens-server-private';
12
11
  import { USER_AGENT_TOKEN } from '@tramvai/module-client-hints';
13
12
  import { SERVER_MODULE_PAPI_PRIVATE_ROUTE } from '@tramvai/tokens-server';
@@ -33,6 +32,66 @@ const STATIC_PAGES_COMMAND_LINE = createToken('static pages command line');
33
32
  const STATIC_PAGES_MODIFY_CACHE = createToken('static pages modify cache', { multi: true });
34
33
  const STATIC_PAGES_CACHE_5xx_RESPONSE = createToken('static pages cache 5xx response');
35
34
 
35
+ // default internal bundle, used for File-System components
36
+ const FALLBACK_GROUP = '__default';
37
+ // just some unic name
38
+ const FALLBACK_NAME = '__csr_fallback__';
39
+ // just some unic path
40
+ const FALLBACK_PATH = '/__csr_fallback__/';
41
+ const FALLBACK_ROUTE = {
42
+ name: FALLBACK_NAME,
43
+ path: FALLBACK_PATH,
44
+ config: {
45
+ bundle: FALLBACK_GROUP,
46
+ pageComponent: FALLBACK_NAME,
47
+ },
48
+ };
49
+ /**
50
+ * Module for force CSR mode, only connected when `@tramvai/cli` commands run with `--csr` flag
51
+ */
52
+ const ForceCSRModule = declareModule({
53
+ name: 'ForceCSRModule',
54
+ providers: [
55
+ // set CSR mode globally
56
+ provide({
57
+ provide: TRAMVAI_RENDER_MODE,
58
+ useValue: 'client',
59
+ }),
60
+ // register CSR fallback component
61
+ provide({
62
+ provide: commandLineListTokens.listen,
63
+ useFactory: ({ componentRegistry, fallback }) => {
64
+ return function addCSRFallbackCompnent() {
65
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
66
+ };
67
+ },
68
+ deps: {
69
+ componentRegistry: COMPONENT_REGISTRY_TOKEN,
70
+ fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
71
+ },
72
+ }),
73
+ // add CSR fallback route
74
+ provide({
75
+ provide: commandLineListTokens.customerStart,
76
+ useFactory: ({ router }) => {
77
+ return function addCSRFallbackRoute() {
78
+ router.registerHook('beforeResolve', async () => {
79
+ router.addRoute(FALLBACK_ROUTE);
80
+ });
81
+ };
82
+ },
83
+ deps: {
84
+ router: ROUTER_TOKEN,
85
+ },
86
+ }),
87
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
88
+ {
89
+ provide: 'router bundleInfoAdditional',
90
+ useValue: () => FALLBACK_ROUTE,
91
+ },
92
+ ],
93
+ });
94
+
36
95
  const getPageRenderMode = ({ pageService, defaultRenderMode, }) => {
37
96
  var _a;
38
97
  const { pageComponent, pageRenderMode } = pageService.getConfig();
@@ -501,12 +560,11 @@ const staticPagesProviders = [
501
560
  }),
502
561
  ];
503
562
 
504
- let PageRenderModeModule = class PageRenderModeModule {
505
- };
506
- PageRenderModeModule = __decorate([
507
- Module({
508
- providers: [...sharedProviders, ...staticPagesProviders],
509
- })
510
- ], PageRenderModeModule);
563
+ // @todo: перенести в @tramvai/module-render
564
+ const PageRenderModeModule = declareModule({
565
+ name: 'PageRenderModeModule',
566
+ imports: [...(process.env.__TRAMVAI_FORCE_CLIENT_SIDE_RENDERING ? [ForceCSRModule] : [])],
567
+ providers: [...sharedProviders, ...staticPagesProviders],
568
+ });
511
569
 
512
570
  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 };
package/lib/server.js CHANGED
@@ -2,16 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib = require('tslib');
6
5
  var core = require('@tramvai/core');
6
+ var tokensCommon = require('@tramvai/tokens-common');
7
7
  var tokensRender = require('@tramvai/tokens-render');
8
+ var tokensRouter = require('@tramvai/tokens-router');
9
+ var dippy = require('@tinkoff/dippy');
8
10
  var jsxRuntime = require('react/jsx-runtime');
9
11
  var react = require('react');
10
12
  var react$1 = require('@tramvai/react');
11
- var tokensRouter = require('@tramvai/tokens-router');
12
- var dippy = require('@tinkoff/dippy');
13
13
  var isEmpty = require('@tinkoff/utils/is/empty');
14
- var tokensCommon = require('@tramvai/tokens-common');
15
14
  var tokensServerPrivate = require('@tramvai/tokens-server-private');
16
15
  var moduleClientHints = require('@tramvai/module-client-hints');
17
16
  var tokensServer = require('@tramvai/tokens-server');
@@ -42,6 +41,66 @@ const STATIC_PAGES_COMMAND_LINE = dippy.createToken('static pages command line')
42
41
  const STATIC_PAGES_MODIFY_CACHE = dippy.createToken('static pages modify cache', { multi: true });
43
42
  const STATIC_PAGES_CACHE_5xx_RESPONSE = dippy.createToken('static pages cache 5xx response');
44
43
 
44
+ // default internal bundle, used for File-System components
45
+ const FALLBACK_GROUP = '__default';
46
+ // just some unic name
47
+ const FALLBACK_NAME = '__csr_fallback__';
48
+ // just some unic path
49
+ const FALLBACK_PATH = '/__csr_fallback__/';
50
+ const FALLBACK_ROUTE = {
51
+ name: FALLBACK_NAME,
52
+ path: FALLBACK_PATH,
53
+ config: {
54
+ bundle: FALLBACK_GROUP,
55
+ pageComponent: FALLBACK_NAME,
56
+ },
57
+ };
58
+ /**
59
+ * Module for force CSR mode, only connected when `@tramvai/cli` commands run with `--csr` flag
60
+ */
61
+ const ForceCSRModule = core.declareModule({
62
+ name: 'ForceCSRModule',
63
+ providers: [
64
+ // set CSR mode globally
65
+ core.provide({
66
+ provide: tokensRender.TRAMVAI_RENDER_MODE,
67
+ useValue: 'client',
68
+ }),
69
+ // register CSR fallback component
70
+ core.provide({
71
+ provide: core.commandLineListTokens.listen,
72
+ useFactory: ({ componentRegistry, fallback }) => {
73
+ return function addCSRFallbackCompnent() {
74
+ componentRegistry.add(FALLBACK_NAME, fallback, FALLBACK_GROUP);
75
+ };
76
+ },
77
+ deps: {
78
+ componentRegistry: tokensCommon.COMPONENT_REGISTRY_TOKEN,
79
+ fallback: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
80
+ },
81
+ }),
82
+ // add CSR fallback route
83
+ core.provide({
84
+ provide: core.commandLineListTokens.customerStart,
85
+ useFactory: ({ router }) => {
86
+ return function addCSRFallbackRoute() {
87
+ router.registerHook('beforeResolve', async () => {
88
+ router.addRoute(FALLBACK_ROUTE);
89
+ });
90
+ };
91
+ },
92
+ deps: {
93
+ router: tokensRouter.ROUTER_TOKEN,
94
+ },
95
+ }),
96
+ // tramvai static will not generate CSR fallback if /bundleInfo is not contains this route
97
+ {
98
+ provide: 'router bundleInfoAdditional',
99
+ useValue: () => FALLBACK_ROUTE,
100
+ },
101
+ ],
102
+ });
103
+
45
104
  const getPageRenderMode = ({ pageService, defaultRenderMode, }) => {
46
105
  var _a;
47
106
  const { pageComponent, pageRenderMode } = pageService.getConfig();
@@ -510,18 +569,18 @@ const staticPagesProviders = [
510
569
  }),
511
570
  ];
512
571
 
513
- exports.PageRenderModeModule = class PageRenderModeModule {
514
- };
515
- exports.PageRenderModeModule = tslib.__decorate([
516
- core.Module({
517
- providers: [...sharedProviders, ...staticPagesProviders],
518
- })
519
- ], exports.PageRenderModeModule);
572
+ // @todo: перенести в @tramvai/module-render
573
+ const PageRenderModeModule = core.declareModule({
574
+ name: 'PageRenderModeModule',
575
+ imports: [...(process.env.__TRAMVAI_FORCE_CLIENT_SIDE_RENDERING ? [ForceCSRModule] : [])],
576
+ providers: [...sharedProviders, ...staticPagesProviders],
577
+ });
520
578
 
521
579
  exports.PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT = PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT;
522
580
  exports.PAGE_RENDER_DEFAULT_MODE = PAGE_RENDER_DEFAULT_MODE;
523
581
  exports.PAGE_RENDER_FALLBACK_COMPONENT_PREFIX = PAGE_RENDER_FALLBACK_COMPONENT_PREFIX;
524
582
  exports.PAGE_RENDER_WRAPPER_TYPE = PAGE_RENDER_WRAPPER_TYPE;
583
+ exports.PageRenderModeModule = PageRenderModeModule;
525
584
  exports.STATIC_PAGES_BACKGROUND_FETCH_ENABLED = STATIC_PAGES_BACKGROUND_FETCH_ENABLED;
526
585
  exports.STATIC_PAGES_CACHE_5xx_RESPONSE = STATIC_PAGES_CACHE_5xx_RESPONSE;
527
586
  exports.STATIC_PAGES_CACHE_TOKEN = STATIC_PAGES_CACHE_TOKEN;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-page-render-mode",
3
- "version": "2.61.1",
3
+ "version": "2.63.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.11",
34
- "@tramvai/core": "2.61.1",
35
- "@tramvai/react": "2.61.1",
36
- "@tramvai/papi": "2.61.1",
37
- "@tramvai/module-router": "2.61.1",
38
- "@tramvai/module-client-hints": "2.61.1",
39
- "@tramvai/tokens-common": "2.61.1",
40
- "@tramvai/tokens-core": "2.61.1",
41
- "@tramvai/tokens-render": "2.61.1",
42
- "@tramvai/tokens-router": "2.61.1",
43
- "@tramvai/tokens-server": "2.61.1",
44
- "@tramvai/tokens-server-private": "2.61.1",
45
- "@tramvai/tokens-metrics": "2.61.1",
34
+ "@tramvai/core": "2.63.0",
35
+ "@tramvai/react": "2.63.0",
36
+ "@tramvai/papi": "2.63.0",
37
+ "@tramvai/module-router": "2.63.0",
38
+ "@tramvai/module-client-hints": "2.63.0",
39
+ "@tramvai/tokens-common": "2.63.0",
40
+ "@tramvai/tokens-core": "2.63.0",
41
+ "@tramvai/tokens-render": "2.63.0",
42
+ "@tramvai/tokens-router": "2.63.0",
43
+ "@tramvai/tokens-server": "2.63.0",
44
+ "@tramvai/tokens-server-private": "2.63.0",
45
+ "@tramvai/tokens-metrics": "2.63.0",
46
46
  "prom-client": "^12.0.0",
47
47
  "react": ">=16.14.0",
48
48
  "tslib": "^2.4.0"