@modern-js/server-core 2.49.4-alpha.1 → 2.49.4-alpha.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.
@@ -47,6 +47,9 @@ function createPublicMiddleware({ pwd, routes }) {
47
47
  if (mimeType) {
48
48
  c.header("Content-Type", mimeType);
49
49
  }
50
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
51
+ c.header(k, v);
52
+ });
50
53
  return c.body(data, 200);
51
54
  }
52
55
  }
@@ -55,7 +58,7 @@ function createPublicMiddleware({ pwd, routes }) {
55
58
  }
56
59
  function matchRoute(req, routes) {
57
60
  for (const route of routes.sort(import_utils.sortRoutes)) {
58
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
61
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
59
62
  return route;
60
63
  }
61
64
  }
@@ -35,7 +35,6 @@ var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
36
  var import_mime = require("hono/utils/mime");
37
37
  var import_fileReader = require("@modern-js/runtime-utils/fileReader");
38
- var import_utils2 = require("../../../utils");
39
38
  var import_serverPublic = require("./serverPublic");
40
39
  function createStaticMiddleware(options) {
41
40
  const { pwd, routes } = options;
@@ -69,7 +68,7 @@ function createStaticMiddleware(options) {
69
68
  if (hit) {
70
69
  const filepath = import_path.default.join(pwd, pathname.replace(prefix, () => ""));
71
70
  if (!await import_utils.fs.pathExists(filepath)) {
72
- return c.html((0, import_utils2.createErrorHtml)(404), 404);
71
+ return next();
73
72
  }
74
73
  const mimeType = (0, import_mime.getMimeType)(filepath);
75
74
  if (mimeType) {
@@ -22,13 +22,31 @@ __export(render_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(render_exports);
24
24
  var import_universal = require("@modern-js/utils/universal");
25
+ var import_trie_router = require("hono/router/trie-router");
25
26
  var import_constants = require("../../../base/constants");
26
27
  var import_utils = require("../../utils");
27
28
  var import_dataHandler = require("./dataHandler");
28
29
  var import_ssrRender = require("./ssrRender");
30
+ function getRouter(routes) {
31
+ const sorted = routes.sort(import_utils.sortRoutes);
32
+ const router = new import_trie_router.TrieRouter();
33
+ for (const route of sorted) {
34
+ const { urlPath: originUrlPath } = route;
35
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
36
+ router.add("*", urlPath, route);
37
+ }
38
+ return router;
39
+ }
40
+ function matchRoute(router, request) {
41
+ const pathname = (0, import_utils.getPathname)(request);
42
+ const matched = router.match("*", pathname);
43
+ const result = matched[0][0];
44
+ return result || [];
45
+ }
29
46
  async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
47
+ const router = getRouter(routes);
30
48
  return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics }) => {
31
- const routeInfo = matchRoute(req, routes);
49
+ const [routeInfo, params] = matchRoute(router, req);
32
50
  const onFallback = async (reason, error) => {
33
51
  return onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
34
52
  logger,
@@ -69,6 +87,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
69
87
  nodeReq,
70
88
  reporter,
71
89
  serverRoutes: routes,
90
+ params,
72
91
  locals,
73
92
  serverManifest,
74
93
  metrics
@@ -92,7 +111,7 @@ async function renderHandler(request, options, mode, onError) {
92
111
  const serverData = {
93
112
  router: {
94
113
  baseUrl: options.routeInfo.urlPath,
95
- params: {}
114
+ params: options.params
96
115
  }
97
116
  };
98
117
  let response;
@@ -106,17 +125,15 @@ async function renderHandler(request, options, mode, onError) {
106
125
  } else {
107
126
  response = csrRender(options.html);
108
127
  }
109
- return (0, import_utils.transformResponse)(response, injectServerData(serverData));
110
- }
111
- function matchRoute(req, routes) {
112
- const sorted = routes.sort(import_utils.sortRoutes);
113
- for (const route of sorted) {
114
- const pathname = (0, import_utils.getPathname)(req);
115
- if (pathname.startsWith(route.urlPath)) {
116
- return route;
117
- }
128
+ const newRes = (0, import_utils.transformResponse)(response, injectServerData(serverData));
129
+ const { routeInfo } = options;
130
+ applyExtendHeaders(newRes, routeInfo);
131
+ return newRes;
132
+ function applyExtendHeaders(r, route) {
133
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
134
+ r.headers.set(k, v);
135
+ });
118
136
  }
119
- return void 0;
120
137
  }
121
138
  async function getRenderMode(req, framework, isSSR, forceCSR, nodeReq, onFallback) {
122
139
  const query = (0, import_utils.parseQuery)(req);
@@ -49,7 +49,7 @@ const defaultReporter = {
49
49
  reportWarn() {
50
50
  }
51
51
  };
52
- async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics }) {
52
+ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics }) {
53
53
  var _serverManifest_renderBundles;
54
54
  const { entryName } = routeInfo;
55
55
  const loadableStats = serverManifest.loadableStats || {};
@@ -69,7 +69,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
69
69
  const ssrContext = {
70
70
  request: {
71
71
  baseUrl: routeInfo.urlPath,
72
- params: {},
72
+ params,
73
73
  pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : (0, import_utils.getPathname)(request),
74
74
  host,
75
75
  query,
@@ -1,4 +1,5 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
4
  import path from "path";
4
5
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
@@ -31,6 +32,10 @@ function createPublicMiddleware(param) {
31
32
  if (mimeType) {
32
33
  c.header("Content-Type", mimeType);
33
34
  }
35
+ Object.entries(route.responseHeaders || {}).forEach(function(param2) {
36
+ var _param = _sliced_to_array(param2, 2), k = _param[0], v = _param[1];
37
+ c.header(k, v);
38
+ });
34
39
  return [
35
40
  2,
36
41
  c.body(data, 200)
@@ -60,7 +65,7 @@ function matchRoute(req, routes) {
60
65
  try {
61
66
  for (var _iterator = routes.sort(sortRoutes)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
62
67
  var route = _step.value;
63
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
68
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
64
69
  return route;
65
70
  }
66
71
  }
@@ -5,7 +5,6 @@ import path from "path";
5
5
  import { fs } from "@modern-js/utils";
6
6
  import { getMimeType } from "hono/utils/mime";
7
7
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
8
- import { createErrorHtml } from "../../../utils";
9
8
  import { createPublicMiddleware } from "./serverPublic";
10
9
  function createStaticMiddleware(options) {
11
10
  var pwd = options.pwd, routes = options.routes;
@@ -54,7 +53,7 @@ function createStaticMiddleware(options) {
54
53
  if (!_state.sent()) {
55
54
  return [
56
55
  2,
57
- c.html(createErrorHtml(404), 404)
56
+ next()
58
57
  ];
59
58
  }
60
59
  mimeType = getMimeType(filepath);
@@ -1,28 +1,64 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
4
  import { cutNameByHyphen } from "@modern-js/utils/universal";
5
+ import { TrieRouter } from "hono/router/trie-router";
4
6
  import { REPLACE_REG } from "../../../base/constants";
5
7
  import { createErrorHtml, sortRoutes, parseQuery, transformResponse, getPathname, onError as onErrorFn, ErrorDigest } from "../../utils";
6
8
  import { dataHandler } from "./dataHandler";
7
9
  import { ssrRender } from "./ssrRender";
10
+ function getRouter(routes) {
11
+ var sorted = routes.sort(sortRoutes);
12
+ var router = new TrieRouter();
13
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
14
+ try {
15
+ for (var _iterator = sorted[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
16
+ var route = _step.value;
17
+ var originUrlPath = route.urlPath;
18
+ var urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
19
+ router.add("*", urlPath, route);
20
+ }
21
+ } catch (err) {
22
+ _didIteratorError = true;
23
+ _iteratorError = err;
24
+ } finally {
25
+ try {
26
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
27
+ _iterator.return();
28
+ }
29
+ } finally {
30
+ if (_didIteratorError) {
31
+ throw _iteratorError;
32
+ }
33
+ }
34
+ }
35
+ return router;
36
+ }
37
+ function matchRoute(router, request) {
38
+ var pathname = getPathname(request);
39
+ var matched = router.match("*", pathname);
40
+ var result = matched[0][0];
41
+ return result || [];
42
+ }
8
43
  function createRender(_) {
9
44
  return _createRender.apply(this, arguments);
10
45
  }
11
46
  function _createRender() {
12
47
  _createRender = _async_to_generator(function(param) {
13
- var routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallbackFn;
48
+ var routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallbackFn, router;
14
49
  return _ts_generator(this, function(_state) {
15
50
  routes = param.routes, pwd = param.pwd, metaName = param.metaName, staticGenerate = param.staticGenerate, forceCSR = param.forceCSR, nonce = param.nonce, onFallbackFn = param.onFallback;
51
+ router = getRouter(routes);
16
52
  return [
17
53
  2,
18
54
  function() {
19
55
  var _ref = _async_to_generator(function(req, param2) {
20
- var logger, nodeReq, reporter, templates, serverManifest, locals, metrics, routeInfo, onFallback, html, renderMode, onError, renderOptions, response;
56
+ var logger, nodeReq, reporter, templates, serverManifest, locals, metrics, _matchRoute, routeInfo, params, onFallback, html, renderMode, onError, renderOptions, response;
21
57
  return _ts_generator(this, function(_state2) {
22
58
  switch (_state2.label) {
23
59
  case 0:
24
60
  logger = param2.logger, nodeReq = param2.nodeReq, reporter = param2.reporter, templates = param2.templates, serverManifest = param2.serverManifest, locals = param2.locals, metrics = param2.metrics;
25
- routeInfo = matchRoute(req, routes);
61
+ _matchRoute = _sliced_to_array(matchRoute(router, req), 2), routeInfo = _matchRoute[0], params = _matchRoute[1];
26
62
  onFallback = function() {
27
63
  var _ref2 = _async_to_generator(function(reason, error) {
28
64
  return _ts_generator(this, function(_state3) {
@@ -102,6 +138,7 @@ function _createRender() {
102
138
  nodeReq,
103
139
  reporter,
104
140
  serverRoutes: routes,
141
+ params,
105
142
  locals,
106
143
  serverManifest,
107
144
  metrics
@@ -179,14 +216,20 @@ function renderHandler(request, options, mode, onError) {
179
216
  }
180
217
  function _renderHandler() {
181
218
  _renderHandler = _async_to_generator(function(request, options, mode, onError) {
182
- var serverData, response, e;
219
+ var serverData, response, e, newRes, routeInfo;
220
+ function applyExtendHeaders(r, route) {
221
+ Object.entries(route.responseHeaders || {}).forEach(function(param) {
222
+ var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
223
+ r.headers.set(k, v);
224
+ });
225
+ }
183
226
  return _ts_generator(this, function(_state) {
184
227
  switch (_state.label) {
185
228
  case 0:
186
229
  serverData = {
187
230
  router: {
188
231
  baseUrl: options.routeInfo.urlPath,
189
- params: {}
232
+ params: options.params
190
233
  }
191
234
  };
192
235
  if (!(mode === "ssr"))
@@ -234,42 +277,18 @@ function _renderHandler() {
234
277
  response = csrRender(options.html);
235
278
  _state.label = 7;
236
279
  case 7:
280
+ newRes = transformResponse(response, injectServerData(serverData));
281
+ routeInfo = options.routeInfo;
282
+ applyExtendHeaders(newRes, routeInfo);
237
283
  return [
238
284
  2,
239
- transformResponse(response, injectServerData(serverData))
285
+ newRes
240
286
  ];
241
287
  }
242
288
  });
243
289
  });
244
290
  return _renderHandler.apply(this, arguments);
245
291
  }
246
- function matchRoute(req, routes) {
247
- var sorted = routes.sort(sortRoutes);
248
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
249
- try {
250
- for (var _iterator = sorted[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
251
- var route = _step.value;
252
- var pathname = getPathname(req);
253
- if (pathname.startsWith(route.urlPath)) {
254
- return route;
255
- }
256
- }
257
- } catch (err) {
258
- _didIteratorError = true;
259
- _iteratorError = err;
260
- } finally {
261
- try {
262
- if (!_iteratorNormalCompletion && _iterator.return != null) {
263
- _iterator.return();
264
- }
265
- } finally {
266
- if (_didIteratorError) {
267
- throw _iteratorError;
268
- }
269
- }
270
- }
271
- return void 0;
272
- }
273
292
  function getRenderMode(req, framework, isSSR, forceCSR, nodeReq, onFallback) {
274
293
  return _getRenderMode.apply(this, arguments);
275
294
  }
@@ -24,11 +24,11 @@ function ssrRender(request, _) {
24
24
  }
25
25
  function _ssrRender() {
26
26
  _ssrRender = _async_to_generator(function(request, param) {
27
- var routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, host, isSpider, responseProxy, query, headers, key, ssrContext, renderBundle, runtimeEnv, ssrResult, cacheStatus, render, cacheModuleName, ssrCache, incomingMessage, cacheControl, _ref, data, status, redirection, headers1, Readable, streamModule, createReadableStreamFromReadable, _tmp, data1;
27
+ var routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, host, isSpider, responseProxy, query, headers, key, ssrContext, renderBundle, runtimeEnv, ssrResult, cacheStatus, render, cacheModuleName, ssrCache, incomingMessage, cacheControl, _ref, data, status, redirection, headers1, Readable, streamModule, createReadableStreamFromReadable, _tmp, data1;
28
28
  return _ts_generator(this, function(_state) {
29
29
  switch (_state.label) {
30
30
  case 0:
31
- routeInfo = param.routeInfo, html = param.html, staticGenerate = param.staticGenerate, nonce = param.nonce, metaName = param.metaName, reporter = param.reporter, logger = param.logger, nodeReq = param.nodeReq, serverManifest = param.serverManifest, locals = param.locals, metrics = param.metrics;
31
+ routeInfo = param.routeInfo, html = param.html, staticGenerate = param.staticGenerate, nonce = param.nonce, metaName = param.metaName, reporter = param.reporter, logger = param.logger, nodeReq = param.nodeReq, serverManifest = param.serverManifest, locals = param.locals, params = param.params, metrics = param.metrics;
32
32
  entryName = routeInfo.entryName;
33
33
  loadableStats = serverManifest.loadableStats || {};
34
34
  routeManifest = serverManifest.routeManifest || {};
@@ -47,7 +47,7 @@ function _ssrRender() {
47
47
  ssrContext = {
48
48
  request: {
49
49
  baseUrl: routeInfo.urlPath,
50
- params: {},
50
+ params,
51
51
  pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : getPathname(request),
52
52
  host,
53
53
  query,
@@ -14,6 +14,9 @@ function createPublicMiddleware({ pwd, routes }) {
14
14
  if (mimeType) {
15
15
  c.header("Content-Type", mimeType);
16
16
  }
17
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
18
+ c.header(k, v);
19
+ });
17
20
  return c.body(data, 200);
18
21
  }
19
22
  }
@@ -22,7 +25,7 @@ function createPublicMiddleware({ pwd, routes }) {
22
25
  }
23
26
  function matchRoute(req, routes) {
24
27
  for (const route of routes.sort(sortRoutes)) {
25
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
28
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
26
29
  return route;
27
30
  }
28
31
  }
@@ -2,7 +2,6 @@ import path from "path";
2
2
  import { fs } from "@modern-js/utils";
3
3
  import { getMimeType } from "hono/utils/mime";
4
4
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
5
- import { createErrorHtml } from "../../../utils";
6
5
  import { createPublicMiddleware } from "./serverPublic";
7
6
  function createStaticMiddleware(options) {
8
7
  const { pwd, routes } = options;
@@ -36,7 +35,7 @@ function createStaticMiddleware(options) {
36
35
  if (hit) {
37
36
  const filepath = path.join(pwd, pathname.replace(prefix, () => ""));
38
37
  if (!await fs.pathExists(filepath)) {
39
- return c.html(createErrorHtml(404), 404);
38
+ return next();
40
39
  }
41
40
  const mimeType = getMimeType(filepath);
42
41
  if (mimeType) {
@@ -1,11 +1,29 @@
1
1
  import { cutNameByHyphen } from "@modern-js/utils/universal";
2
+ import { TrieRouter } from "hono/router/trie-router";
2
3
  import { REPLACE_REG } from "../../../base/constants";
3
4
  import { createErrorHtml, sortRoutes, parseQuery, transformResponse, getPathname, onError as onErrorFn, ErrorDigest } from "../../utils";
4
5
  import { dataHandler } from "./dataHandler";
5
6
  import { ssrRender } from "./ssrRender";
7
+ function getRouter(routes) {
8
+ const sorted = routes.sort(sortRoutes);
9
+ const router = new TrieRouter();
10
+ for (const route of sorted) {
11
+ const { urlPath: originUrlPath } = route;
12
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
13
+ router.add("*", urlPath, route);
14
+ }
15
+ return router;
16
+ }
17
+ function matchRoute(router, request) {
18
+ const pathname = getPathname(request);
19
+ const matched = router.match("*", pathname);
20
+ const result = matched[0][0];
21
+ return result || [];
22
+ }
6
23
  async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
24
+ const router = getRouter(routes);
7
25
  return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics }) => {
8
- const routeInfo = matchRoute(req, routes);
26
+ const [routeInfo, params] = matchRoute(router, req);
9
27
  const onFallback = async (reason, error) => {
10
28
  return onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
11
29
  logger,
@@ -46,6 +64,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
46
64
  nodeReq,
47
65
  reporter,
48
66
  serverRoutes: routes,
67
+ params,
49
68
  locals,
50
69
  serverManifest,
51
70
  metrics
@@ -69,7 +88,7 @@ async function renderHandler(request, options, mode, onError) {
69
88
  const serverData = {
70
89
  router: {
71
90
  baseUrl: options.routeInfo.urlPath,
72
- params: {}
91
+ params: options.params
73
92
  }
74
93
  };
75
94
  let response;
@@ -83,17 +102,15 @@ async function renderHandler(request, options, mode, onError) {
83
102
  } else {
84
103
  response = csrRender(options.html);
85
104
  }
86
- return transformResponse(response, injectServerData(serverData));
87
- }
88
- function matchRoute(req, routes) {
89
- const sorted = routes.sort(sortRoutes);
90
- for (const route of sorted) {
91
- const pathname = getPathname(req);
92
- if (pathname.startsWith(route.urlPath)) {
93
- return route;
94
- }
105
+ const newRes = transformResponse(response, injectServerData(serverData));
106
+ const { routeInfo } = options;
107
+ applyExtendHeaders(newRes, routeInfo);
108
+ return newRes;
109
+ function applyExtendHeaders(r, route) {
110
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
111
+ r.headers.set(k, v);
112
+ });
95
113
  }
96
- return void 0;
97
114
  }
98
115
  async function getRenderMode(req, framework, isSSR, forceCSR, nodeReq, onFallback) {
99
116
  const query = parseQuery(req);
@@ -15,7 +15,7 @@ const defaultReporter = {
15
15
  reportWarn() {
16
16
  }
17
17
  };
18
- async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics }) {
18
+ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics }) {
19
19
  var _serverManifest_renderBundles;
20
20
  const { entryName } = routeInfo;
21
21
  const loadableStats = serverManifest.loadableStats || {};
@@ -35,7 +35,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
35
35
  const ssrContext = {
36
36
  request: {
37
37
  baseUrl: routeInfo.urlPath,
38
- params: {},
38
+ params,
39
39
  pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : getPathname(request),
40
40
  host,
41
41
  query,
@@ -2,6 +2,7 @@
2
2
  import type { IncomingMessage } from 'http';
3
3
  import type { Logger, Metrics, Reporter, ServerRoute } from '@modern-js/types';
4
4
  import { ServerManifest } from '../../../core/server';
5
+ export type Params = Record<string, any>;
5
6
  export interface SSRRenderOptions {
6
7
  pwd: string;
7
8
  html: string;
@@ -10,6 +11,7 @@ export interface SSRRenderOptions {
10
11
  metaName: string;
11
12
  logger: Logger;
12
13
  serverManifest: ServerManifest;
14
+ params: Params;
13
15
  /** Produce by custom server hook */
14
16
  locals?: Record<string, any>;
15
17
  reporter?: Reporter;
@@ -17,5 +19,5 @@ export interface SSRRenderOptions {
17
19
  nodeReq?: IncomingMessage;
18
20
  nonce?: string;
19
21
  }
20
- export declare function ssrRender(request: Request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics, }: SSRRenderOptions): Promise<Response>;
22
+ export declare function ssrRender(request: Request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, }: SSRRenderOptions): Promise<Response>;
21
23
  export declare function getPathnameFromNodeReq(nodeReq: IncomingMessage): string;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.49.4-alpha.1",
18
+ "version": "2.49.4-alpha.2",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -70,8 +70,8 @@
70
70
  "isbot": "3.8.0",
71
71
  "merge-deep": "^3.0.3",
72
72
  "@modern-js/runtime-utils": "2.49.3",
73
- "@modern-js/utils": "2.49.3",
74
- "@modern-js/plugin": "2.49.3"
73
+ "@modern-js/plugin": "2.49.3",
74
+ "@modern-js/utils": "2.49.3"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/jest": "^29",
@@ -81,8 +81,8 @@
81
81
  "jest": "^29",
82
82
  "ts-jest": "^29.1.0",
83
83
  "typescript": "^5",
84
- "@scripts/build": "2.49.3",
85
84
  "@modern-js/types": "2.49.3",
85
+ "@scripts/build": "2.49.3",
86
86
  "@scripts/jest-config": "2.49.3"
87
87
  },
88
88
  "sideEffects": false,