@modern-js/server-core 2.47.1-alpha.0 → 2.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/cjs/index.js +4 -6
  2. package/dist/cjs/{core/loadPlugins.js → loadPlugins.js} +1 -1
  3. package/dist/cjs/{core/plugin.js → plugin.js} +3 -1
  4. package/dist/esm/index.js +2 -3
  5. package/dist/esm/{core/loadPlugins.js → loadPlugins.js} +1 -1
  6. package/dist/esm/{core/plugin.js → plugin.js} +3 -1
  7. package/dist/types/index.d.ts +2 -3
  8. package/dist/types/{core/loadPlugins.d.ts → loadPlugins.d.ts} +1 -1
  9. package/dist/types/{core/plugin.d.ts → plugin.d.ts} +35 -32
  10. package/package.json +6 -29
  11. package/dist/cjs/base/adapters/node/bff.js +0 -69
  12. package/dist/cjs/base/adapters/node/hono.js +0 -62
  13. package/dist/cjs/base/adapters/node/index.js +0 -32
  14. package/dist/cjs/base/adapters/node/loadServer.js +0 -56
  15. package/dist/cjs/base/adapters/node/middlewares/index.js +0 -26
  16. package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
  17. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +0 -105
  18. package/dist/cjs/base/adapters/node/middlewares/templates.js +0 -65
  19. package/dist/cjs/base/adapters/node/node.js +0 -121
  20. package/dist/cjs/base/adapters/node/polyfills/index.js +0 -24
  21. package/dist/cjs/base/adapters/node/polyfills/install.js +0 -57
  22. package/dist/cjs/base/adapters/node/polyfills/stream.js +0 -159
  23. package/dist/cjs/base/constants.js +0 -55
  24. package/dist/cjs/base/index.js +0 -73
  25. package/dist/cjs/base/middlewares/customServer/base.js +0 -115
  26. package/dist/cjs/base/middlewares/customServer/context.js +0 -78
  27. package/dist/cjs/base/middlewares/customServer/index.js +0 -138
  28. package/dist/cjs/base/middlewares/customServer/routerApi.js +0 -48
  29. package/dist/cjs/base/middlewares/customServer/template.js +0 -60
  30. package/dist/cjs/base/middlewares/dataHandler.js +0 -69
  31. package/dist/cjs/base/middlewares/faviconFallback.js +0 -34
  32. package/dist/cjs/base/middlewares/index.js +0 -28
  33. package/dist/cjs/base/middlewares/monitor.js +0 -75
  34. package/dist/cjs/base/middlewares/renderHandler/index.js +0 -92
  35. package/dist/cjs/base/middlewares/renderHandler/render.js +0 -90
  36. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +0 -43
  37. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -173
  38. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +0 -183
  39. package/dist/cjs/base/serverBase.js +0 -167
  40. package/dist/cjs/base/utils/debug.js +0 -29
  41. package/dist/cjs/base/utils/entry.js +0 -30
  42. package/dist/cjs/base/utils/env.js +0 -45
  43. package/dist/cjs/base/utils/error.js +0 -65
  44. package/dist/cjs/base/utils/index.js +0 -40
  45. package/dist/cjs/base/utils/middlewareCollector.js +0 -54
  46. package/dist/cjs/base/utils/path.js +0 -46
  47. package/dist/cjs/base/utils/request.js +0 -65
  48. package/dist/cjs/base/utils/serverConfig.js +0 -71
  49. package/dist/cjs/base/utils/transformStream.js +0 -38
  50. package/dist/cjs/base/utils/warmup.js +0 -43
  51. package/dist/cjs/core/hono.js +0 -16
  52. package/dist/cjs/core/index.js +0 -24
  53. package/dist/cjs/core/render.js +0 -16
  54. package/dist/cjs/core/server.js +0 -22
  55. package/dist/esm/base/adapters/node/bff.js +0 -45
  56. package/dist/esm/base/adapters/node/hono.js +0 -37
  57. package/dist/esm/base/adapters/node/index.js +0 -6
  58. package/dist/esm/base/adapters/node/loadServer.js +0 -22
  59. package/dist/esm/base/adapters/node/middlewares/index.js +0 -3
  60. package/dist/esm/base/adapters/node/middlewares/mock.js +0 -79
  61. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +0 -71
  62. package/dist/esm/base/adapters/node/middlewares/templates.js +0 -31
  63. package/dist/esm/base/adapters/node/node.js +0 -95
  64. package/dist/esm/base/adapters/node/polyfills/index.js +0 -2
  65. package/dist/esm/base/adapters/node/polyfills/install.js +0 -33
  66. package/dist/esm/base/adapters/node/polyfills/stream.js +0 -132
  67. package/dist/esm/base/constants.js +0 -29
  68. package/dist/esm/base/index.js +0 -32
  69. package/dist/esm/base/middlewares/customServer/base.js +0 -91
  70. package/dist/esm/base/middlewares/customServer/context.js +0 -51
  71. package/dist/esm/base/middlewares/customServer/index.js +0 -114
  72. package/dist/esm/base/middlewares/customServer/routerApi.js +0 -24
  73. package/dist/esm/base/middlewares/customServer/template.js +0 -36
  74. package/dist/esm/base/middlewares/dataHandler.js +0 -35
  75. package/dist/esm/base/middlewares/faviconFallback.js +0 -10
  76. package/dist/esm/base/middlewares/index.js +0 -4
  77. package/dist/esm/base/middlewares/monitor.js +0 -49
  78. package/dist/esm/base/middlewares/renderHandler/index.js +0 -67
  79. package/dist/esm/base/middlewares/renderHandler/render.js +0 -66
  80. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +0 -19
  81. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -149
  82. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +0 -149
  83. package/dist/esm/base/serverBase.js +0 -143
  84. package/dist/esm/base/utils/debug.js +0 -5
  85. package/dist/esm/base/utils/entry.js +0 -6
  86. package/dist/esm/base/utils/env.js +0 -20
  87. package/dist/esm/base/utils/error.js +0 -41
  88. package/dist/esm/base/utils/index.js +0 -10
  89. package/dist/esm/base/utils/middlewareCollector.js +0 -29
  90. package/dist/esm/base/utils/path.js +0 -12
  91. package/dist/esm/base/utils/request.js +0 -38
  92. package/dist/esm/base/utils/serverConfig.js +0 -35
  93. package/dist/esm/base/utils/transformStream.js +0 -14
  94. package/dist/esm/base/utils/warmup.js +0 -9
  95. package/dist/esm/core/hono.js +0 -0
  96. package/dist/esm/core/index.js +0 -2
  97. package/dist/esm/core/render.js +0 -0
  98. package/dist/esm/core/server.js +0 -1
  99. package/dist/types/base/adapters/node/bff.d.ts +0 -4
  100. package/dist/types/base/adapters/node/hono.d.ts +0 -30
  101. package/dist/types/base/adapters/node/index.d.ts +0 -6
  102. package/dist/types/base/adapters/node/loadServer.d.ts +0 -3
  103. package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -3
  104. package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
  105. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -9
  106. package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -3
  107. package/dist/types/base/adapters/node/node.d.ts +0 -12
  108. package/dist/types/base/adapters/node/polyfills/index.d.ts +0 -2
  109. package/dist/types/base/adapters/node/polyfills/install.d.ts +0 -1
  110. package/dist/types/base/adapters/node/polyfills/stream.d.ts +0 -18
  111. package/dist/types/base/constants.d.ts +0 -23
  112. package/dist/types/base/index.d.ts +0 -9
  113. package/dist/types/base/middlewares/customServer/base.d.ts +0 -3
  114. package/dist/types/base/middlewares/customServer/context.d.ts +0 -7
  115. package/dist/types/base/middlewares/customServer/index.d.ts +0 -13
  116. package/dist/types/base/middlewares/customServer/routerApi.d.ts +0 -9
  117. package/dist/types/base/middlewares/customServer/template.d.ts +0 -11
  118. package/dist/types/base/middlewares/dataHandler.d.ts +0 -3
  119. package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
  120. package/dist/types/base/middlewares/index.d.ts +0 -4
  121. package/dist/types/base/middlewares/monitor.d.ts +0 -7
  122. package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
  123. package/dist/types/base/middlewares/renderHandler/render.d.ts +0 -12
  124. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +0 -7
  125. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -17
  126. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +0 -18
  127. package/dist/types/base/serverBase.d.ts +0 -49
  128. package/dist/types/base/utils/debug.d.ts +0 -1
  129. package/dist/types/base/utils/entry.d.ts +0 -2
  130. package/dist/types/base/utils/env.d.ts +0 -2
  131. package/dist/types/base/utils/error.d.ts +0 -1
  132. package/dist/types/base/utils/index.d.ts +0 -10
  133. package/dist/types/base/utils/middlewareCollector.d.ts +0 -12
  134. package/dist/types/base/utils/path.d.ts +0 -3
  135. package/dist/types/base/utils/request.d.ts +0 -12
  136. package/dist/types/base/utils/serverConfig.d.ts +0 -14
  137. package/dist/types/base/utils/transformStream.d.ts +0 -2
  138. package/dist/types/base/utils/warmup.d.ts +0 -1
  139. package/dist/types/core/hono.d.ts +0 -1
  140. package/dist/types/core/index.d.ts +0 -2
  141. package/dist/types/core/render.d.ts +0 -11
  142. package/dist/types/core/server.d.ts +0 -71
