@modern-js/plugin-garfish 2.10.0 → 2.11.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/CHANGELOG.md +18 -0
- package/dist/cjs/cli/index.js +5 -1
- package/dist/cjs/cli/utils.js +20 -9
- package/dist/esm/cli/index.js +2 -1
- package/dist/esm/cli/utils.js +9 -3
- package/dist/esm-node/cli/index.js +5 -1
- package/dist/esm-node/cli/utils.js +20 -9
- package/dist/types/cli/utils.d.ts +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @modern-js/plugin-garfish
|
|
2
2
|
|
|
3
|
+
## 2.11.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 02bb383: fix: fix lost props when using nested route in micro-front-end mode
|
|
8
|
+
修复嵌套路由在微前端场景下主子应用传递 props 丢失问题
|
|
9
|
+
- Updated dependencies [cfb058f]
|
|
10
|
+
- Updated dependencies [0bd018b]
|
|
11
|
+
- Updated dependencies [5d624fd]
|
|
12
|
+
- Updated dependencies [e2466a1]
|
|
13
|
+
- Updated dependencies [02bb383]
|
|
14
|
+
- Updated dependencies [381a3b9]
|
|
15
|
+
- Updated dependencies [7a60f10]
|
|
16
|
+
- Updated dependencies [274b2e5]
|
|
17
|
+
- Updated dependencies [b9e1c54]
|
|
18
|
+
- @modern-js/utils@2.11.0
|
|
19
|
+
- @modern-js/runtime@2.11.0
|
|
20
|
+
|
|
3
21
|
## 2.10.0
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -234,7 +234,11 @@ var cli_default = ({
|
|
|
234
234
|
if (!((_a = config == null ? void 0 : config.deploy) == null ? void 0 : _a.microFrontend)) {
|
|
235
235
|
return { entrypoint, code };
|
|
236
236
|
}
|
|
237
|
-
const
|
|
237
|
+
const { nestedRoutesEntry, pageRoutesEntry } = entrypoint;
|
|
238
|
+
const nCode = (0, import_utils2.makeRenderFunction)(
|
|
239
|
+
code,
|
|
240
|
+
Boolean(nestedRoutesEntry || pageRoutesEntry)
|
|
241
|
+
);
|
|
238
242
|
(0, import_util.logger)("makeRenderFunction", nCode);
|
|
239
243
|
return {
|
|
240
244
|
entrypoint,
|
package/dist/cjs/cli/utils.js
CHANGED
|
@@ -105,19 +105,30 @@ function generateAppWrapperAndRootDom ({ App, props: garfishProps, dom }) {
|
|
|
105
105
|
return { AppWrapper, mountNode }
|
|
106
106
|
}
|
|
107
107
|
`;
|
|
108
|
-
const makeRenderFunction = (code) => {
|
|
108
|
+
const makeRenderFunction = (code, isNested) => {
|
|
109
109
|
const inGarfishToRender = `
|
|
110
110
|
const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
|
|
111
111
|
if (!canContinueRender({ dom, appName })) return null;
|
|
112
|
-
let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App, props: {...props, basename}, dom});
|
|
113
112
|
`;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
113
|
+
const appWrapperCode = `let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App: ${isNested ? "AppWrapper" : "App"}, props: {...props, basename}, dom});`;
|
|
114
|
+
if (isNested) {
|
|
115
|
+
const codeString = inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace("(App)", `(AppWrapper)`).replace(/MOUNT_ID/g, "mountNode").replace(`if(!AppWrapper.init`, `${appWrapperCode}if(!AppWrapper.init`).replace(
|
|
116
|
+
`bootstrap(AppWrapper, mountNode, root`,
|
|
117
|
+
"bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
|
|
118
|
+
).replace(
|
|
119
|
+
`customBootstrap(AppWrapper`,
|
|
120
|
+
"customBootstrap(AppWrapper, mountNode"
|
|
121
|
+
);
|
|
122
|
+
return codeString;
|
|
123
|
+
} else {
|
|
124
|
+
return inGarfishToRender + appWrapperCode + code.replace(`router(`, `generateRouterPlugin(basename,`).replace("(App)", `(AppWrapper)`).replace(/MOUNT_ID/g, "mountNode").replace(
|
|
125
|
+
`bootstrap(AppWrapper, mountNode, root`,
|
|
126
|
+
"bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
|
|
127
|
+
).replace(
|
|
128
|
+
`customBootstrap(AppWrapper`,
|
|
129
|
+
"customBootstrap(AppWrapper, mountNode"
|
|
130
|
+
);
|
|
131
|
+
}
|
|
121
132
|
};
|
|
122
133
|
function getRuntimeConfig(config) {
|
|
123
134
|
var _a, _b;
|
package/dist/esm/cli/index.js
CHANGED
|
@@ -374,7 +374,8 @@ var cli_default = function() {
|
|
|
374
374
|
code: code
|
|
375
375
|
};
|
|
376
376
|
}
|
|
377
|
-
var
|
|
377
|
+
var nestedRoutesEntry = entrypoint.nestedRoutesEntry, pageRoutesEntry = entrypoint.pageRoutesEntry;
|
|
378
|
+
var nCode = makeRenderFunction(code, Boolean(nestedRoutesEntry || pageRoutesEntry));
|
|
378
379
|
logger("makeRenderFunction", nCode);
|
|
379
380
|
return {
|
|
380
381
|
entrypoint: entrypoint,
|
package/dist/esm/cli/utils.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
var makeProvider = function() {
|
|
2
2
|
return "\nexport const provider = function ({basename, dom}) {\n return {\n render({basename, dom, props, appName}) {\n render({ props, basename, dom, appName });\n },\n destroy({ dom }) {\n const node = dom.querySelector('#' + MOUNT_ID) || dom;\n\n if (node) {\n if (IS_REACT18) {\n root.unmount();\n } else {\n unmountComponentAtNode(node);\n }\n }\n },\n SubModuleComponent: (props) => {\n const SubApp = render({props, basename});\n\n return createPortal(<SubApp />, dom.querySelector('#' + MOUNT_ID) || dom);\n },\n jupiter_submodule_app_key: (props) => {\n const SubApp = render({props, basename});\n\n return createPortal(<SubApp />, dom.querySelector('#' + MOUNT_ID) || dom);\n }\n }\n};\n\nif (typeof __GARFISH_EXPORTS__ !== 'undefined') {\n __GARFISH_EXPORTS__.provider = provider;\n}\n\nfunction canContinueRender ({ dom, appName }) {\n var renderByGarfish =\n typeof __GARFISH_EXPORTS__ !== 'undefined'\n || typeof window !== 'undefined' && window.Garfish && window.Garfish.activeApps && window.Garfish.activeApps.some((app)=>app.appInfo.name === appName);\n let renderByProvider = dom || appName;\n if (renderByGarfish) {\n // Runs in the Garfish environment and is rendered by the provider\n if (renderByProvider) {\n return true;\n } else {\n // Runs in the Garfish environment and is not rendered by the provider\n return false;\n }\n } else {\n // Running in a non-Garfish environment\n return true;\n }\n}\n\nfunction generateRouterPlugin (basename,routerConfig) {\n if (basename) {\n routerConfig.basename = basename;\n if (routerConfig.supportHtml5History !== false) {\n if (!routerConfig.historyOptions) {\n routerConfig.historyOptions = {\n basename: basename\n };\n } else {\n routerConfig.historyOptions.basename = basename;\n }\n }\n }\n return router(routerConfig);\n}\n\nfunction generateAppWrapperAndRootDom ({ App, props: garfishProps, dom }) {\n let AppWrapper = App;\n if (garfishProps) {\n AppWrapper = function (props) {\n return React.createElement(App, { ...garfishProps, ...props });\n };\n AppWrapper = hoistNonReactStatics(AppWrapper, App);\n }\n const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : document.getElementById(MOUNT_ID);\n return { AppWrapper, mountNode }\n}\n";
|
|
3
3
|
};
|
|
4
|
-
var makeRenderFunction = function(code) {
|
|
5
|
-
var inGarfishToRender = "\n const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};\n if (!canContinueRender({ dom, appName })) return null;\n
|
|
6
|
-
|
|
4
|
+
var makeRenderFunction = function(code, isNested) {
|
|
5
|
+
var inGarfishToRender = "\n const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};\n if (!canContinueRender({ dom, appName })) return null;\n ";
|
|
6
|
+
var appWrapperCode = "let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App: ".concat(isNested ? "AppWrapper" : "App", ", props: {...props, basename}, dom});");
|
|
7
|
+
if (isNested) {
|
|
8
|
+
var codeString = inGarfishToRender + code.replace("router(", "generateRouterPlugin(basename,").replace("(App)", "(AppWrapper)").replace(/MOUNT_ID/g, "mountNode").replace("if(!AppWrapper.init", "".concat(appWrapperCode, "if(!AppWrapper.init")).replace("bootstrap(AppWrapper, mountNode, root", "bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null").replace("customBootstrap(AppWrapper", "customBootstrap(AppWrapper, mountNode");
|
|
9
|
+
return codeString;
|
|
10
|
+
} else {
|
|
11
|
+
return inGarfishToRender + appWrapperCode + code.replace("router(", "generateRouterPlugin(basename,").replace("(App)", "(AppWrapper)").replace(/MOUNT_ID/g, "mountNode").replace("bootstrap(AppWrapper, mountNode, root", "bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null").replace("customBootstrap(AppWrapper", "customBootstrap(AppWrapper, mountNode");
|
|
12
|
+
}
|
|
7
13
|
};
|
|
8
14
|
function getRuntimeConfig(config) {
|
|
9
15
|
var _config_runtime;
|
|
@@ -216,7 +216,11 @@ var cli_default = ({
|
|
|
216
216
|
if (!((_a = config == null ? void 0 : config.deploy) == null ? void 0 : _a.microFrontend)) {
|
|
217
217
|
return { entrypoint, code };
|
|
218
218
|
}
|
|
219
|
-
const
|
|
219
|
+
const { nestedRoutesEntry, pageRoutesEntry } = entrypoint;
|
|
220
|
+
const nCode = makeRenderFunction(
|
|
221
|
+
code,
|
|
222
|
+
Boolean(nestedRoutesEntry || pageRoutesEntry)
|
|
223
|
+
);
|
|
220
224
|
logger("makeRenderFunction", nCode);
|
|
221
225
|
return {
|
|
222
226
|
entrypoint,
|
|
@@ -79,19 +79,30 @@ function generateAppWrapperAndRootDom ({ App, props: garfishProps, dom }) {
|
|
|
79
79
|
return { AppWrapper, mountNode }
|
|
80
80
|
}
|
|
81
81
|
`;
|
|
82
|
-
const makeRenderFunction = (code) => {
|
|
82
|
+
const makeRenderFunction = (code, isNested) => {
|
|
83
83
|
const inGarfishToRender = `
|
|
84
84
|
const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
|
|
85
85
|
if (!canContinueRender({ dom, appName })) return null;
|
|
86
|
-
let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App, props: {...props, basename}, dom});
|
|
87
86
|
`;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
const appWrapperCode = `let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App: ${isNested ? "AppWrapper" : "App"}, props: {...props, basename}, dom});`;
|
|
88
|
+
if (isNested) {
|
|
89
|
+
const codeString = inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace("(App)", `(AppWrapper)`).replace(/MOUNT_ID/g, "mountNode").replace(`if(!AppWrapper.init`, `${appWrapperCode}if(!AppWrapper.init`).replace(
|
|
90
|
+
`bootstrap(AppWrapper, mountNode, root`,
|
|
91
|
+
"bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
|
|
92
|
+
).replace(
|
|
93
|
+
`customBootstrap(AppWrapper`,
|
|
94
|
+
"customBootstrap(AppWrapper, mountNode"
|
|
95
|
+
);
|
|
96
|
+
return codeString;
|
|
97
|
+
} else {
|
|
98
|
+
return inGarfishToRender + appWrapperCode + code.replace(`router(`, `generateRouterPlugin(basename,`).replace("(App)", `(AppWrapper)`).replace(/MOUNT_ID/g, "mountNode").replace(
|
|
99
|
+
`bootstrap(AppWrapper, mountNode, root`,
|
|
100
|
+
"bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
|
|
101
|
+
).replace(
|
|
102
|
+
`customBootstrap(AppWrapper`,
|
|
103
|
+
"customBootstrap(AppWrapper, mountNode"
|
|
104
|
+
);
|
|
105
|
+
}
|
|
95
106
|
};
|
|
96
107
|
function getRuntimeConfig(config) {
|
|
97
108
|
var _a, _b;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AppNormalizedConfig } from '@modern-js/app-tools';
|
|
2
2
|
export declare const makeProvider: () => string;
|
|
3
|
-
export declare const makeRenderFunction: (code: string) => string;
|
|
3
|
+
export declare const makeRenderFunction: (code: string, isNested: boolean) => string;
|
|
4
4
|
export declare function getRuntimeConfig(config: Partial<AppNormalizedConfig>): any;
|
|
5
5
|
export declare function setRuntimeConfig(config: Partial<AppNormalizedConfig>, key: string, value: any): undefined;
|
|
6
6
|
export declare const generateAsyncEntry: (code: string) => string;
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "2.
|
|
14
|
+
"version": "2.11.0",
|
|
15
15
|
"jsnext:source": "./src/cli/index.ts",
|
|
16
16
|
"types": "./dist/types/cli/index.d.ts",
|
|
17
17
|
"typesVersions": {
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
"garfish": "^1.8.1",
|
|
67
67
|
"hoist-non-react-statics": "^3.3.2",
|
|
68
68
|
"react-loadable": "^5.5.0",
|
|
69
|
-
"@modern-js/utils": "2.
|
|
69
|
+
"@modern-js/utils": "2.11.0"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@modern-js/runtime": "^2.
|
|
72
|
+
"@modern-js/runtime": "^2.11.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@testing-library/jest-dom": "^5.16.1",
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
"react-router-dom": "^6.8.1",
|
|
87
87
|
"typescript": "^4",
|
|
88
88
|
"webpack-chain": "^6.5.1",
|
|
89
|
-
"@modern-js/app-tools": "2.
|
|
90
|
-
"@modern-js/core": "2.
|
|
91
|
-
"@modern-js/plugin-router-v5": "2.
|
|
92
|
-
"@modern-js/runtime": "2.
|
|
93
|
-
"@modern-js/types": "2.
|
|
94
|
-
"@scripts/build": "2.
|
|
95
|
-
"@scripts/jest-config": "2.
|
|
89
|
+
"@modern-js/app-tools": "2.11.0",
|
|
90
|
+
"@modern-js/core": "2.11.0",
|
|
91
|
+
"@modern-js/plugin-router-v5": "2.11.0",
|
|
92
|
+
"@modern-js/runtime": "2.11.0",
|
|
93
|
+
"@modern-js/types": "2.11.0",
|
|
94
|
+
"@scripts/build": "2.11.0",
|
|
95
|
+
"@scripts/jest-config": "2.11.0"
|
|
96
96
|
},
|
|
97
97
|
"sideEffects": false,
|
|
98
98
|
"modernConfig": {},
|