@bleedingdev/modern-js-server-core 3.8.3-ultramodern.6 → 3.9.0-ultramodern.10

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 (94) hide show
  1. package/dist/cjs/adapters/node/index.js +4 -0
  2. package/dist/cjs/adapters/node/plugins/static.js +107 -29
  3. package/dist/cjs/index.js +10 -34
  4. package/dist/cjs/plugins/compat/index.js +1 -0
  5. package/dist/cjs/serverBase.js +58 -17
  6. package/dist/cjs/utils/error.js +0 -10
  7. package/dist/esm/adapters/node/index.mjs +1 -0
  8. package/dist/esm/adapters/node/plugins/static.mjs +107 -32
  9. package/dist/esm/index.mjs +1 -1
  10. package/dist/esm/plugins/compat/index.mjs +1 -0
  11. package/dist/esm/plugins/render/render.mjs +4 -5
  12. package/dist/esm/serverBase.mjs +58 -17
  13. package/dist/esm/utils/error.mjs +0 -1
  14. package/dist/esm-node/adapters/node/index.mjs +1 -0
  15. package/dist/esm-node/adapters/node/plugins/static.mjs +107 -32
  16. package/dist/esm-node/index.mjs +1 -1
  17. package/dist/esm-node/plugins/compat/index.mjs +1 -0
  18. package/dist/esm-node/plugins/render/render.mjs +4 -3
  19. package/dist/esm-node/serverBase.mjs +58 -17
  20. package/dist/esm-node/utils/error.mjs +0 -1
  21. package/dist/types/adapters/node/helper/index.d.ts +6 -6
  22. package/dist/types/adapters/node/helper/loadCache.d.ts +1 -1
  23. package/dist/types/adapters/node/helper/loadConfig.d.ts +1 -1
  24. package/dist/types/adapters/node/helper/loadEnv.d.ts +1 -1
  25. package/dist/types/adapters/node/helper/loadPlugin.d.ts +1 -1
  26. package/dist/types/adapters/node/helper/utils.d.ts +1 -1
  27. package/dist/types/adapters/node/hono.d.ts +2 -2
  28. package/dist/types/adapters/node/index.d.ts +7 -5
  29. package/dist/types/adapters/node/node.d.ts +1 -1
  30. package/dist/types/adapters/node/plugins/index.d.ts +3 -3
  31. package/dist/types/adapters/node/plugins/nodeServer.d.ts +1 -1
  32. package/dist/types/adapters/node/plugins/resource.d.ts +1 -1
  33. package/dist/types/adapters/node/plugins/static.d.ts +43 -5
  34. package/dist/types/helper.d.ts +1 -1
  35. package/dist/types/index.d.ts +13 -14
  36. package/dist/types/plugins/compat/hooks.d.ts +1 -1
  37. package/dist/types/plugins/compat/index.d.ts +2 -2
  38. package/dist/types/plugins/default.d.ts +2 -2
  39. package/dist/types/plugins/favicon.d.ts +1 -1
  40. package/dist/types/plugins/index.d.ts +8 -8
  41. package/dist/types/plugins/log.d.ts +1 -1
  42. package/dist/types/plugins/middlewares.d.ts +1 -1
  43. package/dist/types/plugins/monitors.d.ts +1 -1
  44. package/dist/types/plugins/processedBy.d.ts +1 -1
  45. package/dist/types/plugins/render/csrRscRender.d.ts +1 -1
  46. package/dist/types/plugins/render/dataHandler.d.ts +1 -1
  47. package/dist/types/plugins/render/index.d.ts +2 -2
  48. package/dist/types/plugins/render/inject.d.ts +1 -1
  49. package/dist/types/plugins/render/render.d.ts +2 -2
  50. package/dist/types/plugins/render/renderRscHandler.d.ts +1 -1
  51. package/dist/types/plugins/render/serverActionHandler.d.ts +1 -1
  52. package/dist/types/plugins/render/ssrCache.d.ts +1 -1
  53. package/dist/types/plugins/render/ssrRender.d.ts +2 -2
  54. package/dist/types/plugins/render/utils.d.ts +2 -2
  55. package/dist/types/plugins/route.d.ts +1 -1
  56. package/dist/types/serverBase.d.ts +9 -3
  57. package/dist/types/types/config/bff.d.ts +4 -15
  58. package/dist/types/types/config/index.d.ts +14 -14
  59. package/dist/types/types/config/server.d.ts +1 -3
  60. package/dist/types/types/config/source.d.ts +1 -1
  61. package/dist/types/types/index.d.ts +4 -4
  62. package/dist/types/types/plugins/base.d.ts +3 -3
  63. package/dist/types/types/plugins/index.d.ts +2 -2
  64. package/dist/types/types/plugins/plugin.d.ts +16 -2
  65. package/dist/types/types/render.d.ts +1 -1
  66. package/dist/types/types/requestHandler.d.ts +3 -4
  67. package/dist/types/types/server.d.ts +1 -1
  68. package/dist/types/utils/error.d.ts +0 -2
  69. package/dist/types/utils/index.d.ts +9 -9
  70. package/dist/types/utils/publicDir.d.ts +1 -1
  71. package/dist/types/utils/serverConfig.d.ts +1 -1
  72. package/package.json +8 -9
  73. package/dist/cjs/adapters/node/plugins/staticModuleFederation.js +0 -173
  74. package/dist/cjs/adapters/node/plugins/staticPrecompressed.js +0 -152
  75. package/dist/cjs/adapters/node/plugins/staticServing.js +0 -206
  76. package/dist/cjs/types/config/bffRuntime.js +0 -18
  77. package/dist/cjs/types/config/serverTelemetry.js +0 -18
  78. package/dist/esm/adapters/node/plugins/staticModuleFederation.mjs +0 -104
  79. package/dist/esm/adapters/node/plugins/staticPrecompressed.mjs +0 -111
  80. package/dist/esm/adapters/node/plugins/staticServing.mjs +0 -152
  81. package/dist/esm/types/config/bffRuntime.mjs +0 -0
  82. package/dist/esm/types/config/serverTelemetry.mjs +0 -0
  83. package/dist/esm-node/adapters/node/plugins/staticModuleFederation.mjs +0 -105
  84. package/dist/esm-node/adapters/node/plugins/staticPrecompressed.mjs +0 -112
  85. package/dist/esm-node/adapters/node/plugins/staticServing.mjs +0 -153
  86. package/dist/esm-node/types/config/bffRuntime.mjs +0 -1
  87. package/dist/esm-node/types/config/serverTelemetry.mjs +0 -1
  88. package/dist/types/adapters/node/plugins/staticModuleFederation.d.ts +0 -13
  89. package/dist/types/adapters/node/plugins/staticPrecompressed.d.ts +0 -13
  90. package/dist/types/adapters/node/plugins/staticServing.d.ts +0 -25
  91. package/dist/types/types/config/bffRuntime.d.ts +0 -116
  92. package/dist/types/types/config/serverTelemetry.d.ts +0 -319
  93. /package/dist/esm/{rslib-runtime.mjs → rslib-runtime~1.mjs} +0 -0
  94. /package/dist/esm-node/{rslib-runtime.mjs → rslib-runtime~0.mjs} +0 -0
