@tramvai/module-render 3.4.5 → 3.5.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,7 +1,7 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { Module, provide, commandLineListTokens, DI_TOKEN, optional } 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, REACT_SERVER_RENDER_MODE, RENDER_MODE, MODERN_SATISFIES_TOKEN } from '@tramvai/tokens-render';
4
+ import { RESOURCES_REGISTRY, CUSTOM_RENDER, EXTEND_RENDER, RENDERER_CALLBACK, USE_REACT_STRICT_MODE, REACT_SERVER_RENDER_MODE, DEFAULT_ERROR_BOUNDARY_COMPONENT, 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';
@@ -81,6 +81,7 @@ RenderModule = RenderModule_1 = __decorate([
81
81
  di: DI_TOKEN,
82
82
  useStrictMode: USE_REACT_STRICT_MODE,
83
83
  renderMode: optional(REACT_SERVER_RENDER_MODE),
84
+ defaultErrorBoundary: optional(DEFAULT_ERROR_BOUNDARY_COMPONENT),
84
85
  },
85
86
  multi: true,
86
87
  }),
@@ -0,0 +1,34 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createElement, StrictMode } from 'react';
3
+ import { UniversalErrorBoundary } from '@tramvai/react';
4
+ import each from '@tinkoff/utils/array/each';
5
+ import { renderReact } from '../react/index.browser.js';
6
+
7
+ const createRootElement = ({ extendRender, di, consumerContext, }) => {
8
+ let element = renderReact({ di }, consumerContext);
9
+ if (extendRender) {
10
+ each((render) => {
11
+ element = render(element);
12
+ }, extendRender);
13
+ }
14
+ return element;
15
+ };
16
+ const RootClientComponent = ({ extendRender, useStrictMode, di, consumerContext, }) => {
17
+ let element = createRootElement({ di, consumerContext, extendRender });
18
+ if (useStrictMode) {
19
+ element = createElement(StrictMode, null, element);
20
+ }
21
+ return element;
22
+ };
23
+ const RootClientComponentWithBoundary = ({ defaultErrorBoundary, di, consumerContext, extendRender, customRender, useStrictMode, }) => {
24
+ const rootClientComponentProps = {
25
+ di,
26
+ consumerContext,
27
+ extendRender,
28
+ customRender,
29
+ useStrictMode,
30
+ };
31
+ return (jsx(UniversalErrorBoundary, { fallback: defaultErrorBoundary, children: jsx(RootClientComponent, { ...rootClientComponentProps }) }));
32
+ };
33
+
34
+ export { createRootElement, RootClientComponentWithBoundary as default };
@@ -0,0 +1,14 @@
1
+ import type { ExtractDependencyType } from '@tinkoff/dippy';
2
+ import type { DEFAULT_ERROR_BOUNDARY_COMPONENT, EXTEND_RENDER, USE_REACT_STRICT_MODE } from '@tramvai/tokens-render';
3
+ type RootClientComponentProps = {
4
+ consumerContext: any;
5
+ extendRender?: ExtractDependencyType<typeof EXTEND_RENDER>;
6
+ customRender?: any;
7
+ di: any;
8
+ useStrictMode: ExtractDependencyType<typeof USE_REACT_STRICT_MODE>;
9
+ defaultErrorBoundary?: ExtractDependencyType<typeof DEFAULT_ERROR_BOUNDARY_COMPONENT>;
10
+ };
11
+ export declare const createRootElement: ({ extendRender, di, consumerContext, }: Pick<RootClientComponentProps, 'di' | 'extendRender' | 'consumerContext'>) => import("react/jsx-runtime").JSX.Element;
12
+ declare const RootClientComponentWithBoundary: ({ defaultErrorBoundary, di, consumerContext, extendRender, customRender, useStrictMode, }: RootClientComponentProps) => import("react/jsx-runtime").JSX.Element;
13
+ export default RootClientComponentWithBoundary;
14
+ //# sourceMappingURL=RootClientComponent.d.ts.map
@@ -1,23 +1,23 @@
1
- import each from '@tinkoff/utils/array/each';
2
- import { createElement, StrictMode } from 'react';
3
- import { renderReact } from '../react/index.browser.js';
1
+ import { createElement } from 'react';
4
2
  import { renderer } from './renderer.browser.js';
3
+ import RootClientComponentWithBoundary, { createRootElement } from './RootClientComponent.browser.js';
5
4
 
