@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.
- package/dist/cjs/index.js +4 -6
- package/dist/cjs/{core/loadPlugins.js → loadPlugins.js} +1 -1
- package/dist/cjs/{core/plugin.js → plugin.js} +3 -1
- package/dist/esm/index.js +2 -3
- package/dist/esm/{core/loadPlugins.js → loadPlugins.js} +1 -1
- package/dist/esm/{core/plugin.js → plugin.js} +3 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/{core/loadPlugins.d.ts → loadPlugins.d.ts} +1 -1
- package/dist/types/{core/plugin.d.ts → plugin.d.ts} +35 -32
- package/package.json +6 -29
- package/dist/cjs/base/adapters/node/bff.js +0 -69
- package/dist/cjs/base/adapters/node/hono.js +0 -62
- package/dist/cjs/base/adapters/node/index.js +0 -32
- package/dist/cjs/base/adapters/node/loadServer.js +0 -56
- package/dist/cjs/base/adapters/node/middlewares/index.js +0 -26
- package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
- package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +0 -105
- package/dist/cjs/base/adapters/node/middlewares/templates.js +0 -65
- package/dist/cjs/base/adapters/node/node.js +0 -121
- package/dist/cjs/base/adapters/node/polyfills/index.js +0 -24
- package/dist/cjs/base/adapters/node/polyfills/install.js +0 -57
- package/dist/cjs/base/adapters/node/polyfills/stream.js +0 -159
- package/dist/cjs/base/constants.js +0 -55
- package/dist/cjs/base/index.js +0 -73
- package/dist/cjs/base/middlewares/customServer/base.js +0 -115
- package/dist/cjs/base/middlewares/customServer/context.js +0 -78
- package/dist/cjs/base/middlewares/customServer/index.js +0 -138
- package/dist/cjs/base/middlewares/customServer/routerApi.js +0 -48
- package/dist/cjs/base/middlewares/customServer/template.js +0 -60
- package/dist/cjs/base/middlewares/dataHandler.js +0 -69
- package/dist/cjs/base/middlewares/faviconFallback.js +0 -34
- package/dist/cjs/base/middlewares/index.js +0 -28
- package/dist/cjs/base/middlewares/monitor.js +0 -75
- package/dist/cjs/base/middlewares/renderHandler/index.js +0 -92
- package/dist/cjs/base/middlewares/renderHandler/render.js +0 -90
- package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +0 -43
- package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -173
- package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +0 -183
- package/dist/cjs/base/serverBase.js +0 -167
- 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 -40
- package/dist/cjs/base/utils/middlewareCollector.js +0 -54
- package/dist/cjs/base/utils/path.js +0 -46
- package/dist/cjs/base/utils/request.js +0 -65
- package/dist/cjs/base/utils/serverConfig.js +0 -71
- package/dist/cjs/base/utils/transformStream.js +0 -38
- package/dist/cjs/base/utils/warmup.js +0 -43
- package/dist/cjs/core/hono.js +0 -16
- package/dist/cjs/core/index.js +0 -24
- package/dist/cjs/core/render.js +0 -16
- package/dist/cjs/core/server.js +0 -22
- package/dist/esm/base/adapters/node/bff.js +0 -45
- package/dist/esm/base/adapters/node/hono.js +0 -37
- package/dist/esm/base/adapters/node/index.js +0 -6
- package/dist/esm/base/adapters/node/loadServer.js +0 -22
- package/dist/esm/base/adapters/node/middlewares/index.js +0 -3
- package/dist/esm/base/adapters/node/middlewares/mock.js +0 -79
- package/dist/esm/base/adapters/node/middlewares/serverStatic.js +0 -71
- package/dist/esm/base/adapters/node/middlewares/templates.js +0 -31
- package/dist/esm/base/adapters/node/node.js +0 -95
- package/dist/esm/base/adapters/node/polyfills/index.js +0 -2
- package/dist/esm/base/adapters/node/polyfills/install.js +0 -33
- package/dist/esm/base/adapters/node/polyfills/stream.js +0 -132
- package/dist/esm/base/constants.js +0 -29
- package/dist/esm/base/index.js +0 -32
- package/dist/esm/base/middlewares/customServer/base.js +0 -91
- package/dist/esm/base/middlewares/customServer/context.js +0 -51
- package/dist/esm/base/middlewares/customServer/index.js +0 -114
- package/dist/esm/base/middlewares/customServer/routerApi.js +0 -24
- package/dist/esm/base/middlewares/customServer/template.js +0 -36
- package/dist/esm/base/middlewares/dataHandler.js +0 -35
- package/dist/esm/base/middlewares/faviconFallback.js +0 -10
- package/dist/esm/base/middlewares/index.js +0 -4
- package/dist/esm/base/middlewares/monitor.js +0 -49
- package/dist/esm/base/middlewares/renderHandler/index.js +0 -67
- package/dist/esm/base/middlewares/renderHandler/render.js +0 -66
- package/dist/esm/base/middlewares/renderHandler/serverTiming.js +0 -19
- package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -149
- package/dist/esm/base/middlewares/renderHandler/ssrRender.js +0 -149
- package/dist/esm/base/serverBase.js +0 -143
- 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 -41
- package/dist/esm/base/utils/index.js +0 -10
- package/dist/esm/base/utils/middlewareCollector.js +0 -29
- package/dist/esm/base/utils/path.js +0 -12
- package/dist/esm/base/utils/request.js +0 -38
- package/dist/esm/base/utils/serverConfig.js +0 -35
- package/dist/esm/base/utils/transformStream.js +0 -14
- package/dist/esm/base/utils/warmup.js +0 -9
- package/dist/esm/core/hono.js +0 -0
- package/dist/esm/core/index.js +0 -2
- package/dist/esm/core/render.js +0 -0
- package/dist/esm/core/server.js +0 -1
- package/dist/types/base/adapters/node/bff.d.ts +0 -4
- package/dist/types/base/adapters/node/hono.d.ts +0 -30
- 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 -3
- package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
- package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -9
- package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -3
- 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 -23
- package/dist/types/base/index.d.ts +0 -9
- 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/dataHandler.d.ts +0 -3
- package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
- package/dist/types/base/middlewares/index.d.ts +0 -4
- package/dist/types/base/middlewares/monitor.d.ts +0 -7
- 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 -17
- package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +0 -18
- package/dist/types/base/serverBase.d.ts +0 -49
- 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 -10
- package/dist/types/base/utils/middlewareCollector.d.ts +0 -12
- package/dist/types/base/utils/path.d.ts +0 -3
- 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 -2
- 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 -2
- package/dist/types/core/render.d.ts +0 -11
- package/dist/types/core/server.d.ts +0 -71
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var warmup_exports = {};
|
|
30
|
-
__export(warmup_exports, {
|
|
31
|
-
warmup: () => warmup
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(warmup_exports);
|
|
34
|
-
function warmup(bundles) {
|
|
35
|
-
bundles.forEach((bundle) => {
|
|
36
|
-
bundle && Promise.resolve().then(() => __toESM(require(bundle))).catch((_) => {
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
-
0 && (module.exports = {
|
|
42
|
-
warmup
|
|
43
|
-
});
|
package/dist/cjs/core/hono.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var hono_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(hono_exports);
|
package/dist/cjs/core/index.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
-
var core_exports = {};
|
|
17
|
-
module.exports = __toCommonJS(core_exports);
|
|
18
|
-
__reExport(core_exports, require("./plugin"), module.exports);
|
|
19
|
-
__reExport(core_exports, require("./loadPlugins"), module.exports);
|
|
20
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
-
0 && (module.exports = {
|
|
22
|
-
...require("./plugin"),
|
|
23
|
-
...require("./loadPlugins")
|
|
24
|
-
});
|
package/dist/cjs/core/render.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var render_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(render_exports);
|
package/dist/cjs/core/server.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
-
var server_exports = {};
|
|
17
|
-
module.exports = __toCommonJS(server_exports);
|
|
18
|
-
__reExport(server_exports, require("./hono"), module.exports);
|
|
19
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
20
|
-
0 && (module.exports = {
|
|
21
|
-
...require("./hono")
|
|
22
|
-
});
|
|
@@ -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
|
-
const renderHandler = getRenderHandler(options);
|
|
18
|
-
if (webOnly) {
|
|
19
|
-
handler = async (c, next) => {
|
|
20
|
-
c.body("");
|
|
21
|
-
await next();
|
|
22
|
-
};
|
|
23
|
-
} else {
|
|
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,37 +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
|
-
await handler(req, res);
|
|
7
|
-
if (res.headersSent) {
|
|
8
|
-
context.finalized = true;
|
|
9
|
-
} else {
|
|
10
|
-
await next();
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
const noop = () => {
|
|
15
|
-
};
|
|
16
|
-
const connectMid2HonoMid = (handler) => {
|
|
17
|
-
return async (context, next) => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
const { req, res } = context.env.node;
|
|
20
|
-
if (handler.length < 3) {
|
|
21
|
-
resolve(handler(req, res, noop));
|
|
22
|
-
} else {
|
|
23
|
-
handler(req, res, (err) => {
|
|
24
|
-
if (err) {
|
|
25
|
-
reject(err);
|
|
26
|
-
} else {
|
|
27
|
-
resolve(next());
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
export {
|
|
35
|
-
connectMid2HonoMid,
|
|
36
|
-
httpCallBack2HonoMid
|
|
37
|
-
};
|
|
@@ -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,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,71 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { existsSync, lstatSync } from "fs";
|
|
3
|
-
import { readFile } from "fs/promises";
|
|
4
|
-
import { getMimeType } from "hono/utils/mime";
|
|
5
|
-
import { createErrorHtml } from "../../../utils";
|
|
6
|
-
function createStaticMiddleware(options) {
|
|
7
|
-
const { pwd } = options;
|
|
8
|
-
const prefix = options.output.assetPrefix || "/";
|
|
9
|
-
const { distPath: { css: cssPath, js: jsPath, media: mediaPath } = {} } = options.output;
|
|
10
|
-
const { favicon, faviconByEntries } = options.html;
|
|
11
|
-
const favicons = prepareFavicons(favicon, faviconByEntries);
|
|
12
|
-
const staticFiles = [
|
|
13
|
-
cssPath,
|
|
14
|
-
jsPath,
|
|
15
|
-
mediaPath
|
|
16
|
-
].filter((v) => Boolean(v));
|
|
17
|
-
const staticReg = [
|
|
18
|
-
"static/",
|
|
19
|
-
"upload/",
|
|
20
|
-
...staticFiles
|
|
21
|
-
];
|
|
22
|
-
const iconReg = [
|
|
23
|
-
"favicon.ico",
|
|
24
|
-
"icon.png",
|
|
25
|
-
...favicons
|
|
26
|
-
];
|
|
27
|
-
const regPrefix = prefix.endsWith("/") ? prefix : `${prefix}/`;
|
|
28
|
-
const staticPathRegExp = new RegExp(`^${regPrefix}(${[
|
|
29
|
-
...staticReg,
|
|
30
|
-
...iconReg
|
|
31
|
-
].join("|")})`);
|
|
32
|
-
return async (c, next) => {
|
|
33
|
-
const pathname = c.req.path;
|
|
34
|
-
const hit = staticPathRegExp.test(pathname);
|
|
35
|
-
if (hit) {
|
|
36
|
-
const filepath = path.resolve(pwd, pathname.replace(prefix, () => ""));
|
|
37
|
-
if (!existsSync(filepath)) {
|
|
38
|
-
return c.html(createErrorHtml(404), 404);
|
|
39
|
-
}
|
|
40
|
-
const mimeType = getMimeType(filepath);
|
|
41
|
-
if (mimeType) {
|
|
42
|
-
c.header("Content-Type", mimeType);
|
|
43
|
-
}
|
|
44
|
-
const stat = lstatSync(filepath);
|
|
45
|
-
const { size } = stat;
|
|
46
|
-
const chunk = await readFile(filepath);
|
|
47
|
-
c.header("Content-Length", String(size));
|
|
48
|
-
return c.body(chunk, 200);
|
|
49
|
-
} else {
|
|
50
|
-
return next();
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const prepareFavicons = (favicon, faviconByEntries) => {
|
|
55
|
-
const faviconNames = [];
|
|
56
|
-
if (favicon) {
|
|
57
|
-
faviconNames.push(favicon.substring(favicon.lastIndexOf("/") + 1));
|
|
58
|
-
}
|
|
59
|
-
if (faviconByEntries) {
|
|
60
|
-
Object.keys(faviconByEntries).forEach((f) => {
|
|
61
|
-
const curFavicon = faviconByEntries[f];
|
|
62
|
-
if (curFavicon) {
|
|
63
|
-
faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf("/") + 1));
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return faviconNames;
|
|
68
|
-
};
|
|
69
|
-
export {
|
|
70
|
-
createStaticMiddleware
|
|
71
|
-
};
|
|
@@ -1,31 +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 createInjectHtml(pwd, routes) {
|
|
21
|
-
return async (c, next) => {
|
|
22
|
-
if (c.req.method.toUpperCase() === "GET" && !c.get("templates") && routes) {
|
|
23
|
-
const templates = await getHtmlTemplates(pwd, routes);
|
|
24
|
-
c.set("templates", templates);
|
|
25
|
-
}
|
|
26
|
-
return next();
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export {
|
|
30
|
-
createInjectHtml
|
|
31
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { createServer, ServerResponse } from "node:http";
|
|
2
|
-
import { writeReadableStreamToWritable } from "./polyfills/stream";
|
|
3
|
-
import { installGlobals } from "./polyfills/install";
|
|
4
|
-
installGlobals();
|
|
5
|
-
const createWebRequest = (req, res) => {
|
|
6
|
-
const headerRecord = [];
|
|
7
|
-
const len = req.rawHeaders.length;
|
|
8
|
-
for (let i = 0; i < len; i += 2) {
|
|
9
|
-
headerRecord.push([
|
|
10
|
-
req.rawHeaders[i],
|
|
11
|
-
req.rawHeaders[i + 1]
|
|
12
|
-
]);
|
|
13
|
-
}
|
|
14
|
-
const { method } = req;
|
|
15
|
-
const controller = new AbortController();
|
|
16
|
-
const init = {
|
|
17
|
-
method,
|
|
18
|
-
headers: headerRecord,
|
|
19
|
-
signal: controller.signal
|
|
20
|
-
};
|
|
21
|
-
res.on("close", () => controller.abort());
|
|
22
|
-
const url = `http://${req.headers.host}${req.url}`;
|
|
23
|
-
const request = new Request(url, init);
|
|
24
|
-
return request;
|
|
25
|
-
};
|
|
26
|
-
const sendResponse = async (response, res) => {
|
|
27
|
-
var _response_headers_get;
|
|
28
|
-
res.statusMessage = response.statusText;
|
|
29
|
-
res.statusCode = response.status;
|
|
30
|
-
const cookies = [];
|
|
31
|
-
for (const [key, value] of response.headers.entries()) {
|
|
32
|
-
if (key === "set-cookie") {
|
|
33
|
-
cookies.push(value);
|
|
34
|
-
} else {
|
|
35
|
-
res.setHeader(key, value);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (cookies.length > 0) {
|
|
39
|
-
res.setHeader("set-cookie", cookies);
|
|
40
|
-
}
|
|
41
|
-
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) {
|
|
42
|
-
res.flushHeaders();
|
|
43
|
-
}
|
|
44
|
-
if (response.body) {
|
|
45
|
-
await writeReadableStreamToWritable(response.body, res);
|
|
46
|
-
} else {
|
|
47
|
-
res.end();
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const handleResponseError = (e, res) => {
|
|
51
|
-
const err = e instanceof Error ? e : new Error("unknown error", {
|
|
52
|
-
cause: e
|
|
53
|
-
});
|
|
54
|
-
if (err.code === "ERR_STREAM_PREMATURE_CLOSE") {
|
|
55
|
-
console.info("The user aborted a request.");
|
|
56
|
-
} else {
|
|
57
|
-
console.error(e);
|
|
58
|
-
if (!res.headersSent) {
|
|
59
|
-
res.writeHead(500, {
|
|
60
|
-
"Content-Type": "text/plain"
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
res.end(`Error: ${err.message}`);
|
|
64
|
-
res.destroy(err);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const getRequestListener = (handler) => {
|
|
68
|
-
return async (req, res) => {
|
|
69
|
-
try {
|
|
70
|
-
const request = createWebRequest(req, res);
|
|
71
|
-
const response = await handler(request, {
|
|
72
|
-
node: {
|
|
73
|
-
req,
|
|
74
|
-
res
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
if (!res.headersSent && !response.res) {
|
|
78
|
-
await sendResponse(response, res);
|
|
79
|
-
}
|
|
80
|
-
} catch (error) {
|
|
81
|
-
return handleResponseError(error, res);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
const createNodeServer = (handleRequest) => {
|
|
86
|
-
const requestListener = getRequestListener(handleRequest);
|
|
87
|
-
const nodeServer = createServer(requestListener);
|
|
88
|
-
nodeServer.getRequestHandler = () => requestListener;
|
|
89
|
-
return nodeServer;
|
|
90
|
-
};
|
|
91
|
-
export {
|
|
92
|
-
createNodeServer,
|
|
93
|
-
createWebRequest,
|
|
94
|
-
sendResponse
|
|
95
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Request as NodeRequest, Response as NodeResponse, Headers as NodeHeaders } from "@web-std/fetch";
|
|
2
|
-
import { TransformStream as NodeTransformStream, ReadableStream as NodeReadableStream } from "@web-std/stream";
|
|
3
|
-
Object.defineProperty(NodeHeaders.prototype, "getSetCookie", {
|
|
4
|
-
value: function getSetCookie() {
|
|
5
|
-
const cookies = [];
|
|
6
|
-
this.forEach((value, name) => {
|
|
7
|
-
if (name.toLowerCase() === "set-cookie") {
|
|
8
|
-
cookies.push(value);
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
return cookies;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
const installGlobals = () => {
|
|
15
|
-
if (!global.Headers) {
|
|
16
|
-
global.Headers = NodeHeaders;
|
|
17
|
-
}
|
|
18
|
-
if (!global.Request) {
|
|
19
|
-
global.Request = NodeRequest;
|
|
20
|
-
}
|
|
21
|
-
if (!global.Response) {
|
|
22
|
-
global.Response = NodeResponse;
|
|
23
|
-
}
|
|
24
|
-
if (!global.TransformStream) {
|
|
25
|
-
global.TransformStream = NodeTransformStream;
|
|
26
|
-
}
|
|
27
|
-
if (!global.ReadableStream) {
|
|
28
|
-
global.ReadableStream = NodeReadableStream;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
export {
|
|
32
|
-
installGlobals
|
|
33
|
-
};
|