@modern-js/runtime 2.48.0 → 2.48.2

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 (27) hide show
  1. package/dist/cjs/ssr/cli/loadable-bundler-plugin.js +0 -3
  2. package/dist/cjs/ssr/index.js +3 -2
  3. package/dist/cjs/ssr/react/prerender/index.js +5 -7
  4. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -1
  5. package/dist/cjs/ssr/serverRender/renderToString/entry.js +2 -13
  6. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +0 -3
  7. package/dist/cjs/ssr/serverRender/renderToString/render.js +8 -6
  8. package/dist/cjs/ssr/serverRender/renderToString/styledComponent.js +1 -3
  9. package/dist/esm/ssr/cli/loadable-bundler-plugin.js +63 -77
  10. package/dist/esm/ssr/index.js +4 -3
  11. package/dist/esm/ssr/react/prerender/index.js +20 -27
  12. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -1
  13. package/dist/esm/ssr/serverRender/renderToString/entry.js +177 -202
  14. package/dist/esm/ssr/serverRender/renderToString/loadable.js +197 -217
  15. package/dist/esm/ssr/serverRender/renderToString/render.js +40 -46
  16. package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +9 -19
  17. package/dist/esm-node/ssr/cli/loadable-bundler-plugin.js +0 -3
  18. package/dist/esm-node/ssr/index.js +3 -2
  19. package/dist/esm-node/ssr/react/prerender/index.js +5 -7
  20. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -1
  21. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +2 -13
  22. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +0 -3
  23. package/dist/esm-node/ssr/serverRender/renderToString/render.js +8 -6
  24. package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +1 -3
  25. package/dist/types/ssr/serverRender/renderToString/render.d.ts +4 -2
  26. package/dist/types/ssr/serverRender/types.d.ts +2 -0
  27. package/package.json +10 -10
@@ -21,7 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
22
  mod
23
23
  ));
24
- var import_define_property = require("@swc/helpers/_/_define_property");
25
24
  var import_path = __toESM(require("path"));
26
25
  var import_utils = require("@modern-js/utils");
