@modern-js/runtime 2.27.0 → 2.28.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/core/compatible.js +16 -17
  3. package/dist/cjs/core/loader/useLoader.js +10 -12
  4. package/dist/cjs/core/plugin.js +3 -2
  5. package/dist/cjs/document/Html.js +4 -3
  6. package/dist/cjs/document/cli/index.js +138 -138
  7. package/dist/cjs/router/cli/index.js +91 -92
  8. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +4 -2
  9. package/dist/cjs/router/runtime/PrefetchLink.js +8 -4
  10. package/dist/cjs/router/runtime/plugin.js +4 -3
  11. package/dist/cjs/router/runtime/plugin.node.js +2 -1
  12. package/dist/cjs/router/runtime/utils.js +3 -3
  13. package/dist/cjs/ssr/cli/index.js +122 -123
  14. package/dist/cjs/ssr/index.js +105 -107
  15. package/dist/cjs/ssr/index.node.js +37 -38
  16. package/dist/cjs/ssr/prefetch.js +37 -39
  17. package/dist/cjs/ssr/react/prerender/util.js +4 -2
  18. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  19. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  20. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +8 -6
  21. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +2 -1
  22. package/dist/cjs/state/cli/index.js +70 -72
  23. package/dist/cjs/state/runtime/plugin.js +40 -42
  24. package/dist/esm/core/compatible.js +10 -9
  25. package/dist/esm/core/loader/useLoader.js +9 -9
  26. package/dist/esm/core/plugin.js +3 -2
  27. package/dist/esm/document/Html.js +4 -3
  28. package/dist/esm/document/cli/index.js +4 -3
  29. package/dist/esm/router/cli/index.js +2 -1
  30. package/dist/esm/router/runtime/DeferredDataScripts.node.js +4 -2
  31. package/dist/esm/router/runtime/PrefetchLink.js +8 -4
  32. package/dist/esm/router/runtime/plugin.js +4 -3
  33. package/dist/esm/router/runtime/plugin.node.js +2 -1
  34. package/dist/esm/router/runtime/utils.js +3 -3
  35. package/dist/esm/ssr/cli/index.js +7 -6
  36. package/dist/esm/ssr/index.js +6 -6
  37. package/dist/esm/ssr/index.node.js +2 -1
  38. package/dist/esm/ssr/prefetch.js +2 -2
  39. package/dist/esm/ssr/react/prerender/util.js +4 -2
  40. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  41. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  42. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +7 -7
  43. package/dist/esm/ssr/serverRender/renderToString/loadable.js +2 -1
  44. package/dist/esm/state/runtime/plugin.js +2 -2
  45. package/dist/esm-node/core/compatible.js +16 -17
  46. package/dist/esm-node/core/loader/useLoader.js +10 -12
  47. package/dist/esm-node/core/plugin.js +3 -2
  48. package/dist/esm-node/document/Html.js +4 -3
  49. package/dist/esm-node/document/cli/index.js +138 -138
  50. package/dist/esm-node/router/cli/index.js +91 -92
  51. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +4 -2
  52. package/dist/esm-node/router/runtime/PrefetchLink.js +8 -4
  53. package/dist/esm-node/router/runtime/plugin.js +4 -3
  54. package/dist/esm-node/router/runtime/plugin.node.js +2 -1
  55. package/dist/esm-node/router/runtime/utils.js +3 -3
  56. package/dist/esm-node/ssr/cli/index.js +122 -123
  57. package/dist/esm-node/ssr/cli/loadable-bundler-plugin.js +2 -2
  58. package/dist/esm-node/ssr/index.js +105 -107
  59. package/dist/esm-node/ssr/index.node.js +37 -38
  60. package/dist/esm-node/ssr/prefetch.js +37 -39
  61. package/dist/esm-node/ssr/react/prerender/util.js +4 -2
  62. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  63. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  64. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +8 -6
  65. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +2 -1
  66. package/dist/esm-node/state/cli/index.js +70 -72
  67. package/dist/esm-node/state/runtime/plugin.js +40 -42
  68. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @modern-js/runtime
2
2
 
3
+ ## 2.28.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [4e3ce96]
8
+ - Updated dependencies [00b58a7]
9
+ - @modern-js/types@2.28.0
10
+ - @modern-js/utils@2.28.0
11
+ - @modern-js/plugin@2.28.0
12
+
3
13
  ## 2.27.0
