@tramvai/module-child-app 3.4.1 → 3.4.5
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,8 +1,8 @@
|
|
|
1
1
|
import { combineValidators, isUrl, endsWith } from '@tinkoff/env-validators';
|
|
2
|
-
import { Scope } from '@tinkoff/dippy';
|
|
2
|
+
import { Scope, optional } from '@tinkoff/dippy';
|
|
3
3
|
import { provide, commandLineListTokens } from '@tramvai/core';
|
|
4
4
|
import { ENV_USED_TOKEN, LOGGER_TOKEN, CREATE_CACHE_TOKEN, STORE_TOKEN } from '@tramvai/tokens-common';
|
|
5
|
-
import { RESOURCES_REGISTRY, RENDER_SLOTS, ResourceType, ResourceSlot, EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
5
|
+
import { RESOURCES_REGISTRY, RENDER_SLOTS, ResourceType, ResourceSlot, REACT_SERVER_RENDER_MODE, EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
6
6
|
import { CHILD_APP_LOADER_TOKEN, CHILD_APP_STATE_MANAGER_TOKEN, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN } from '@tramvai/tokens-child-app';
|
|
7
7
|
import { safeStringify } from '@tramvai/safe-strings';
|
|
8
8
|
import { ServerLoader } from './loader.es.js';
|
|
@@ -81,6 +81,7 @@ const serverProviders = [
|
|
|
81
81
|
resolveFullConfig: CHILD_APP_RESOLVE_CONFIG_TOKEN,
|
|
82
82
|
loader: CHILD_APP_LOADER_TOKEN,
|
|
83
83
|
preloadManager: CHILD_APP_PRELOAD_MANAGER_TOKEN,
|
|
84
|
+
renderMode: optional(REACT_SERVER_RENDER_MODE),
|
|
84
85
|
},
|
|
85
86
|
}),
|
|
86
87
|
provide({
|
package/lib/server/providers.js
CHANGED
|
@@ -85,6 +85,7 @@ const serverProviders = [
|
|
|
85
85
|
resolveFullConfig: tokensChildApp.CHILD_APP_RESOLVE_CONFIG_TOKEN,
|
|
86
86
|
loader: tokensChildApp.CHILD_APP_LOADER_TOKEN,
|
|
87
87
|
preloadManager: tokensChildApp.CHILD_APP_PRELOAD_MANAGER_TOKEN,
|
|
88
|
+
renderMode: dippy.optional(tokensRender.REACT_SERVER_RENDER_MODE),
|
|
88
89
|
},
|
|
89
90
|
}),
|
|
90
91
|
core.provide({
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { ExtractDependencyType } from '@tinkoff/dippy';
|
|
2
2
|
import type { ChildAppDiManager, ChildAppLoader, ChildAppPreloadManager, CHILD_APP_RESOLVE_CONFIG_TOKEN } from '@tramvai/tokens-child-app';
|
|
3
3
|
import type { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
4
|
-
import type { PageResource } from '@tramvai/tokens-render';
|
|
4
|
+
import type { PageResource, REACT_SERVER_RENDER_MODE } from '@tramvai/tokens-render';
|
|
5
5
|
import type { ServerLoader } from './loader';
|
|
6
|
-
export declare const registerChildAppRenderSlots: ({ logger, diManager, resolveFullConfig, preloadManager, loader, }: {
|
|
6
|
+
export declare const registerChildAppRenderSlots: ({ logger, diManager, resolveFullConfig, preloadManager, loader, renderMode, }: {
|
|
7
7
|
logger: ExtractDependencyType<typeof LOGGER_TOKEN>;
|
|
8
8
|
diManager: ChildAppDiManager;
|
|
9
9
|
resolveFullConfig: ExtractDependencyType<typeof CHILD_APP_RESOLVE_CONFIG_TOKEN>;
|
|
10
10
|
preloadManager: ChildAppPreloadManager;
|
|
11
11
|
loader: ChildAppLoader | ServerLoader;
|
|
12
|
+
renderMode: typeof REACT_SERVER_RENDER_MODE | null;
|
|
12
13
|
}) => PageResource[];
|
|
13
14
|
//# sourceMappingURL=render-slots.d.ts.map
|
|
@@ -5,16 +5,26 @@ import { resolve } from '@tinkoff/url';
|
|
|
5
5
|
import { RENDER_SLOTS, ResourceType, ResourceSlot } from '@tramvai/tokens-render';
|
|
6
6
|
import { getSharedScope } from '../shared/webpack/moduleFederation.es.js';
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const asyncScriptAttrs = {
|
|
9
|
+
defer: null,
|
|
10
|
+
async: 'async',
|
|
11
|
+
};
|
|
12
|
+
const deferScriptAttrs = {
|
|
13
|
+
defer: 'defer',
|
|
14
|
+
async: null,
|
|
15
|
+
};
|
|
16
|
+
const registerChildAppRenderSlots = ({ logger, diManager, resolveFullConfig, preloadManager, loader, renderMode, }) => {
|
|
9
17
|
const log = logger('child-app:render:slots');
|
|
10
18
|
const result = [];
|
|
19
|
+
// defer scripts is not suitable for React streaming, we need to ability to run them as early as possible
|
|
20
|
+
// https://github.com/reactwg/react-18/discussions/114
|
|
21
|
+
const scriptTypeAttr = renderMode === 'streaming' ? asyncScriptAttrs : deferScriptAttrs;
|
|
11
22
|
const addChunk = (entry) => {
|
|
12
23
|
if (!entry) {
|
|
13
24
|
return;
|
|
14
25
|
}
|
|
15
26
|
const extension = extname(entry);
|
|
16
27
|
switch (extension) {
|
|
17
|
-
// @todo async scripts for streaming
|
|
18
28
|
case '.js':
|
|
19
29
|
result.push({
|
|
20
30
|
type: ResourceType.script,
|
|
@@ -22,6 +32,7 @@ const registerChildAppRenderSlots = ({ logger, diManager, resolveFullConfig, pre
|
|
|
22
32
|
payload: entry,
|
|
23
33
|
attrs: {
|
|
24
34
|
'data-critical': 'true',
|
|
35
|
+
...scriptTypeAttr,
|
|
25
36
|
},
|
|
26
37
|
});
|
|
27
38
|
break;
|
|
@@ -13,16 +13,26 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
13
13
|
|
|
14
14
|
var flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const asyncScriptAttrs = {
|
|
17
|
+
defer: null,
|
|
18
|
+
async: 'async',
|
|
19
|
+
};
|
|
20
|
+
const deferScriptAttrs = {
|
|
21
|
+
defer: 'defer',
|
|
22
|
+
async: null,
|
|
23
|
+
};
|
|
24
|
+
const registerChildAppRenderSlots = ({ logger, diManager, resolveFullConfig, preloadManager, loader, renderMode, }) => {
|
|
17
25
|
const log = logger('child-app:render:slots');
|
|
18
26
|
const result = [];
|
|
27
|
+
// defer scripts is not suitable for React streaming, we need to ability to run them as early as possible
|
|
28
|
+
// https://github.com/reactwg/react-18/discussions/114
|
|
29
|
+
const scriptTypeAttr = renderMode === 'streaming' ? asyncScriptAttrs : deferScriptAttrs;
|
|
19
30
|
const addChunk = (entry) => {
|
|
20
31
|
if (!entry) {
|
|
21
32
|
return;
|
|
22
33
|
}
|
|
23
34
|
const extension = path.extname(entry);
|
|
24
35
|
switch (extension) {
|
|
25
|
-
// @todo async scripts for streaming
|
|
26
36
|
case '.js':
|
|
27
37
|
result.push({
|
|
28
38
|
type: tokensRender.ResourceType.script,
|
|
@@ -30,6 +40,7 @@ const registerChildAppRenderSlots = ({ logger, diManager, resolveFullConfig, pre
|
|
|
30
40
|
payload: entry,
|
|
31
41
|
attrs: {
|
|
32
42
|
'data-critical': 'true',
|
|
43
|
+
...scriptTypeAttr,
|
|
33
44
|
},
|
|
34
45
|
});
|
|
35
46
|
break;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-child-app",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.5",
|
|
4
4
|
"description": "Module for child apps",
|
|
5
5
|
"browser": {
|
|
6
6
|
"./lib/server.js": "./lib/browser.js",
|
|
@@ -31,21 +31,21 @@
|
|
|
31
31
|
"@tinkoff/module-loader-client": "0.5.1",
|
|
32
32
|
"@tinkoff/module-loader-server": "0.6.1",
|
|
33
33
|
"@tinkoff/url": "0.9.1",
|
|
34
|
-
"@tramvai/child-app-core": "3.4.
|
|
34
|
+
"@tramvai/child-app-core": "3.4.5",
|
|
35
35
|
"@tramvai/safe-strings": "0.6.1",
|
|
36
|
-
"@tramvai/tokens-child-app": "3.4.
|
|
36
|
+
"@tramvai/tokens-child-app": "3.4.5"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@tinkoff/dippy": "0.9.1",
|
|
41
41
|
"@tinkoff/router": "0.3.1",
|
|
42
42
|
"@tinkoff/utils": "^2.1.2",
|
|
43
|
-
"@tramvai/core": "3.4.
|
|
44
|
-
"@tramvai/state": "3.4.
|
|
45
|
-
"@tramvai/react": "3.4.
|
|
46
|
-
"@tramvai/tokens-common": "3.4.
|
|
47
|
-
"@tramvai/tokens-render": "3.4.
|
|
48
|
-
"@tramvai/tokens-router": "3.4.
|
|
43
|
+
"@tramvai/core": "3.4.5",
|
|
44
|
+
"@tramvai/state": "3.4.5",
|
|
45
|
+
"@tramvai/react": "3.4.5",
|
|
46
|
+
"@tramvai/tokens-common": "3.4.5",
|
|
47
|
+
"@tramvai/tokens-render": "3.4.5",
|
|
48
|
+
"@tramvai/tokens-router": "3.4.5",
|
|
49
49
|
"react": ">=16.14.0",
|
|
50
50
|
"react-dom": ">=16.14.0",
|
|
51
51
|
"object-assign": "^4.1.1",
|