@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.
- package/dist/cjs/index.js +4 -6
- package/dist/cjs/{core/loadPlugins.js → loadPlugins.js} +7 -4
- package/dist/cjs/{core/plugin.js → plugin.js} +3 -1
- package/dist/esm/index.js +2 -3
- package/dist/{esm-node/core → esm}/loadPlugins.js +7 -4
- package/dist/{esm-node/core → esm}/plugin.js +3 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/loadPlugins.d.ts +5 -0
- package/dist/types/{core/plugin.d.ts → plugin.d.ts} +35 -32
- package/package.json +6 -41
- package/dist/cjs/base/adapters/node/bff.js +0 -69
- package/dist/cjs/base/adapters/node/hono.js +0 -63
- package/dist/cjs/base/adapters/node/index.js +0 -54
- package/dist/cjs/base/adapters/node/loadServer.js +0 -56
- package/dist/cjs/base/adapters/node/middlewares/index.js +0 -28
- package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
- package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +0 -82
- package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +0 -67
- package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +0 -109
- package/dist/cjs/base/adapters/node/middlewares/templates.js +0 -67
- package/dist/cjs/base/adapters/node/node.js +0 -126
- package/dist/cjs/base/adapters/node/polyfills/index.js +0 -24
- package/dist/cjs/base/adapters/node/polyfills/install.js +0 -70
- package/dist/cjs/base/adapters/node/polyfills/stream.js +0 -153
- package/dist/cjs/base/constants.js +0 -58
- package/dist/cjs/base/index.js +0 -45
- package/dist/cjs/base/middlewares/customServer/base.js +0 -111
- package/dist/cjs/base/middlewares/customServer/context.js +0 -78
- package/dist/cjs/base/middlewares/customServer/index.js +0 -130
- package/dist/cjs/base/middlewares/customServer/routerApi.js +0 -44
- package/dist/cjs/base/middlewares/customServer/template.js +0 -58
- package/dist/cjs/base/middlewares/faviconFallback.js +0 -34
- package/dist/cjs/base/middlewares/index.js +0 -26
- package/dist/cjs/base/middlewares/monitor.js +0 -90
- package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +0 -46
- package/dist/cjs/base/middlewares/renderHandler/index.js +0 -104
- package/dist/cjs/base/middlewares/renderHandler/render.js +0 -123
- package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +0 -40
- package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -197
- package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +0 -168
- package/dist/cjs/base/serverBase.js +0 -203
- package/dist/cjs/base/utils/debug.js +0 -29
- package/dist/cjs/base/utils/entry.js +0 -30
- package/dist/cjs/base/utils/env.js +0 -45
- package/dist/cjs/base/utils/error.js +0 -65
- package/dist/cjs/base/utils/index.js +0 -45
- package/dist/cjs/base/utils/middlewareCollector.js +0 -54
- package/dist/cjs/base/utils/request.js +0 -65
- package/dist/cjs/base/utils/serverConfig.js +0 -70
- package/dist/cjs/base/utils/transformStream.js +0 -61
- package/dist/cjs/base/utils/warmup.js +0 -43
- package/dist/cjs/core/hono.js +0 -16
- package/dist/cjs/core/index.js +0 -22
- package/dist/cjs/core/render.js +0 -16
- package/dist/cjs/core/server.js +0 -16
- package/dist/esm/base/adapters/node/bff.js +0 -128
- package/dist/esm/base/adapters/node/hono.js +0 -83
- package/dist/esm/base/adapters/node/index.js +0 -19
- package/dist/esm/base/adapters/node/loadServer.js +0 -73
- package/dist/esm/base/adapters/node/middlewares/index.js +0 -4
- package/dist/esm/base/adapters/node/middlewares/mock.js +0 -198
- package/dist/esm/base/adapters/node/middlewares/serverManifest.js +0 -132
- package/dist/esm/base/adapters/node/middlewares/serverPublic.js +0 -85
- package/dist/esm/base/adapters/node/middlewares/serverStatic.js +0 -109
- package/dist/esm/base/adapters/node/middlewares/templates.js +0 -114
- package/dist/esm/base/adapters/node/node.js +0 -194
- package/dist/esm/base/adapters/node/polyfills/index.js +0 -2
- package/dist/esm/base/adapters/node/polyfills/install.js +0 -46
- package/dist/esm/base/adapters/node/polyfills/stream.js +0 -316
- package/dist/esm/base/constants.js +0 -31
- package/dist/esm/base/index.js +0 -14
- package/dist/esm/base/middlewares/customServer/base.js +0 -126
- package/dist/esm/base/middlewares/customServer/context.js +0 -70
- package/dist/esm/base/middlewares/customServer/index.js +0 -208
- package/dist/esm/base/middlewares/customServer/routerApi.js +0 -26
- package/dist/esm/base/middlewares/customServer/template.js +0 -47
- package/dist/esm/base/middlewares/faviconFallback.js +0 -28
- package/dist/esm/base/middlewares/index.js +0 -3
- package/dist/esm/base/middlewares/monitor.js +0 -157
- package/dist/esm/base/middlewares/renderHandler/dataHandler.js +0 -45
- package/dist/esm/base/middlewares/renderHandler/index.js +0 -163
- package/dist/esm/base/middlewares/renderHandler/render.js +0 -213
- package/dist/esm/base/middlewares/renderHandler/serverTiming.js +0 -21
- package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -306
- package/dist/esm/base/middlewares/renderHandler/ssrRender.js +0 -226
- package/dist/esm/base/serverBase.js +0 -383
- package/dist/esm/base/utils/debug.js +0 -5
- package/dist/esm/base/utils/entry.js +0 -6
- package/dist/esm/base/utils/env.js +0 -20
- package/dist/esm/base/utils/error.js +0 -12
- package/dist/esm/base/utils/index.js +0 -13
- package/dist/esm/base/utils/middlewareCollector.js +0 -31
- package/dist/esm/base/utils/request.js +0 -39
- package/dist/esm/base/utils/serverConfig.js +0 -58
- package/dist/esm/base/utils/transformStream.js +0 -90
- package/dist/esm/base/utils/warmup.js +0 -9
- package/dist/esm/core/hono.js +0 -0
- package/dist/esm/core/index.js +0 -1
- package/dist/esm/core/loadPlugins.js +0 -26
- package/dist/esm/core/plugin.js +0 -98
- package/dist/esm/core/render.js +0 -0
- package/dist/esm/core/server.js +0 -0
- package/dist/esm-node/base/adapters/node/bff.js +0 -45
- package/dist/esm-node/base/adapters/node/hono.js +0 -38
- package/dist/esm-node/base/adapters/node/index.js +0 -19
- package/dist/esm-node/base/adapters/node/loadServer.js +0 -22
- package/dist/esm-node/base/adapters/node/middlewares/index.js +0 -4
- package/dist/esm-node/base/adapters/node/middlewares/mock.js +0 -79
- package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +0 -48
- package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +0 -33
- package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +0 -75
- package/dist/esm-node/base/adapters/node/middlewares/templates.js +0 -32
- package/dist/esm-node/base/adapters/node/node.js +0 -100
- package/dist/esm-node/base/adapters/node/polyfills/index.js +0 -2
- package/dist/esm-node/base/adapters/node/polyfills/install.js +0 -46
- package/dist/esm-node/base/adapters/node/polyfills/stream.js +0 -126
- package/dist/esm-node/base/constants.js +0 -31
- package/dist/esm-node/base/index.js +0 -14
- package/dist/esm-node/base/middlewares/customServer/base.js +0 -87
- package/dist/esm-node/base/middlewares/customServer/context.js +0 -51
- package/dist/esm-node/base/middlewares/customServer/index.js +0 -106
- package/dist/esm-node/base/middlewares/customServer/routerApi.js +0 -20
- package/dist/esm-node/base/middlewares/customServer/template.js +0 -34
- package/dist/esm-node/base/middlewares/faviconFallback.js +0 -10
- package/dist/esm-node/base/middlewares/index.js +0 -3
- package/dist/esm-node/base/middlewares/monitor.js +0 -63
- package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +0 -22
- package/dist/esm-node/base/middlewares/renderHandler/index.js +0 -69
- package/dist/esm-node/base/middlewares/renderHandler/render.js +0 -99
- package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +0 -16
- package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +0 -162
- package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +0 -134
- package/dist/esm-node/base/serverBase.js +0 -168
- package/dist/esm-node/base/utils/debug.js +0 -5
- package/dist/esm-node/base/utils/entry.js +0 -6
- package/dist/esm-node/base/utils/env.js +0 -20
- package/dist/esm-node/base/utils/error.js +0 -41
- package/dist/esm-node/base/utils/index.js +0 -13
- package/dist/esm-node/base/utils/middlewareCollector.js +0 -29
- package/dist/esm-node/base/utils/request.js +0 -38
- package/dist/esm-node/base/utils/serverConfig.js +0 -34
- package/dist/esm-node/base/utils/transformStream.js +0 -36
- package/dist/esm-node/base/utils/warmup.js +0 -9
- package/dist/esm-node/core/hono.js +0 -0
- package/dist/esm-node/core/index.js +0 -1
- package/dist/esm-node/core/render.js +0 -0
- package/dist/esm-node/core/server.js +0 -0
- package/dist/esm-node/index.js +0 -5
- package/dist/esm-node/types/config/bff.js +0 -0
- package/dist/esm-node/types/config/dev.js +0 -0
- package/dist/esm-node/types/config/html.js +0 -0
- package/dist/esm-node/types/config/index.js +0 -6
- package/dist/esm-node/types/config/output.js +0 -0
- package/dist/esm-node/types/config/security.js +0 -0
- package/dist/esm-node/types/config/server.js +0 -0
- package/dist/esm-node/types/config/share.js +0 -0
- package/dist/esm-node/types/config/source.js +0 -0
- package/dist/esm-node/types/config/tools.js +0 -0
- package/dist/types/base/adapters/node/bff.d.ts +0 -4
- package/dist/types/base/adapters/node/hono.d.ts +0 -22
- package/dist/types/base/adapters/node/index.d.ts +0 -6
- package/dist/types/base/adapters/node/loadServer.d.ts +0 -3
- package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -4
- package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
- package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +0 -3
- package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +0 -7
- package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -11
- package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -4
- package/dist/types/base/adapters/node/node.d.ts +0 -12
- package/dist/types/base/adapters/node/polyfills/index.d.ts +0 -2
- package/dist/types/base/adapters/node/polyfills/install.d.ts +0 -1
- package/dist/types/base/adapters/node/polyfills/stream.d.ts +0 -18
- package/dist/types/base/constants.d.ts +0 -24
- package/dist/types/base/index.d.ts +0 -7
- package/dist/types/base/middlewares/customServer/base.d.ts +0 -3
- package/dist/types/base/middlewares/customServer/context.d.ts +0 -7
- package/dist/types/base/middlewares/customServer/index.d.ts +0 -13
- package/dist/types/base/middlewares/customServer/routerApi.d.ts +0 -9
- package/dist/types/base/middlewares/customServer/template.d.ts +0 -11
- package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
- package/dist/types/base/middlewares/index.d.ts +0 -3
- package/dist/types/base/middlewares/monitor.d.ts +0 -6
- package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +0 -5
- package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
- package/dist/types/base/middlewares/renderHandler/render.d.ts +0 -12
- package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +0 -7
- package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -29
- package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +0 -18
- package/dist/types/base/serverBase.d.ts +0 -52
- package/dist/types/base/utils/debug.d.ts +0 -1
- package/dist/types/base/utils/entry.d.ts +0 -2
- package/dist/types/base/utils/env.d.ts +0 -2
- package/dist/types/base/utils/error.d.ts +0 -1
- package/dist/types/base/utils/index.d.ts +0 -8
- package/dist/types/base/utils/middlewareCollector.d.ts +0 -12
- package/dist/types/base/utils/request.d.ts +0 -12
- package/dist/types/base/utils/serverConfig.d.ts +0 -14
- package/dist/types/base/utils/transformStream.d.ts +0 -5
- package/dist/types/base/utils/warmup.d.ts +0 -1
- package/dist/types/core/hono.d.ts +0 -1
- package/dist/types/core/index.d.ts +0 -1
- package/dist/types/core/loadPlugins.d.ts +0 -3
- package/dist/types/core/render.d.ts +0 -13
- package/dist/types/core/server.d.ts +0 -99
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { Stream } from "node:stream";
|
|
2
|
-
async function writeReadableStreamToWritable(stream, writable) {
|
|
3
|
-
const reader = stream.getReader();
|
|
4
|
-
const flushable = writable;
|
|
5
|
-
try {
|
|
6
|
-
while (true) {
|
|
7
|
-
const { done, value } = await reader.read();
|
|
8
|
-
if (done) {
|
|
9
|
-
writable.end();
|
|
10
|
-
break;
|
|
11
|
-
}
|
|
12
|
-
writable.write(value);
|
|
13
|
-
if (typeof flushable.flush === "function") {
|
|
14
|
-
flushable.flush();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
} catch (error) {
|
|
18
|
-
writable.destroy(error);
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async function writeAsyncIterableToWritable(iterable, writable) {
|
|
23
|
-
try {
|
|
24
|
-
for await (const chunk of iterable) {
|
|
25
|
-
writable.write(chunk);
|
|
26
|
-
}
|
|
27
|
-
writable.end();
|
|
28
|
-
} catch (error) {
|
|
29
|
-
writable.destroy(error);
|
|
30
|
-
throw error;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async function readableStreamToString(stream, encoding) {
|
|
34
|
-
const reader = stream.getReader();
|
|
35
|
-
const chunks = [];
|
|
36
|
-
while (true) {
|
|
37
|
-
const { done, value } = await reader.read();
|
|
38
|
-
if (done) {
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
if (value) {
|
|
42
|
-
chunks.push(value);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return Buffer.concat(chunks).toString(encoding);
|
|
46
|
-
}
|
|
47
|
-
const createReadableStreamFromReadable = (source) => {
|
|
48
|
-
const pump = new StreamPump(source);
|
|
49
|
-
const stream = new ReadableStream(pump, pump);
|
|
50
|
-
return stream;
|
|
51
|
-
};
|
|
52
|
-
class StreamPump {
|
|
53
|
-
size(chunk) {
|
|
54
|
-
return (chunk === null || chunk === void 0 ? void 0 : chunk.byteLength) || 0;
|
|
55
|
-
}
|
|
56
|
-
start(controller) {
|
|
57
|
-
this.controller = controller;
|
|
58
|
-
this.stream.on("data", this.enqueue);
|
|
59
|
-
this.stream.once("error", this.error);
|
|
60
|
-
this.stream.once("end", this.close);
|
|
61
|
-
this.stream.once("close", this.close);
|
|
62
|
-
}
|
|
63
|
-
pull() {
|
|
64
|
-
this.resume();
|
|
65
|
-
}
|
|
66
|
-
cancel(reason) {
|
|
67
|
-
if (this.stream.destroy) {
|
|
68
|
-
this.stream.destroy(reason);
|
|
69
|
-
}
|
|
70
|
-
this.stream.off("data", this.enqueue);
|
|
71
|
-
this.stream.off("error", this.error);
|
|
72
|
-
this.stream.off("end", this.close);
|
|
73
|
-
this.stream.off("close", this.close);
|
|
74
|
-
}
|
|
75
|
-
enqueue(chunk) {
|
|
76
|
-
if (this.controller) {
|
|
77
|
-
try {
|
|
78
|
-
const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
79
|
-
const available = (this.controller.desiredSize || 0) - bytes.byteLength;
|
|
80
|
-
this.controller.enqueue(bytes);
|
|
81
|
-
if (available <= 0) {
|
|
82
|
-
this.pause();
|
|
83
|
-
}
|
|
84
|
-
} catch (error) {
|
|
85
|
-
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"));
|
|
86
|
-
this.cancel();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
pause() {
|
|
91
|
-
if (this.stream.pause) {
|
|
92
|
-
this.stream.pause();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
resume() {
|
|
96
|
-
if (this.stream.readable && this.stream.resume) {
|
|
97
|
-
this.stream.resume();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
close() {
|
|
101
|
-
if (this.controller) {
|
|
102
|
-
this.controller.close();
|
|
103
|
-
delete this.controller;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
error(error) {
|
|
107
|
-
if (this.controller) {
|
|
108
|
-
this.controller.error(error);
|
|
109
|
-
delete this.controller;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
constructor(stream) {
|
|
113
|
-
this.highWaterMark = stream.readableHighWaterMark || new Stream.Readable().readableHighWaterMark;
|
|
114
|
-
this.accumalatedSize = 0;
|
|
115
|
-
this.stream = stream;
|
|
116
|
-
this.enqueue = this.enqueue.bind(this);
|
|
117
|
-
this.error = this.error.bind(this);
|
|
118
|
-
this.close = this.close.bind(this);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
export {
|
|
122
|
-
createReadableStreamFromReadable,
|
|
123
|
-
readableStreamToString,
|
|
124
|
-
writeAsyncIterableToWritable,
|
|
125
|
-
writeReadableStreamToWritable
|
|
126
|
-
};
|
|
@@ -1,31 +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
|
-
const X_RENDER_CACHE = "x-render-cache";
|
|
26
|
-
export {
|
|
27
|
-
AGGRED_DIR,
|
|
28
|
-
REPLACE_REG,
|
|
29
|
-
ServerReportTimings,
|
|
30
|
-
X_RENDER_CACHE
|
|
31
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createErrorHtml } from "./utils";
|
|
2
|
-
import { AGGRED_DIR } from "./constants";
|
|
3
|
-
import { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler } from "./middlewares";
|
|
4
|
-
import { createServerBase } from "./serverBase";
|
|
5
|
-
export {
|
|
6
|
-
AGGRED_DIR,
|
|
7
|
-
bindRenderHandler,
|
|
8
|
-
createErrorHtml,
|
|
9
|
-
createServerBase,
|
|
10
|
-
favionFallbackMiddleware,
|
|
11
|
-
getRenderHandler,
|
|
12
|
-
injectLogger,
|
|
13
|
-
injectReporter
|
|
14
|
-
};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { getCookie } from "hono/cookie";
|
|
2
|
-
import { getHost } from "../../utils";
|
|
3
|
-
function createBaseHookContext(c, logger, metrics) {
|
|
4
|
-
return {
|
|
5
|
-
request: new BaseHookRequest(c),
|
|
6
|
-
response: new BaseHookResponse(c),
|
|
7
|
-
logger,
|
|
8
|
-
metrics
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
class BaseHookRequest {
|
|
12
|
-
get url() {
|
|
13
|
-
return this.req.url;
|
|
14
|
-
}
|
|
15
|
-
get host() {
|
|
16
|
-
return getHost(this.req.raw);
|
|
17
|
-
}
|
|
18
|
-
get pathname() {
|
|
19
|
-
return this.req.path;
|
|
20
|
-
}
|
|
21
|
-
get query() {
|
|
22
|
-
return this.req.query();
|
|
23
|
-
}
|
|
24
|
-
get headers() {
|
|
25
|
-
return this.req.header();
|
|
26
|
-
}
|
|
27
|
-
get cookies() {
|
|
28
|
-
return {
|
|
29
|
-
// FIXME: ModernRequest Type Error
|
|
30
|
-
get: (key) => {
|
|
31
|
-
return getCookie(this.c, key);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
get cookie() {
|
|
36
|
-
return this.req.header("cookie");
|
|
37
|
-
}
|
|
38
|
-
constructor(c) {
|
|
39
|
-
this.c = c;
|
|
40
|
-
this.req = c.req;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
class BaseHookResponse {
|
|
44
|
-
get(key) {
|
|
45
|
-
return this.c.res.headers.get(key);
|
|
46
|
-
}
|
|
47
|
-
set(key, value) {
|
|
48
|
-
if ([
|
|
49
|
-
"set-cookie",
|
|
50
|
-
"Set-Cookie"
|
|
51
|
-
].includes(key)) {
|
|
52
|
-
this.c.header(key, value.toString(), {
|
|
53
|
-
append: true
|
|
54
|
-
});
|
|
55
|
-
} else {
|
|
56
|
-
this.c.header(key, value.toString());
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
status(code) {
|
|
60
|
-
this.c.status(code);
|
|
61
|
-
}
|
|
62
|
-
get cookies() {
|
|
63
|
-
const setCookie = (key, value) => {
|
|
64
|
-
this.c.header("set-cookie", `${key}=${value}`, {
|
|
65
|
-
append: true
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
const clearCookie = () => {
|
|
69
|
-
this.c.header("set-cookie", void 0);
|
|
70
|
-
};
|
|
71
|
-
return {
|
|
72
|
-
set: setCookie,
|
|
73
|
-
clear: clearCookie
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
raw(body, options) {
|
|
77
|
-
this.c.res = this.c.newResponse(body, options);
|
|
78
|
-
this.private_overrided = true;
|
|
79
|
-
}
|
|
80
|
-
constructor(c) {
|
|
81
|
-
this.private_overrided = false;
|
|
82
|
-
this.c = c;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export {
|
|
86
|
-
createBaseHookContext
|
|
87
|
-
};
|
|
@@ -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,106 +0,0 @@
|
|
|
1
|
-
import { time } from "@modern-js/runtime-utils/time";
|
|
2
|
-
import { transformResponse } from "../../utils";
|
|
3
|
-
import { ServerReportTimings } from "../../constants";
|
|
4
|
-
import { createAfterMatchCtx, createAfterRenderCtx, createCustomMiddlewaresCtx, createAfterStreamingRenderContext } from "./context";
|
|
5
|
-
const noop = () => {
|
|
6
|
-
};
|
|
7
|
-
const isHtmlResponse = (response) => {
|
|
8
|
-
const contentType = response.headers.get("content-type");
|
|
9
|
-
return contentType === null || contentType === void 0 ? void 0 : contentType.includes("text/html");
|
|
10
|
-
};
|
|
11
|
-
class CustomServer {
|
|
12
|
-
getHookMiddleware(entryName, routes) {
|
|
13
|
-
return async (c, next) => {
|
|
14
|
-
const routeInfo = routes.find((route) => route.entryName === entryName);
|
|
15
|
-
const logger = c.get("logger");
|
|
16
|
-
const reporter = c.get("reporter");
|
|
17
|
-
const metrics = c.get("metrics");
|
|
18
|
-
const afterMatchCtx = createAfterMatchCtx(c, entryName, logger, metrics);
|
|
19
|
-
const getCost = time();
|
|
20
|
-
await this.runner.afterMatch(afterMatchCtx, {
|
|
21
|
-
onLast: noop
|
|
22
|
-
});
|
|
23
|
-
const cost = getCost();
|
|
24
|
-
cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost));
|
|
25
|
-
const {
|
|
26
|
-
// current,
|
|
27
|
-
url,
|
|
28
|
-
status
|
|
29
|
-
} = afterMatchCtx.router;
|
|
30
|
-
if (url) {
|
|
31
|
-
return c.redirect(url, status);
|
|
32
|
-
}
|
|
33
|
-
const { current } = afterMatchCtx.router;
|
|
34
|
-
if (current !== entryName) {
|
|
35
|
-
const rewriteRoute = routes.find((route) => route.entryName === current);
|
|
36
|
-
if (rewriteRoute) {
|
|
37
|
-
return this.serverBase.request(rewriteRoute.urlPath);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (c.finalized) {
|
|
41
|
-
return void 0;
|
|
42
|
-
}
|
|
43
|
-
await next();
|
|
44
|
-
if (c.finalized && (!c.res.body || !isHtmlResponse(c.res))) {
|
|
45
|
-
return void 0;
|
|
46
|
-
}
|
|
47
|
-
if (routeInfo.isStream) {
|
|
48
|
-
const afterStreamingRenderContext = createAfterStreamingRenderContext(c, logger, routeInfo, metrics);
|
|
49
|
-
c.res = transformResponse(c.res, (chunk) => {
|
|
50
|
-
const context = afterStreamingRenderContext(chunk);
|
|
51
|
-
return this.runner.afterStreamingRender(context, {
|
|
52
|
-
onLast: ({ chunk: chunk2 }) => chunk2
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
} else {
|
|
56
|
-
const afterRenderCtx = await createAfterRenderCtx(c, logger, metrics);
|
|
57
|
-
const getCost2 = time();
|
|
58
|
-
await this.runner.afterRender(afterRenderCtx, {
|
|
59
|
-
onLast: noop
|
|
60
|
-
});
|
|
61
|
-
const cost2 = getCost2();
|
|
62
|
-
cost2 && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost2));
|
|
63
|
-
if (afterRenderCtx.response.private_overrided) {
|
|
64
|
-
return void 0;
|
|
65
|
-
}
|
|
66
|
-
const newBody = afterRenderCtx.template.get();
|
|
67
|
-
c.res = c.body(newBody);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
getServerMiddleware() {
|
|
72
|
-
return async (c, next) => {
|
|
73
|
-
const serverMiddleware = await this.serverMiddlewarePromise;
|
|
74
|
-
if (!serverMiddleware) {
|
|
75
|
-
return next();
|
|
76
|
-
}
|
|
77
|
-
const logger = c.get("logger");
|
|
78
|
-
const reporter = c.get("reporter");
|
|
79
|
-
const metrics = c.get("metrics");
|
|
80
|
-
const customMiddlewareCtx = createCustomMiddlewaresCtx(c, logger, metrics);
|
|
81
|
-
const getCost = time();
|
|
82
|
-
await serverMiddleware(customMiddlewareCtx);
|
|
83
|
-
const cost = getCost();
|
|
84
|
-
cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost));
|
|
85
|
-
if (!c.finalized) {
|
|
86
|
-
return next();
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
constructor(runner, serverBase, pwd) {
|
|
91
|
-
this.runner = runner;
|
|
92
|
-
this.serverBase = serverBase;
|
|
93
|
-
const webExtension = [];
|
|
94
|
-
this.serverMiddlewarePromise = runner.prepareWebServer({
|
|
95
|
-
pwd,
|
|
96
|
-
config: {
|
|
97
|
-
middleware: webExtension
|
|
98
|
-
}
|
|
99
|
-
}, {
|
|
100
|
-
onLast: () => null
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
export {
|
|
105
|
-
CustomServer
|
|
106
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
class RouterAPI {
|
|
2
|
-
redirect(url, status = 302) {
|
|
3
|
-
this.url = url;
|
|
4
|
-
this.status = status;
|
|
5
|
-
}
|
|
6
|
-
rewrite(entryName) {
|
|
7
|
-
this.current = entryName;
|
|
8
|
-
}
|
|
9
|
-
use(entryName) {
|
|
10
|
-
this.rewrite(entryName);
|
|
11
|
-
}
|
|
12
|
-
constructor(entryName) {
|
|
13
|
-
this.current = entryName;
|
|
14
|
-
this.status = 200;
|
|
15
|
-
this.url = "";
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export {
|
|
19
|
-
RouterAPI
|
|
20
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { REPLACE_REG } from "../../constants";
|
|
2
|
-
class TemplateApi {
|
|
3
|
-
set(content) {
|
|
4
|
-
this.body = content;
|
|
5
|
-
}
|
|
6
|
-
get() {
|
|
7
|
-
return this.body;
|
|
8
|
-
}
|
|
9
|
-
prependHead(fragment) {
|
|
10
|
-
const { head } = REPLACE_REG.before;
|
|
11
|
-
this.replaceBody(new RegExp(head), (beforeHead) => `${beforeHead}${fragment}`);
|
|
12
|
-
}
|
|
13
|
-
appendHead(fragment) {
|
|
14
|
-
const { head } = REPLACE_REG.after;
|
|
15
|
-
this.replaceBody(head, () => `${fragment}${head}`);
|
|
16
|
-
}
|
|
17
|
-
prependBody(fragment) {
|
|
18
|
-
const { body } = REPLACE_REG.before;
|
|
19
|
-
this.replaceBody(new RegExp(body), (beforeBody) => `${beforeBody}${fragment}`);
|
|
20
|
-
}
|
|
21
|
-
appendBody(fragment) {
|
|
22
|
-
const { body } = REPLACE_REG.after;
|
|
23
|
-
this.replaceBody(body, () => `${fragment}${body}`);
|
|
24
|
-
}
|
|
25
|
-
replaceBody(searchValue, replaceCb) {
|
|
26
|
-
this.body = this.body.replace(searchValue, replaceCb);
|
|
27
|
-
}
|
|
28
|
-
constructor(body) {
|
|
29
|
-
this.body = body;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export {
|
|
33
|
-
TemplateApi
|
|
34
|
-
};
|
|
@@ -1,63 +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
|
-
if (!reporter) {
|
|
28
|
-
await next();
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
await reporter.init({
|
|
32
|
-
entryName
|
|
33
|
-
});
|
|
34
|
-
const getCost = time();
|
|
35
|
-
await next();
|
|
36
|
-
const cost = getCost();
|
|
37
|
-
reporter.reportTiming(ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
function injectLogger(inputLogger) {
|
|
41
|
-
return async (c, next) => {
|
|
42
|
-
const logger = c.get("logger");
|
|
43
|
-
if (!logger && inputLogger) {
|
|
44
|
-
c.set("logger", inputLogger);
|
|
45
|
-
}
|
|
46
|
-
await next();
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function injectMetrics(inputMetrics) {
|
|
50
|
-
return async (c, next) => {
|
|
51
|
-
const metrics = c.get("metrics");
|
|
52
|
-
if (!metrics) {
|
|
53
|
-
c.set("metrics", inputMetrics);
|
|
54
|
-
}
|
|
55
|
-
await next();
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
initReporter,
|
|
60
|
-
injectLogger,
|
|
61
|
-
injectMetrics,
|
|
62
|
-
injectReporter
|
|
63
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
|
|
2
|
-
const dataHandler = async (request, { routeInfo, serverRoutes, reporter, logger, serverManifest }) => {
|
|
3
|
-
var _serverManifest_loaderBundles;
|
|
4
|
-
const serverLoaderModule = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_loaderBundles = serverManifest.loaderBundles) === null || _serverManifest_loaderBundles === void 0 ? void 0 : _serverManifest_loaderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
|
|
5
|
-
if (!serverLoaderModule) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
const { routes, handleRequest } = serverLoaderModule;
|
|
9
|
-
const response = await handleRequest({
|
|
10
|
-
request,
|
|
11
|
-
serverRoutes,
|
|
12
|
-
context: {
|
|
13
|
-
logger,
|
|
14
|
-
reporter
|
|
15
|
-
},
|
|
16
|
-
routes
|
|
17
|
-
});
|
|
18
|
-
return response;
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
dataHandler
|
|
22
|
-
};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { checkIsProd, sortRoutes, getRuntimeEnv } from "../../utils";
|
|
2
|
-
import { initReporter } from "../monitor";
|
|
3
|
-
import { CustomServer } from "../customServer";
|
|
4
|
-
import { createRender } from "./render";
|
|
5
|
-
function createRenderHandler(render) {
|
|
6
|
-
return async (c, _) => {
|
|
7
|
-
var _c_env_node;
|
|
8
|
-
const logger = c.get("logger");
|
|
9
|
-
const reporter = c.get("reporter");
|
|
10
|
-
const templates = c.get("templates") || {};
|
|
11
|
-
const serverManifest = c.get("serverManifest") || {};
|
|
12
|
-
const request = c.req.raw;
|
|
13
|
-
const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
|
|
14
|
-
const res = await render(request, {
|
|
15
|
-
logger,
|
|
16
|
-
nodeReq,
|
|
17
|
-
reporter,
|
|
18
|
-
templates,
|
|
19
|
-
serverManifest
|
|
20
|
-
});
|
|
21
|
-
return res;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async function getRenderHandler(options) {
|
|
25
|
-
const { routes, pwd, config } = options;
|
|
26
|
-
if (routes && routes.length > 0) {
|
|
27
|
-
var _config_server, _options_config_security;
|
|
28
|
-
const ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr;
|
|
29
|
-
const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
|
|
30
|
-
const render = createRender({
|
|
31
|
-
routes,
|
|
32
|
-
pwd,
|
|
33
|
-
staticGenerate: options.staticGenerate,
|
|
34
|
-
metaName: options.metaName || "modern-js",
|
|
35
|
-
forceCSR,
|
|
36
|
-
nonce: (_options_config_security = options.config.security) === null || _options_config_security === void 0 ? void 0 : _options_config_security.nonce
|
|
37
|
-
});
|
|
38
|
-
return render;
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
async function bindRenderHandler(server, options) {
|
|
43
|
-
const { routes, pwd } = options;
|
|
44
|
-
const { runner } = server;
|
|
45
|
-
if (routes && routes.length > 0) {
|
|
46
|
-
const customServer = new CustomServer(runner, server, pwd);
|
|
47
|
-
if (getRuntimeEnv() === "node") {
|
|
48
|
-
const cacheModuleName = "./ssrCache";
|
|
49
|
-
const { ssrCache } = await import(cacheModuleName);
|
|
50
|
-
await ssrCache.loadCacheMod(checkIsProd() ? pwd : void 0);
|
|
51
|
-
}
|
|
52
|
-
const pageRoutes = routes.filter((route) => !route.isApi).sort(sortRoutes);
|
|
53
|
-
for (const route of pageRoutes) {
|
|
54
|
-
const { urlPath: originUrlPath, entryName } = route;
|
|
55
|
-
const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
|
|
56
|
-
const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
|
|
57
|
-
server.use(urlPath, initReporter(entryName));
|
|
58
|
-
server.use(urlPath, customServerHookMiddleware);
|
|
59
|
-
const customServerMiddleware = customServer.getServerMiddleware();
|
|
60
|
-
server.use(urlPath, customServerMiddleware);
|
|
61
|
-
}
|
|
62
|
-
const render = await getRenderHandler(options);
|
|
63
|
-
render && server.all("*", createRenderHandler(render));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
export {
|
|
67
|
-
bindRenderHandler,
|
|
68
|
-
getRenderHandler
|
|
69
|
-
};
|