@tramvai/module-child-app 5.9.2 → 5.10.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/shared/providers.browser.js +20 -1
- package/lib/shared/providers.es.js +20 -1
- package/lib/shared/providers.js +19 -0
- package/lib/shared/react/childAppErrorBoundary.browser.js +14 -0
- package/lib/shared/react/childAppErrorBoundary.d.ts +8 -0
- package/lib/shared/react/childAppErrorBoundary.es.js +14 -0
- package/lib/shared/react/childAppErrorBoundary.js +18 -0
- package/lib/shared/react/component.browser.js +3 -3
- package/lib/shared/react/component.es.js +3 -3
- package/lib/shared/react/component.js +2 -2
- package/package.json +11 -11
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Scope, DI_TOKEN, optional } from '@tinkoff/dippy';
|
|
2
2
|
import { provide, commandLineListTokens, COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
|
|
3
|
-
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS } from '@tramvai/tokens-child-app';
|
|
3
|
+
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS, CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
4
|
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
5
5
|
import { EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
6
6
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN, LINK_PREFETCH_MANAGER_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
@@ -226,6 +226,25 @@ const sharedProviders = [
|
|
|
226
226
|
],
|
|
227
227
|
},
|
|
228
228
|
}),
|
|
229
|
+
provide({
|
|
230
|
+
provide: CHILD_APP_ERROR_BOUNDARY_TOKEN,
|
|
231
|
+
useFactory: ({ logger }) => {
|
|
232
|
+
const log = logger('child-app:render');
|
|
233
|
+
return function logErrorBoundary(error, info, config) {
|
|
234
|
+
log.error({
|
|
235
|
+
event: 'component-did-catch',
|
|
236
|
+
message: 'An unexpected error occured during rendering',
|
|
237
|
+
error,
|
|
238
|
+
info,
|
|
239
|
+
childApp: config,
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
},
|
|
243
|
+
deps: {
|
|
244
|
+
logger: LOGGER_TOKEN,
|
|
245
|
+
},
|
|
246
|
+
multi: true,
|
|
247
|
+
}),
|
|
229
248
|
];
|
|
230
249
|
|
|
231
250
|
export { sharedProviders };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Scope, DI_TOKEN, optional } from '@tinkoff/dippy';
|
|
2
2
|
import { provide, commandLineListTokens, COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
|
|
3
|
-
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS } from '@tramvai/tokens-child-app';
|
|
3
|
+
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS, CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
4
|
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
5
5
|
import { EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
6
6
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN, LINK_PREFETCH_MANAGER_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
@@ -226,6 +226,25 @@ const sharedProviders = [
|
|
|
226
226
|
],
|
|
227
227
|
},
|
|
228
228
|
}),
|
|
229
|
+
provide({
|
|
230
|
+
provide: CHILD_APP_ERROR_BOUNDARY_TOKEN,
|
|
231
|
+
useFactory: ({ logger }) => {
|
|
232
|
+
const log = logger('child-app:render');
|
|
233
|
+
return function logErrorBoundary(error, info, config) {
|
|
234
|
+
log.error({
|
|
235
|
+
event: 'component-did-catch',
|
|
236
|
+
message: 'An unexpected error occured during rendering',
|
|
237
|
+
error,
|
|
238
|
+
info,
|
|
239
|
+
childApp: config,
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
},
|
|
243
|
+
deps: {
|
|
244
|
+
logger: LOGGER_TOKEN,
|
|
245
|
+
},
|
|
246
|
+
multi: true,
|
|
247
|
+
}),
|
|
229
248
|
];
|
|
230
249
|
|
|
231
250
|
export { sharedProviders };
|
package/lib/shared/providers.js
CHANGED
|
@@ -230,6 +230,25 @@ const sharedProviders = [
|
|
|
230
230
|
],
|
|
231
231
|
},
|
|
232
232
|
}),
|
|
233
|
+
core.provide({
|
|
234
|
+
provide: tokensChildApp.CHILD_APP_ERROR_BOUNDARY_TOKEN,
|
|
235
|
+
useFactory: ({ logger }) => {
|
|
236
|
+
const log = logger('child-app:render');
|
|
237
|
+
return function logErrorBoundary(error, info, config) {
|
|
238
|
+
log.error({
|
|
239
|
+
event: 'component-did-catch',
|
|
240
|
+
message: 'An unexpected error occured during rendering',
|
|
241
|
+
error,
|
|
242
|
+
info,
|
|
243
|
+
childApp: config,
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
},
|
|
247
|
+
deps: {
|
|
248
|
+
logger: tokensCommon.LOGGER_TOKEN,
|
|
249
|
+
},
|
|
250
|
+
multi: true,
|
|
251
|
+
}),
|
|
233
252
|
];
|
|
234
253
|
|
|
235
254
|
exports.sharedProviders = sharedProviders;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
|
+
import { useDi, UniversalErrorBoundary } from '@tramvai/react';
|
|
5
|
+
|
|
6
|
+
const ChildAppErrorBoundary = (props) => {
|
|
7
|
+
const { children, config } = props;
|
|
8
|
+
const { fallback, name, version, tag } = config;
|
|
9
|
+
const errorHandlers = useDi({ token: CHILD_APP_ERROR_BOUNDARY_TOKEN, optional: true });
|
|
10
|
+
const decoratedErrorHandlers = useMemo(() => errorHandlers === null || errorHandlers === void 0 ? void 0 : errorHandlers.map((errorHandler) => (error, info) => errorHandler(error, info, { name, version, tag })), [errorHandlers, name, version, tag]);
|
|
11
|
+
return (jsx(UniversalErrorBoundary, { fallback: fallback, errorHandlers: decoratedErrorHandlers, children: children }));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { ChildAppErrorBoundary };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PropsWithChildren } from 'react';
|
|
2
|
+
import type { ChildAppReactConfig } from '@tramvai/tokens-child-app';
|
|
3
|
+
type Props = {
|
|
4
|
+
config: ChildAppReactConfig;
|
|
5
|
+
};
|
|
6
|
+
export declare const ChildAppErrorBoundary: (props: PropsWithChildren<Props>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=childAppErrorBoundary.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
|
+
import { useDi, UniversalErrorBoundary } from '@tramvai/react';
|
|
5
|
+
|
|
6
|
+
const ChildAppErrorBoundary = (props) => {
|
|
7
|
+
const { children, config } = props;
|
|
8
|
+
const { fallback, name, version, tag } = config;
|
|
9
|
+
const errorHandlers = useDi({ token: CHILD_APP_ERROR_BOUNDARY_TOKEN, optional: true });
|
|
10
|
+
const decoratedErrorHandlers = useMemo(() => errorHandlers === null || errorHandlers === void 0 ? void 0 : errorHandlers.map((errorHandler) => (error, info) => errorHandler(error, info, { name, version, tag })), [errorHandlers, name, version, tag]);
|
|
11
|
+
return (jsx(UniversalErrorBoundary, { fallback: fallback, errorHandlers: decoratedErrorHandlers, children: children }));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { ChildAppErrorBoundary };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react$1 = require('react');
|
|
7
|
+
var tokensChildApp = require('@tramvai/tokens-child-app');
|
|
8
|
+
var react = require('@tramvai/react');
|
|
9
|
+
|
|
10
|
+
const ChildAppErrorBoundary = (props) => {
|
|
11
|
+
const { children, config } = props;
|
|
12
|
+
const { fallback, name, version, tag } = config;
|
|
13
|
+
const errorHandlers = react.useDi({ token: tokensChildApp.CHILD_APP_ERROR_BOUNDARY_TOKEN, optional: true });
|
|
14
|
+
const decoratedErrorHandlers = react$1.useMemo(() => errorHandlers === null || errorHandlers === void 0 ? void 0 : errorHandlers.map((errorHandler) => (error, info) => errorHandler(error, info, { name, version, tag })), [errorHandlers, name, version, tag]);
|
|
15
|
+
return (jsxRuntime.jsx(react.UniversalErrorBoundary, { fallback: fallback, errorHandlers: decoratedErrorHandlers, children: children }));
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.ChildAppErrorBoundary = ChildAppErrorBoundary;
|
|
@@ -3,9 +3,10 @@ import noop from '@tinkoff/utils/function/noop';
|
|
|
3
3
|
import { memo, Suspense, useContext, useMemo, useState, useEffect } from 'react';
|
|
4
4
|
import { CHILD_APP_INTERNAL_RENDER_TOKEN } from '@tramvai/tokens-child-app';
|
|
5
5
|
import { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
6
|
-
import {
|
|
6
|
+
import { useDi } from '@tramvai/react';
|
|
7
7
|
import { RenderContext } from './render-context.browser.js';
|
|
8
8
|
import { Extractor } from './extractor.browser.browser.js';
|
|
9
|
+
import { ChildAppErrorBoundary } from './childAppErrorBoundary.browser.js';
|
|
9
10
|
|
|
10
11
|
const FailedChildAppFallback = ({ config: { name, version, tag, fallback: Fallback }, }) => {
|
|
11
12
|
const logger = useDi(LOGGER_TOKEN);
|
|
@@ -93,12 +94,11 @@ const ChildAppWrapper = ({ name, version, tag, props, fallback: Fallback, }) =>
|
|
|
93
94
|
}
|
|
94
95
|
};
|
|
95
96
|
const ChildApp = memo((config) => {
|
|
96
|
-
const { fallback } = config;
|
|
97
97
|
let result = jsx(ChildAppWrapper, { ...config });
|
|
98
98
|
if (process.env.__TRAMVAI_CONCURRENT_FEATURES) {
|
|
99
99
|
result = jsx(Suspense, { fallback: jsx(FailedChildAppFallback, { config: config }), children: result });
|
|
100
100
|
}
|
|
101
|
-
return jsx(
|
|
101
|
+
return jsx(ChildAppErrorBoundary, { config: config, children: result });
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
export { ChildApp };
|
|
@@ -3,9 +3,10 @@ import noop from '@tinkoff/utils/function/noop';
|
|
|
3
3
|
import { memo, Suspense, useContext, useMemo, useState, useEffect } from 'react';
|
|
4
4
|
import { CHILD_APP_INTERNAL_RENDER_TOKEN } from '@tramvai/tokens-child-app';
|
|
5
5
|
import { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
6
|
-
import {
|
|
6
|
+
import { useDi } from '@tramvai/react';
|
|
7
7
|
import { RenderContext } from './render-context.es.js';
|
|
8
8
|
import { Extractor } from './extractor.es.js';
|
|
9
|
+
import { ChildAppErrorBoundary } from './childAppErrorBoundary.es.js';
|
|
9
10
|
|
|
10
11
|
const FailedChildAppFallback = ({ config: { name, version, tag, fallback: Fallback }, }) => {
|
|
11
12
|
const logger = useDi(LOGGER_TOKEN);
|
|
@@ -93,12 +94,11 @@ const ChildAppWrapper = ({ name, version, tag, props, fallback: Fallback, }) =>
|
|
|
93
94
|
}
|
|
94
95
|
};
|
|
95
96
|
const ChildApp = memo((config) => {
|
|
96
|
-
const { fallback } = config;
|
|
97
97
|
let result = jsx(ChildAppWrapper, { ...config });
|
|
98
98
|
if (process.env.__TRAMVAI_CONCURRENT_FEATURES) {
|
|
99
99
|
result = jsx(Suspense, { fallback: jsx(FailedChildAppFallback, { config: config }), children: result });
|
|
100
100
|
}
|
|
101
|
-
return jsx(
|
|
101
|
+
return jsx(ChildAppErrorBoundary, { config: config, children: result });
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
export { ChildApp };
|
|
@@ -10,6 +10,7 @@ var tokensCommon = require('@tramvai/tokens-common');
|
|
|
10
10
|
var react$1 = require('@tramvai/react');
|
|
11
11
|
var renderContext = require('./render-context.js');
|
|
12
12
|
var extractor = require('./extractor.js');
|
|
13
|
+
var childAppErrorBoundary = require('./childAppErrorBoundary.js');
|
|
13
14
|
|
|
14
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
16
|
|
|
@@ -101,12 +102,11 @@ const ChildAppWrapper = ({ name, version, tag, props, fallback: Fallback, }) =>
|
|
|
101
102
|
}
|
|
102
103
|
};
|
|
103
104
|
const ChildApp = react.memo((config) => {
|
|
104
|
-
const { fallback } = config;
|
|
105
105
|
let result = jsxRuntime.jsx(ChildAppWrapper, { ...config });
|
|
106
106
|
if (process.env.__TRAMVAI_CONCURRENT_FEATURES) {
|
|
107
107
|
result = jsxRuntime.jsx(react.Suspense, { fallback: jsxRuntime.jsx(FailedChildAppFallback, { config: config }), children: result });
|
|
108
108
|
}
|
|
109
|
-
return jsxRuntime.jsx(
|
|
109
|
+
return jsxRuntime.jsx(childAppErrorBoundary.ChildAppErrorBoundary, { config: config, children: result });
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
exports.ChildApp = ChildApp;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-child-app",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.10.0",
|
|
4
4
|
"description": "Module for child apps",
|
|
5
5
|
"browser": {
|
|
6
6
|
"./lib/server.js": "./lib/browser.js",
|
|
@@ -33,23 +33,23 @@
|
|
|
33
33
|
"@tinkoff/env-validators": "0.4.2",
|
|
34
34
|
"@tinkoff/module-loader-client": "0.7.3",
|
|
35
35
|
"@tinkoff/module-loader-server": "0.8.3",
|
|
36
|
-
"@tramvai/module-common": "5.
|
|
36
|
+
"@tramvai/module-common": "5.10.0",
|
|
37
37
|
"@tinkoff/url": "0.11.2",
|
|
38
|
-
"@tramvai/child-app-core": "5.
|
|
38
|
+
"@tramvai/child-app-core": "5.10.0",
|
|
39
39
|
"@tramvai/safe-strings": "0.8.3",
|
|
40
|
-
"@tramvai/tokens-child-app": "5.
|
|
40
|
+
"@tramvai/tokens-child-app": "5.10.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@tinkoff/dippy": "0.11.3",
|
|
45
|
-
"@tinkoff/router": "0.5.
|
|
45
|
+
"@tinkoff/router": "0.5.27",
|
|
46
46
|
"@tinkoff/utils": "^2.1.2",
|
|
47
|
-
"@tramvai/core": "5.
|
|
48
|
-
"@tramvai/state": "5.
|
|
49
|
-
"@tramvai/react": "5.
|
|
50
|
-
"@tramvai/tokens-common": "5.
|
|
51
|
-
"@tramvai/tokens-render": "5.
|
|
52
|
-
"@tramvai/tokens-router": "5.
|
|
47
|
+
"@tramvai/core": "5.10.0",
|
|
48
|
+
"@tramvai/state": "5.10.0",
|
|
49
|
+
"@tramvai/react": "5.10.0",
|
|
50
|
+
"@tramvai/tokens-common": "5.10.0",
|
|
51
|
+
"@tramvai/tokens-render": "5.10.0",
|
|
52
|
+
"@tramvai/tokens-router": "5.10.0",
|
|
53
53
|
"react": ">=16.14.0",
|
|
54
54
|
"react-dom": ">=16.14.0",
|
|
55
55
|
"object-assign": "^4.1.1",
|