@modern-js/prod-server 2.46.1 → 2.47.1-alpha.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 (169) hide show
  1. package/README.md +20 -16
  2. package/dist/cjs/{libs/hook-api/route.js → error.js} +16 -25
  3. package/dist/cjs/index.js +46 -24
  4. package/dist/esm/error.js +15 -0
  5. package/dist/esm/index.js +105 -19
  6. package/dist/esm-node/error.js +14 -0
  7. package/dist/esm-node/index.js +44 -17
  8. package/dist/types/error.d.ts +6 -0
  9. package/dist/types/index.d.ts +21 -11
  10. package/package.json +19 -93
  11. package/dist/cjs/constants.js +0 -72
  12. package/dist/cjs/libs/context/context.js +0 -240
  13. package/dist/cjs/libs/context/index.js +0 -31
  14. package/dist/cjs/libs/hook-api/afterRenderForStream.js +0 -34
  15. package/dist/cjs/libs/hook-api/base.js +0 -107
  16. package/dist/cjs/libs/hook-api/index.js +0 -85
  17. package/dist/cjs/libs/hook-api/index.worker.js +0 -119
  18. package/dist/cjs/libs/hook-api/template.js +0 -74
  19. package/dist/cjs/libs/hook-api/templateForStream.js +0 -52
  20. package/dist/cjs/libs/loadConfig.js +0 -70
  21. package/dist/cjs/libs/metrics.js +0 -33
  22. package/dist/cjs/libs/preload/flushServerHeader.js +0 -49
  23. package/dist/cjs/libs/preload/index.js +0 -24
  24. package/dist/cjs/libs/preload/parseLinks.js +0 -124
  25. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +0 -52
  26. package/dist/cjs/libs/preload/transformLinks2String.js +0 -150
  27. package/dist/cjs/libs/proxy.js +0 -99
  28. package/dist/cjs/libs/render/index.js +0 -97
  29. package/dist/cjs/libs/render/measure.js +0 -74
  30. package/dist/cjs/libs/render/ssr.js +0 -126
  31. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -56
  32. package/dist/cjs/libs/render/ssrCache/index.js +0 -81
  33. package/dist/cjs/libs/render/ssrCache/manager.js +0 -104
  34. package/dist/cjs/libs/render/static.js +0 -72
  35. package/dist/cjs/libs/render/type.js +0 -33
  36. package/dist/cjs/libs/render/utils.js +0 -41
  37. package/dist/cjs/libs/reporter.js +0 -39
  38. package/dist/cjs/libs/route/index.js +0 -85
  39. package/dist/cjs/libs/route/matcher.js +0 -117
  40. package/dist/cjs/libs/route/route.js +0 -49
  41. package/dist/cjs/libs/serveFile.js +0 -84
  42. package/dist/cjs/libs/serverTiming.js +0 -44
  43. package/dist/cjs/renderHtml.js +0 -72
  44. package/dist/cjs/server/index.js +0 -229
  45. package/dist/cjs/server/modernServer.js +0 -532
  46. package/dist/cjs/server/modernServerSplit.js +0 -67
  47. package/dist/cjs/type.js +0 -16
  48. package/dist/cjs/utils.js +0 -164
  49. package/dist/cjs/workerServer.js +0 -264
  50. package/dist/esm/constants.js +0 -43
  51. package/dist/esm/libs/context/context.js +0 -292
  52. package/dist/esm/libs/context/index.js +0 -8
  53. package/dist/esm/libs/hook-api/afterRenderForStream.js +0 -33
  54. package/dist/esm/libs/hook-api/base.js +0 -108
  55. package/dist/esm/libs/hook-api/index.js +0 -55
  56. package/dist/esm/libs/hook-api/index.worker.js +0 -113
  57. package/dist/esm/libs/hook-api/route.js +0 -41
  58. package/dist/esm/libs/hook-api/template.js +0 -84
  59. package/dist/esm/libs/hook-api/templateForStream.js +0 -35
  60. package/dist/esm/libs/loadConfig.js +0 -36
  61. package/dist/esm/libs/metrics.js +0 -9
  62. package/dist/esm/libs/preload/flushServerHeader.js +0 -50
  63. package/dist/esm/libs/preload/index.js +0 -2
  64. package/dist/esm/libs/preload/parseLinks.js +0 -172
  65. package/dist/esm/libs/preload/shouldFlushServerHeader.js +0 -27
  66. package/dist/esm/libs/preload/transformLinks2String.js +0 -140
  67. package/dist/esm/libs/proxy.js +0 -160
  68. package/dist/esm/libs/render/index.js +0 -142
  69. package/dist/esm/libs/render/measure.js +0 -69
  70. package/dist/esm/libs/render/ssr.js +0 -129
  71. package/dist/esm/libs/render/ssrCache/cacheMod.js +0 -33
  72. package/dist/esm/libs/render/ssrCache/index.js +0 -146
  73. package/dist/esm/libs/render/ssrCache/manager.js +0 -159
  74. package/dist/esm/libs/render/static.js +0 -100
  75. package/dist/esm/libs/render/type.js +0 -9
  76. package/dist/esm/libs/render/utils.js +0 -16
  77. package/dist/esm/libs/reporter.js +0 -15
  78. package/dist/esm/libs/route/index.js +0 -116
  79. package/dist/esm/libs/route/matcher.js +0 -128
  80. package/dist/esm/libs/route/route.js +0 -26
  81. package/dist/esm/libs/serveFile.js +0 -68
  82. package/dist/esm/libs/serverTiming.js +0 -30
  83. package/dist/esm/renderHtml.js +0 -150
  84. package/dist/esm/server/index.js +0 -426
  85. package/dist/esm/server/modernServer.js +0 -1018
  86. package/dist/esm/server/modernServerSplit.js +0 -138
  87. package/dist/esm/type.js +0 -0
  88. package/dist/esm/utils.js +0 -103
  89. package/dist/esm/workerServer.js +0 -347
  90. package/dist/esm-node/constants.js +0 -43
  91. package/dist/esm-node/libs/context/context.js +0 -206
  92. package/dist/esm-node/libs/context/index.js +0 -6
  93. package/dist/esm-node/libs/hook-api/afterRenderForStream.js +0 -10
  94. package/dist/esm-node/libs/hook-api/base.js +0 -72
  95. package/dist/esm-node/libs/hook-api/index.js +0 -57
  96. package/dist/esm-node/libs/hook-api/index.worker.js +0 -92
  97. package/dist/esm-node/libs/hook-api/route.js +0 -24
  98. package/dist/esm-node/libs/hook-api/template.js +0 -49
  99. package/dist/esm-node/libs/hook-api/templateForStream.js +0 -28
  100. package/dist/esm-node/libs/loadConfig.js +0 -34
  101. package/dist/esm-node/libs/metrics.js +0 -9
  102. package/dist/esm-node/libs/preload/flushServerHeader.js +0 -25
  103. package/dist/esm-node/libs/preload/index.js +0 -2
  104. package/dist/esm-node/libs/preload/parseLinks.js +0 -90
  105. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +0 -27
  106. package/dist/esm-node/libs/preload/transformLinks2String.js +0 -126
  107. package/dist/esm-node/libs/proxy.js +0 -74
  108. package/dist/esm-node/libs/render/index.js +0 -63
  109. package/dist/esm-node/libs/render/measure.js +0 -49
  110. package/dist/esm-node/libs/render/ssr.js +0 -92
  111. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -22
  112. package/dist/esm-node/libs/render/ssrCache/index.js +0 -57
  113. package/dist/esm-node/libs/render/ssrCache/manager.js +0 -80
  114. package/dist/esm-node/libs/render/static.js +0 -38
  115. package/dist/esm-node/libs/render/type.js +0 -9
  116. package/dist/esm-node/libs/render/utils.js +0 -16
  117. package/dist/esm-node/libs/reporter.js +0 -15
  118. package/dist/esm-node/libs/route/index.js +0 -60
  119. package/dist/esm-node/libs/route/matcher.js +0 -93
  120. package/dist/esm-node/libs/route/route.js +0 -25
  121. package/dist/esm-node/libs/serveFile.js +0 -49
  122. package/dist/esm-node/libs/serverTiming.js +0 -20
  123. package/dist/esm-node/renderHtml.js +0 -80
  124. package/dist/esm-node/server/index.js +0 -195
  125. package/dist/esm-node/server/modernServer.js +0 -498
  126. package/dist/esm-node/server/modernServerSplit.js +0 -43
  127. package/dist/esm-node/type.js +0 -0
  128. package/dist/esm-node/utils.js +0 -132
  129. package/dist/esm-node/workerServer.js +0 -239
  130. package/dist/types/constants.d.ts +0 -30
  131. package/dist/types/libs/context/context.d.ts +0 -62
  132. package/dist/types/libs/context/index.d.ts +0 -7
  133. package/dist/types/libs/hook-api/afterRenderForStream.d.ts +0 -4
  134. package/dist/types/libs/hook-api/base.d.ts +0 -53
  135. package/dist/types/libs/hook-api/index.d.ts +0 -6
  136. package/dist/types/libs/hook-api/index.worker.d.ts +0 -19
  137. package/dist/types/libs/hook-api/route.d.ts +0 -9
  138. package/dist/types/libs/hook-api/template.d.ts +0 -22
  139. package/dist/types/libs/hook-api/templateForStream.d.ts +0 -8
  140. package/dist/types/libs/loadConfig.d.ts +0 -13
  141. package/dist/types/libs/metrics.d.ts +0 -3
  142. package/dist/types/libs/preload/flushServerHeader.d.ts +0 -14
  143. package/dist/types/libs/preload/index.d.ts +0 -2
  144. package/dist/types/libs/preload/parseLinks.d.ts +0 -13
  145. package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +0 -3
  146. package/dist/types/libs/preload/transformLinks2String.d.ts +0 -3
  147. package/dist/types/libs/proxy.d.ts +0 -13
  148. package/dist/types/libs/render/index.d.ts +0 -21
  149. package/dist/types/libs/render/measure.d.ts +0 -10
  150. package/dist/types/libs/render/ssr.d.ts +0 -12
  151. package/dist/types/libs/render/ssrCache/cacheMod.d.ts +0 -8
  152. package/dist/types/libs/render/ssrCache/index.d.ts +0 -7
  153. package/dist/types/libs/render/ssrCache/manager.d.ts +0 -14
  154. package/dist/types/libs/render/static.d.ts +0 -3
  155. package/dist/types/libs/render/type.d.ts +0 -36
  156. package/dist/types/libs/render/utils.d.ts +0 -5
  157. package/dist/types/libs/reporter.d.ts +0 -2
  158. package/dist/types/libs/route/index.d.ts +0 -15
  159. package/dist/types/libs/route/matcher.d.ts +0 -15
  160. package/dist/types/libs/route/route.d.ts +0 -14
  161. package/dist/types/libs/serveFile.d.ts +0 -9
  162. package/dist/types/libs/serverTiming.d.ts +0 -13
  163. package/dist/types/renderHtml.d.ts +0 -23
  164. package/dist/types/server/index.d.ts +0 -55
  165. package/dist/types/server/modernServer.d.ts +0 -71
  166. package/dist/types/server/modernServerSplit.d.ts +0 -2
  167. package/dist/types/type.d.ts +0 -77
  168. package/dist/types/utils.d.ts +0 -24
  169. package/dist/types/workerServer.d.ts +0 -59
