@modern-js/server-core 2.48.3-alpha.0 → 2.48.4

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 (204) hide show
  1. package/dist/cjs/index.js +4 -6
  2. package/dist/cjs/{core/loadPlugins.js → loadPlugins.js} +7 -4
  3. package/dist/cjs/{core/plugin.js → plugin.js} +3 -1
  4. package/dist/esm/index.js +2 -3
  5. package/dist/{esm-node/core → esm}/loadPlugins.js +7 -4
  6. package/dist/{esm-node/core → esm}/plugin.js +3 -1
  7. package/dist/types/index.d.ts +2 -3
  8. package/dist/types/loadPlugins.d.ts +5 -0
  9. package/dist/types/{core/plugin.d.ts → plugin.d.ts} +35 -32
  10. package/package.json +6 -41
  11. package/dist/cjs/base/adapters/node/bff.js +0 -69
  12. package/dist/cjs/base/adapters/node/hono.js +0 -63
  13. package/dist/cjs/base/adapters/node/index.js +0 -54
  14. package/dist/cjs/base/adapters/node/loadServer.js +0 -56
  15. package/dist/cjs/base/adapters/node/middlewares/index.js +0 -28
  16. package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
  17. package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +0 -82
  18. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +0 -67
  19. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +0 -109
  20. package/dist/cjs/base/adapters/node/middlewares/templates.js +0 -67
  21. package/dist/cjs/base/adapters/node/node.js +0 -126
  22. package/dist/cjs/base/adapters/node/polyfills/index.js +0 -24
  23. package/dist/cjs/base/adapters/node/polyfills/install.js +0 -70
  24. package/dist/cjs/base/adapters/node/polyfills/stream.js +0 -153
  25. package/dist/cjs/base/constants.js +0 -58
  26. package/dist/cjs/base/index.js +0 -45
  27. package/dist/cjs/base/middlewares/customServer/base.js +0 -111
  28. package/dist/cjs/base/middlewares/customServer/context.js +0 -78
  29. package/dist/cjs/base/middlewares/customServer/index.js +0 -130
  30. package/dist/cjs/base/middlewares/customServer/routerApi.js +0 -44
  31. package/dist/cjs/base/middlewares/customServer/template.js +0 -58
  32. package/dist/cjs/base/middlewares/faviconFallback.js +0 -34
  33. package/dist/cjs/base/middlewares/index.js +0 -26
  34. package/dist/cjs/base/middlewares/monitor.js +0 -90
  35. package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +0 -46
  36. package/dist/cjs/base/middlewares/renderHandler/index.js +0 -104
  37. package/dist/cjs/base/middlewares/renderHandler/render.js +0 -123
  38. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +0 -40
  39. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -197
  40. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +0 -168
  41. package/dist/cjs/base/serverBase.js +0 -203
  42. package/dist/cjs/base/utils/debug.js +0 -29
  43. package/dist/cjs/base/utils/entry.js +0 -30
  44. package/dist/cjs/base/utils/env.js +0 -45
  45. package/dist/cjs/base/utils/error.js +0 -65
  46. package/dist/cjs/base/utils/index.js +0 -45
  47. package/dist/cjs/base/utils/middlewareCollector.js +0 -54
  48. package/dist/cjs/base/utils/request.js +0 -65
  49. package/dist/cjs/base/utils/serverConfig.js +0 -70
  50. package/dist/cjs/base/utils/transformStream.js +0 -61
  51. package/dist/cjs/base/utils/warmup.js +0 -43
  52. package/dist/cjs/core/hono.js +0 -16
  53. package/dist/cjs/core/index.js +0 -22
  54. package/dist/cjs/core/render.js +0 -16
  55. package/dist/cjs/core/server.js +0 -16
  56. package/dist/esm/base/adapters/node/bff.js +0 -128
  57. package/dist/esm/base/adapters/node/hono.js +0 -83
  58. package/dist/esm/base/adapters/node/index.js +0 -19
  59. package/dist/esm/base/adapters/node/loadServer.js +0 -73
  60. package/dist/esm/base/adapters/node/middlewares/index.js +0 -4
  61. package/dist/esm/base/adapters/node/middlewares/mock.js +0 -198
  62. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +0 -132
  63. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +0 -85
  64. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +0 -109
  65. package/dist/esm/base/adapters/node/middlewares/templates.js +0 -114
  66. package/dist/esm/base/adapters/node/node.js +0 -194
  67. package/dist/esm/base/adapters/node/polyfills/index.js +0 -2
  68. package/dist/esm/base/adapters/node/polyfills/install.js +0 -46
  69. package/dist/esm/base/adapters/node/polyfills/stream.js +0 -316
  70. package/dist/esm/base/constants.js +0 -31
  71. package/dist/esm/base/index.js +0 -14
  72. package/dist/esm/base/middlewares/customServer/base.js +0 -126
  73. package/dist/esm/base/middlewares/customServer/context.js +0 -70
  74. package/dist/esm/base/middlewares/customServer/index.js +0 -208
  75. package/dist/esm/base/middlewares/customServer/routerApi.js +0 -26
  76. package/dist/esm/base/middlewares/customServer/template.js +0 -47
  77. package/dist/esm/base/middlewares/faviconFallback.js +0 -28
  78. package/dist/esm/base/middlewares/index.js +0 -3
  79. package/dist/esm/base/middlewares/monitor.js +0 -157
  80. package/dist/esm/base/middlewares/renderHandler/dataHandler.js +0 -45
  81. package/dist/esm/base/middlewares/renderHandler/index.js +0 -163
  82. package/dist/esm/base/middlewares/renderHandler/render.js +0 -213
  83. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +0 -21
  84. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -306
  85. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +0 -226
  86. package/dist/esm/base/serverBase.js +0 -383
  87. package/dist/esm/base/utils/debug.js +0 -5
  88. package/dist/esm/base/utils/entry.js +0 -6
  89. package/dist/esm/base/utils/env.js +0 -20
  90. package/dist/esm/base/utils/error.js +0 -12
  91. package/dist/esm/base/utils/index.js +0 -13
  92. package/dist/esm/base/utils/middlewareCollector.js +0 -31
  93. package/dist/esm/base/utils/request.js +0 -39
  94. package/dist/esm/base/utils/serverConfig.js +0 -58
  95. package/dist/esm/base/utils/transformStream.js +0 -90
  96. package/dist/esm/base/utils/warmup.js +0 -9
  97. package/dist/esm/core/hono.js +0 -0
  98. package/dist/esm/core/index.js +0 -1
  99. package/dist/esm/core/loadPlugins.js +0 -26
  100. package/dist/esm/core/plugin.js +0 -98
  101. package/dist/esm/core/render.js +0 -0
  102. package/dist/esm/core/server.js +0 -0
  103. package/dist/esm-node/base/adapters/node/bff.js +0 -45
  104. package/dist/esm-node/base/adapters/node/hono.js +0 -38
  105. package/dist/esm-node/base/adapters/node/index.js +0 -19
  106. package/dist/esm-node/base/adapters/node/loadServer.js +0 -22
  107. package/dist/esm-node/base/adapters/node/middlewares/index.js +0 -4
  108. package/dist/esm-node/base/adapters/node/middlewares/mock.js +0 -79
  109. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +0 -48
  110. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +0 -33
  111. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +0 -75
  112. package/dist/esm-node/base/adapters/node/middlewares/templates.js +0 -32
  113. package/dist/esm-node/base/adapters/node/node.js +0 -100
  114. package/dist/esm-node/base/adapters/node/polyfills/index.js +0 -2
  115. package/dist/esm-node/base/adapters/node/polyfills/install.js +0 -46
  116. package/dist/esm-node/base/adapters/node/polyfills/stream.js +0 -126
  117. package/dist/esm-node/base/constants.js +0 -31
  118. package/dist/esm-node/base/index.js +0 -14
  119. package/dist/esm-node/base/middlewares/customServer/base.js +0 -87
  120. package/dist/esm-node/base/middlewares/customServer/context.js +0 -51
  121. package/dist/esm-node/base/middlewares/customServer/index.js +0 -106
  122. package/dist/esm-node/base/middlewares/customServer/routerApi.js +0 -20
  123. package/dist/esm-node/base/middlewares/customServer/template.js +0 -34
  124. package/dist/esm-node/base/middlewares/faviconFallback.js +0 -10
  125. package/dist/esm-node/base/middlewares/index.js +0 -3
  126. package/dist/esm-node/base/middlewares/monitor.js +0 -63
  127. package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +0 -22
  128. package/dist/esm-node/base/middlewares/renderHandler/index.js +0 -69
  129. package/dist/esm-node/base/middlewares/renderHandler/render.js +0 -99
  130. package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +0 -16
  131. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +0 -162
  132. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +0 -134
  133. package/dist/esm-node/base/serverBase.js +0 -168
  134. package/dist/esm-node/base/utils/debug.js +0 -5
  135. package/dist/esm-node/base/utils/entry.js +0 -6
  136. package/dist/esm-node/base/utils/env.js +0 -20
  137. package/dist/esm-node/base/utils/error.js +0 -41
  138. package/dist/esm-node/base/utils/index.js +0 -13
  139. package/dist/esm-node/base/utils/middlewareCollector.js +0 -29
  140. package/dist/esm-node/base/utils/request.js +0 -38
  141. package/dist/esm-node/base/utils/serverConfig.js +0 -34
  142. package/dist/esm-node/base/utils/transformStream.js +0 -36
  143. package/dist/esm-node/base/utils/warmup.js +0 -9
  144. package/dist/esm-node/core/hono.js +0 -0
  145. package/dist/esm-node/core/index.js +0 -1
  146. package/dist/esm-node/core/render.js +0 -0
  147. package/dist/esm-node/core/server.js +0 -0
  148. package/dist/esm-node/index.js +0 -5
  149. package/dist/esm-node/types/config/bff.js +0 -0
  150. package/dist/esm-node/types/config/dev.js +0 -0
  151. package/dist/esm-node/types/config/html.js +0 -0
  152. package/dist/esm-node/types/config/index.js +0 -6
  153. package/dist/esm-node/types/config/output.js +0 -0
  154. package/dist/esm-node/types/config/security.js +0 -0
  155. package/dist/esm-node/types/config/server.js +0 -0
  156. package/dist/esm-node/types/config/share.js +0 -0
  157. package/dist/esm-node/types/config/source.js +0 -0
  158. package/dist/esm-node/types/config/tools.js +0 -0
  159. package/dist/types/base/adapters/node/bff.d.ts +0 -4
  160. package/dist/types/base/adapters/node/hono.d.ts +0 -22
  161. package/dist/types/base/adapters/node/index.d.ts +0 -6
  162. package/dist/types/base/adapters/node/loadServer.d.ts +0 -3
  163. package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -4
  164. package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
  165. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +0 -3
  166. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +0 -7
  167. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -11
  168. package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -4
  169. package/dist/types/base/adapters/node/node.d.ts +0 -12
  170. package/dist/types/base/adapters/node/polyfills/index.d.ts +0 -2
  171. package/dist/types/base/adapters/node/polyfills/install.d.ts +0 -1
  172. package/dist/types/base/adapters/node/polyfills/stream.d.ts +0 -18
  173. package/dist/types/base/constants.d.ts +0 -24
  174. package/dist/types/base/index.d.ts +0 -7
  175. package/dist/types/base/middlewares/customServer/base.d.ts +0 -3
  176. package/dist/types/base/middlewares/customServer/context.d.ts +0 -7
  177. package/dist/types/base/middlewares/customServer/index.d.ts +0 -13
  178. package/dist/types/base/middlewares/customServer/routerApi.d.ts +0 -9
  179. package/dist/types/base/middlewares/customServer/template.d.ts +0 -11
  180. package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
  181. package/dist/types/base/middlewares/index.d.ts +0 -3
  182. package/dist/types/base/middlewares/monitor.d.ts +0 -6
  183. package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +0 -5
  184. package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
  185. package/dist/types/base/middlewares/renderHandler/render.d.ts +0 -12
  186. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +0 -7
  187. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -29
  188. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +0 -18
  189. package/dist/types/base/serverBase.d.ts +0 -52
  190. package/dist/types/base/utils/debug.d.ts +0 -1
  191. package/dist/types/base/utils/entry.d.ts +0 -2
  192. package/dist/types/base/utils/env.d.ts +0 -2
  193. package/dist/types/base/utils/error.d.ts +0 -1
  194. package/dist/types/base/utils/index.d.ts +0 -8
  195. package/dist/types/base/utils/middlewareCollector.d.ts +0 -12
  196. package/dist/types/base/utils/request.d.ts +0 -12
  197. package/dist/types/base/utils/serverConfig.d.ts +0 -14
  198. package/dist/types/base/utils/transformStream.d.ts +0 -5
  199. package/dist/types/base/utils/warmup.d.ts +0 -1
  200. package/dist/types/core/hono.d.ts +0 -1
  201. package/dist/types/core/index.d.ts +0 -1
  202. package/dist/types/core/loadPlugins.d.ts +0 -3
  203. package/dist/types/core/render.d.ts +0 -13
  204. package/dist/types/core/server.d.ts +0 -99