@@ -44,12 +44,14 @@ __webpack_require__.d(__webpack_exports__, {
44
44
  loadServerPlugins: ()=>index_js_namespaceObject.loadServerPlugins,
45
45
  loadServerRuntimeConfig: ()=>index_js_namespaceObject.loadServerRuntimeConfig,
46
46
  sendResponse: ()=>external_node_js_namespaceObject.sendResponse,
47
+ serveStaticAsset: ()=>static_js_namespaceObject.serveStaticAsset,
47
48
  serverStaticPlugin: ()=>external_plugins_index_js_namespaceObject.serverStaticPlugin
48
49
  });
49
50
  const index_js_namespaceObject = require("./helper/index.js");
50
51
  const external_hono_js_namespaceObject = require("./hono.js");
51
52
  const external_node_js_namespaceObject = require("./node.js");
52
53
  const external_plugins_index_js_namespaceObject = require("./plugins/index.js");
54
+ const static_js_namespaceObject = require("./plugins/static.js");
53
55
  exports.connectMid2HonoMid = __webpack_exports__.connectMid2HonoMid;
54
56
  exports.connectMockMid2HonoMid = __webpack_exports__.connectMockMid2HonoMid;
55
57
  exports.createNodeServer = __webpack_exports__.createNodeServer;
@@ -66,6 +68,7 @@ exports.loadServerEnv = __webpack_exports__.loadServerEnv;
66
68
  exports.loadServerPlugins = __webpack_exports__.loadServerPlugins;