@@ -1,97 +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 render_exports = {};
30
- __export(render_exports, {
31
- createRenderHandler: () => createRenderHandler
32
- });
33
- module.exports = __toCommonJS(render_exports);
34
- var import_path = __toESM(require("path"));
35
- var import_utils = require("@modern-js/utils");
36
- var import_fileReader = require("@modern-js/runtime-utils/fileReader");
37
- var import_constants = require("../../constants");
38
- var import_shouldFlushServerHeader = require("../preload/shouldFlushServerHeader");
39
- var import_static = require("./static");
40
- var ssr = __toESM(require("./ssr"));
41
- var import_utils2 = require("./utils");
42
- const calcFallback = (metaName) => `x-${(0, import_utils.cutNameByHyphen)(metaName)}-ssr-fallback`;
43
- const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, ssrRender, metaName = "modern-js" }) => async function render({ ctx, route, runner }) {
44
- if (ctx.resHasHandled()) {
45
- return null;
46
- }
47
- const { entryPath, urlPath } = route;
48
- const entry = import_path.default.join(distDir, entryPath);
49
- if (!route.isSPA) {
50
- const result = await (0, import_static.handleDirectory)(ctx, entry, urlPath);
51
- return result;
52
- }
53
- const templatePath = entry;
54
- const content = await import_fileReader.fileReader.readFile(templatePath);
55
- if (!content) {
56
- return null;
57
- }
58
- const useCSR = forceCSR && (ctx.query.csr || ctx.headers[calcFallback(metaName)]);
59
- if (route.isSSR && !useCSR) {
60
- try {
61
- const userAgent = ctx.getReqHeader("User-Agent");
62
- const disablePreload = Boolean(ctx.headers[`x-${(0, import_utils.cutNameByHyphen)(metaName)}-disable-preload`]);
63
- if ((0, import_shouldFlushServerHeader.shouldFlushServerHeader)(conf.server, userAgent, disablePreload)) {
64
- const { flushServerHeader } = await Promise.resolve().then(() => __toESM(require("../preload")));
65
- flushServerHeader({
66
- serverConf: conf.server,
67
- ctx,
68
- distDir,
69
- template: content.toString(),
70
- headers: {
71
- "Content-Type": import_utils.mime.contentType(import_path.default.extname(templatePath))
72
- }
73
- });
74
- }
75
- const ssrRenderOptions = {
76
- distDir,
77
- route,
78
- template: content.toString(),
79
- staticGenerate,
80
- nonce
81
- };
82
- const result = await (ssrRender ? ssrRender(ctx, ssrRenderOptions, runner) : ssr.render(ctx, ssrRenderOptions, runner));
83
- return result;
84
- } catch (err) {
85
- ctx.error(import_constants.ERROR_DIGEST.ERENDER, err.stack || err.message);
86
- ctx.res.set(calcFallback(metaName), "1");
87
- }
88
- }
89
- return {
90
- content: route.entryName ? (0, import_utils2.injectServerData)(content.toString(), ctx) : content,
91
- contentType: import_utils.mime.contentType(import_path.default.extname(templatePath))
92
- };
93
- };
94
- // Annotate the CommonJS export names for ESM import in node:
95
- 0 && (module.exports = {
96
- createRenderHandler
97
- });
@@ -1,74 +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 __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var measure_exports = {};
20
- __export(measure_exports, {
21
- createLogger: () => createLogger,
22
- createMetrics: () => createMetrics
23
- });
24
- module.exports = __toCommonJS(measure_exports);
25
- var import_utils = require("../../utils");
26
- const createMetrics = (context, metrics) => {
27
- const { entryName: entry, request } = context;
28
- const { pathname = "" } = request || {};
29
- const emitTimer = (name, cost, tags = {}) => {
30
- metrics.emitTimer(name, cost, void 0, {
31
- ...tags,
32
- pathname,
33
- entry
34
- });
35
- };
36
- const emitCounter = (name, counter, tags = {}) => {
37
- metrics.emitCounter(name, counter, void 0, {
38
- ...tags,
39
- pathname,
40
- entry
41
- });
42
- };
43
- return {
44
- emitTimer,
45
- emitCounter
46
- };
47
- };
48
- const createLogger = (serverContext, logger) => {
49
- const request = serverContext.request || {};
50
- const { headers = {}, pathname = "" } = request;
51
- const debug = (message, ...args) => {
52
- logger.debug(`SSR Debug - ${message}, req.url = %s`, ...args, pathname);
53
- };
54
- const info = (message, ...args) => {
55
- logger.info(`SSR Info - ${message}, req.url = %s`, ...args, pathname);
56
- };
57
- const error = (message, e) => {
58
- if (!e) {
59
- e = message;
60
- message = "";
61
- }
62
- logger.error(`SSR Error - ${message}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, pathname, (0, import_utils.headersWithoutCookie)(headers));
63
- };
64
- return {
65
- error,
66
- info,
67
- debug
68
- };
69
- };
70
- // Annotate the CommonJS export names for ESM import in node:
71
- 0 && (module.exports = {
72
- createLogger,
73
- createMetrics
74
- });
@@ -1,126 +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 ssr_exports = {};
30
- __export(ssr_exports, {
31
- render: () => render
32
- });
33
- module.exports = __toCommonJS(ssr_exports);
34
- var import_path = __toESM(require("path"));
35
- var import_utils = require("@modern-js/utils");
36
- var isbot = __toESM(require("isbot"));
37
- var import_hook_api = require("../hook-api");
38
- var import_afterRenderForStream = require("../hook-api/afterRenderForStream");
39
- var import_measure = require("./measure");
40
- var import_utils2 = require("./utils");
41
- var import_ssrCache = require("./ssrCache");
42
- const render = async (ctx, renderOptions, runner) => {
43
- var _ctx_res;
44
- const { distDir, route, template, staticGenerate, enableUnsafeCtx = false, nonce } = renderOptions;
45
- const { urlPath, bundle, entryName } = route;
46
- const bundleJS = import_path.default.join(distDir, bundle);
47
- const loadableUri = import_path.default.join(distDir, import_utils.LOADABLE_STATS_FILE);
48
- const loadableStats = import_utils.fs.existsSync(loadableUri) ? require(loadableUri) : "";
49
- const routesManifestUri = import_path.default.join(distDir, import_utils.ROUTE_MANIFEST_FILE);
50
- const routeManifest = import_utils.fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
51
- const isSpider = isbot.default(ctx.headers["user-agent"] || null);
52
- const context = {
53
- request: {
54
- baseUrl: urlPath,
55
- params: ctx.params,
56
- pathname: ctx.path,
57
- host: ctx.host,
58
- query: ctx.query,
59
- url: ctx.href,
60
- headers: ctx.headers
61
- },
62
- response: {
63
- setHeader: (key, value) => {
64
- return ctx.res.setHeader(key, value);
65
- },
66
- status: (code) => {
67
- ctx.res.statusCode = code;
68
- },
69
- locals: ((_ctx_res = ctx.res) === null || _ctx_res === void 0 ? void 0 : _ctx_res.locals) || {}
70
- },
71
- redirection: {},
72
- template,
73
- loadableStats,
74
- routeManifest,
75
- entryName,
76
- staticGenerate,
77
- logger: void 0,
78
- metrics: void 0,
79
- reporter: ctx.reporter,
80
- serverTiming: ctx.serverTiming,
81
- req: ctx.req,
82
- res: ctx.res,
83
- enableUnsafeCtx,
84
- isSpider,
85
- nonce
86
- };
87
- context.logger = (0, import_measure.createLogger)(context, ctx.logger);
88
- context.metrics = (0, import_measure.createMetrics)(context, ctx.metrics);
89
- runner.extendSSRContext(context);
90
- const bundleJSContent = await Promise.resolve(require(bundleJS));
91
- const serverRender = bundleJSContent[import_utils.SERVER_RENDER_FUNCTION_NAME];
92
- const content = await (0, import_ssrCache.ssrCache)(ctx.req, serverRender, context);
93
- const { url, status = 302 } = context.redirection;
94
- if (url) {
95
- return {
96
- content: url,
97
- contentType: "",
98
- statusCode: status,
99
- redirect: true
100
- };
101
- }
102
- if (typeof content === "string") {
103
- return {
104
- content: (0, import_utils2.injectServerData)(content, ctx),
105
- contentType: import_utils.mime.contentType("html")
106
- };
107
- } else {
108
- let contentStream = (0, import_utils2.injectServerDataStream)(content, ctx);
109
- const afterStreamingRenderContext = (0, import_hook_api.createAfterStreamingRenderContext)(ctx, route);
110
- contentStream = contentStream.pipe((0, import_afterRenderForStream.afterRenderInjectableStream)((chunk) => {
111
- const context2 = afterStreamingRenderContext(chunk);
112
- return runner.afterStreamingRender(context2, {
113
- onLast: ({ chunk: chunk2 }) => chunk2
114
- });
115
- }));
116
- return {
117
- content: "",
118
- contentStream,
119
- contentType: import_utils.mime.contentType("html")
120
- };
121
- }
122
- };
123
- // Annotate the CommonJS export names for ESM import in node:
124
- 0 && (module.exports = {
125
- render
126
- });
@@ -1,56 +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 cacheMod_exports = {};
30
- __export(cacheMod_exports, {
31
- cacheMod: () => cacheMod
32
- });
33
- module.exports = __toCommonJS(cacheMod_exports);
34
- var import_define_property = require("@swc/helpers/_/_define_property");
35
- var import_path = __toESM(require("path"));
36
- var import_utils = require("@modern-js/utils");
37
- const CACHE_FILENAME = "cache";
38
- class ServerCacheMod {
39
- loadServerCacheMod(pwd = process.cwd()) {
40
- const serverCacheFilepath = import_path.default.resolve(pwd, import_utils.SERVER_DIR, CACHE_FILENAME);
41
- const mod = (0, import_utils.requireExistModule)(serverCacheFilepath, {
42
- interop: false
43
- });
44
- this.customContainer = mod === null || mod === void 0 ? void 0 : mod.customContainer;
45
- this.cacheOption = mod === null || mod === void 0 ? void 0 : mod.cacheOption;
46
- }
47
- constructor() {
48
- (0, import_define_property._)(this, "customContainer", void 0);
49
- (0, import_define_property._)(this, "cacheOption", void 0);
50
- }
51
- }
52
- const cacheMod = new ServerCacheMod();
53
- // Annotate the CommonJS export names for ESM import in node:
54
- 0 && (module.exports = {
55
- cacheMod
56
- });
@@ -1,81 +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 __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ssrCache_exports = {};
20
- __export(ssrCache_exports, {
21
- ssrCache: () => ssrCache
22
- });
23
- module.exports = __toCommonJS(ssrCache_exports);
24
- var import_stream = require("stream");
25
- var import_storer = require("@modern-js/runtime-utils/storer");
26
- var import_cacheMod = require("./cacheMod");
27
- var import_manager = require("./manager");
28
- const cacheStorage = (0, import_storer.createMemoryStorage)("__ssr__cache");
29
- async function ssrCache(req, render, ssrContext) {
30
- const { customContainer, cacheOption } = import_cacheMod.cacheMod;
31
- const cacheControl = await matchCacheControl(req, cacheOption);
32
- const cacheManager = new import_manager.CacheManager(customContainer ? customContainer : cacheStorage);
33
- if (cacheControl) {
34
- return cacheManager.getCacheResult(req, cacheControl, render, ssrContext);
35
- } else {
36
- const renderResult = await render(ssrContext);
37
- if (typeof renderResult === "string") {
38
- return renderResult;
39
- } else {
40
- const stream = new import_stream.Transform({
41
- write(chunk, _, callback) {
42
- this.push(chunk);
43
- callback();
44
- }
45
- });
46
- return renderResult(stream);
47
- }
48
- }
49
- }
50
- async function matchCacheControl(req, cacheOption) {
51
- if (!cacheOption) {
52
- return void 0;
53
- } else if (isCacheControl(cacheOption)) {
54
- return cacheOption;
55
- } else if (isCacheOptionProvider(cacheOption)) {
56
- return cacheOption(req);
57
- } else {
58
- const url = req.url;
59
- const options = Object.entries(cacheOption);
60
- for (const [key, option] of options) {
61
- if (key === "*" || new RegExp(key).test(url)) {
62
- if (typeof option === "function") {
63
- return option(req);
64
- } else {
65
- return option;
66
- }
67
- }
68
- }
69
- return void 0;
70
- }
71
- function isCacheOptionProvider(option) {
72
- return typeof option === "function";
73
- }
74
- function isCacheControl(option) {
75
- return typeof option === "object" && option !== null && "maxAge" in option;
76
- }
77
- }
78
- // Annotate the CommonJS export names for ESM import in node:
79
- 0 && (module.exports = {
80
- ssrCache
81
- });
@@ -1,104 +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 __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var manager_exports = {};
20
- __export(manager_exports, {
21
- CacheManager: () => CacheManager
22
- });
23
- module.exports = __toCommonJS(manager_exports);
24
- var import_define_property = require("@swc/helpers/_/_define_property");
25
- var import_stream = require("stream");
26
- class CacheManager {
27
- async getCacheResult(req, cacheControl, render, ssrContext) {
28
- const key = this.computedKey(req, cacheControl);
29
- const value = await this.container.get(key);
30
- const { maxAge, staleWhileRevalidate } = cacheControl;
31
- const ttl = maxAge + staleWhileRevalidate;
32
- if (value) {
33
- const cache = JSON.parse(value);
34
- const interval = Date.now() - cache.cursor;
35
- if (interval <= maxAge) {
36
- return cache.val;
37
- } else if (interval <= staleWhileRevalidate + maxAge) {
38
- this.processCache(key, render, ssrContext, ttl);
39
- return cache.val;
40
- } else {
41
- return this.processCache(key, render, ssrContext, ttl);
42
- }
43
- } else {
44
- return this.processCache(key, render, ssrContext, ttl);
45
- }
46
- }
47
- async processCache(key, render, ssrContext, ttl) {
48
- const renderResult = await render(ssrContext);
49
- if (typeof renderResult === "string") {
50
- const current = Date.now();
51
- const cache = {
52
- val: renderResult,
53
- cursor: current
54
- };
55
- await this.container.set(key, JSON.stringify(cache), {
56
- ttl
57
- });
58
- return renderResult;
59
- } else {
60
- let html;
61
- const stream = new import_stream.Transform({
62
- write(chunk, _, callback) {
63
- html += chunk.toString();
64
- this.push(chunk);
65
- callback();
66
- }
67
- });
68
- stream.on("close", () => {
69
- const current = Date.now();
70
- const cache = {
71
- val: html,
72
- cursor: current
73
- };
74
- this.container.set(key, JSON.stringify(cache), {
75
- ttl
76
- });
77
- });
78
- return renderResult(stream);
79
- }
80
- }
81
- computedKey(req, cacheControl) {
82
- const { url } = req;
83
- const [pathname] = url.split("?");
84
- const { customKey } = cacheControl;
85
- const defaultKey = pathname.replace(/.+\/+$/, "");
86
- if (customKey) {
87
- if (typeof customKey === "string") {
88
- return customKey;
89
- } else {
90
- return customKey(defaultKey);
91
- }
92
- } else {
93
- return defaultKey;
94
- }
95
- }
96
- constructor(container) {
97
- (0, import_define_property._)(this, "container", void 0);
98
- this.container = container;
99
- }
100
- }
101
- // Annotate the CommonJS export names for ESM import in node:
102
- 0 && (module.exports = {
103
- CacheManager
104
- });
@@ -1,72 +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 static_exports = {};
30
- __export(static_exports, {
31
- handleDirectory: () => handleDirectory
32
- });
33
- module.exports = __toCommonJS(static_exports);
34
- var import_path = __toESM(require("path"));
35
- var import_utils = require("@modern-js/utils");
36
- var import_fileReader = require("@modern-js/runtime-utils/fileReader");
37
- async function handleDirectory(ctx, entryPath, urlPath) {
38
- const { path: pathname } = ctx;
39
- const filepath = import_path.default.join(entryPath, trimLeft(pathname, urlPath));
40
- let content = await import_fileReader.fileReader.readFile(filepath);
41
- let contentType = import_utils.mime.contentType(import_path.default.extname(filepath) || "");
42
- if (!content) {
43
- if (pathname.endsWith("/")) {
44
- content = await import_fileReader.fileReader.readFile(`${filepath}index.html`);
45
- } else if (!pathname.includes(".")) {
46
- content = await import_fileReader.fileReader.readFile(`${filepath}.html`);
47
- if (!content) {
48
- content = await import_fileReader.fileReader.readFile(`${filepath}/index.html`);
49
- }
50
- }
51
- if (content) {
52
- contentType = import_utils.mime.contentType("html");
53
- }
54
- }
55
- if (!content) {
56
- return null;
57
- }
58
- return {
59
- content,
60
- contentType: contentType || ""
61
- };
62
- }
63
- const trimLeft = (str, prefix) => {
64
- if (str.startsWith(prefix)) {
65
- return str.substring(prefix.length);
66
- }
67
- return str;
68
- };
69
- // Annotate the CommonJS export names for ESM import in node:
70
- 0 && (module.exports = {
71
- handleDirectory
72
- });
@@ -1,33 +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 __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var type_exports = {};
20
- __export(type_exports, {
21
- RenderLevel: () => RenderLevel
22
- });
23
- module.exports = __toCommonJS(type_exports);
24
- var RenderLevel;
25
- (function(RenderLevel2) {
26
- RenderLevel2[RenderLevel2["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
27
- RenderLevel2[RenderLevel2["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
28
- RenderLevel2[RenderLevel2["SERVER_RENDER"] = 2] = "SERVER_RENDER";
29
- })(RenderLevel || (RenderLevel = {}));
30
- // Annotate the CommonJS export names for ESM import in node:
31
- 0 && (module.exports = {
32
- RenderLevel
33
- });
@@ -1,41 +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 __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var utils_exports = {};
20
- __export(utils_exports, {
21
- injectServerData: () => injectServerData,
22
- injectServerDataStream: () => injectServerDataStream
23
- });
24
- module.exports = __toCommonJS(utils_exports);
25
- var import_template = require("../hook-api/template");
26
- var import_templateForStream = require("../hook-api/templateForStream");
27
- const injectServerData = (content, context) => {
28
- const template = new import_template.TemplateAPI(content);
29
- template.prependHead(`<script type="application/json" id="__MODERN_SERVER_DATA__">${JSON.stringify(context.serverData)}</script>`);
30
- return template.get();
31
- };
32
- const injectServerDataStream = (content, context) => {
33
- return content.pipe((0, import_templateForStream.templateInjectableStream)({
34
- prependHead: `<script type="application/json" id="__MODERN_SERVER_DATA__">${JSON.stringify(context.serverData)}</script>`
35
- }));
36
- };
37
- // Annotate the CommonJS export names for ESM import in node:
38
- 0 && (module.exports = {
39
- injectServerData,
40
- injectServerDataStream
41
- });