4
14
 
5
15
  ### Patch Changes
@@ -72,15 +72,16 @@ const createApp = ({ plugins, props: globalProps }) => {
72
72
  }, {
73
73
  onLast: ({ App: App2 }) => {
74
74
  const WrapComponent = ({ context, ...props }) => {
75
+ var _contextValue;
75
76
  let contextValue = context;
76
- if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
77
+ if (!((_contextValue = contextValue) === null || _contextValue === void 0 ? void 0 : _contextValue.runner)) {
77
78
  contextValue = getInitialContext(runner);
78
79
  runner.init({
79
80
  context: contextValue
80
81
  }, {
81
82
  onLast: ({ context: context1 }) => {
82
- var _App_init;
83
- return App2 === null || App2 === void 0 ? void 0 : (_App_init = App2.init) === null || _App_init === void 0 ? void 0 : _App_init.call(App2, context1);
83
+ var _App_init, _App;
84
+ return (_App = App2) === null || _App === void 0 ? void 0 : (_App_init = _App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(_App, context1);
84
85
  }
85
86
  });
86
87
  }
@@ -112,16 +113,14 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
112
113
  runner = runnerMap.get(App);
113
114
  }
114
115
  const context = getInitialContext(runner);
115
- const runInit = (_context) => {
116
- return runner.init({
117
- context: _context
118
- }, {
119
- onLast: ({ context: context1 }) => {
120
- var _App_init;
121
- return App === null || App === void 0 ? void 0 : (_App_init = App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(App, context1);
122
- }
123
- });
124
- };
116
+ const runInit = (_context) => runner.init({
117
+ context: _context
118
+ }, {
119
+ onLast: ({ context: context1 }) => {
120
+ var _App_init, _App;
121
+ return (_App = App) === null || _App === void 0 ? void 0 : (_App_init = _App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(_App, context1);
122
+ }
123
+ });
125
124
  if (!id) {
126
125
  return /* @__PURE__ */ _react.default.createElement(App, {
127
126
  context
@@ -130,9 +129,9 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
130
129
  const isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
131
130
  if (isBrowser) {
132
131
  if (isClientArgs(id)) {
133
- var _ssrData_data, _ssrData_data1;
132
+ var _ssrData_data, _ssrData, _ssrData1, _ssrData_data1, _ssrData2;
134
133
  const ssrData = window._SSR_DATA;
135
- const loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data = ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
134
+ const loadersData = ((_ssrData = ssrData) === null || _ssrData === void 0 ? void 0 : (_ssrData_data = _ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
136
135
  const initialLoadersState = Object.keys(loadersData).reduce((res, key) => {
137
136
  const loaderData = loadersData[key];
138
137
  if (loaderData.loading !== false) {
@@ -146,10 +145,10 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
146
145
  skipStatic: true
147
146
  }),
148
147
  ...ssrData ? {
149
- ssrContext: ssrData === null || ssrData === void 0 ? void 0 : ssrData.context
148
+ ssrContext: (_ssrData1 = ssrData) === null || _ssrData1 === void 0 ? void 0 : _ssrData1.context
150
149
  } : {}
151
150
  });
152
- context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
151
+ context.initialData = (_ssrData2 = ssrData) === null || _ssrData2 === void 0 ? void 0 : (_ssrData_data1 = _ssrData2.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
153
152
  const initialData = await runInit(context);
154
153
  if (initialData) {
155
154
  context.initialData = initialData;
@@ -25,7 +25,7 @@ const useLoader = (loaderFn, options = {
25
25
  delete options._cache;
26
26
  }
27
27
  const load = (0, _react.useCallback)((params) => {
28
- var _unlistenLoaderChangeRef_current, _window__SSR_DATA_data_loadersData_id, _window__SSR_DATA, _window__SSR_DATA_data, _loaderRef_current;
28
+ var _unlistenLoaderChangeRef_current, _unlistenLoaderChangeRef, _window__SSR_DATA_data_loadersData_id, _window__SSR_DATA_data, _window__SSR_DATA, _window, _loaderRef_current;
29
29
  if (typeof params === "undefined") {
30
30
  var _loaderRef_current1;
31
31
  return (_loaderRef_current1 = loaderRef.current) === null || _loaderRef_current1 === void 0 ? void 0 : _loaderRef_current1.load();
@@ -45,37 +45,35 @@ const useLoader = (loaderFn, options = {
45
45
  params
46
46
  });
47
47
  loaderRef.current = loaderManager.get(id);
48
- (_unlistenLoaderChangeRef_current = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(unlistenLoaderChangeRef);
48
+ (_unlistenLoaderChangeRef_current = (_unlistenLoaderChangeRef = unlistenLoaderChangeRef).current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(_unlistenLoaderChangeRef);
49
49
  if (isSSRRender) {
50
50
  return void 0;
51
51
  }
52
52
  if (options.skip) {
53
53
  return void 0;
54
54
  }
55
- if (context._hydration && ((_window__SSR_DATA_data_loadersData_id = window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : _window__SSR_DATA_data.loadersData[id]) === null || _window__SSR_DATA_data_loadersData_id === void 0 ? void 0 : _window__SSR_DATA_data_loadersData_id.error) === null) {
55
+ if (context._hydration && ((_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : (_window__SSR_DATA_data_loadersData_id = _window__SSR_DATA_data.loadersData[id]) === null || _window__SSR_DATA_data_loadersData_id === void 0 ? void 0 : _window__SSR_DATA_data_loadersData_id.error) === null) {
56
56
  return void 0;
57
57
  }
58
58
  const res = loaderRef.current.load();
59
59
  unlistenLoaderChangeRef.current = (_loaderRef_current = loaderRef.current) === null || _loaderRef_current === void 0 ? void 0 : _loaderRef_current.onChange((_status, _result) => {
60
60
  setResult(_result);
61
61
  if (_status === _loaderManager.LoaderStatus.fulfilled) {
62
- var _options_onSuccess;
63
- options === null || options === void 0 ? void 0 : (_options_onSuccess = options.onSuccess) === null || _options_onSuccess === void 0 ? void 0 : _options_onSuccess.call(options, _result.data);
62
+ var _options_onSuccess, _options;
63
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onSuccess = _options.onSuccess) === null || _options_onSuccess === void 0 ? void 0 : _options_onSuccess.call(_options, _result.data);
64
64
  }
65
65
  if (_status === _loaderManager.LoaderStatus.rejected) {
66
- var _options_onError;
67
- options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, _result.error);
66
+ var _options_onError, _options1;
67
+ (_options1 = options) === null || _options1 === void 0 ? void 0 : (_options_onError = _options1.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(_options1, _result.error);
68
68
  }
69
69
  });
70
70
  return res;
71
71
  }, [
72
72
  options.skip
73
73
  ]);
74
- (0, _react.useEffect)(() => {
75
- return () => {
76
- var _unlistenLoaderChangeRef_current;
77
- (_unlistenLoaderChangeRef_current = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(unlistenLoaderChangeRef);
78
- };
74
+ (0, _react.useEffect)(() => () => {
75
+ var _unlistenLoaderChangeRef_current, _unlistenLoaderChangeRef;
76
+ (_unlistenLoaderChangeRef_current = (_unlistenLoaderChangeRef = unlistenLoaderChangeRef).current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(_unlistenLoaderChangeRef);
79
77
  }, []);
80
78
  (0, _react.useMemo)(() => {
81
79
  var _options_params;
@@ -43,12 +43,13 @@ const createRuntime = () => (0, _plugin.createManager)(runtimeHooks);
43
43
  const registerInit = (App, _init) => {
44
44
  const originalInit = App.init;
45
45
  App.init = async (context) => {
46
+ var _originalInit, _init1;
46
47
  if (!context.loaderManager) {
47
48
  context.loaderManager = (0, _loaderManager.createLoaderManager)({});
48
49
  }
49
50
  await Promise.all([
50
- originalInit === null || originalInit === void 0 ? void 0 : originalInit(context),
51
- _init === null || _init === void 0 ? void 0 : _init(context)
51
+ (_originalInit = originalInit) === null || _originalInit === void 0 ? void 0 : _originalInit(context),
52
+ (_init1 = _init) === null || _init1 === void 0 ? void 0 : _init1(context)
52
53
  ]);
53
54
  };
54
55
  };
@@ -18,7 +18,8 @@ function findTargetChild(tag, children) {
18
18
  return children.find((item) => getEleType(item) === tag);
19
19
  }
20
20
  function getEleType(ele) {
21
- return typeof (ele === null || ele === void 0 ? void 0 : ele.type) === "function" ? ele.type.name : ele === null || ele === void 0 ? void 0 : ele.type;
21
+ var _ele, _ele1;
22
+ return typeof ((_ele = ele) === null || _ele === void 0 ? void 0 : _ele.type) === "function" ? ele.type.name : (_ele1 = ele) === null || _ele1 === void 0 ? void 0 : _ele1.type;
22
23
  }
23
24
  function findTargetElement(tag, children) {
24
25
  if (children.length === 0) {
@@ -26,11 +27,11 @@ function findTargetElement(tag, children) {
26
27
  }
27
28
  let nextChildren = [];
28
29
  for (const item of children) {
29
- var _item_props;
30
+ var _item_props, _item;
30
31
  if (tag === getEleType(item)) {
31
32
  return item;
32
33
  }
33
- if (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.children) {
34
+ if ((_item = item) === null || _item === void 0 ? void 0 : (_item_props = _item.props) === null || _item_props === void 0 ? void 0 : _item_props.children) {
34
35
  nextChildren = nextChildren.concat(item.props.children);
35
36
  }
36
37
  }
@@ -44,148 +44,148 @@ const getDocumenByEntryName = function(entrypoints, entryName, fallbackDir) {
44
44
  ]);
45
45
  return docFile || void 0;
46
46
  };
47
- const documentPlugin = () => {
48
- return {
49
- name: "@modern-js/plugin-document",
50
- pre: [
51
- "@modern-js/plugin-analyze"
52
- ],
53
- setup: async (api) => {
54
- function getDocParams(params) {
55
- const { config, templateParameters, entryName } = params;
56
- return {
57
- processEnv: process.env,
58
- config: {
59
- output: config.output
60
- },
61
- entryName,
62
- templateParams: templateParameters
63
- };
47
+ const documentPlugin = () => ({
48
+ name: "@modern-js/plugin-document",
49
+ pre: [
50
+ "@modern-js/plugin-analyze"
51
+ ],
52
+ setup: async (api) => {
53
+ function getDocParams(params) {
54
+ const { config, templateParameters, entryName } = params;
55
+ return {
56
+ processEnv: process.env,
57
+ config: {
58
+ output: config.output
59
+ },
60
+ entryName,
61
+ templateParams: templateParameters
62
+ };
63
+ }
64
+ const documentEntry = (entryName, templateParameters) => {
65
+ const { entrypoints, internalDirectory, appDirectory } = api.useAppContext();
66
+ const documentFilePath = getDocumenByEntryName(entrypoints, entryName, appDirectory);
67
+ if (!documentFilePath) {
68
+ return null;
64
69
  }
65
- const documentEntry = (entryName, templateParameters) => {
66
- const { entrypoints, internalDirectory, appDirectory } = api.useAppContext();
67
- const documentFilePath = getDocumenByEntryName(entrypoints, entryName, appDirectory);
68
- if (!documentFilePath) {
69
- return null;
70
+ return async ({ htmlWebpackPlugin }) => {
71
+ var _tsConfig;
72
+ const config = api.useResolvedConfigContext();
73
+ const documentParams = getDocParams({
74
+ config,
75
+ entryName,
76
+ templateParameters
77
+ });
78
+ const tempTsConfigFile = _path.default.join(internalDirectory, `./document/_tempTsconfig.json`);
79
+ const userTsConfigFilePath = _path.default.join(appDirectory, "tsconfig.json");
80
+ let tsConfig;
81
+ try {
82
+ tsConfig = await require(userTsConfigFilePath);
83
+ } catch (err) {
84
+ tsConfig = {};
70
85
  }
71
- return async ({ htmlWebpackPlugin }) => {
72
- const config = api.useResolvedConfigContext();
73
- const documentParams = getDocParams({
74
- config,
75
- entryName,
76
- templateParameters
77
- });
78
- const tempTsConfigFile = _path.default.join(internalDirectory, `./document/_tempTsconfig.json`);
79
- const userTsConfigFilePath = _path.default.join(appDirectory, "tsconfig.json");
80
- let tsConfig;
81
- try {
82
- tsConfig = await require(userTsConfigFilePath);
83
- } catch (err) {
84
- tsConfig = {};
85
- }
86
- if (tsConfig === null || tsConfig === void 0 ? void 0 : tsConfig.compilerOptions) {
87
- tsConfig.compilerOptions.jsx = "react-jsx";
88
- } else {
89
- tsConfig.compilerOptions = {
90
- jsx: "react-jsx"
91
- };
92
- }
93
- _utils.fs.outputFileSync(tempTsConfigFile, JSON.stringify(tsConfig));
94
- const htmlOutputFile = _path.default.join(internalDirectory, `./document/_${entryName}.html.js`);
95
- await (0, _esbuild.build)({
96
- entryPoints: [
97
- documentFilePath
98
- ],
99
- outfile: htmlOutputFile,
100
- platform: "node",
101
- // change esbuild use the rootDir tsconfig.json as default to tempTsConfigFile
102
- tsconfig: tempTsConfigFile,
103
- target: "es6",
104
- loader: {
105
- ".ts": "ts",
106
- ".tsx": "tsx"
107
- },
108
- bundle: true,
109
- plugins: [
110
- {
111
- name: "make-all-packages-external",
112
- setup(build) {
113
- build.onResolve({
114
- filter: /^[^./]|^\.[^./]|^\.\.[^/]/
115
- }, (args) => {
116
- let external = true;
117
- if (args.kind === "entry-point") {
118
- external = false;
119
- }
120
- return {
121
- path: args.path,
122
- external
123
- };
124
- });
125
- }
126
- }
127
- ]
128
- });
129
- delete require.cache[require.resolve(htmlOutputFile)];
130
- const Document = (await require(htmlOutputFile)).default;
131
- const HTMLElement = _react.default.createElement(_DocumentContext.DocumentContext.Provider, {
132
- value: documentParams
133
- }, _react.default.createElement(Document, null));
134
- let html = _server.default.renderToStaticMarkup(HTMLElement);
135
- debug("entry %s's document jsx rendered html: %o", entryName, html);
136
- const scripts = [
137
- htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "script").join(""),
138
- htmlWebpackPlugin.tags.bodyTags.toString()
139
- ].join("");
140
- const links = [
141
- htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "link").join("")
142
- ].join("");
143
- const metas = [
144
- templateParameters.meta,
145
- htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
146
- ].join("");
147
- if (html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
148
- const { nonce } = config.security;
149
- const nonceAttr = nonce ? `nonce=${nonce}` : "";
150
- html = html.replace(new RegExp(`${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script ${nonceAttr}>${decodeURIComponent($1)}</script>`);
151
- }
152
- if (html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_END)) {
153
- html = html.replace(new RegExp(`${_constants.DOCUMENT_STYLE_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_STYLE_PLACEHOLDER_END}`, "g"), (_styleStr, $1) => `<style>${decodeURIComponent($1)}</style>`);
154
- }
155
- if (html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_END)) {
156
- html = html.replace(new RegExp(`${_constants.DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
157
- }
158
- const finalHtml = `<!DOCTYPE html>${html}`.replace(_constants.DOCUMENT_META_PLACEHOLDER, metas).replace(_constants.DOCUMENT_SSR_PLACEHOLDER, _constants.HTML_SEPARATOR).replace(_constants.DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(_constants.DOCUMENT_LINKS_PLACEHOLDER, links).replace(_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER, _constants.PLACEHOLDER_REPLACER_MAP[_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, _constants.PLACEHOLDER_REPLACER_MAP[_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
159
- return finalHtml;
160
- };
161
- };
162
- return {
163
- config: () => {
164
- return {
165
- tools: {
166
- htmlPlugin: (options, entry) => {
167
- const hackParameters = typeof (options === null || options === void 0 ? void 0 : options.templateParameters) === "function" ? options === null || options === void 0 ? void 0 : options.templateParameters({}, {}, {}, {}) : {
168
- ...options === null || options === void 0 ? void 0 : options.templateParameters
169
- };
170
- const templateContent = documentEntry(
171
- entry.entryName,
172
- // options,
173
- hackParameters
174
- );
175
- const documentHtmlOptions = templateContent ? {
176
- templateContent,
177
- inject: false
178
- } : {};
179
- return {
180
- ...options,
181
- ...documentHtmlOptions
182
- };
86
+ if ((_tsConfig = tsConfig) === null || _tsConfig === void 0 ? void 0 : _tsConfig.compilerOptions) {
87
+ tsConfig.compilerOptions.jsx = "react-jsx";
88
+ } else {
89
+ tsConfig.compilerOptions = {
90
+ jsx: "react-jsx"
91
+ };
92
+ }
93
+ _utils.fs.outputFileSync(tempTsConfigFile, JSON.stringify(tsConfig));
94
+ const htmlOutputFile = _path.default.join(internalDirectory, `./document/_${entryName}.html.js`);
95
+ await (0, _esbuild.build)({
96
+ entryPoints: [
97
+ documentFilePath
98
+ ],
99
+ outfile: htmlOutputFile,
100
+ platform: "node",
101
+ // change esbuild use the rootDir tsconfig.json as default to tempTsConfigFile
102
+ tsconfig: tempTsConfigFile,
103
+ target: "es6",
104
+ loader: {
105
+ ".ts": "ts",
106
+ ".tsx": "tsx"
107
+ },
108
+ bundle: true,
109
+ plugins: [
110
+ {
111
+ name: "make-all-packages-external",
112
+ setup(build) {
113
+ build.onResolve({
114
+ filter: /^[^./]|^\.[^./]|^\.\.[^/]/
115
+ }, (args) => {
116
+ let external = true;
117
+ if (args.kind === "entry-point") {
118
+ external = false;
119
+ }
120
+ return {
121
+ path: args.path,
122
+ external
123
+ };
124
+ });
183
125
  }
184
126
  }
185
- };
127
+ ]
128
+ });
129
+ delete require.cache[require.resolve(htmlOutputFile)];
130
+ const Document = (await require(htmlOutputFile)).default;
131
+ const HTMLElement = _react.default.createElement(_DocumentContext.DocumentContext.Provider, {
132
+ value: documentParams
133
+ }, _react.default.createElement(Document, null));
134
+ let html = _server.default.renderToStaticMarkup(HTMLElement);
135
+ debug("entry %s's document jsx rendered html: %o", entryName, html);
136
+ const scripts = [
137
+ htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "script").join(""),
138
+ htmlWebpackPlugin.tags.bodyTags.toString()
139
+ ].join("");
140
+ const links = [
141
+ htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "link").join("")
142
+ ].join("");
143
+ const metas = [
144
+ templateParameters.meta,
145
+ htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
146
+ ].join("");
147
+ if (html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
148
+ const { nonce } = config.security;
149
+ const nonceAttr = nonce ? `nonce=${nonce}` : "";
150
+ html = html.replace(new RegExp(`${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script ${nonceAttr}>${decodeURIComponent($1)}</script>`);
151
+ }
152
+ if (html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_STYLE_PLACEHOLDER_END)) {
153
+ html = html.replace(new RegExp(`${_constants.DOCUMENT_STYLE_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_STYLE_PLACEHOLDER_END}`, "g"), (_styleStr, $1) => `<style>${decodeURIComponent($1)}</style>`);
186
154
  }
155
+ if (html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_END)) {
156
+ html = html.replace(new RegExp(`${_constants.DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
157
+ }
158
+ const finalHtml = `<!DOCTYPE html>${html}`.replace(_constants.DOCUMENT_META_PLACEHOLDER, metas).replace(_constants.DOCUMENT_SSR_PLACEHOLDER, _constants.HTML_SEPARATOR).replace(_constants.DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(_constants.DOCUMENT_LINKS_PLACEHOLDER, links).replace(_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER, _constants.PLACEHOLDER_REPLACER_MAP[_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, _constants.PLACEHOLDER_REPLACER_MAP[_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
159
+ return finalHtml;
187
160
  };
188
- }
189
- };
190
- };
161
+ };
162
+ return {
163
+ config: () => {
164
+ return {
165
+ tools: {
166
+ htmlPlugin: (options, entry) => {
167
+ var _options, _options1, _options2;
168
+ const hackParameters = typeof ((_options = options) === null || _options === void 0 ? void 0 : _options.templateParameters) === "function" ? (_options1 = options) === null || _options1 === void 0 ? void 0 : _options1.templateParameters({}, {}, {}, {}) : {
169
+ ...(_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.templateParameters
170
+ };
171
+ const templateContent = documentEntry(
172
+ entry.entryName,
173
+ // options,
174
+ hackParameters
175
+ );
176
+ const documentHtmlOptions = templateContent ? {
177
+ templateContent,
178
+ inject: false
179
+ } : {};
180
+ return {
181
+ ...options,
182
+ ...documentHtmlOptions
183
+ };
184
+ }
185
+ }
186
+ };
187
+ }
188
+ };
189
+ }
190
+ });
191
191
  const _default = documentPlugin;