67
69
  exports.loadServerRuntimeConfig = __webpack_exports__.loadServerRuntimeConfig;
68
70
  exports.sendResponse = __webpack_exports__.sendResponse;
71
+ exports.serveStaticAsset = __webpack_exports__.serveStaticAsset;
69
72
  exports.serverStaticPlugin = __webpack_exports__.serverStaticPlugin;
70
73
  for(var __rspack_i in __webpack_exports__)if (-1 === [
71
74
  "connectMid2HonoMid",
@@ -84,6 +87,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
84
87
  "loadServerPlugins",
85
88
  "loadServerRuntimeConfig",
86
89
  "sendResponse",
90
+ "serveStaticAsset",
87
91
  "serverStaticPlugin"
88
92
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
89
93
  Object.defineProperty(exports, '__esModule', {
@@ -39,14 +39,62 @@ __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
40
  createPublicMiddleware: ()=>createPublicMiddleware,
41
41
  createStaticMiddleware: ()=>createStaticMiddleware,
42
+ serveStaticAsset: ()=>serveStaticAsset,
42
43
  serverStaticPlugin: ()=>serverStaticPlugin
43
44
  });
45
+ const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
46
+ const utils_namespaceObject = require("@modern-js/utils");
47
+ const mime_namespaceObject = require("hono/utils/mime");
44
48
  const external_path_namespaceObject = require("path");
45
49
  var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
46
50
  const index_js_namespaceObject = require("../../../utils/index.js");
47
51
  const publicDir_js_namespaceObject = require("../../../utils/publicDir.js");
48
- const external_staticServing_js_namespaceObject = require("./staticServing.js");
49
- const serverStaticPlugin = ()=>({
52
+ const isPathInside = (target, root)=>{
53
+ const relative = external_path_default().relative(external_path_default().resolve(root), external_path_default().resolve(target));
54
+ return '' === relative || !relative.startsWith(`..${external_path_default().sep}`) && '..' !== relative && !external_path_default().isAbsolute(relative);
55
+ };
56
+ async function serveStaticAsset(context, asset, respond) {
57
+ let { filename } = asset;
58
+ const { kind } = asset;
59
+ if (asset.root && !isPathInside(filename, asset.root)) return null;
60
+ if (asset.realpath) try {
61
+ const [realFilename, realRoot, stat] = await Promise.all([
62
+ utils_namespaceObject.fs.realpath(filename),
63
+ asset.root ? utils_namespaceObject.fs.realpath(asset.root) : Promise.resolve(void 0),
64
+ utils_namespaceObject.fs.stat(filename)
65
+ ]);
66
+ if (!stat.isFile() || realRoot && !isPathInside(realFilename, realRoot)) return null;
67
+ filename = realFilename;
68
+ asset = {
69
+ ...asset,
70
+ filename,
71
+ root: realRoot
72
+ };
73
+ } catch {
74
+ return null;
75
+ }
76
+ if ('static' === kind && !await utils_namespaceObject.fs.pathExists(filename)) return null;
77
+ if (respond) return respond(asset, (representation)=>serveStaticAsset(context, {
78
+ ...asset,
79
+ ...representation,
80
+ filename: representation?.filename ?? asset.filename,
81
+ mimeFilename: asset.mimeFilename ?? filename
82
+ }));
83
+ const mimeType = (0, mime_namespaceObject.getMimeType)(asset.mimeFilename ?? filename);
84
+ if ('static' === kind && mimeType) context.header('Content-Type', mimeType);
85
+ const size = 'static' === kind ? (await utils_namespaceObject.fs.lstat(filename)).size : void 0;
86
+ const data = 'static' === kind ? await fileReader_namespaceObject.fileReader.readFileFromSystem(filename, 'buffer') : await fileReader_namespaceObject.fileReader.readFile(filename, 'buffer');
87
+ if ('static' === kind && (asset.contentLength ?? true)) context.header('Content-Length', String(true === asset.contentLength && data ? data.byteLength : size));
88
+ if (null === data) return null;
89
+ if ('public' === kind && mimeType) context.header('Content-Type', mimeType);
90
+ Object.entries(asset.responseHeaders || {}).forEach(([key, value])=>{
91
+ context.header(key, value);
92
+ });
93
+ if ('public' === kind && asset.contentLength) context.header('Content-Length', String(data.byteLength));
94
+ const body = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
95
+ return context.body(body, 200);
96
+ }
97
+ const serverStaticPlugin = (options = {})=>({
50
98
  name: '@modern-js/plugin-server-static',
51
99
  setup (api) {
52
100
  api.onPrepare(()=>{
@@ -57,7 +105,9 @@ const serverStaticPlugin = ()=>({
57
105
  routes,
58
106
  output: config.output || {},
59
107
  html: config.html || {},
60
- server: config.server || {}
108
+ server: config.server || {},
109
+ ...api.getServerContext().staticAssetResponders,
110
+ ...options
61
111
  });
62
112
  middlewares.push({
63
113
  name: 'server-static',
@@ -66,16 +116,33 @@ const serverStaticPlugin = ()=>({
66
116
  });
67
117
  }
68
118
  });
69
- function createPublicMiddleware({ pwd, routes }) {
119
+ function createPublicMiddleware({ pwd, routes, pathPrefix = '/', respondAsset, respondPublicFallback }) {
70
120
  return async (c, next)=>{
71
- const route = matchPublicRoute(c.req, routes);
72
- if (route) {
73
- const response = await (0, external_staticServing_js_namespaceObject.servePreCompressedPublicRouteAsset)(c, pwd, route);
74
- if (null !== response) return response;
75
- }
76
- const generatedPublicAsset = await (0, external_staticServing_js_namespaceObject.servePublicDirectoryAsset)(c, pwd);
77
- if (null !== generatedPublicAsset) return generatedPublicAsset;
78
- return await next();
121
+ const respondPublic = async ()=>{
122
+ const route = matchPublicRoute(c.req, routes);
123
+ if (!route) return null;
124
+ const asset = {
125
+ filename: external_path_default().join(pwd, route.entryPath),
126
+ kind: 'public',
127
+ responseHeaders: route.responseHeaders
128
+ };
129
+ const serve = (representation)=>serveStaticAsset(c, {
130
+ ...asset,
131
+ ...representation,
132
+ filename: representation?.filename ?? asset.filename,
133
+ mimeFilename: asset.filename
134
+ });
135
+ const response = respondAsset ? await respondAsset(c, asset, serve, {
136
+ root: pwd,
137
+ pathPrefix
138
+ }) : void 0;
139
+ return void 0 === response ? serve() : response;
140
+ };
141
+ const response = respondPublicFallback ? await respondPublicFallback(c, respondPublic, {
142
+ root: pwd,
143
+ pathPrefix
144
+ }) : await respondPublic();
145
+ return response ?? next();
79
146
  };
80
147
  }
81
148
  function matchPublicRoute(req, routes) {
@@ -120,29 +187,38 @@ function createStaticMiddleware(options) {
120
187
  ...staticReg,
121
188
  ...iconReg
122
189
  ].join('|')})`);
123
- const publicMiddleware = createPublicMiddleware({
124
- pwd,
125
- routes: routes || []
126
- });
127
- const moduleFederationStaticServing = (0, external_staticServing_js_namespaceObject.createModuleFederationStaticServing)({
128
- pwd,
129
- pathPrefix
130
- });
131
190
  return async (c, next)=>{
132
191
  const pageRoute = c.get('route');
133
192
  const pathname = c.req.path;
134
193
  if (pageRoute && '' === external_path_default().extname(pathname)) return next();
135
194
  const hit = staticPathRegExp.test(pathname);
136
- const staticServingRequest = await moduleFederationStaticServing.resolveRequest(pathname);
137
- if (null === staticServingRequest) return next();
138
- if (hit) {
139
- const response = await moduleFederationStaticServing.serveStaticHit(c, staticServingRequest);
140
- if (null !== response) return response;
141
- return next();
195
+ if (!hit) return createPublicMiddleware({
196
+ pwd,
197
+ routes: routes || [],
198
+ pathPrefix,
199
+ respondAsset: options.respondAsset,
200
+ respondPublicFallback: options.respondPublicFallback
201
+ })(c, next);
202
+ {
203
+ const filepath = external_path_default().join(pwd, pathname.replace(pathPrefix, ()=>''));
204
+ if (!isPathInside(filepath, pwd)) return next();
205
+ if (!await utils_namespaceObject.fs.pathExists(filepath)) return next();
206
+ const asset = {
207
+ filename: filepath,
208
+ kind: 'static'
209
+ };
210
+ const serve = (representation)=>serveStaticAsset(c, {
211
+ ...asset,
212
+ ...representation,
213
+ filename: representation?.filename ?? asset.filename,
214
+ mimeFilename: filepath
215
+ });
216
+ const response = options.respondAsset ? await options.respondAsset(c, asset, serve, {
217
+ root: pwd,
218
+ pathPrefix
219
+ }) : void 0;
220
+ return (void 0 === response ? await serve() : response) ?? next();
142
221
  }
143
- const moduleFederationResponse = await moduleFederationStaticServing.serveModuleFederationAsset(c, staticServingRequest);
144
- if (null !== moduleFederationResponse) return moduleFederationResponse;
145
- return publicMiddleware(c, next);
146
222
  };
147
223
  }
148
224
  const prepareFavicons = (favicon)=>{
@@ -152,10 +228,12 @@ const prepareFavicons = (favicon)=>{
152
228
  };
153
229
  exports.createPublicMiddleware = __webpack_exports__.createPublicMiddleware;
154
230
  exports.createStaticMiddleware = __webpack_exports__.createStaticMiddleware;
231
+ exports.serveStaticAsset = __webpack_exports__.serveStaticAsset;
155
232
  exports.serverStaticPlugin = __webpack_exports__.serverStaticPlugin;
156
233
  for(var __rspack_i in __webpack_exports__)if (-1 === [
157
234
  "createPublicMiddleware",
158
235
  "createStaticMiddleware",
236
+ "serveStaticAsset",
159
237
  "serverStaticPlugin"
160
238
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
161
239
  Object.defineProperty(exports, '__esModule', {
package/dist/cjs/index.js CHANGED
@@ -92,22 +92,19 @@ var __webpack_exports__ = {};
92
92
  var __rspack_reexport = {};
93
93
  for(const __rspack_import_key in _plugins__rspack_import_4)if ([
94
94
  "Hono",
95
- "createSafeJsonFailureResponse",
96
95
  "createErrorHtml",
97
96
  "useHonoContext",
98
- "createServerBase",
99
97
  "normalizePublicDir",
98
+ "createServerBase",
100
99
  "resolvePublicDirPaths",
101
- "getSafeFailureStatus",
102
100
  "default",
103
101
  "normalizePublicDirPath",
104
102
  "onError",
105
- "createSafeFailureHttpResult",
106
103
  "ErrorDigest",
107
104
  "getPublicDirConfig",
108
105
  "getPublicDirPatterns",
109
- "getLoaderCtx",
110
106
  "getPublicDirRoutePrefixes",
107
+ "getLoaderCtx",
111
108
  "run",
112
109
  "AGGRED_DIR"
113
110
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_plugins__rspack_import_4[__rspack_import_key];
@@ -117,22 +114,19 @@ var __webpack_exports__ = {};
117
114
  var __rspack_reexport = {};
118
115
  for(const __rspack_import_key in _types_config__rspack_import_6)if ([
119
116
  "Hono",
120
- "createSafeJsonFailureResponse",
121
117
  "createErrorHtml",
122
118
  "useHonoContext",
123
- "createServerBase",
124
119
  "normalizePublicDir",
120
+ "createServerBase",
125
121
  "resolvePublicDirPaths",
126
- "getSafeFailureStatus",
127
122
  "default",
128
123
  "normalizePublicDirPath",
129
124
  "onError",
130
- "createSafeFailureHttpResult",
131
125
  "ErrorDigest",
132
126
  "getPublicDirConfig",
133
127
  "getPublicDirPatterns",
134
- "getLoaderCtx",
135
128
  "getPublicDirRoutePrefixes",
129
+ "getLoaderCtx",
136
130
  "run",
137
131
  "AGGRED_DIR"
138
132
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types_config__rspack_import_6[__rspack_import_key];
@@ -141,22 +135,19 @@ var __webpack_exports__ = {};
141
135
  var __rspack_reexport = {};
142
136
  for(const __rspack_import_key in _types_plugins__rspack_import_7)if ([
143
137
  "Hono",
144
- "createSafeJsonFailureResponse",
145
138
  "createErrorHtml",
146
139
  "useHonoContext",
147
- "createServerBase",
148
140
  "normalizePublicDir",
141
+ "createServerBase",
149
142
  "resolvePublicDirPaths",
150
- "getSafeFailureStatus",
151
143
  "default",
152
144
  "normalizePublicDirPath",
153
145
  "onError",
154
- "createSafeFailureHttpResult",
155
146
  "ErrorDigest",
156
147
  "getPublicDirConfig",
157
148
  "getPublicDirPatterns",
158
- "getLoaderCtx",
159
149
  "getPublicDirRoutePrefixes",
150
+ "getLoaderCtx",
160
151
  "run",
161
152
  "AGGRED_DIR"
162
153
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types_plugins__rspack_import_7[__rspack_import_key];
@@ -165,22 +156,19 @@ var __webpack_exports__ = {};
165
156
  var __rspack_reexport = {};
166
157
  for(const __rspack_import_key in _types_render__rspack_import_8)if ([
167
158
  "Hono",
168
- "createSafeJsonFailureResponse",
169
159
  "createErrorHtml",
170
160
  "useHonoContext",
171
- "createServerBase",
172
161
  "normalizePublicDir",
162
+ "createServerBase",
173
163
  "resolvePublicDirPaths",
174
- "getSafeFailureStatus",
175
164
  "default",
176
165
  "normalizePublicDirPath",
177
166
  "onError",
178
- "createSafeFailureHttpResult",
179
167
  "ErrorDigest",
180
168
  "getPublicDirConfig",
181
169
  "getPublicDirPatterns",
182
- "getLoaderCtx",
183
170
  "getPublicDirRoutePrefixes",
171
+ "getLoaderCtx",
184
172
  "run",
185
173
  "AGGRED_DIR"
186
174
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types_render__rspack_import_8[__rspack_import_key];
@@ -189,22 +177,19 @@ var __webpack_exports__ = {};
189
177
  var __rspack_reexport = {};
190
178
  for(const __rspack_import_key in _types_requestHandler__rspack_import_9)if ([
191
179
  "Hono",
192
- "createSafeJsonFailureResponse",
193
180
  "createErrorHtml",
194
181
  "useHonoContext",
195
- "createServerBase",
196
182
  "normalizePublicDir",
183
+ "createServerBase",
197
184
  "resolvePublicDirPaths",
198
- "getSafeFailureStatus",
199
185
  "default",
200
186
  "normalizePublicDirPath",
201
187
  "onError",
202
- "createSafeFailureHttpResult",
203
188
  "ErrorDigest",
204
189
  "getPublicDirConfig",
205
190
  "getPublicDirPatterns",
206
- "getLoaderCtx",
207
191
  "getPublicDirRoutePrefixes",
192
+ "getLoaderCtx",
208
193
  "run",
209
194
  "AGGRED_DIR"
210
195
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types_requestHandler__rspack_import_9[__rspack_import_key];
@@ -216,14 +201,11 @@ var __webpack_exports__ = {};
216
201
  ErrorDigest: ()=>_utils__rspack_import_10.ErrorDigest,
217
202
  Hono: ()=>hono__rspack_import_0.Hono,
218
203
  createErrorHtml: ()=>_utils__rspack_import_10.createErrorHtml,
219
- createSafeFailureHttpResult: ()=>_utils__rspack_import_10.createSafeFailureHttpResult,
220
- createSafeJsonFailureResponse: ()=>_utils__rspack_import_10.createSafeJsonFailureResponse,
221
204
  createServerBase: ()=>_serverBase__rspack_import_5.createServerBase,
222
205
  getLoaderCtx: ()=>_helper__rspack_import_3.getLoaderCtx,
223
206
  getPublicDirConfig: ()=>_utils_publicDir__rspack_import_11.getPublicDirConfig,
224
207
  getPublicDirPatterns: ()=>_utils_publicDir__rspack_import_11.getPublicDirPatterns,
225
208
  getPublicDirRoutePrefixes: ()=>_utils_publicDir__rspack_import_11.getPublicDirRoutePrefixes,
226
- getSafeFailureStatus: ()=>_utils__rspack_import_10.getSafeFailureStatus,
227
209
  normalizePublicDir: ()=>_utils_publicDir__rspack_import_11.normalizePublicDir,
228
210
  normalizePublicDirPath: ()=>_utils_publicDir__rspack_import_11.normalizePublicDirPath,
229
211
  onError: ()=>_utils__rspack_import_10.onError,
@@ -236,14 +218,11 @@ exports.AGGRED_DIR = __webpack_exports__.AGGRED_DIR;
236
218
  exports.ErrorDigest = __webpack_exports__.ErrorDigest;
237
219
  exports.Hono = __webpack_exports__.Hono;
238
220
  exports.createErrorHtml = __webpack_exports__.createErrorHtml;
239
- exports.createSafeFailureHttpResult = __webpack_exports__.createSafeFailureHttpResult;
240
- exports.createSafeJsonFailureResponse = __webpack_exports__.createSafeJsonFailureResponse;
241
221
  exports.createServerBase = __webpack_exports__.createServerBase;
242
222
  exports.getLoaderCtx = __webpack_exports__.getLoaderCtx;
243
223
  exports.getPublicDirConfig = __webpack_exports__.getPublicDirConfig;
244
224
  exports.getPublicDirPatterns = __webpack_exports__.getPublicDirPatterns;
245
225
  exports.getPublicDirRoutePrefixes = __webpack_exports__.getPublicDirRoutePrefixes;
246
- exports.getSafeFailureStatus = __webpack_exports__.getSafeFailureStatus;
247
226
  exports.normalizePublicDir = __webpack_exports__.normalizePublicDir;
248
227
  exports.normalizePublicDirPath = __webpack_exports__.normalizePublicDirPath;
249
228
  exports.onError = __webpack_exports__.onError;
@@ -255,14 +234,11 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
255
234
  "ErrorDigest",
256
235
  "Hono",
257
236
  "createErrorHtml",
258
- "createSafeFailureHttpResult",
259
- "createSafeJsonFailureResponse",
260
237
  "createServerBase",
261
238
  "getLoaderCtx",
262
239
  "getPublicDirConfig",
263
240
  "getPublicDirPatterns",
264
241
  "getPublicDirRoutePrefixes",
265
- "getSafeFailureStatus",
266
242
  "normalizePublicDir",
267
243
  "normalizePublicDirPath",
268
244
  "onError",
@@ -36,6 +36,7 @@ const external_hooks_js_namespaceObject = require("./hooks.js");
36
36
  const compatPlugin = ()=>({
37
37
  name: '@modern-js/server-compat',
38
38
  registryHooks: {
39
+ handleError: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
39
40
  prepareWebServer: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
40
41
  prepareApiServer: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
41
42
  afterMatch: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
@@ -32,6 +32,7 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  createServerBase: ()=>createServerBase
33
33
  });
34
34
  const server_namespaceObject = require("@modern-js/plugin/server");
35
+ const utils_namespaceObject = require("@modern-js/utils");
35
36
  const external_hono_namespaceObject = require("hono");
36
37
  const external_context_js_namespaceObject = require("./context.js");
37
38
  const hooks_js_namespaceObject = require("./plugins/compat/hooks.js");
@@ -50,22 +51,54 @@ function _class_private_method_init(obj, privateSet) {
50
51
  var _applyMiddlewares = /*#__PURE__*/ new WeakSet();
51
52
  class ServerBase {
52
53
  async init() {
53
- const { serverConfig, config: cliConfig } = this.serverOptions;
54
- const mergedConfig = (0, index_js_namespaceObject.loadConfig)({
55
- cliConfig,
56
- serverConfig: serverConfig || {}
57
- });
58
- const { serverContext } = await server_namespaceObject.server.run({
59
- plugins: this.plugins,
60
- options: this.serverOptions,
61
- config: mergedConfig,
62
- handleSetupResult: hooks_js_namespaceObject.handleSetupResult
63
- });
64
- serverContext.serverBase = this;
65
- this.serverContext = serverContext;
66
- await serverContext.hooks.onPrepare.call();
67
- _class_private_method_get(this, _applyMiddlewares, applyMiddlewares).call(this);
68
- return this;
54
+ try {
55
+ const { serverConfig, config: cliConfig } = this.serverOptions;
56
+ const mergedConfig = (0, index_js_namespaceObject.loadConfig)({
57
+ cliConfig,
58
+ serverConfig: serverConfig || {}
59
+ });
60
+ const { serverContext } = await server_namespaceObject.server.run({
61
+ plugins: this.plugins,
62
+ options: this.serverOptions,
63
+ config: mergedConfig,
64
+ handleSetupResult: hooks_js_namespaceObject.handleSetupResult
65
+ });
66
+ serverContext.serverBase = this;
67
+ this.serverContext = serverContext;
68
+ await serverContext.hooks.onPrepare.call();
69
+ _class_private_method_get(this, _applyMiddlewares, applyMiddlewares).call(this);
70
+ return this;
71
+ } catch (error) {
72
+ await this.dispose().catch((disposeError)=>{
73
+ utils_namespaceObject.logger.error(disposeError);
74
+ });
75
+ throw error;
76
+ }
77
+ }
78
+ onDispose(disposer) {
79
+ if (this.disposePromise) throw new Error('Cannot register a disposer on a retired server.');
80
+ this.disposers.add(disposer);
81
+ return ()=>{
82
+ this.disposers.delete(disposer);
83
+ };
84
+ }
85
+ dispose() {
86
+ if (!this.disposePromise) {
87
+ const disposers = [
88
+ ...this.disposers
89
+ ].reverse();
90
+ this.disposers.clear();
91
+ this.disposePromise = Promise.resolve().then(async ()=>{
92
+ const errors = [];
93
+ for (const disposer of disposers)try {
94
+ await disposer();
95
+ } catch (error) {
96
+ errors.push(error);
97
+ }
98
+ if (errors.length > 0) throw new AggregateError(errors, 'Failed to dispose server.');
99
+ });
100
+ }
101
+ return this.disposePromise;
69
102
  }
70
103
  addPlugins(plugins) {
71
104
  this.plugins.push(...plugins);
@@ -111,7 +144,15 @@ class ServerBase {
111
144
  }
112
145
  constructor(options){
113
146
  _class_private_method_init(this, _applyMiddlewares);
114
- this.plugins = [];
147
+ this.plugins = [
148
+ {
149
+ name: '@modern-js/server-lifecycle',
150
+ _registryApi: ()=>({
151
+ onDispose: (disposer)=>this.onDispose(disposer)
152
+ })
153
+ }
154
+ ];
155
+ this.disposers = new Set();
115
156
  this.serverContext = null;
116
157
  this.serverOptions = options;
117
158
  this.app = new external_hono_namespaceObject.Hono();
@@ -30,12 +30,8 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  ErrorDigest: ()=>error_ErrorDigest,
32
32
  createErrorHtml: ()=>createErrorHtml,
33
- createSafeFailureHttpResult: ()=>safe_failure_namespaceObject.createSafeFailureHttpResult,
34
- createSafeJsonFailureResponse: ()=>safe_failure_namespaceObject.createSafeJsonFailureResponse,
35
- getSafeFailureStatus: ()=>safe_failure_namespaceObject.getSafeFailureStatus,
36
33
  onError: ()=>onError
37
34
  });
38
- const safe_failure_namespaceObject = require("@modern-js/runtime-extensions/safe-failure");
39
35
  const external_request_js_namespaceObject = require("./request.js");
40
36
  const ERROR_PAGE_TEXT = {
41
37
  404: 'This page could not be found.',
@@ -90,16 +86,10 @@ function onError(digest, error, monitors, req) {
90
86
  }
91
87
  exports.ErrorDigest = __webpack_exports__.ErrorDigest;
92
88
  exports.createErrorHtml = __webpack_exports__.createErrorHtml;
93
- exports.createSafeFailureHttpResult = __webpack_exports__.createSafeFailureHttpResult;
94
- exports.createSafeJsonFailureResponse = __webpack_exports__.createSafeJsonFailureResponse;
95
- exports.getSafeFailureStatus = __webpack_exports__.getSafeFailureStatus;
96
89
  exports.onError = __webpack_exports__.onError;
97
90
  for(var __rspack_i in __webpack_exports__)if (-1 === [
98
91
  "ErrorDigest",
99
92
  "createErrorHtml",
100
- "createSafeFailureHttpResult",
101
- "createSafeJsonFailureResponse",
102
- "getSafeFailureStatus",
103
93
  "onError"
104
94
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
105
95
  Object.defineProperty(exports, '__esModule', {
@@ -2,3 +2,4 @@ export { loadCacheConfig, loadServerCliConfig, loadServerEnv, loadServerPlugins,
2
2
  export { connectMid2HonoMid, connectMockMid2HonoMid, httpCallBack2HonoMid } from "./hono.mjs";
3
3
  export { createNodeServer, createWebRequest, sendResponse } from "./node.mjs";
4
4
  export { getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, serverStaticPlugin } from "./plugins/index.mjs";
5
+ export { serveStaticAsset } from "./plugins/static.mjs";