27
26
  class LoadablePlugin {
@@ -99,8 +98,6 @@ class LoadablePlugin {
99
98
  outputAsset: true,
100
99
  chunkLoadingGlobal: "__LOADABLE_LOADED_CHUNKS__"
101
100
  }) {
102
- (0, import_define_property._)(this, "opts", void 0);
103
- (0, import_define_property._)(this, "compiler", void 0);
104
101
  this.opts = {
105
102
  filename,
106
103
  path: path2,
@@ -37,6 +37,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
37
37
  var import_component = require("@loadable/component");
38
38
  var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
39
39
  var import_parsed = require("@modern-js/runtime-utils/parsed");
40
+ var import_url = require("@modern-js/runtime-utils/url");
40
41
  var import_types = require("./serverRender/types");
41
42
  var import_withCallback = require("./react/withCallback");
42
43
  var import_utils = require("./utils");
@@ -63,8 +64,8 @@ const ssr = (config) => ({
63
64
  _hydration: true
64
65
  };
65
66
  const { ssrContext } = hydrateContext;
66
- const { pathname: initialPathname } = ssrContext.request;
67
- const currentPathname = window.location.pathname;
67
+ const currentPathname = (0, import_url.normalizePathname)(window.location.pathname);
68
+ const initialPathname = (0, import_url.normalizePathname)(ssrContext.request.pathname);
68
69
  if (initialPathname !== currentPathname) {
69
70
  const errorMsg = `The initial URL ${initialPathname} and the URL ${currentPathname} to be hydrated do not match, reload.`;
70
71
  console.error(errorMsg);
@@ -31,7 +31,6 @@ __export(prerender_exports, {
31
31
  PreRender: () => PreRender
32
32
  });
33
33
  module.exports = __toCommonJS(prerender_exports);
34
- var import_define_property = require("@swc/helpers/_/_define_property");
35
34
  var import_react_side_effect = __toESM(require("react-side-effect"));
36
35
  var import_react = __toESM(require("react"));
37
36
  var import_util = require("./util");
@@ -82,8 +81,7 @@ const reducePropsToState = (propsList) => {
82
81
  return reduceProps;
83
82
  };
84
83
  function factory(Component) {
85
- var _React_Component;
86
- class Spr extends (_React_Component = import_react.default.Component) {
84
+ class Spr extends import_react.default.Component {
87
85
  static set canUseDOM(canUseDOM) {
88
86
  Component.canUseDOM = canUseDOM;
89
87
  }
@@ -107,12 +105,12 @@ function factory(Component) {
107
105
  });
108
106
  }
109
107
  }
110
- (0, import_define_property._)(Spr, "peek", Component.peek);
111
- (0, import_define_property._)(Spr, "rewind", Component.rewind);
112
- (0, import_define_property._)(Spr, "config", () => {
108
+ Spr.peek = Component.peek;
109
+ Spr.rewind = Component.rewind;
110
+ Spr.config = () => {
113
111
  const mappedState = Component.rewind();
114
112
  return mappedState;
115
- });
113
+ };
116
114
  return Spr;
117
115
  }
118
116
  const NullComponent = () => null;
@@ -55,9 +55,9 @@ const checkIsInline = (chunk, enableInline) => {
55
55
  }
56
56
  };
57
57
  function getHeadTemplate(beforeEntryTemplate, context, pluginConfig) {
58
+ const helmetData = import_react_helmet.default.renderStatic();
58
59
  const callbacks = [
59
60
  (headTemplate2) => {
60
- const helmetData = import_react_helmet.default.renderStatic();
61
61
  return helmetData ? (0, import_helmet.default)(headTemplate2, helmetData) : headTemplate2;
62
62
  },
63
63
  // @TODO: prefetch scripts of lazy component
@@ -31,10 +31,8 @@ __export(entry_exports, {
31
31
  default: () => Entry
32
32
  });
33
33
  module.exports = __toCommonJS(entry_exports);
34
- var import_define_property = require("@swc/helpers/_/_define_property");
35
34
  var import_react = __toESM(require("react"));
36
35
  var import_node = require("@modern-js/runtime-utils/node");
37
- var import_react_helmet = __toESM(require("react-helmet"));
38
36
  var import_time = require("@modern-js/runtime-utils/time");
39
37
  var import_utils = require("../../../router/runtime/utils");
40
38
  var import_helmet = __toESM(require("../helmet"));
@@ -103,7 +101,7 @@ class Entry {
103
101
  (0, import_buildHtml.createReplaceHtml)(this.result.html || ""),
104
102
  ...this.htmlModifiers
105
103
  ]);
106
- const helmetData = import_react_helmet.default.renderStatic();
104
+ const helmetData = this.result.helmet;
107
105
  return helmetData ? (0, import_helmet.default)(html, helmetData) : html;
108
106
  }
109
107
  async prefetch(context) {
@@ -126,7 +124,7 @@ class Entry {
126
124
  ssr: true
127
125
  })
128
126
  });
