@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,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
- });
@@ -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);
@@ -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
- });
@@ -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);
@@ -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,6 +0,0 @@
1
- export * from "./loadServer";
2
- export * from "./hono";
3
- export * from "./node";
4
- export * from "./bff";
5
- export * from "./middlewares";
6
- export * from "./polyfills";
@@ -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,3 +0,0 @@
1
- export * from "./mock";
2
- export * from "./serverStatic";
3
- export * from "./templates";
@@ -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,2 +0,0 @@
1
- export * from "./install";
2
- export * from "./stream";
@@ -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
- };