@@ -1,26 +0,0 @@
1
- import { compatRequire, getInternalPlugins, tryResolve } from "@modern-js/utils";
2
- import { createPlugin } from "../core/plugin";
3
- var resolvePlugin = function(p, appDirectory) {
4
- var isPluginInstance = typeof p !== "string";
5
- if (isPluginInstance) {
6
- return {
7
- module: createPlugin(p.setup, p)
8
- };
9
- }
10
- var pluginPath = tryResolve(p, appDirectory);
11
- var module = compatRequire(pluginPath);
12
- var pluginInstance = module();
13
- return {
14
- module: createPlugin(pluginInstance.setup, pluginInstance)
15
- };
16
- };
17
- var loadPlugins = function(appDirectory, internalPlugins) {
18
- var loadedPlugins = getInternalPlugins(appDirectory, internalPlugins);
19
- return loadedPlugins.map(function(plugin) {
20
- var module = resolvePlugin(plugin, appDirectory).module;
21
- return module;
22
- });
23
- };
24
- export {
25
- loadPlugins
26
- };
@@ -1,98 +0,0 @@
1
- import { createContext, createAsyncManager, createAsyncPipeline, createAsyncWaterfall, createParallelWorkflow, createWaterfall } from "@modern-js/plugin";
2
- var gather = createParallelWorkflow();
3
- var config = createWaterfall();
4
- var prepare = createWaterfall();
5
- var prepareLoaderHandler = createAsyncPipeline();
6
- var prepareWebServer = createAsyncPipeline();
7
- var prepareApiServer = createAsyncPipeline();
8
- var onApiChange = createAsyncWaterfall();
9
- var repack = createWaterfall();
10
- var beforeServerInit = createAsyncWaterfall();
11
- var setupCompiler = createParallelWorkflow();
12
- var beforeRouteSet = createAsyncPipeline();
13
- var afterRouteSet = createAsyncPipeline();
14
- var beforeProdServer = createParallelWorkflow();
15
- var afterProdServer = createParallelWorkflow();
16
- var listen = createParallelWorkflow();
17
- var beforeServerReset = createParallelWorkflow();
18
- var afterServerReset = createParallelWorkflow();
19
- var extendSSRContext = createAsyncWaterfall();
20
- var extendContext = createAsyncPipeline();
21
- var handleError = createParallelWorkflow();
22
- var handleSSRFallback = createParallelWorkflow();
23
- var beforeMatch = createAsyncPipeline();
24
- var afterMatch = createAsyncPipeline();
25
- var prefetch = createParallelWorkflow();
26
- var renderToString = createAsyncPipeline();
27
- var beforeRender = createAsyncPipeline();
28
- var afterRender = createAsyncPipeline();
29
- var afterStreamingRender = createAsyncPipeline();
30
- var beforeSend = createAsyncPipeline();
31
- var afterSend = createParallelWorkflow();
32
- var reset = createParallelWorkflow();
33
- var AppContext = createContext({});
34
- var setAppContext = function(value) {
35
- return AppContext.set(value);
36
- };
37
- var ConfigContext = createContext({});
38
- var useConfigContext = function() {
39
- return ConfigContext.use().value;
40
- };
41
- var useAppContext = function() {
42
- return AppContext.use().value;
43
- };
44
- var pluginAPI = {
45
- useAppContext,
46
- useConfigContext,
47
- setAppContext
48
- };
49
- var serverHooks = {
50
- // server hook
51
- gather,
52
- config,
53
- prepare,
54
- prepareLoaderHandler,
55
- prepareWebServer,
56
- prepareApiServer,
57
- repack,
58
- onApiChange,
59
- beforeServerInit,
60
- setupCompiler,
61
- beforeRouteSet,
62
- afterRouteSet,
63
- beforeProdServer,
64
- afterProdServer,
65
- listen,
66
- beforeServerReset,
67
- afterServerReset,
68
- // request hook
69
- extendSSRContext,
70
- extendContext,
71
- handleError,
72
- handleSSRFallback,
73
- beforeMatch,
74
- afterMatch,
75
- prefetch,
76
- renderToString,
77
- beforeRender,
78
- afterRender,
79
- afterStreamingRender,
80
- beforeSend,
81
- afterSend,
82
- reset
83
- };
84
- var createServerManager = function() {
85
- return createAsyncManager(serverHooks, pluginAPI);
86
- };
87
- var serverManager = createServerManager();
88
- var createPlugin = serverManager.createPlugin;
89
- export {
90
- AppContext,
91
- ConfigContext,
92
- createPlugin,
93
- createServerManager,
94
- serverManager,
95
- setAppContext,
96
- useAppContext,
97
- useConfigContext
98
- };
File without changes
File without changes
@@ -1,45 +0,0 @@
1
- import { isWebOnly } from "@modern-js/utils";
2
- import { getRenderHandler } from "../../../base/middlewares";
3
- import { createMiddlewareCollecter, getRuntimeEnv } from "../../utils";
4
- const bindBFFHandler = async (server, options) => {
5
- const prefix = options.config.bff.prefix || "/api";
6
- const { enableHandleWeb } = options.config.bff;
7
- const { httpMethodDecider } = options.config.bff;
8
- const runtimeEnv = getRuntimeEnv();
9
- if (runtimeEnv !== "node") {
10
- return;
11
- }
12
- const { getMiddlewares, ...collector } = createMiddlewareCollecter();
13
- const { runner } = server;
14
- await runner.gather(collector);
15
- const webOnly = await isWebOnly();
16
- let handler;
17
- if (webOnly) {
18
- handler = async (c, next) => {
19
- c.body("");
20
- await next();
21
- };
22
- } else {
23
- const renderHandler = enableHandleWeb ? await getRenderHandler(options) : null;
24
- handler = await server.runner.prepareApiServer({
25
- pwd: options.pwd,
26
- prefix,
27
- render: renderHandler,
28
- httpMethodDecider
29
- }, {
30
- onLast: () => null
31
- });
32
- }
33
- if (handler) {
34
- server.all(`*`, (c, next) => {
35
- if (!c.req.path.startsWith(prefix) && !enableHandleWeb) {
36
- return next();
37
- } else {
38
- return handler(c, next);
39
- }
40
- });
41
- }
42
- };
43
- export {
44
- bindBFFHandler
45
- };
@@ -1,38 +0,0 @@
1
- const httpCallBack2HonoMid = (handler) => {
2
- return async (context, next) => {
3
- const { req, res } = context.env.node;
4
- req.__honoRequest = context.req;
5
- req.__templates = context.get("templates") || {};
6
- req.__serverManifest = context.get("serverManifest") || {};
7
- await handler(req, res);
8
- if (res.headersSent) {
9
- context.finalized = true;
10
- } else {
11
- await next();
12
- }
13
- };
14
- };
15
- const noop = () => {
16
- };
17
- const connectMid2HonoMid = (handler) => {
18
- return async (context, next) => {
19
- return new Promise((resolve, reject) => {
20
- const { req, res } = context.env.node;
21
- if (handler.length < 3) {
22
- resolve(handler(req, res, noop));
23
- } else {
24
- handler(req, res, (err) => {
25
- if (err) {
26
- reject(err);
27
- } else {
28
- resolve(next());
29
- }
30
- });
31
- }
32
- });
33
- };
34
- };
35
- export {
36
- connectMid2HonoMid,
37
- httpCallBack2HonoMid
38
- };
@@ -1,19 +0,0 @@
1
- import { loadServerEnv } from "./loadServer";
2
- import { httpCallBack2HonoMid, connectMid2HonoMid } from "./hono";
3
- import { createNodeServer, sendResponse, createWebRequest } from "./node";
4
- import { bindBFFHandler } from "./bff";
5
- import { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates } from "./middlewares";
6
- export {
7
- bindBFFHandler,
8
- connectMid2HonoMid,
9
- createNodeServer,
10
- createStaticMiddleware,
11
- createWebRequest,
12
- getHtmlTemplates,
13
- httpCallBack2HonoMid,
14
- injectServerManifest,
15
- injectTemplates,
16
- loadServerEnv,
17
- registerMockHandlers,
18
- sendResponse
19
- };
@@ -1,22 +0,0 @@
1
- import path from "path";
2
- import { fs, dotenv, dotenvExpand } from "@modern-js/utils";
3
- async function loadServerEnv(options) {
4
- const { pwd } = options;
5
- const serverEnv = process.env.MODERN_ENV;
6
- const defaultEnvPath = path.resolve(pwd, `.env`);
7
- const serverEnvPath = path.resolve(pwd, `.env.${serverEnv}`);
8
- for (const envPath of [
9
- serverEnvPath,
10
- defaultEnvPath
11
- ]) {
12
- if (await fs.pathExists(envPath) && !(await fs.stat(envPath)).isDirectory()) {
13
- const envConfig = dotenv.config({
14
- path: envPath
15
- });
16
- dotenvExpand(envConfig);
17
- }
18
- }
19
- }
20
- export {
21
- loadServerEnv
22
- };
@@ -1,4 +0,0 @@
1
- export * from "./mock";
2
- export * from "./serverStatic";
3
- export * from "./templates";
4
- export * from "./serverManifest";
@@ -1,79 +0,0 @@
1
- import path from "node:path";
2
- import { fs } from "@modern-js/utils";
3
- import { AGGRED_DIR } from "../../../constants";
4
- import { connectMid2HonoMid } from "../hono";
5
- const parseKey = (key) => {
6
- const _blank = " ";
7
- const splitted = key.split(_blank).filter(Boolean);
8
- if (splitted.length > 1) {
9
- const [method, pathname] = splitted;
10
- return {
11
- method: method.toLowerCase(),
12
- path: pathname
13
- };
14
- }
15
- return {
16
- method: "get",
17
- path: key
18
- };
19
- };
20
- const mockHandlerRegistry = /* @__PURE__ */ new Map();
21
- const registerMockHandlers = async ({ pwd, server }) => {
22
- const exts = [
23
- ".ts",
24
- ".js"
25
- ];
26
- let mockFilePath = "";
27
- for (const ext of exts) {
28
- const maybeMatch = path.join(pwd, `${AGGRED_DIR.mock}/index${ext}`);
29
- if (await fs.pathExists(maybeMatch)) {
30
- mockFilePath = maybeMatch;
31
- break;
32
- }
33
- }
34
- if (!mockFilePath) {
35
- return null;
36
- }
37
- const { default: mockModule, config } = await import(mockFilePath);
38
- const enable = config === null || config === void 0 ? void 0 : config.enable;
39
- if (enable === false) {
40
- return;
41
- }
42
- if (!mockModule) {
43
- throw new Error(`Mock file ${mockFilePath} parsed failed!`);
44
- }
45
- Object.entries(mockModule).forEach(([key, handler]) => {
46
- const { method, path: path2 } = parseKey(key);
47
- const methodName = method.toLowerCase();
48
- const handlerId = `${methodName}-${path2}`;
49
- mockHandlerRegistry.set(handlerId, {
50
- handler,
51
- isRegistered: false
52
- });
53
- if (typeof server[methodName] === "function") {
54
- const mockHandler = async (c, next) => {
55
- var _mockHandlerRegistry_get;
56
- if (typeof enable === "function") {
57
- const isEnabled = enable(c.env.node.req, c.env.node.res);
58
- if (!isEnabled) {
59
- return next();
60
- }
61
- }
62
- const handler2 = (_mockHandlerRegistry_get = mockHandlerRegistry.get(handlerId)) === null || _mockHandlerRegistry_get === void 0 ? void 0 : _mockHandlerRegistry_get.handler;
63
- if (typeof handler2 === "function") {
64
- await connectMid2HonoMid(handler2)(c, next);
65
- } else {
66
- return c.json(handler2);
67
- }
68
- };
69
- const handlerInfo = mockHandlerRegistry.get(handlerId);
70
- if (handlerInfo && !(handlerInfo === null || handlerInfo === void 0 ? void 0 : handlerInfo.isRegistered)) {
71
- server[methodName](path2, mockHandler);
72
- handlerInfo.isRegistered = true;
73
- }
74
- }
75
- });
76
- };
77
- export {
78
- registerMockHandlers
79
- };
@@ -1,48 +0,0 @@
1
- import path from "path";
2
- import { LOADABLE_STATS_FILE, MAIN_ENTRY_NAME, ROUTE_MANIFEST_FILE, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
3
- async function getServerManifest(pwd, routes) {
4
- const loaderBundles = {};
5
- const renderBundles = {};
6
- await Promise.all([
7
- routes.map(async (route) => {
8
- const entryName = route.entryName || MAIN_ENTRY_NAME;
9
- const loaderBundlePath = path.join(pwd, SERVER_BUNDLE_DIRECTORY, `${entryName}-server-loaders.js`);
10
- const renderBundlePath = path.join(pwd, route.bundle || "");
11
- await Promise.allSettled([
12
- import(loaderBundlePath),
13
- import(renderBundlePath)
14
- ]).then((results) => {
15
- const { status: loaderStatus } = results[0];
16
- if (loaderStatus === "fulfilled") {
17
- loaderBundles[entryName] = results[0].value;
18
- }
19
- const { status: renderStatus } = results[1];
20
- if (renderStatus === "fulfilled") {
21
- renderBundles[entryName] = results[1].value;
22
- }
23
- });
24
- })
25
- ]);
26
- const loadableUri = path.join(pwd, LOADABLE_STATS_FILE);
27
- const loadableStats = await import(loadableUri).catch((_) => ({}));
28
- const routesManifestUri = path.join(pwd, ROUTE_MANIFEST_FILE);
29
- const routeManifest = await import(routesManifestUri).catch((_) => ({}));
30
- return {
31
- loaderBundles,
32
- renderBundles,
33
- loadableStats,
34
- routeManifest
35
- };
36
- }
37
- function injectServerManifest(pwd, routes) {
38
- return async (c, next) => {
39
- if (routes && !c.get("serverManifest")) {
40
- const serverManifest = await getServerManifest(pwd, routes);
41
- c.set("serverManifest", serverManifest);
42
- }
43
- await next();
44
- };
45
- }
46
- export {
47
- injectServerManifest
48
- };
@@ -1,33 +0,0 @@
1
- import path from "path";
2
- import { fileReader } from "@modern-js/runtime-utils/fileReader";
3
- import { getMimeType } from "hono/utils/mime";
4
- import { sortRoutes } from "../../../utils";
5
- function createPublicMiddleware({ pwd, routes }) {
6
- return async (c, next) => {
7
- const route = matchRoute(c.req, routes);
8
- if (route) {
9
- const { entryPath } = route;
10
- const filename = path.join(pwd, entryPath);
11
- const data = await fileReader.readFile(filename, "buffer");
12
- const mimeType = getMimeType(filename);
13
- if (data !== null) {
14
- if (mimeType) {
15
- c.header("Content-Type", mimeType);
16
- }
17
- return c.body(data, 200);
18
- }
19
- }
20
- return await next();
21
- };
22
- }
23
- function matchRoute(req, routes) {
24
- for (const route of routes.sort(sortRoutes)) {
25
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
26
- return route;
27
- }
28
- }
29
- return void 0;
30
- }
31
- export {
32
- createPublicMiddleware
33
- };
@@ -1,75 +0,0 @@
1
- import path from "path";
2
- import { existsSync, lstatSync } from "fs";
3
- import { getMimeType } from "hono/utils/mime";
4
- import { fileReader } from "@modern-js/runtime-utils/fileReader";
5
- import { createErrorHtml } from "../../../utils";
6
- import { createPublicMiddleware } from "./serverPublic";
7
- function createStaticMiddleware(options) {
8
- const { pwd, routes } = options;
9
- const prefix = options.output.assetPrefix || "/";
10
- const { distPath: { css: cssPath, js: jsPath, media: mediaPath } = {} } = options.output;
11
- const { favicon, faviconByEntries } = options.html;
12
- const favicons = prepareFavicons(favicon, faviconByEntries);
13
- const staticFiles = [
14
- cssPath,
15
- jsPath,
16
- mediaPath
17
- ].filter((v) => Boolean(v));
18
- const staticReg = [
19
- "static/",
20
- "upload/",
21
- ...staticFiles
22
- ];
23
- const iconReg = [
24
- "favicon.ico",
25
- "icon.png",
26
- ...favicons
27
- ];
28
- const regPrefix = prefix.endsWith("/") ? prefix : `${prefix}/`;
29
- const staticPathRegExp = new RegExp(`^${regPrefix}(${[
30
- ...staticReg,
31
- ...iconReg
32
- ].join("|")})`);
33
- return async (c, next) => {
34
- const pathname = c.req.path;
35
- const hit = staticPathRegExp.test(pathname);
36
- if (hit) {
37
- const filepath = path.resolve(pwd, pathname.replace(prefix, () => ""));
38
- if (!existsSync(filepath)) {
39
- return c.html(createErrorHtml(404), 404);
40
- }
41
- const mimeType = getMimeType(filepath);
42
- if (mimeType) {
43
- c.header("Content-Type", mimeType);
44
- }
45
- const stat = lstatSync(filepath);
46
- const { size } = stat;
47
- const chunk = await fileReader.readFile(filepath, "buffer");
48
- c.header("Content-Length", String(size));
49
- return c.body(chunk, 200);
50
- } else {
51
- return createPublicMiddleware({
52
- pwd,
53
- routes: routes || []
54
- })(c, next);
55
- }
56
- };
57
- }
58
- const prepareFavicons = (favicon, faviconByEntries) => {
59
- const faviconNames = [];
60
- if (favicon) {
61
- faviconNames.push(favicon.substring(favicon.lastIndexOf("/") + 1));
62
- }
63
- if (faviconByEntries) {
64
- Object.keys(faviconByEntries).forEach((f) => {
65
- const curFavicon = faviconByEntries[f];
66
- if (curFavicon) {
67
- faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf("/") + 1));
68
- }
69
- });
70
- }
71
- return faviconNames;
72
- };
73
- export {
74
- createStaticMiddleware
75
- };
@@ -1,32 +0,0 @@
1
- import path from "path";
2
- import { fileReader } from "@modern-js/runtime-utils/fileReader";
3
- async function getHtmlTemplates(pwd, routes) {
4
- const htmls = await Promise.all(routes.map(async (route) => {
5
- let html;
6
- try {
7
- var _this;
8
- const htmlPath = path.join(pwd, route.entryPath);
9
- html = (_this = await fileReader.readFile(htmlPath, "utf-8")) === null || _this === void 0 ? void 0 : _this.toString();
10
- } catch (e) {
11
- }
12
- return [
13
- route.entryName,
14
- html
15
- ];
16
- }) || []);
17
- const templates = Object.fromEntries(htmls);
18
- return templates;
19
- }
20
- function injectTemplates(pwd, routes) {
21
- return async (c, next) => {
22
- if (routes && !c.get("templates")) {
23
- const templates = await getHtmlTemplates(pwd, routes);
24
- c.set("templates", templates);
25
- }
26
- await next();
27
- };
28
- }
29
- export {
30
- getHtmlTemplates,
31
- injectTemplates
32
- };
@@ -1,100 +0,0 @@
1
- import { createServer, ServerResponse } from "node:http";
2
- import { createReadableStreamFromReadable, writeReadableStreamToWritable } from "./polyfills/stream";
3
- import { installGlobals } from "./polyfills/install";
4
- installGlobals();
5
- const createWebRequest = (req, res) => {
6
- var _req_url;
7
- const headerRecord = [];
8
- const len = req.rawHeaders.length;
9
- for (let i = 0; i < len; i += 2) {
10
- headerRecord.push([
11
- req.rawHeaders[i],
12
- req.rawHeaders[i + 1]
13
- ]);
14
- }
15
- const { method } = req;
16
- const controller = new AbortController();
17
- const init = {
18
- method,
19
- headers: headerRecord,
20
- signal: controller.signal
21
- };
22
- res.on("close", () => controller.abort());
23
- if (!(method === "GET" || method === "HEAD") && ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes("__loader"))) {
24
- init.body = createReadableStreamFromReadable(req);
25
- init.duplex = "half";
26
- }
27
- const url = `http://${req.headers.host}${req.url}`;
28
- const request = new Request(url, init);
29
- return request;
30
- };
31
- const sendResponse = async (response, res) => {
32
- var _response_headers_get;
33
- res.statusMessage = response.statusText;
34
- res.statusCode = response.status;
35
- const cookies = [];
36
- for (const [key, value] of response.headers.entries()) {
37
- if (key === "set-cookie") {
38
- cookies.push(value);
39
- } else {
40
- res.setHeader(key, value);
41
- }
42
- }
43
- if (cookies.length > 0) {
44
- res.setHeader("set-cookie", cookies);
45
- }
46
- if (((_response_headers_get = response.headers.get("Content-Type")) === null || _response_headers_get === void 0 ? void 0 : _response_headers_get.match(/text\/event-stream/i)) && res instanceof ServerResponse) {
47
- res.flushHeaders();
48
- }
49
- if (response.body) {
50
- await writeReadableStreamToWritable(response.body, res);
51
- } else {
52
- res.end();
53
- }
54
- };
55
- const handleResponseError = (e, res) => {
56
- const err = e instanceof Error ? e : new Error("unknown error", {
57
- cause: e
58
- });
59
- if (err.code === "ERR_STREAM_PREMATURE_CLOSE") {
60
- console.info("The user aborted a request.");
61
- } else {
62
- console.error(e);
63
- if (!res.headersSent) {
64
- res.writeHead(500, {
65
- "Content-Type": "text/plain"
66
- });
67
- }
68
- res.end(`Error: ${err.message}`);
69
- res.destroy(err);
70
- }
71
- };
72
- const getRequestListener = (handler) => {
73
- return async (req, res) => {
74
- try {
75
- const request = createWebRequest(req, res);
76
- const response = await handler(request, {
77
- node: {
78
- req,
79
- res
80
- }
81
- });
82
- if (!res.headersSent && !response.res) {
83
- await sendResponse(response, res);
84
- }
85
- } catch (error) {
86
- return handleResponseError(error, res);
87
- }
88
- };
89
- };
90
- const createNodeServer = (handleRequest) => {
91
- const requestListener = getRequestListener(handleRequest);
92
- const nodeServer = createServer(requestListener);
93
- nodeServer.getRequestHandler = () => requestListener;
94
- return nodeServer;
95
- };
96
- export {
97
- createNodeServer,
98
- createWebRequest,
99
- sendResponse
100
- };
@@ -1,2 +0,0 @@
1
- export * from "./install";
2
- export * from "./stream";
@@ -1,46 +0,0 @@
1
- import { Request as NodeRequest, Response as NodeResponse, Headers as NodeHeaders, FormData as NodeFormData } from "@web-std/fetch";
2
- import { TransformStream as NodeTransformStream, ReadableStream as NodeReadableStream, WritableStream as NodeWritableStream } from "@web-std/stream";
3
- import { File as NodeFile, Blob as NodeBlob } from "@web-std/file";
4
- Object.defineProperty(NodeHeaders.prototype, "getSetCookie", {
5
- value: function getSetCookie() {
6
- const cookies = [];
7
- this.forEach((value, name) => {
8
- if (name.toLowerCase() === "set-cookie") {
9
- cookies.push(value);
10
- }
11
- });
12
- return cookies;
13
- }
14
- });
15
- const installGlobals = () => {
16
- if (!global.Headers) {
17
- global.Headers = NodeHeaders;
18
- }
19
- if (!global.Request) {
20
- global.Request = NodeRequest;
21
- }
22
- if (!global.Response) {
23
- global.Response = NodeResponse;
24
- }
25
- if (!global.FormData) {
26
- global.FormData = NodeFormData;
27
- }
28
- if (!global.TransformStream) {
29
- global.TransformStream = NodeTransformStream;
30
- }
31
- if (!global.ReadableStream) {
32
- global.ReadableStream = NodeReadableStream;
33
- }
34
- if (!global.WritableStream) {
35
- global.WritableStream = NodeWritableStream;
36
- }
37
- if (!global.File) {
38
- global.File = NodeFile;
39
- }
40
- if (!global.Blob) {
41
- global.Blob = NodeBlob;
42
- }
43
- };
44
- export {
45
- installGlobals
46
- };