@@ -1,132 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { Stream } from "node:stream";
3
- import { ReadableStream } from "@web-std/stream";
4
- async function writeReadableStreamToWritable(stream, writable) {
5
- const reader = stream.getReader();
6
- const flushable = writable;
7
- try {
8
- while (true) {
9
- const { done, value } = await reader.read();
10
- if (done) {
11
- writable.end();
12
- break;
13
- }
14
- writable.write(value);
15
- if (typeof flushable.flush === "function") {
16
- flushable.flush();
17
- }
18
- }
19
- } catch (error) {
20
- writable.destroy(error);
21
- throw error;
22
- }
23
- }
24
- async function writeAsyncIterableToWritable(iterable, writable) {
25
- try {
26
- for await (const chunk of iterable) {
27
- writable.write(chunk);
28
- }
29
- writable.end();
30
- } catch (error) {
31
- writable.destroy(error);
32
- throw error;
33
- }
34
- }
35
- async function readableStreamToString(stream, encoding) {
36
- const reader = stream.getReader();
37
- const chunks = [];
38
- while (true) {
39
- const { done, value } = await reader.read();
40
- if (done) {
41
- break;
42
- }
43
- if (value) {
44
- chunks.push(value);
45
- }
46
- }
47
- return Buffer.concat(chunks).toString(encoding);
48
- }
49
- const createReadableStreamFromReadable = (source) => {
50
- const pump = new StreamPump(source);
51
- const stream = new ReadableStream(pump, pump);
52
- return stream;
53
- };
54
- class StreamPump {
55
- size(chunk) {
56
- return (chunk === null || chunk === void 0 ? void 0 : chunk.byteLength) || 0;
57
- }
58
- start(controller) {
59
- this.controller = controller;
60
- this.stream.on("data", this.enqueue);
61
- this.stream.once("error", this.error);
62
- this.stream.once("end", this.close);
63
- this.stream.once("close", this.close);
64
- }
65
- pull() {
66
- this.resume();
67
- }
68
- cancel(reason) {
69
- if (this.stream.destroy) {
70
- this.stream.destroy(reason);
71
- }
72
- this.stream.off("data", this.enqueue);
73
- this.stream.off("error", this.error);
74
- this.stream.off("end", this.close);
75
- this.stream.off("close", this.close);
76
- }
77
- enqueue(chunk) {
78
- if (this.controller) {
79
- try {
80
- const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
81
- const available = (this.controller.desiredSize || 0) - bytes.byteLength;
82
- this.controller.enqueue(bytes);
83
- if (available <= 0) {
84
- this.pause();
85
- }
86
- } catch (error) {
87
- this.controller.error(new Error("Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object"));
88
- this.cancel();
89
- }
90
- }
91
- }
92
- pause() {
93
- if (this.stream.pause) {
94
- this.stream.pause();
95
- }
96
- }
97
- resume() {
98
- if (this.stream.readable && this.stream.resume) {
99
- this.stream.resume();
100
- }
101
- }
102
- close() {
103
- if (this.controller) {
104
- this.controller.close();
105
- delete this.controller;
106
- }
107
- }
108
- error(error) {
109
- if (this.controller) {
110
- this.controller.error(error);
111
- delete this.controller;
112
- }
113
- }
114
- constructor(stream) {
115
- _define_property(this, "highWaterMark", void 0);
116
- _define_property(this, "accumalatedSize", void 0);
117
- _define_property(this, "stream", void 0);
118
- _define_property(this, "controller", void 0);
119
- this.highWaterMark = stream.readableHighWaterMark || new Stream.Readable().readableHighWaterMark;
120
- this.accumalatedSize = 0;
121
- this.stream = stream;
122
- this.enqueue = this.enqueue.bind(this);
123
- this.error = this.error.bind(this);
124
- this.close = this.close.bind(this);
125
- }
126
- }
127
- export {
128
- createReadableStreamFromReadable,
129
- readableStreamToString,
130
- writeAsyncIterableToWritable,
131
- writeReadableStreamToWritable
132
- };
@@ -1,29 +0,0 @@
1
- const AGGRED_DIR = {
2
- mock: "config/mock",
3
- server: "server",
4
- api: "api",
5
- shared: "shared",
6
- lambda: "lambda"
7
- };
8
- const REPLACE_REG = {
9
- before: {
10
- head: "<head[^>]*>",
11
- body: "<body[^>]*>"
12
- },
13
- after: {
14
- head: "</head>",
15
- body: "</body>"
16
- }
17
- };
18
- var ServerReportTimings;
19
- (function(ServerReportTimings2) {
20
- ServerReportTimings2["SERVER_HANDLE_REQUEST"] = "server-handle-request";
21
- ServerReportTimings2["SERVER_MIDDLEWARE"] = "server-middleware";
22
- ServerReportTimings2["SERVER_HOOK_AFTER_RENDER"] = "server-hook-after-render";
23
- ServerReportTimings2["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
24
- })(ServerReportTimings || (ServerReportTimings = {}));
25
- export {
26
- AGGRED_DIR,
27
- REPLACE_REG,
28
- ServerReportTimings
29
- };
@@ -1,32 +0,0 @@
1
- import { ServerBase } from "./serverBase";
2
- import { createErrorHtml } from "./utils";
3
- import { AGGRED_DIR } from "./constants";
4
- import { httpCallBack2HonoMid, createNodeServer, loadServerEnv, connectMid2HonoMid, sendResponse, createStaticMiddleware, bindBFFHandler, registerMockHandlers, createInjectHtml } from "./adapters/node";
5
- import { favionFallbackMiddleware, bindDataHandlers, injectReporter, getRenderHandler, injectLogger, bindRenderHandler } from "./middlewares";
6
- function createServerBase(options) {
7
- if (options == null) {
8
- throw new Error("can not start server without options");
9
- }
10
- const server = new ServerBase(options);
11
- return server;
12
- }
13
- export {
14
- AGGRED_DIR,
15
- bindBFFHandler,
16
- bindDataHandlers,
17
- bindRenderHandler,
18
- connectMid2HonoMid,
19
- createErrorHtml,
20
- createInjectHtml,
21
- createNodeServer,
22
- createServerBase,
23
- createStaticMiddleware,
24
- favionFallbackMiddleware,
25
- getRenderHandler,
26
- httpCallBack2HonoMid,
27
- injectLogger,
28
- injectReporter,
29
- loadServerEnv,
30
- registerMockHandlers,
31
- sendResponse
32
- };
@@ -1,91 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { getCookie } from "hono/cookie";
3
- import { getHost } from "../../utils";
4
- function createBaseHookContext(c, logger, metrics) {
5
- return {
6
- request: new BaseHookRequest(c),
7
- response: new BaseHookResponse(c),
8
- logger,
9
- metrics
10
- };
11
- }
12
- class BaseHookRequest {
13
- get url() {
14
- return this.req.url;
15
- }
16
- get host() {
17
- return getHost(this.req.raw);
18
- }
19
- get pathname() {
20
- return this.req.path;
21
- }
22
- get query() {
23
- return this.req.query();
24
- }
25
- get headers() {
26
- return this.req.header();
27
- }
28
- get cookies() {
29
- return {
30
- // FIXME: ModernRequest Type Error
31
- get: (key) => {
32
- return getCookie(this.c, key);
33
- }
34
- };
35
- }
36
- get cookie() {
37
- return this.req.header("cookie");
38
- }
39
- constructor(c) {
40
- _define_property(this, "req", void 0);
41
- _define_property(this, "c", void 0);
42
- this.c = c;
43
- this.req = c.req;
44
- }
45
- }
46
- class BaseHookResponse {
47
- get(key) {
48
- return this.c.res.headers.get(key);
49
- }
50
- set(key, value) {
51
- if ([
52
- "set-cookie",
53
- "Set-Cookie"
54
- ].includes(key)) {
55
- this.c.header(key, value.toString(), {
56
- append: true
57
- });
58
- } else {
59
- this.c.header(key, value.toString());
60
- }
61
- }
62
- status(code) {
63
- this.c.status(code);
64
- }
65
- get cookies() {
66
- const setCookie = (key, value) => {
67
- this.c.header("set-cookie", `${key}=${value}`, {
68
- append: true
69
- });
70
- };
71
- const clearCookie = () => {
72
- this.c.header("set-cookie", void 0);
73
- };
74
- return {
75
- set: setCookie,
76
- clear: clearCookie
77
- };
78
- }
79
- raw(body, options) {
80
- this.c.res = this.c.newResponse(body, options);
81
- this.private_overrided = true;
82
- }
83
- constructor(c) {
84
- _define_property(this, "private_overrided", false);
85
- _define_property(this, "c", void 0);
86
- this.c = c;
87
- }
88
- }
89
- export {
90
- createBaseHookContext
91
- };
@@ -1,51 +0,0 @@
1
- import { RouterAPI } from "./routerApi";
2
- import { TemplateApi } from "./template";
3
- import { createBaseHookContext } from "./base";
4
- function createAfterMatchCtx(c, entryName, logger, metrics) {
5
- const baseContext = createBaseHookContext(c, logger, metrics);
6
- return {
7
- ...baseContext,
8
- router: new RouterAPI(entryName)
9
- };
10
- }
11
- async function createAfterRenderCtx(c, logger, metrics) {
12
- const baseContext = createBaseHookContext(c, logger, metrics);
13
- const resBody = await c.res.text();
14
- return {
15
- ...baseContext,
16
- template: new TemplateApi(resBody)
17
- };
18
- }
19
- function createCustomMiddlewaresCtx(c, logger, metrics) {
20
- var _c_env_node, _c_env_node1;
21
- const baseContext = createBaseHookContext(c, logger, metrics);
22
- const reporter = c.get("reporter");
23
- return {
24
- ...baseContext,
25
- reporter,
26
- response: {
27
- ...baseContext.response,
28
- locals: {}
29
- },
30
- source: {
31
- req: (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req,
32
- res: (_c_env_node1 = c.env.node) === null || _c_env_node1 === void 0 ? void 0 : _c_env_node1.res
33
- }
34
- };
35
- }
36
- function createAfterStreamingRenderContext(c, logger, route, metrics) {
37
- const baseContext = createBaseHookContext(c, logger, metrics);
38
- return (chunk) => {
39
- return {
40
- ...baseContext,
41
- route,
42
- chunk
43
- };
44
- };
45
- }
46
- export {
47
- createAfterMatchCtx,
48
- createAfterRenderCtx,
49
- createAfterStreamingRenderContext,
50
- createCustomMiddlewaresCtx
51
- };
@@ -1,114 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { time } from "@modern-js/runtime-utils/time";
3
- import { createTransformStream } from "../../utils";
4
- import { ServerReportTimings } from "../../constants";
5
- import { createAfterMatchCtx, createAfterRenderCtx, createCustomMiddlewaresCtx, createAfterStreamingRenderContext } from "./context";
6
- const noop = () => {
7
- };
8
- class CustomServer {
9
- getHookMiddleware(entryName, routes) {
10
- return async (c, next) => {
11
- const routeInfo = routes.find((route) => route.entryName === entryName);
12
- const logger = c.get("logger");
13
- const reporter = c.get("reporter");
14
- const metrics = c.get("metrics");
15
- const afterMatchCtx = createAfterMatchCtx(c, entryName, logger, metrics);
16
- const getCost = time();
17
- await this.runner.afterMatch(afterMatchCtx, {
18
- onLast: noop
19
- });
20
- const cost = getCost();
21
- cost && reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
22
- const {
23
- // current,
24
- url,
25
- status
26
- } = afterMatchCtx.router;
27
- if (url) {
28
- return c.redirect(url, status);
29
- }
30
- const { current } = afterMatchCtx.router;
31
- if (current !== entryName) {
32
- const rewriteRoute = routes.find((route) => route.entryName === current);
33
- if (rewriteRoute) {
34
- return this.serverBase.request(rewriteRoute.urlPath);
35
- }
36
- }
37
- if (c.finalized) {
38
- return void 0;
39
- }
40
- await next();
41
- if (c.finalized && !c.res.body) {
42
- return void 0;
43
- }
44
- if (routeInfo.isStream) {
45
- var _c_res_body;
46
- const afterStreamingRenderContext = createAfterStreamingRenderContext(c, logger, routeInfo, metrics);
47
- const injectStream = createTransformStream((chunk) => {
48
- const context = afterStreamingRenderContext(chunk);
49
- return this.runner.afterStreamingRender(context, {
50
- onLast: ({ chunk: chunk2 }) => chunk2
51
- });
52
- });
53
- (_c_res_body = c.res.body) === null || _c_res_body === void 0 ? void 0 : _c_res_body.pipeThrough(injectStream);
54
- const { headers, status: status2, statusText } = c.res;
55
- c.res = c.body(injectStream.readable, {
56
- headers,
57
- status: status2,
58
- statusText
59
- });
60
- } else {
61
- const afterRenderCtx = await createAfterRenderCtx(c, logger, metrics);
62
- const getCost2 = time();
63
- await this.runner.afterRender(afterRenderCtx, {
64
- onLast: noop
65
- });
66
- const cost2 = getCost2();
67
- cost2 && reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost2);
68
- if (afterRenderCtx.response.private_overrided) {
69
- return void 0;
70
- }
71
- const newBody = afterRenderCtx.template.get();
72
- c.res = c.body(newBody);
73
- }
74
- };
75
- }
76
- getServerMiddleware() {
77
- return async (c, next) => {
78
- const serverMiddleware = await this.serverMiddlewarePromise;
79
- if (!serverMiddleware) {
80
- return next();
81
- }
82
- const reporter = c.get("reporter");
83
- const logger = c.get("logger");
84
- const metrics = c.get("metrics");
85
- const customMiddlewareCtx = createCustomMiddlewaresCtx(c, logger, metrics);
86
- const getCost = time();
87
- await serverMiddleware(customMiddlewareCtx);
88
- const cost = getCost();
89
- cost && reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost);
90
- if (!c.finalized) {
91
- return next();
92
- }
93
- };
94
- }
95
- constructor(runner, serverBase, pwd) {
96
- _define_property(this, "runner", void 0);
97
- _define_property(this, "serverMiddlewarePromise", void 0);
98
- _define_property(this, "serverBase", void 0);
99
- this.runner = runner;
100
- this.serverBase = serverBase;
101
- const webExtension = [];
102
- this.serverMiddlewarePromise = runner.prepareWebServer({
103
- pwd,
104
- config: {
105
- middleware: webExtension
106
- }
107
- }, {
108
- onLast: () => null
109
- });
110
- }
111
- }
112
- export {
113
- CustomServer
114
- };
@@ -1,24 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- class RouterAPI {
3
- redirect(url, status = 302) {
4
- this.url = url;
5
- this.status = status;
6
- }
7
- rewrite(entryName) {
8
- this.current = entryName;
9
- }
10
- use(entryName) {
11
- this.rewrite(entryName);
12
- }
13
- constructor(entryName) {
14
- _define_property(this, "current", void 0);
15
- _define_property(this, "status", void 0);
16
- _define_property(this, "url", void 0);
17
- this.current = entryName;
18
- this.status = 200;
19
- this.url = "";
20
- }
21
- }
22
- export {
23
- RouterAPI
24
- };
@@ -1,36 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import { REPLACE_REG } from "../../constants";
3
- class TemplateApi {
4
- set(content) {
5
- this.body = content;
6
- }
7
- get() {
8
- return this.body;
9
- }
10
- prependHead(fragment) {
11
- const { head } = REPLACE_REG.before;
12
- this.replaceBody(new RegExp(head), (beforeHead) => `${beforeHead}${fragment}`);
13
- }
14
- appendHead(fragment) {
15
- const { head } = REPLACE_REG.after;
16
- this.replaceBody(head, () => `${fragment}${head}`);
17
- }
18
- prependBody(fragment) {
19
- const { body } = REPLACE_REG.before;
20
- this.replaceBody(new RegExp(body), (beforeBody) => `${beforeBody}${fragment}`);
21
- }
22
- appendBody(fragment) {
23
- const { body } = REPLACE_REG.after;
24
- this.replaceBody(body, () => `${fragment}${body}`);
25
- }
26
- replaceBody(searchValue, replaceCb) {
27
- this.body = this.body.replace(searchValue, replaceCb);
28
- }
29
- constructor(body) {
30
- _define_property(this, "body", void 0);
31
- this.body = body;
32
- }
33
- }
34
- export {
35
- TemplateApi
36
- };
@@ -1,35 +0,0 @@
1
- import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
2
- import { getPathModule, sortRoutes } from "../utils";
3
- const bindDataHandlers = async (server, routes, distDir) => {
4
- const path = await getPathModule();
5
- routes.sort(sortRoutes).forEach((route) => {
6
- const bundlePath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, `${route.entryName || MAIN_ENTRY_NAME}-server-loaders.js`);
7
- server.all(`${route.urlPath === "/" ? "*" : `${route.urlPath}/*`}`, createDataHandler(routes, bundlePath));
8
- });
9
- };
10
- const createDataHandler = (serverRoutes, buildModulePath) => {
11
- return async (context, next) => {
12
- let buildModule;
13
- try {
14
- buildModule = await import(buildModulePath);
15
- } catch (_) {
16
- return next();
17
- }
18
- const { routes, handleRequest } = buildModule;
19
- const logger = context.get("logger");
20
- const reporter = context.get("reporter");
21
- const response = await handleRequest({
22
- request: context.req.raw,
23
- serverRoutes,
24
- context: {
25
- logger,
26
- reporter
27
- },
28
- routes
29
- });
30
- return response ? response : next();
31
- };
32
- };
33
- export {
34
- bindDataHandlers
35
- };
@@ -1,10 +0,0 @@
1
- const favionFallbackMiddleware = async (c, next) => {
2
- if (c.req.path === "/favicon.ico") {
3
- return c.body(null, 204);
4
- } else {
5
- return next();
6
- }
7
- };
8
- export {
9
- favionFallbackMiddleware
10
- };
@@ -1,4 +0,0 @@
1
- export * from "./faviconFallback";
2
- export * from "./dataHandler";
3
- export * from "./monitor";
4
- export * from "./renderHandler";
@@ -1,49 +0,0 @@
1
- import { time } from "@modern-js/runtime-utils/time";
2
- import { ServerReportTimings } from "../constants";
3
- const defaultReporter = {
4
- init() {
5
- },
6
- reportError() {
7
- },
8
- reportTiming() {
9
- },
10
- reportInfo() {
11
- },
12
- reportWarn() {
13
- }
14
- };
15
- function injectReporter() {
16
- return async (c, next) => {
17
- const reporter = c.get("reporter");
18
- if (!reporter) {
19
- c.set("reporter", defaultReporter);
20
- }
21
- await next();
22
- };
23
- }
24
- function initReporter(entryName) {
25
- return async (c, next) => {
26
- const reporter = c.get("reporter");
27
- await reporter.init({
28
- entryName
29
- });
30
- const getCost = time();
31
- await next();
32
- const cost = getCost();
33
- reporter.reportTiming(ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
34
- };
35
- }
36
- function injectLogger(inputLogger) {
37
- return async (c, next) => {
38
- const logger = c.get("logger");
39
- if (!logger && inputLogger) {
40
- c.set("logger", inputLogger);
41
- }
42
- await next();
43
- };
44
- }
45
- export {
46
- initReporter,
47
- injectLogger,
48
- injectReporter
49
- };
@@ -1,67 +0,0 @@
1
- import { warmup, checkIsProd, sortRoutes, getPathModule } from "../../utils";
2
- import { initReporter } from "../monitor";
3
- import { CustomServer } from "../customServer";
4
- import { ssrCache } from "./ssrCache";
5
- import { createRender } from "./render";
6
- function createRenderHandler(render) {
7
- return async (c, _) => {
8
- var _c_env_node;
9
- const logger = c.get("logger");
10
- const reporter = c.get("reporter");
11
- const request = c.req.raw;
12
- const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
13
- const templates = c.get("templates");
14
- const res = await render(request, {
15
- logger,
16
- nodeReq,
17
- reporter,
18
- tpls: templates || {}
19
- });
20
- return res;
21
- };
22
- }
23
- function getRenderHandler(options) {
24
- const { routes, pwd, config } = options;
25
- if (routes && routes.length > 0) {
26
- var _config_server, _options_config_security;
27
- const ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr;
28
- const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
29
- const render = createRender({
30
- routes,
31
- pwd,
32
- staticGenerate: options.staticGenerate,
33
- metaName: options.metaName || "modern-js",
34
- forceCSR,
35
- nonce: (_options_config_security = options.config.security) === null || _options_config_security === void 0 ? void 0 : _options_config_security.nonce
36
- });
37
- return render;
38
- }
39
- return null;
40
- }
41
- async function bindRenderHandler(server, options) {
42
- const { routes, pwd } = options;
43
- const path = await getPathModule();
44
- const { runner } = server;
45
- if (routes && routes.length > 0) {
46
- const customServer = new CustomServer(runner, server, pwd);
47
- const ssrBundles = routes.filter((route) => route.isSSR && route.bundle).map((route) => path.join(pwd, route.bundle));
48
- warmup(ssrBundles);
49
- await ssrCache.loadCacheMod(checkIsProd() ? pwd : void 0);
50
- const pageRoutes = routes.filter((route) => !route.isApi).sort(sortRoutes);
51
- for (const route of pageRoutes) {
52
- const { urlPath: originUrlPath, entryName } = route;
53
- const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
54
- const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
55
- server.use(urlPath, initReporter(entryName));
56
- server.use(urlPath, customServerHookMiddleware);
57
- const customServerMiddleware = customServer.getServerMiddleware();
58
- server.use(urlPath, customServerMiddleware);
59
- }
60
- const render = getRenderHandler(options);
61
- render && server.get("*", createRenderHandler(render));
62
- }
63
- }
64
- export {
65
- bindRenderHandler,
66
- getRenderHandler
67
- };