@tramvai/module-child-app 4.41.39 → 4.41.41

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.
@@ -1,30 +1,46 @@
1
1
  import { provide, commandLineListTokens } from '@tramvai/core';
2
2
  import { resolveLazyComponent } from '@tramvai/react';
3
- import { CHILD_APP_PRELOAD_MANAGER_TOKEN } from '@tramvai/tokens-child-app';
4
- import { LINK_PREFETCH_HANDLER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
3
+ import { CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN } from '@tramvai/tokens-child-app';
4
+ import { PAGE_SERVICE_TOKEN, LINK_PREFETCH_HANDLER_TOKEN } from '@tramvai/tokens-router';
5
5
 
6
- const pagePreload = async ({ pageService, preloadManager, }, mode, isSpaNavigation = false, route) => {
7
- const components = await Promise.all([
8
- resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
9
- resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
10
- resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
11
- ]);
12
- await Promise.all(components.map(async (component) => {
13
- if (component === null || component === void 0 ? void 0 : component.childApps) {
14
- await Promise.all(component.childApps.map((request) => {
15
- // for first preload on SPA-navigation, we need to prevent double action execution,
16
- // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
17
- if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
18
- preloadManager.saveNotPreloadedForSpaNavigation(request);
19
- }
20
- return preloadManager[mode](request, route).catch(() => {
21
- // actual error will be logged internally
22
- });
23
- }));
6
+ const pagePreload = async ({ preloadManager, preloadSourceList, }, mode, isSpaNavigation = false, route) => {
7
+ const childApps = (await Promise.all(preloadSourceList.map((source) => {
8
+ return source({ route });
9
+ }))).reduce((acc, source) => acc.concat(source), []);
10
+ await Promise.all(childApps.map((request) => {
11
+ // for first preload on SPA-navigation, we need to prevent double action execution,
12
+ // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
13
+ if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
14
+ preloadManager.saveNotPreloadedForSpaNavigation(request);
24
15
  }
16
+ return preloadManager[mode](request, route).catch(() => {
17
+ // actual error will be logged internally
18
+ });
25
19
  }));
26
20
  };
27
21
  const pagePreloadProviders = [
22
+ provide({
23
+ provide: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
24
+ useFactory: ({ pageService }) => {
25
+ return async function resolveChildAppsFromRouteComponents({ route }) {
26
+ const childApps = [];
27
+ const components = await Promise.all([
28
+ resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
29
+ resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
30
+ resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
31
+ ]);
32
+ components.forEach((component) => {
33
+ if (component === null || component === void 0 ? void 0 : component.childApps) {
34
+ childApps.push(...component.childApps);
35
+ }
36
+ });
37
+ return childApps;
38
+ };
39
+ },
40
+ deps: {
41
+ pageService: PAGE_SERVICE_TOKEN,
42
+ },
43
+ }),
28
44
  provide({
29
45
  provide: LINK_PREFETCH_HANDLER_TOKEN,
30
46
  useFactory: (deps) => {
@@ -34,8 +50,8 @@ const pagePreloadProviders = [
34
50
  },
35
51
  multi: true,
36
52
  deps: {
37
- pageService: PAGE_SERVICE_TOKEN,
38
53
  preloadManager: CHILD_APP_PRELOAD_MANAGER_TOKEN,
54
+ preloadSourceList: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
39
55
  },
40
56
  }),
41
57
  provide({
@@ -52,8 +68,8 @@ const pagePreloadProviders = [
52
68
  },
53
69
  multi: true,
54
70
  deps: {
55
- pageService: PAGE_SERVICE_TOKEN,
56
71
  preloadManager: CHILD_APP_PRELOAD_MANAGER_TOKEN,
72
+ preloadSourceList: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
57
73
  },
58
74
  }),
59
75
  ];
@@ -1,30 +1,46 @@
1
1
  import { provide, commandLineListTokens } from '@tramvai/core';
2
2
  import { resolveLazyComponent } from '@tramvai/react';
3
- import { CHILD_APP_PRELOAD_MANAGER_TOKEN } from '@tramvai/tokens-child-app';
4
- import { LINK_PREFETCH_HANDLER_TOKEN, PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
3
+ import { CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN } from '@tramvai/tokens-child-app';
4
+ import { PAGE_SERVICE_TOKEN, LINK_PREFETCH_HANDLER_TOKEN } from '@tramvai/tokens-router';
5
5
 
6
- const pagePreload = async ({ pageService, preloadManager, }, mode, isSpaNavigation = false, route) => {
7
- const components = await Promise.all([
8
- resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
9
- resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
10
- resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
11
- ]);
12
- await Promise.all(components.map(async (component) => {
13
- if (component === null || component === void 0 ? void 0 : component.childApps) {
14
- await Promise.all(component.childApps.map((request) => {
15
- // for first preload on SPA-navigation, we need to prevent double action execution,
16
- // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
17
- if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
18
- preloadManager.saveNotPreloadedForSpaNavigation(request);
19
- }
20
- return preloadManager[mode](request, route).catch(() => {
21
- // actual error will be logged internally
22
- });
23
- }));
6
+ const pagePreload = async ({ preloadManager, preloadSourceList, }, mode, isSpaNavigation = false, route) => {
7
+ const childApps = (await Promise.all(preloadSourceList.map((source) => {
8
+ return source({ route });
9
+ }))).reduce((acc, source) => acc.concat(source), []);
10
+ await Promise.all(childApps.map((request) => {
11
+ // for first preload on SPA-navigation, we need to prevent double action execution,
12
+ // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
13
+ if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
14
+ preloadManager.saveNotPreloadedForSpaNavigation(request);
24
15
  }
16
+ return preloadManager[mode](request, route).catch(() => {
17
+ // actual error will be logged internally
18
+ });
25
19
  }));
26
20
  };
27
21
  const pagePreloadProviders = [
22
+ provide({
23
+ provide: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
24
+ useFactory: ({ pageService }) => {
25
+ return async function resolveChildAppsFromRouteComponents({ route }) {
26
+ const childApps = [];
27
+ const components = await Promise.all([
28
+ resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
29
+ resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
30
+ resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
31
+ ]);
32
+ components.forEach((component) => {
33
+ if (component === null || component === void 0 ? void 0 : component.childApps) {
34
+ childApps.push(...component.childApps);
35
+ }
36
+ });
37
+ return childApps;
38
+ };
39
+ },
40
+ deps: {
41
+ pageService: PAGE_SERVICE_TOKEN,
42
+ },
43
+ }),
28
44
  provide({
29
45
  provide: LINK_PREFETCH_HANDLER_TOKEN,
30
46
  useFactory: (deps) => {
@@ -34,8 +50,8 @@ const pagePreloadProviders = [
34
50
  },
35
51
  multi: true,
36
52
  deps: {
37
- pageService: PAGE_SERVICE_TOKEN,
38
53
  preloadManager: CHILD_APP_PRELOAD_MANAGER_TOKEN,
54
+ preloadSourceList: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
39
55
  },
40
56
  }),
41
57
  provide({
@@ -52,8 +68,8 @@ const pagePreloadProviders = [
52
68
  },
53
69
  multi: true,
54
70
  deps: {
55
- pageService: PAGE_SERVICE_TOKEN,
56
71
  preloadManager: CHILD_APP_PRELOAD_MANAGER_TOKEN,
72
+ preloadSourceList: CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
57
73
  },
58
74
  }),
59
75
  ];
@@ -7,28 +7,44 @@ var react = require('@tramvai/react');
7
7
  var tokensChildApp = require('@tramvai/tokens-child-app');
8
8
  var tokensRouter = require('@tramvai/tokens-router');
9
9
 
10
- const pagePreload = async ({ pageService, preloadManager, }, mode, isSpaNavigation = false, route) => {
11
- const components = await Promise.all([
12
- react.resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
13
- react.resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
14
- react.resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
15
- ]);
16
- await Promise.all(components.map(async (component) => {
17
- if (component === null || component === void 0 ? void 0 : component.childApps) {
18
- await Promise.all(component.childApps.map((request) => {
19
- // for first preload on SPA-navigation, we need to prevent double action execution,
20
- // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
21
- if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
22
- preloadManager.saveNotPreloadedForSpaNavigation(request);
23
- }
24
- return preloadManager[mode](request, route).catch(() => {
25
- // actual error will be logged internally
26
- });
27
- }));
10
+ const pagePreload = async ({ preloadManager, preloadSourceList, }, mode, isSpaNavigation = false, route) => {
11
+ const childApps = (await Promise.all(preloadSourceList.map((source) => {
12
+ return source({ route });
13
+ }))).reduce((acc, source) => acc.concat(source), []);
14
+ await Promise.all(childApps.map((request) => {
15
+ // for first preload on SPA-navigation, we need to prevent double action execution,
16
+ // and need to mark this Child App as not preloaded, to prevent running `spa` and `afterSpa` commands for it
17
+ if (mode === 'preload' && isSpaNavigation && !preloadManager.isPreloaded(request)) {
18
+ preloadManager.saveNotPreloadedForSpaNavigation(request);
28
19
  }
20
+ return preloadManager[mode](request, route).catch(() => {
21
+ // actual error will be logged internally
22
+ });
29
23
  }));
30
24
  };
31
25
  const pagePreloadProviders = [
26
+ core.provide({
27
+ provide: tokensChildApp.CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
28
+ useFactory: ({ pageService }) => {
29
+ return async function resolveChildAppsFromRouteComponents({ route }) {
30
+ const childApps = [];
31
+ const components = await Promise.all([
32
+ react.resolveLazyComponent(pageService.resolveComponentFromConfig('layout', route)),
33
+ react.resolveLazyComponent(pageService.resolveComponentFromConfig('nestedLayout', route)),
34
+ react.resolveLazyComponent(pageService.resolveComponentFromConfig('page', route)),
35
+ ]);
36
+ components.forEach((component) => {
37
+ if (component === null || component === void 0 ? void 0 : component.childApps) {
38
+ childApps.push(...component.childApps);
39
+ }
40
+ });
41
+ return childApps;
42
+ };
43
+ },
44
+ deps: {
45
+ pageService: tokensRouter.PAGE_SERVICE_TOKEN,
46
+ },
47
+ }),
32
48
  core.provide({
33
49
  provide: tokensRouter.LINK_PREFETCH_HANDLER_TOKEN,
34
50
  useFactory: (deps) => {
@@ -38,8 +54,8 @@ const pagePreloadProviders = [
38
54
  },
39
55
  multi: true,
40
56
  deps: {
41
- pageService: tokensRouter.PAGE_SERVICE_TOKEN,
42
57
  preloadManager: tokensChildApp.CHILD_APP_PRELOAD_MANAGER_TOKEN,
58
+ preloadSourceList: tokensChildApp.CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
43
59
  },
44
60
  }),
45
61
  core.provide({
@@ -56,8 +72,8 @@ const pagePreloadProviders = [
56
72
  },
57
73
  multi: true,
58
74
  deps: {
59
- pageService: tokensRouter.PAGE_SERVICE_TOKEN,
60
75
  preloadManager: tokensChildApp.CHILD_APP_PRELOAD_MANAGER_TOKEN,
76
+ preloadSourceList: tokensChildApp.CHILD_APP_PRELOAD_SOURCE_LIST_TOKEN,
61
77
  },
62
78
  }),
63
79
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-child-app",
3
- "version": "4.41.39",
3
+ "version": "4.41.41",
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.3.3",
34
34
  "@tinkoff/module-loader-client": "0.6.6",
35
35
  "@tinkoff/module-loader-server": "0.7.6",
36
- "@tramvai/module-common": "4.41.39",
36
+ "@tramvai/module-common": "4.41.41",
37
37
  "@tinkoff/url": "0.10.3",
38
- "@tramvai/child-app-core": "4.41.39",
38
+ "@tramvai/child-app-core": "4.41.41",
39
39
  "@tramvai/safe-strings": "0.7.9",
40
- "@tramvai/tokens-child-app": "4.41.39"
40
+ "@tramvai/tokens-child-app": "4.41.41"
41
41
  },
42
42
  "devDependencies": {},
43
43
  "peerDependencies": {
44
44
  "@tinkoff/dippy": "0.10.11",
45
- "@tinkoff/router": "0.4.174",
45
+ "@tinkoff/router": "0.4.176",
46
46
  "@tinkoff/utils": "^2.1.2",
47
- "@tramvai/core": "4.41.39",
48
- "@tramvai/state": "4.41.39",
49
- "@tramvai/react": "4.41.39",
50
- "@tramvai/tokens-common": "4.41.39",
51
- "@tramvai/tokens-render": "4.41.39",
52
- "@tramvai/tokens-router": "4.41.39",
47
+ "@tramvai/core": "4.41.41",
48
+ "@tramvai/state": "4.41.41",
49
+ "@tramvai/react": "4.41.41",
50
+ "@tramvai/tokens-common": "4.41.41",
51
+ "@tramvai/tokens-render": "4.41.41",
52
+ "@tramvai/tokens-router": "4.41.41",
53
53
  "react": ">=16.14.0",
54
54
  "react-dom": ">=16.14.0",
55
55
  "object-assign": "^4.1.1",