129
- html = await (0, import_render.createRender)(App).addCollector((0, import_styledComponent.createStyledCollector)(this.result)).addCollector((0, import_loadable.createLoadableCollector)({
127
+ html = await (0, import_render.createRender)(App, this.result).addCollector((0, import_styledComponent.createStyledCollector)(this.result)).addCollector((0, import_loadable.createLoadableCollector)({
130
128
  stats: ssrContext.loadableStats,
131
129
  result: this.result,
132
130
  entryName: this.entryName,
@@ -159,15 +157,6 @@ class Entry {
159
157
  return ssrDataScripts;
160
158
  }
161
159
  constructor(options) {
162
- (0, import_define_property._)(this, "entryName", void 0);
163
- (0, import_define_property._)(this, "result", void 0);
164
- (0, import_define_property._)(this, "tracker", void 0);
165
- (0, import_define_property._)(this, "template", void 0);
166
- (0, import_define_property._)(this, "App", void 0);
167
- (0, import_define_property._)(this, "pluginConfig", void 0);
168
- (0, import_define_property._)(this, "htmlModifiers", void 0);
169
- (0, import_define_property._)(this, "nonce", void 0);
170
- (0, import_define_property._)(this, "routeManifest", void 0);
171
160
  const { ctx, config } = options;
172
161
  const { entryName, template, nonce } = ctx;
173
162
  this.template = template;
@@ -31,7 +31,6 @@ __export(loadable_exports, {
31
31
  createLoadableCollector: () => createLoadableCollector
32
32
  });
33
33
  module.exports = __toCommonJS(loadable_exports);
34
- var import_define_property = require("@swc/helpers/_/_define_property");
35
34
  var import_server = require("@loadable/server");
36
35
  var import_utils = require("../utils");
37
36
  const extname = (uri) => {
@@ -160,8 +159,6 @@ class LoadableCollector {
160
159
  };
161
160
  }
162
161
  constructor(options) {
163
- (0, import_define_property._)(this, "options", void 0);
164
- (0, import_define_property._)(this, "extractor", void 0);
165
162
  this.options = options;
166
163
  }
167
164
  }
@@ -31,8 +31,8 @@ __export(render_exports, {
31
31
  createRender: () => createRender
32
32
  });
33
33
  module.exports = __toCommonJS(render_exports);
34
- var import_define_property = require("@swc/helpers/_/_define_property");
35
34
  var import_server = __toESM(require("react-dom/server"));
35
+ var import_react_helmet = __toESM(require("react-helmet"));
36
36
  class Render {
37
37
  addCollector(collector) {
38
38
  this.collectors.push(collector);
@@ -41,17 +41,19 @@ class Render {
41
41
  async finish() {
42
42
  const App = this.collectors.reduce((pre, collector) => collector.collect(pre), this.App);
43
43
  const html = import_server.default.renderToString(App);
44
+ const helmetData = import_react_helmet.default.renderStatic();
45
+ this.renderResult.helmet = helmetData;
44
46
  await Promise.all(this.collectors.map((component) => component.effect()));
45
47
  return html;
46
48
  }
47
- constructor(App) {
48
- (0, import_define_property._)(this, "App", void 0);
49
- (0, import_define_property._)(this, "collectors", []);
49
+ constructor(App, result) {
50
+ this.collectors = [];
50
51
  this.App = App;
52
+ this.renderResult = result;
51
53
  }
52
54
  }
53
- function createRender(App) {
54
- return new Render(App);
55
+ function createRender(App, result) {
56
+ return new Render(App, result);
55
57
  }
56
58
  // Annotate the CommonJS export names for ESM import in node:
57
59
  0 && (module.exports = {
@@ -21,7 +21,6 @@ __export(styledComponent_exports, {
21
21
  createStyledCollector: () => createStyledCollector
22
22
  });
23
23
  module.exports = __toCommonJS(styledComponent_exports);
24
- var import_define_property = require("@swc/helpers/_/_define_property");
25
24
  var import_styled_components = require("styled-components");
26
25
  class StyledCollector {
27
26
  collect(comopnent) {
@@ -32,8 +31,7 @@ class StyledCollector {
32
31
  this.result.chunksMap.css += css;
33
32
  }
34
33
  constructor(result) {
35
- (0, import_define_property._)(this, "sheet", new import_styled_components.ServerStyleSheet());
36
- (0, import_define_property._)(this, "result", void 0);
34
+ this.sheet = new import_styled_components.ServerStyleSheet();
37
35
  this.result = result;
38
36
  }
39
37
  }
@@ -3,8 +3,6 @@ var __commonJS = (cb, mod) => function __require() {
3
3
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
4
  };
5
5
  import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
6
- import { _ as _create_class } from "@swc/helpers/_/_create_class";
7
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
8
6
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
9
7
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
10
8
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
@@ -21,8 +19,6 @@ var require_loadable_bundler_plugin = __commonJS({
21
19
  chunkLoadingGlobal: "__LOADABLE_LOADED_CHUNKS__"
22
20
  }, _ref_filename = _ref.filename, filename = _ref_filename === void 0 ? "loadable-stats.json" : _ref_filename, path2 = _ref.path, writeToDisk = _ref.writeToDisk, _ref_outputAsset = _ref.outputAsset, outputAsset = _ref_outputAsset === void 0 ? true : _ref_outputAsset, _ref_chunkLoadingGlobal = _ref.chunkLoadingGlobal, chunkLoadingGlobal = _ref_chunkLoadingGlobal === void 0 ? "__LOADABLE_LOADED_CHUNKS__" : _ref_chunkLoadingGlobal;
23
21
  _class_call_check(this, LoadablePlugin2);
24
- _define_property(this, "opts", void 0);
25
- _define_property(this, "compiler", void 0);
26
22
  this.opts = {
27
23
  filename,
28
24
  path: path2,
@@ -32,82 +28,72 @@ var require_loadable_bundler_plugin = __commonJS({
32
28
  };
33
29
  this.compiler = null;
34
30
  }
35
- _create_class(LoadablePlugin2, [
36
- {
37
- key: "apply",
38
- value: function apply(compiler) {
39
- var _this = this;
40
- this.compiler = compiler;
41
- compiler.options.output.chunkLoadingGlobal = this.opts.chunkLoadingGlobal;
42
- if (this.opts.outputAsset || this.opts.writeToDisk) {
43
- compiler.hooks.make.tap(LoadablePlugin2.name, function(compilation) {
44
- compilation.hooks.processAssets.tap({
45
- name: LoadablePlugin2.name,
46
- stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT
47
- }, function() {
48
- var asset = _this.handleEmit(compilation);
49
- if (asset) {
50
- compilation.emitAsset(_this.opts.filename, asset);
51
- }
52
- });
53
- });
54
- }
55
- }
56
- },
57
- {
58
- key: "handleEmit",
59
- value: function handleEmit(compilation) {
60
- var stats = compilation.getStats().toJson({
61
- all: false,
62
- assets: true,
63
- // rspack not support cachedAssets,
64
- cachedAssets: true,
65
- chunks: true,
66
- chunkGroups: true,
67
- entrypoints: true,
68
- // rspack not support chunkGroupChildren.
69
- chunkGroupChildren: true,
70
- hash: true,
71
- ids: true,
72
- outputPath: true,
73
- publicPath: true
74
- });
75
- var output = _object_spread_props(_object_spread({}, stats), {
76
- generator: "loadable-components",
77
- chunks: _to_consumable_array(stats.chunks || []).map(function(chunk) {
78
- return {
79
- id: chunk.id,
80
- files: _to_consumable_array(chunk.files || [])
81
- };
82
- })
31
+ var _proto = LoadablePlugin2.prototype;
32
+ _proto.apply = function apply(compiler) {
33
+ var _this = this;
34
+ this.compiler = compiler;
35
+ compiler.options.output.chunkLoadingGlobal = this.opts.chunkLoadingGlobal;
36
+ if (this.opts.outputAsset || this.opts.writeToDisk) {
37
+ compiler.hooks.make.tap(LoadablePlugin2.name, function(compilation) {
38
+ compilation.hooks.processAssets.tap({
39
+ name: LoadablePlugin2.name,
40
+ stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT
41
+ }, function() {
42
+ var asset = _this.handleEmit(compilation);
43
+ if (asset) {
44
+ compilation.emitAsset(_this.opts.filename, asset);
45
+ }
83
46
  });
84
- var result = JSON.stringify(output, null, 2);
85
- if (this.opts.writeToDisk) {
86
- this.writeAssetsFile(result);
87
- }
88
- if (this.opts.outputAsset) {
89
- return {
90
- source: function source() {
91
- return result;
92
- },
93
- size: function size() {
94
- return result.length;
95
- }
96
- };
47
+ });
48
+ }
49
+ };
50
+ _proto.handleEmit = function handleEmit(compilation) {
51
+ var stats = compilation.getStats().toJson({
52
+ all: false,
53
+ assets: true,
54
+ // rspack not support cachedAssets,
55
+ cachedAssets: true,
56
+ chunks: true,
57
+ chunkGroups: true,
58
+ entrypoints: true,
59
+ // rspack not support chunkGroupChildren.
60
+ chunkGroupChildren: true,
61
+ hash: true,
62
+ ids: true,
63
+ outputPath: true,
64
+ publicPath: true
65
+ });
66
+ var output = _object_spread_props(_object_spread({}, stats), {
67
+ generator: "loadable-components",
68
+ chunks: _to_consumable_array(stats.chunks || []).map(function(chunk) {
69
+ return {
70
+ id: chunk.id,
71
+ files: _to_consumable_array(chunk.files || [])
72
+ };
73
+ })
74
+ });
75
+ var result = JSON.stringify(output, null, 2);
76
+ if (this.opts.writeToDisk) {
77
+ this.writeAssetsFile(result);
78
+ }
79
+ if (this.opts.outputAsset) {
80
+ return {
81
+ source: function source() {
82
+ return result;
83
+ },
84
+ size: function size() {
85
+ return result.length;
97
86
  }
98
- return null;
99
- }
100
- },
101
- {
102
- key: "writeAssetsFile",
103
- value: function writeAssetsFile(manifest) {
104
- var _this_compiler;
105
- var outputFolder = (_this_compiler = this.compiler) === null || _this_compiler === void 0 ? void 0 : _this_compiler.options.output.path;
106
- var outputFile = path.resolve(outputFolder || "", this.opts.filename);
107
- fs.outputFileSync(outputFile, manifest);
108
- }
87
+ };
109
88
  }
110
- ]);
89
+ return null;
90
+ };
91
+ _proto.writeAssetsFile = function writeAssetsFile(manifest) {
92
+ var _this_compiler;
93
+ var outputFolder = (_this_compiler = this.compiler) === null || _this_compiler === void 0 ? void 0 : _this_compiler.options.output.path;
94
+ var outputFile = path.resolve(outputFolder || "", this.opts.filename);
95
+ fs.outputFileSync(outputFile, manifest);
96
+ };
111
97
  return LoadablePlugin2;
112
98
  }();
113
99
  module.exports = LoadablePlugin;
@@ -6,6 +6,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import { loadableReady } from "@loadable/component";
7
7
  import hoistNonReactStatics from "hoist-non-react-statics";
8
8
  import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
9
+ import { normalizePathname } from "@modern-js/runtime-utils/url";
9
10
  import { RenderLevel } from "./serverRender/types";
10
11
  import { WithCallback } from "./react/withCallback";
11
12
  import { formatClient, mockResponse, isReact18 } from "./utils";
@@ -24,7 +25,7 @@ var ssr = function(config) {
24
25
  return {
25
26
  client: function() {
26
27
  var _ref = _async_to_generator(function(param) {
27
- var App, context, ModernRender, ModernHydrate, _window__SSR_DATA, _window, hydrateContext, ssrContext, _ssrContext_request, initialPathname, currentPathname, errorMsg, callback, renderLevel;
28
+ var App, context, ModernRender, ModernHydrate, _window__SSR_DATA, _window, hydrateContext, ssrContext, currentPathname, initialPathname, errorMsg, callback, renderLevel;
28
29
  function stringSSRHydrate() {
29
30
  if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
30
31
  ModernRender(/* @__PURE__ */ _jsx(App, {
@@ -88,8 +89,8 @@ var ssr = function(config) {
88
89
  _hydration: true
89
90
  });
90
91
  ssrContext = hydrateContext.ssrContext;
91
- _ssrContext_request = ssrContext.request, initialPathname = _ssrContext_request.pathname;
92
- currentPathname = window.location.pathname;
92
+ currentPathname = normalizePathname(window.location.pathname);
93
+ initialPathname = normalizePathname(ssrContext.request.pathname);
93
94
  if (initialPathname !== currentPathname) {
94
95
  errorMsg = "The initial URL ".concat(initialPathname, " and the URL ").concat(currentPathname, " to be hydrated do not match, reload.");
95
96
  console.error(errorMsg);
@@ -52,35 +52,28 @@ var reducePropsToState = function(propsList) {
52
52
  return reduceProps;
53
53
  };
54
54
  function factory(Component) {
55
- var _React_Component;
56
- var Spr = /* @__PURE__ */ function(_superClass) {
55
+ var Spr = /* @__PURE__ */ function(_React_Component) {
57
56
  "use strict";
58
- _inherits(Spr2, _superClass);
57
+ _inherits(Spr2, _React_Component);
59
58
  var _super = _create_super(Spr2);
60
59
  function Spr2() {
61
60
  _class_call_check(this, Spr2);
62
61
  return _super.apply(this, arguments);
63
62
  }
64
- _create_class(Spr2, [
65
- {
66
- key: "verify",
67
- value: function verify() {
68
- return true;
69
- }
70
- },
71
- {
72
- key: "render",
73
- value: function render() {
74
- var newProps = _object_spread({}, this.props);
75
- var validate = this.verify();
76
- if (!validate) {
77
- throw new Error("invalid props, check usage");
78
- }
79
- console.error("[Warn] PreRender has been deprecated, please use SSR Cache instead. reference to docs: https://modernjs.dev/guides/advanced-features/ssr.html");
80
- return createElement(Component, _object_spread({}, newProps));
81
- }
63
+ var _proto = Spr2.prototype;
64
+ _proto.verify = function verify() {
65
+ return true;
66
+ };
67
+ _proto.render = function render() {
68
+ var newProps = _object_spread({}, this.props);
69
+ var validate = this.verify();
70
+ if (!validate) {
71
+ throw new Error("invalid props, check usage");
82
72
  }
83
- ], [
73
+ console.error("[Warn] PreRender has been deprecated, please use SSR Cache instead. reference to docs: https://modernjs.dev/guides/advanced-features/ssr.html");
74
+ return createElement(Component, _object_spread({}, newProps));
75
+ };
76
+ _create_class(Spr2, null, [
84
77
  {
85
78
  key: "canUseDOM",
86
79
  get: function get() {
@@ -92,13 +85,13 @@ function factory(Component) {
92
85
  }
93
86
  ]);
94
87
  return Spr2;
95
- }(_React_Component = React.Component);
96
- _define_property(Spr, "peek", Component.peek);
97
- _define_property(Spr, "rewind", Component.rewind);
98
- _define_property(Spr, "config", function() {
88
+ }(React.Component);
89
+ Spr.peek = Component.peek;
90
+ Spr.rewind = Component.rewind;
91
+ Spr.config = function() {
99
92
  var mappedState = Component.rewind();
100
93
  return mappedState;
101
- });
94
+ };
102
95
  return Spr;
103
96
  }
104
97
  var NullComponent = function() {
@@ -51,9 +51,9 @@ var checkIsInline = function(chunk, enableInline) {
51
51
  }
52
52
  };
53
53
  function getHeadTemplate(beforeEntryTemplate, context, pluginConfig) {
54
+ var helmetData = ReactHelmet.renderStatic();
54
55
  var callbacks = [
55
56
  function(headTemplate2) {
56
- var helmetData = ReactHelmet.renderStatic();
57
57
  return helmetData ? helmetReplace(headTemplate2, helmetData) : headTemplate2;
58
58
  },
59
59
  // @TODO: prefetch scripts of lazy component