@modern-js/plugin-garfish 2.11.0 → 2.13.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 CHANGED
@@ -1,5 +1,29 @@
1
1
  # @modern-js/plugin-garfish
2
2
 
3
+ ## 2.13.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 4220c0e: feat: support global props in createApp and pass garfish props in
8
+ feat: createApp 支持全局属性,garfish 通过这个方式透传 garfish props
9
+ - Updated dependencies [cad9676]
10
+ - Updated dependencies [e9b1656]
11
+ - Updated dependencies [4d413c4]
12
+ - Updated dependencies [4220c0e]
13
+ - @modern-js/runtime@2.13.0
14
+ - @modern-js/utils@2.13.0
15
+
16
+ ## 2.12.0
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [c2ca6c8]
21
+ - Updated dependencies [0b05ec3]
22
+ - Updated dependencies [6d86e34]
23
+ - Updated dependencies [1aa0cb7]
24
+ - @modern-js/utils@2.12.0
25
+ - @modern-js/runtime@2.12.0
26
+
3
27
  ## 2.11.0
4
28
 
5
29
  ### Patch Changes
@@ -234,11 +234,7 @@ 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 { nestedRoutesEntry, pageRoutesEntry } = entrypoint;
238
- const nCode = (0, import_utils2.makeRenderFunction)(
239
- code,
240
- Boolean(nestedRoutesEntry || pageRoutesEntry)
241
- );
237
+ const nCode = (0, import_utils2.makeRenderFunction)(code);
242
238
  (0, import_util.logger)("makeRenderFunction", nCode);
243
239
  return {
244
240
  entrypoint,
@@ -93,42 +93,24 @@ function generateRouterPlugin (basename,routerConfig) {
93
93
  return router(routerConfig);
94
94
  }
95
95
 
96
- function generateAppWrapperAndRootDom ({ App, props: garfishProps, dom }) {
97
- let AppWrapper = App;
98
- if (garfishProps) {
99
- AppWrapper = function (props) {
100
- return React.createElement(App, { ...garfishProps, ...props });
101
- };
102
- AppWrapper = hoistNonReactStatics(AppWrapper, App);
103
- }
96
+ function generateRootDom ({ dom }) {
104
97
  const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : document.getElementById(MOUNT_ID);
105
- return { AppWrapper, mountNode }
98
+ return { mountNode }
106
99
  }
107
100
  `;
108
- const makeRenderFunction = (code, isNested) => {
101
+ const makeRenderFunction = (code) => {
109
102
  const inGarfishToRender = `
110
103
  const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
111
104
  if (!canContinueRender({ dom, appName })) return null;
105
+ let { mountNode } = generateRootDom({dom});
112
106
  `;
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
- }
107
+ return inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace(/MOUNT_ID/g, "mountNode").replace(`createApp({`, "createApp({ props,").replace(
108
+ `bootstrap(AppWrapper, mountNode, root`,
109
+ "bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
110
+ ).replace(
111
+ `customBootstrap(AppWrapper`,
112
+ "customBootstrap(AppWrapper, mountNode"
113
+ );
132
114
  };
133
115
  function getRuntimeConfig(config) {
134
116
  var _a, _b;
@@ -374,8 +374,7 @@ var cli_default = function() {
374
374
  code: code
375
375
  };
376
376
  }
377
- var nestedRoutesEntry = entrypoint.nestedRoutesEntry, pageRoutesEntry = entrypoint.pageRoutesEntry;
378
- var nCode = makeRenderFunction(code, Boolean(nestedRoutesEntry || pageRoutesEntry));
377
+ var nCode = makeRenderFunction(code);
379
378
  logger("makeRenderFunction", nCode);
380
379
  return {
381
380
  entrypoint: entrypoint,
@@ -1,15 +1,9 @@
1
1
  var makeProvider = function() {
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";
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 generateRootDom ({ dom }) {\n const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : document.getElementById(MOUNT_ID);\n return { mountNode }\n}\n";
3
3
  };
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
- }
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 let { mountNode } = generateRootDom({dom});\n ";
6
+ return inGarfishToRender + code.replace("router(", "generateRouterPlugin(basename,").replace(/MOUNT_ID/g, "mountNode").replace("createApp({", "createApp({ props,").replace("bootstrap(AppWrapper, mountNode, root", "bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null").replace("customBootstrap(AppWrapper", "customBootstrap(AppWrapper, mountNode");
13
7
  };
14
8
  function getRuntimeConfig(config) {
15
9
  var _config_runtime;
@@ -216,11 +216,7 @@ 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 { nestedRoutesEntry, pageRoutesEntry } = entrypoint;
220
- const nCode = makeRenderFunction(
221
- code,
222
- Boolean(nestedRoutesEntry || pageRoutesEntry)
223
- );
219
+ const nCode = makeRenderFunction(code);
224
220
  logger("makeRenderFunction", nCode);
225
221
  return {
226
222
  entrypoint,
@@ -67,42 +67,24 @@ function generateRouterPlugin (basename,routerConfig) {
67
67
  return router(routerConfig);
68
68
  }
69
69
 
70
- function generateAppWrapperAndRootDom ({ App, props: garfishProps, dom }) {
71
- let AppWrapper = App;
72
- if (garfishProps) {
73
- AppWrapper = function (props) {
74
- return React.createElement(App, { ...garfishProps, ...props });
75
- };
76
- AppWrapper = hoistNonReactStatics(AppWrapper, App);
77
- }
70
+ function generateRootDom ({ dom }) {
78
71
  const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : document.getElementById(MOUNT_ID);
79
- return { AppWrapper, mountNode }
72
+ return { mountNode }
80
73
  }
81
74
  `;
82
- const makeRenderFunction = (code, isNested) => {
75
+ const makeRenderFunction = (code) => {
83
76
  const inGarfishToRender = `
84
77
  const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
85
78
  if (!canContinueRender({ dom, appName })) return null;
79
+ let { mountNode } = generateRootDom({dom});
86
80
  `;
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
- }
81
+ return inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace(/MOUNT_ID/g, "mountNode").replace(`createApp({`, "createApp({ props,").replace(
82
+ `bootstrap(AppWrapper, mountNode, root`,
83
+ "bootstrap(AppWrapper, mountNode, root = IS_REACT18 ? ReactDOM.createRoot(mountNode) : null"
84
+ ).replace(
85
+ `customBootstrap(AppWrapper`,
86
+ "customBootstrap(AppWrapper, mountNode"
87
+ );
106
88
  };
107
89
  function getRuntimeConfig(config) {
108
90
  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, isNested: boolean) => string;
3
+ export declare const makeRenderFunction: (code: string) => 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.11.0",
14
+ "version": "2.13.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.11.0"
69
+ "@modern-js/utils": "2.13.0"
70
70
  },
71
71
  "peerDependencies": {
72
- "@modern-js/runtime": "^2.11.0"
72
+ "@modern-js/runtime": "^2.13.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.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"
89
+ "@modern-js/app-tools": "2.13.0",
90
+ "@modern-js/core": "2.13.0",
91
+ "@modern-js/plugin-router-v5": "2.13.0",
92
+ "@modern-js/runtime": "2.13.0",
93
+ "@modern-js/types": "2.13.0",
94
+ "@scripts/build": "2.13.0",
95
+ "@scripts/jest-config": "2.13.0"
96
96
  },
97
97
  "sideEffects": false,
98
98
  "modernConfig": {},