6
- function rendering({ logger, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, renderMode, }) {
5
+ function rendering({ logger, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, renderMode, defaultErrorBoundary, }) {
7
6
  const log = logger('module-render');
8
7
  return new Promise((resolve, reject) => {
9
- let renderResult = renderReact({ di }, consumerContext);
10
- if (extendRender) {
11
- each((render) => {
12
- renderResult = render(renderResult);
13
- }, extendRender);
14
- }
15
8
  if (customRender) {
16
- return customRender(renderResult);
17
- }
18
- if (useStrictMode) {
19
- renderResult = createElement(StrictMode, null, renderResult);
9
+ // Provide possibility of customRender for root JSX.Element
10
+ // Can be useful in case of custom render function on client or to replace hydration
11
+ return customRender(createRootElement({ extendRender, di, consumerContext }));
20
12
  }
13
+ const renderResult = createElement(RootClientComponentWithBoundary, {
14
+ defaultErrorBoundary,
15
+ extendRender,
16
+ customRender,
17
+ useStrictMode,
18
+ consumerContext,
19
+ di,
20
+ });
21
21
  const container = document.querySelector('.application');
22
22
  const executeRendererCallbacks = (renderErr) => rendererCallback === null || rendererCallback === void 0 ? void 0 : rendererCallback.forEach((cb) => {
23
23
  try {
@@ -1,6 +1,6 @@
1
- import type { EXTEND_RENDER, REACT_SERVER_RENDER_MODE, RENDERER_CALLBACK, USE_REACT_STRICT_MODE } from '@tramvai/tokens-render';
1
+ import type { EXTEND_RENDER, REACT_SERVER_RENDER_MODE, RENDERER_CALLBACK, USE_REACT_STRICT_MODE, DEFAULT_ERROR_BOUNDARY_COMPONENT } from '@tramvai/tokens-render';
2
2
  import type { ExtractDependencyType } from '@tinkoff/dippy';
3
- export declare function rendering({ logger, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, renderMode, }: {
3
+ export declare function rendering({ logger, consumerContext, customRender, extendRender, di, useStrictMode, rendererCallback, renderMode, defaultErrorBoundary, }: {
4
4
  logger: any;
5
5
  consumerContext: any;
6
6
  extendRender?: ExtractDependencyType<typeof EXTEND_RENDER>;
@@ -9,5 +9,6 @@ export declare function rendering({ logger, consumerContext, customRender, exten
9
9
  useStrictMode: ExtractDependencyType<typeof USE_REACT_STRICT_MODE>;
10
10
  rendererCallback?: ExtractDependencyType<typeof RENDERER_CALLBACK>;
11
11
  renderMode?: ExtractDependencyType<typeof REACT_SERVER_RENDER_MODE>;
12
+ defaultErrorBoundary?: ExtractDependencyType<typeof DEFAULT_ERROR_BOUNDARY_COMPONENT>;
12
13
  }): Promise<void>;
13
14
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-render",
3
- "version": "3.4.5",
3
+ "version": "3.5.0",
4
4
  "description": "",
5
5
  "browser": "lib/browser.js",
6
6
  "main": "lib/server.js",
@@ -26,13 +26,13 @@
26
26
  "@tinkoff/layout-factory": "0.4.1",
27
27
  "@tinkoff/errors": "0.4.1",
28
28
  "@tinkoff/url": "0.9.1",
29
- "@tinkoff/user-agent": "0.5.16",
30
- "@tramvai/module-client-hints": "3.4.5",
31
- "@tramvai/module-router": "3.4.5",
32
- "@tramvai/react": "3.4.5",
29
+ "@tinkoff/user-agent": "0.5.18",
30
+ "@tramvai/module-client-hints": "3.5.0",
31
+ "@tramvai/module-router": "3.5.0",
32
+ "@tramvai/react": "3.5.0",
33
33
  "@tramvai/safe-strings": "0.6.1",
34
- "@tramvai/tokens-render": "3.4.5",
35
- "@tramvai/experiments": "3.4.5",
34
+ "@tramvai/tokens-render": "3.5.0",
35
+ "@tramvai/experiments": "3.5.0",
36
36
  "@types/loadable__server": "^5.12.6",
37
37
  "node-fetch": "^2.6.1"
38
38
  },
@@ -40,14 +40,14 @@
40
40
  "@tinkoff/dippy": "0.9.1",
41
41
  "@tinkoff/utils": "^2.1.2",
42
42
  "@tinkoff/react-hooks": "0.2.1",
43
- "@tramvai/cli": "3.4.5",
44
- "@tramvai/core": "3.4.5",
45
- "@tramvai/module-common": "3.4.5",
46
- "@tramvai/state": "3.4.5",
47
- "@tramvai/test-helpers": "3.4.5",
48
- "@tramvai/tokens-common": "3.4.5",
49
- "@tramvai/tokens-router": "3.4.5",
50
- "@tramvai/tokens-server-private": "3.4.5",
43
+ "@tramvai/cli": "3.5.0",
44
+ "@tramvai/core": "3.5.0",
45
+ "@tramvai/module-common": "3.5.0",
46
+ "@tramvai/state": "3.5.0",
47
+ "@tramvai/test-helpers": "3.5.0",
48
+ "@tramvai/tokens-common": "3.5.0",
49
+ "@tramvai/tokens-router": "3.5.0",
50
+ "@tramvai/tokens-server-private": "3.5.0",
51
51
  "express": "^4.17.1",
52
52
  "prop-types": "^15.6.2",
53
53
  "react": ">=16.14.0",