@modern-js/prod-server 2.4.1-beta.0 → 2.5.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 (134) hide show
  1. package/CHANGELOG.md +18 -3
  2. package/dist/{js/node → cjs}/constants.js +0 -0
  3. package/dist/{js/node → cjs}/index.js +0 -0
  4. package/dist/{js/node → cjs}/libs/context/context.js +0 -0
  5. package/dist/{js/node → cjs}/libs/context/index.js +0 -0
  6. package/dist/{js/node → cjs}/libs/hook-api/index.js +12 -25
  7. package/dist/{js/node → cjs}/libs/hook-api/route.js +0 -0
  8. package/dist/{js/node → cjs}/libs/hook-api/template.js +0 -0
  9. package/dist/{js/node → cjs}/libs/loadConfig.js +6 -21
  10. package/dist/{js/node → cjs}/libs/logger.js +5 -16
  11. package/dist/{js/node → cjs}/libs/metrics.js +0 -0
  12. package/dist/{js/node → cjs}/libs/proxy.js +6 -39
  13. package/dist/{js/node → cjs}/libs/render/cache/__tests__/cache.fun.test.js +12 -34
  14. package/dist/{js/node → cjs}/libs/render/cache/__tests__/cache.test.js +43 -78
  15. package/dist/{js/node → cjs}/libs/render/cache/__tests__/cacheable.js +0 -0
  16. package/dist/{js/node → cjs}/libs/render/cache/__tests__/error-configuration.js +0 -0
  17. package/dist/{js/node → cjs}/libs/render/cache/__tests__/matched-cache.js +0 -0
  18. package/dist/cjs/libs/render/cache/index.js +97 -0
  19. package/dist/cjs/libs/render/cache/page-caches/index.js +33 -0
  20. package/dist/{js/node → cjs}/libs/render/cache/page-caches/lru.js +0 -0
  21. package/dist/{js/node → cjs}/libs/render/cache/spr.js +69 -97
  22. package/dist/{js/node → cjs}/libs/render/cache/type.js +0 -0
  23. package/dist/{js/node → cjs}/libs/render/cache/util.js +19 -41
  24. package/dist/cjs/libs/render/index.js +93 -0
  25. package/dist/{js/node → cjs}/libs/render/measure.js +6 -21
  26. package/dist/{js/node → cjs}/libs/render/reader.js +24 -46
  27. package/dist/{js/node → cjs}/libs/render/ssr.js +3 -23
  28. package/dist/{js/node → cjs}/libs/render/static.js +22 -44
  29. package/dist/{js/node → cjs}/libs/render/type.js +0 -0
  30. package/dist/{js/node → cjs}/libs/route/index.js +0 -0
  31. package/dist/{js/node → cjs}/libs/route/matcher.js +0 -0
  32. package/dist/{js/node → cjs}/libs/route/route.js +0 -0
  33. package/dist/{js/node → cjs}/libs/serve-file.js +2 -22
  34. package/dist/{js/node → cjs}/server/index.js +56 -106
  35. package/dist/{js/node → cjs}/server/modern-server-split.js +9 -40
  36. package/dist/cjs/server/modern-server.js +490 -0
  37. package/dist/{js/node → cjs}/type.js +0 -0
  38. package/dist/{js/node → cjs}/utils.js +1 -15
  39. package/dist/{js/node → cjs}/worker-server.js +3 -23
  40. package/dist/{js/treeshaking → esm}/constants.js +0 -0
  41. package/dist/{js/treeshaking → esm}/index.js +0 -0
  42. package/dist/{js/treeshaking → esm}/libs/context/context.js +0 -0
  43. package/dist/{js/treeshaking → esm}/libs/context/index.js +0 -0
  44. package/dist/{js/treeshaking → esm}/libs/hook-api/index.js +0 -0
  45. package/dist/{js/treeshaking → esm}/libs/hook-api/route.js +0 -0
  46. package/dist/{js/treeshaking → esm}/libs/hook-api/template.js +0 -0
  47. package/dist/{js/treeshaking → esm}/libs/loadConfig.js +0 -0
  48. package/dist/{js/treeshaking → esm}/libs/logger.js +0 -0
  49. package/dist/{js/treeshaking → esm}/libs/metrics.js +0 -0
  50. package/dist/{js/treeshaking → esm}/libs/proxy.js +0 -0
  51. package/dist/{js/treeshaking → esm}/libs/render/cache/__tests__/cache.fun.test.js +0 -0
  52. package/dist/{js/treeshaking → esm}/libs/render/cache/__tests__/cache.test.js +0 -0
  53. package/dist/{js/treeshaking → esm}/libs/render/cache/__tests__/cacheable.js +0 -0
  54. package/dist/{js/treeshaking → esm}/libs/render/cache/__tests__/error-configuration.js +0 -0
  55. package/dist/{js/treeshaking → esm}/libs/render/cache/__tests__/matched-cache.js +0 -0
  56. package/dist/{js/treeshaking → esm}/libs/render/cache/index.js +0 -0
  57. package/dist/{js/treeshaking → esm}/libs/render/cache/page-caches/index.js +0 -0
  58. package/dist/{js/treeshaking → esm}/libs/render/cache/page-caches/lru.js +0 -0
  59. package/dist/{js/treeshaking → esm}/libs/render/cache/spr.js +0 -0
  60. package/dist/{js/treeshaking → esm}/libs/render/cache/type.js +0 -0
  61. package/dist/{js/treeshaking → esm}/libs/render/cache/util.js +0 -0
  62. package/dist/{js/treeshaking → esm}/libs/render/index.js +4 -3
  63. package/dist/{js/treeshaking → esm}/libs/render/measure.js +0 -0
  64. package/dist/{js/treeshaking → esm}/libs/render/reader.js +0 -0
  65. package/dist/{js/treeshaking → esm}/libs/render/ssr.js +0 -0
  66. package/dist/{js/treeshaking → esm}/libs/render/static.js +0 -0
  67. package/dist/{js/treeshaking → esm}/libs/render/type.js +0 -0
  68. package/dist/{js/treeshaking → esm}/libs/route/index.js +0 -0
  69. package/dist/{js/treeshaking → esm}/libs/route/matcher.js +0 -0
  70. package/dist/{js/treeshaking → esm}/libs/route/route.js +0 -0
  71. package/dist/{js/treeshaking → esm}/libs/serve-file.js +0 -0
  72. package/dist/{js/treeshaking → esm}/server/index.js +0 -0
  73. package/dist/{js/treeshaking → esm}/server/modern-server-split.js +0 -0
  74. package/dist/{js/treeshaking → esm}/server/modern-server.js +14 -8
  75. package/dist/{js/treeshaking → esm}/type.js +0 -0
  76. package/dist/{js/treeshaking → esm}/utils.js +0 -0
  77. package/dist/{js/treeshaking → esm}/worker-server.js +0 -0
  78. package/dist/{js/modern → esm-node}/constants.js +0 -0
  79. package/dist/{js/modern → esm-node}/index.js +0 -0
  80. package/dist/{js/modern → esm-node}/libs/context/context.js +0 -0
  81. package/dist/{js/modern → esm-node}/libs/context/index.js +0 -0
  82. package/dist/{js/modern → esm-node}/libs/hook-api/index.js +12 -27
  83. package/dist/{js/modern → esm-node}/libs/hook-api/route.js +0 -0
  84. package/dist/{js/modern → esm-node}/libs/hook-api/template.js +0 -0
  85. package/dist/esm-node/libs/loadConfig.js +45 -0
  86. package/dist/{js/modern → esm-node}/libs/logger.js +5 -18
  87. package/dist/{js/modern → esm-node}/libs/metrics.js +0 -0
  88. package/dist/{js/modern → esm-node}/libs/proxy.js +6 -41
  89. package/dist/esm-node/libs/render/cache/__tests__/cache.fun.test.js +83 -0
  90. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +210 -0
  91. package/dist/{js/modern → esm-node}/libs/render/cache/__tests__/cacheable.js +0 -0
  92. package/dist/{js/modern → esm-node}/libs/render/cache/__tests__/error-configuration.js +0 -0
  93. package/dist/{js/modern → esm-node}/libs/render/cache/__tests__/matched-cache.js +0 -0
  94. package/dist/esm-node/libs/render/cache/index.js +76 -0
  95. package/dist/esm-node/libs/render/cache/page-caches/index.js +10 -0
  96. package/dist/{js/modern → esm-node}/libs/render/cache/page-caches/lru.js +0 -0
  97. package/dist/{js/modern → esm-node}/libs/render/cache/spr.js +69 -97
  98. package/dist/{js/modern → esm-node}/libs/render/cache/type.js +0 -0
  99. package/dist/{js/modern → esm-node}/libs/render/cache/util.js +19 -41
  100. package/dist/esm-node/libs/render/index.js +64 -0
  101. package/dist/{js/modern → esm-node}/libs/render/measure.js +6 -23
  102. package/dist/esm-node/libs/render/reader.js +85 -0
  103. package/dist/{js/modern → esm-node}/libs/render/ssr.js +3 -23
  104. package/dist/esm-node/libs/render/static.js +38 -0
  105. package/dist/{js/modern → esm-node}/libs/render/type.js +0 -0
  106. package/dist/{js/modern → esm-node}/libs/route/index.js +0 -0
  107. package/dist/{js/modern → esm-node}/libs/route/matcher.js +0 -0
  108. package/dist/{js/modern → esm-node}/libs/route/route.js +0 -0
  109. package/dist/{js/modern → esm-node}/libs/serve-file.js +2 -22
  110. package/dist/esm-node/server/index.js +156 -0
  111. package/dist/esm-node/server/modern-server-split.js +43 -0
  112. package/dist/esm-node/server/modern-server.js +483 -0
  113. package/dist/{js/modern → esm-node}/type.js +0 -0
  114. package/dist/{js/modern → esm-node}/utils.js +1 -17
  115. package/dist/{js/modern → esm-node}/worker-server.js +3 -23
  116. package/dist/types/libs/context/context.d.ts +1 -1
  117. package/dist/types/libs/render/index.d.ts +3 -1
  118. package/dist/types/utils.d.ts +1 -1
  119. package/package.json +15 -16
  120. package/dist/js/modern/libs/loadConfig.js +0 -62
  121. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -114
  122. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -254
  123. package/dist/js/modern/libs/render/cache/index.js +0 -115
  124. package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -32
  125. package/dist/js/modern/libs/render/index.js +0 -84
  126. package/dist/js/modern/libs/render/reader.js +0 -107
  127. package/dist/js/modern/libs/render/static.js +0 -60
  128. package/dist/js/modern/server/index.js +0 -208
  129. package/dist/js/modern/server/modern-server-split.js +0 -74
  130. package/dist/js/modern/server/modern-server.js +0 -548
  131. package/dist/js/node/libs/render/cache/index.js +0 -134
  132. package/dist/js/node/libs/render/cache/page-caches/index.js +0 -55
  133. package/dist/js/node/libs/render/index.js +0 -113
  134. package/dist/js/node/server/modern-server.js +0 -553
@@ -0,0 +1,97 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var cache_exports = {};
19
+ __export(cache_exports, {
20
+ default: () => cache_default
21
+ });
22
+ module.exports = __toCommonJS(cache_exports);
23
+ var import_stream = require("stream");
24
+ var import_constants = require("../../../constants");
25
+ var import_spr = require("./spr");
26
+ var import_util = require("./util");
27
+ var cache_default = (renderFn, ctx) => {
28
+ const sprCache = (0, import_spr.createCache)();
29
+ const doRender = async (context) => {
30
+ const cacheContext = {
31
+ entry: context.entryName,
32
+ ...context.request
33
+ };
34
+ const cacheFile = await sprCache.get(cacheContext);
35
+ async function afterRender(source, onAfterRender) {
36
+ if (!source) {
37
+ return "";
38
+ }
39
+ if (typeof source === "string") {
40
+ await onAfterRender(source);
41
+ return source;
42
+ } else {
43
+ let htmlForStream = "";
44
+ const cacheStream = new import_stream.Transform({
45
+ write(chunk, _, callback) {
46
+ htmlForStream += chunk.toString();
47
+ this.push(chunk);
48
+ callback();
49
+ }
50
+ });
51
+ cacheStream.on("close", () => onAfterRender(htmlForStream));
52
+ return source(cacheStream);
53
+ }
54
+ }
55
+ async function saveHtmlIntoCache(html) {
56
+ const { cacheConfig } = context;
57
+ if (html && cacheConfig) {
58
+ await sprCache.set(cacheContext, html, cacheConfig);
59
+ }
60
+ }
61
+ if (!cacheFile) {
62
+ const renderResult = await renderFn(context);
63
+ return afterRender(renderResult, saveHtmlIntoCache);
64
+ }
65
+ const cacheHash = cacheFile == null ? void 0 : cacheFile.hash;
66
+ if (cacheFile.isGarbage) {
67
+ const renderResult = await renderFn(context);
68
+ return afterRender(renderResult, saveHtmlIntoCache);
69
+ } else if (cacheFile.isStale) {
70
+ const render = (0, import_util.withCoalescedInvoke)(() => renderFn(context)).bind(
71
+ null,
72
+ (0, import_util.namespaceHash)("render", cacheFile.hash),
73
+ []
74
+ );
75
+ render().then(async (res) => {
76
+ if (res.value && res.isOrigin) {
77
+ const { cacheConfig } = context;
78
+ if (cacheConfig) {
79
+ afterRender(res.value, async (html) => {
80
+ sprCache.set(cacheContext, html, cacheConfig);
81
+ });
82
+ } else {
83
+ sprCache.del(cacheContext, cacheHash);
84
+ }
85
+ }
86
+ }).catch((e) => {
87
+ sprCache.del(cacheContext, cacheHash);
88
+ ctx.error(import_constants.ERROR_DIGEST.ERENDER, e);
89
+ });
90
+ }
91
+ ctx.res.setHeader("x-modern-spr", "1");
92
+ return cacheFile.content;
93
+ };
94
+ return doRender;
95
+ };
96
+ // Annotate the CommonJS export names for ESM import in node:
97
+ 0 && (module.exports = {});
@@ -0,0 +1,33 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var page_caches_exports = {};
19
+ __export(page_caches_exports, {
20
+ createPageCaches: () => createPageCaches
21
+ });
22
+ module.exports = __toCommonJS(page_caches_exports);
23
+ var import_lru = require("./lru");
24
+ async function createPageCaches(max) {
25
+ const constructorOptions = { max };
26
+ const cacheInstance = new import_lru.LRUCaches(constructorOptions);
27
+ await cacheInstance.init();
28
+ return cacheInstance;
29
+ }
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ createPageCaches
33
+ });
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  mod
22
22
  ));
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
- var __async = (__this, __arguments, generator) => {
25
- return new Promise((resolve, reject) => {
26
- var fulfilled = (value) => {
27
- try {
28
- step(generator.next(value));
29
- } catch (e) {
30
- reject(e);
31
- }
32
- };
33
- var rejected = (value) => {
34
- try {
35
- step(generator.throw(value));
36
- } catch (e) {
37
- reject(e);
38
- }
39
- };
40
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
41
- step((generator = generator.apply(__this, __arguments)).next());
42
- });
43
- };
44
24
  var spr_exports = {};
45
25
  __export(spr_exports, {
46
26
  createCache: () => createCache,
@@ -159,15 +139,13 @@ class CacheManager {
159
139
  const headerFactor = this.factor(headerKeys, requestHeader, headerMatches);
160
140
  return headerFactor;
161
141
  }
162
- best(context, cacheKey, data) {
163
- return __async(this, null, function* () {
164
- const { level } = data;
165
- const cacheHash = this.find[(0, import_util.fname)(level)](context, cacheKey, data);
166
- if (!cacheHash) {
167
- return null;
168
- }
169
- return data.caches.get(cacheHash);
170
- });
142
+ async best(context, cacheKey, data) {
143
+ const { level } = data;
144
+ const cacheHash = this.find[(0, import_util.fname)(level)](context, cacheKey, data);
145
+ if (!cacheHash) {
146
+ return null;
147
+ }
148
+ return data.caches.get(cacheHash);
171
149
  }
172
150
  createCacheContent(config, caches) {
173
151
  return {
@@ -179,77 +157,71 @@ class CacheManager {
179
157
  caches
180
158
  };
181
159
  }
182
- get(context) {
183
- return __async(this, null, function* () {
184
- const cacheKey = this.generateRequestKey(context);
185
- const data = this.cache.get(cacheKey);
186
- if (!data) {
187
- return null;
188
- }
189
- const dest = yield this.best(context, cacheKey, data);
190
- if (!dest) {
191
- return null;
192
- }
193
- const { expireTime, limitTime, html, cacheHash } = dest;
194
- const isStale = Date.now() - expireTime > 0;
195
- const isGarbage = limitTime ? Date.now() - limitTime > 0 : false;
196
- return {
197
- content: html || "",
198
- contentType: import_utils.mime.contentType("html"),
199
- isStale,
200
- isGarbage,
201
- hash: cacheHash
202
- };
203
- });
160
+ async get(context) {
161
+ const cacheKey = this.generateRequestKey(context);
162
+ const data = this.cache.get(cacheKey);
163
+ if (!data) {
164
+ return null;
165
+ }
166
+ const dest = await this.best(context, cacheKey, data);
167
+ if (!dest) {
168
+ return null;
169
+ }
170
+ const { expireTime, limitTime, html, cacheHash } = dest;
171
+ const isStale = Date.now() - expireTime > 0;
172
+ const isGarbage = limitTime ? Date.now() - limitTime > 0 : false;
173
+ return {
174
+ content: html || "",
175
+ contentType: import_utils.mime.contentType("html"),
176
+ isStale,
177
+ isGarbage,
178
+ hash: cacheHash
179
+ };
204
180
  }
205
- set(context, html, cacheConfig, sync = false) {
206
- return __async(this, null, function* () {
207
- if (!cacheConfig) {
208
- return false;
209
- }
210
- const cacheKey = this.generateRequestKey(context);
211
- let data = this.cache.get(cacheKey);
212
- if (!data) {
213
- const caches = yield (0, import_page_caches.createPageCaches)(MAX_CACHE_EACH_REQ);
214
- data = this.createCacheContent(cacheConfig, caches);
215
- }
216
- const cacheHash = this.find[(0, import_util.fname)(cacheConfig.level)](
217
- context,
218
- cacheKey,
219
- data
220
- );
221
- if (!cacheHash) {
222
- return false;
223
- }
224
- const cacheSyncOrAsync = () => __async(this, null, function* () {
225
- const next = data;
226
- const limit = cacheConfig.staleLimit;
227
- const storeHTML = (0, import_util.cacheAddition)(html, cacheHash);
228
- const size = storeHTML.length;
229
- yield next.caches.set(cacheHash, {
230
- expireTime: Date.now() + cacheConfig.interval * 1e3,
231
- limitTime: typeof limit === "number" ? Date.now() + limit * 1e3 : null,
232
- cacheHash,
233
- html: storeHTML,
234
- size
235
- });
236
- this.cache.set(cacheKey, next);
237
- return true;
181
+ async set(context, html, cacheConfig, sync = false) {
182
+ if (!cacheConfig) {
183
+ return false;
184
+ }
185
+ const cacheKey = this.generateRequestKey(context);
186
+ let data = this.cache.get(cacheKey);
187
+ if (!data) {
188
+ const caches = await (0, import_page_caches.createPageCaches)(MAX_CACHE_EACH_REQ);
189
+ data = this.createCacheContent(cacheConfig, caches);
190
+ }
191
+ const cacheHash = this.find[(0, import_util.fname)(cacheConfig.level)](
192
+ context,
193
+ cacheKey,
194
+ data
195
+ );
196
+ if (!cacheHash) {
197
+ return false;
198
+ }
199
+ const cacheSyncOrAsync = async () => {
200
+ const next = data;
201
+ const limit = cacheConfig.staleLimit;
202
+ const storeHTML = (0, import_util.cacheAddition)(html, cacheHash);
203
+ const size = storeHTML.length;
204
+ await next.caches.set(cacheHash, {
205
+ expireTime: Date.now() + cacheConfig.interval * 1e3,
206
+ limitTime: typeof limit === "number" ? Date.now() + limit * 1e3 : null,
207
+ cacheHash,
208
+ html: storeHTML,
209
+ size
238
210
  });
239
- const doCache = (0, import_util.withCoalescedInvoke)(cacheSyncOrAsync).bind(
240
- null,
241
- (0, import_util.namespaceHash)("stream", cacheHash),
242
- []
243
- );
244
- return (0, import_util.maybeSync)(doCache)(sync);
245
- });
211
+ this.cache.set(cacheKey, next);
212
+ return true;
213
+ };
214
+ const doCache = (0, import_util.withCoalescedInvoke)(cacheSyncOrAsync).bind(
215
+ null,
216
+ (0, import_util.namespaceHash)("stream", cacheHash),
217
+ []
218
+ );
219
+ return (0, import_util.maybeSync)(doCache)(sync);
246
220
  }
247
- del(context, cacheHash) {
248
- return __async(this, null, function* () {
249
- const cacheKey = this.generateRequestKey(context);
250
- const data = this.cache.get(cacheKey);
251
- data == null ? void 0 : data.caches.del(cacheHash);
252
- });
221
+ async del(context, cacheHash) {
222
+ const cacheKey = this.generateRequestKey(context);
223
+ const data = this.cache.get(cacheKey);
224
+ data == null ? void 0 : data.caches.del(cacheHash);
253
225
  }
254
226
  }
255
227
  let manager;
File without changes
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  mod
22
22
  ));
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
- var __async = (__this, __arguments, generator) => {
25
- return new Promise((resolve, reject) => {
26
- var fulfilled = (value) => {
27
- try {
28
- step(generator.next(value));
29
- } catch (e) {
30
- reject(e);
31
- }
32
- };
33
- var rejected = (value) => {
34
- try {
35
- step(generator.throw(value));
36
- } catch (e) {
37
- reject(e);
38
- }
39
- };
40
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
41
- step((generator = generator.apply(__this, __arguments)).next());
42
- });
43
- };
44
24
  var util_exports = {};
45
25
  __export(util_exports, {
46
26
  cacheAddition: () => cacheAddition,
@@ -91,28 +71,26 @@ function cacheAddition(html, hash) {
91
71
  }
92
72
  const globalInvokeCache = /* @__PURE__ */ new Map();
93
73
  function withCoalescedInvoke(func) {
94
- return function(key, args) {
95
- return __async(this, null, function* () {
96
- const entry = globalInvokeCache.get(key);
97
- if (entry) {
98
- return entry.then((res) => ({
99
- isOrigin: false,
100
- value: res.value
101
- }));
102
- }
103
- function __wrapper() {
104
- return func(...args);
105
- }
106
- const future = __wrapper().then((res) => {
107
- globalInvokeCache.delete(key);
108
- return { isOrigin: true, value: res };
109
- }).catch((err) => {
110
- globalInvokeCache.delete(key);
111
- throw err;
112
- });
113
- globalInvokeCache.set(key, future);
114
- return future;
74
+ return async function(key, args) {
75
+ const entry = globalInvokeCache.get(key);
76
+ if (entry) {
77
+ return entry.then((res) => ({
78
+ isOrigin: false,
79
+ value: res.value
80
+ }));
81
+ }
82
+ function __wrapper() {
83
+ return func(...args);
84
+ }
85
+ const future = __wrapper().then((res) => {
86
+ globalInvokeCache.delete(key);
87
+ return { isOrigin: true, value: res };
88
+ }).catch((err) => {
89
+ globalInvokeCache.delete(key);
90
+ throw err;
115
91
  });
92
+ globalInvokeCache.set(key, future);
93
+ return future;
116
94
  };
117
95
  }
118
96
  function maybeSync(fn) {
@@ -0,0 +1,93 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var render_exports = {};
25
+ __export(render_exports, {
26
+ createRenderHandler: () => createRenderHandler
27
+ });
28
+ module.exports = __toCommonJS(render_exports);
29
+ var import_path = __toESM(require("path"));
30
+ var import_utils = require("@modern-js/utils");
31
+ var import_constants = require("../../constants");
32
+ var import_static = require("./static");
33
+ var import_reader = require("./reader");
34
+ var ssr = __toESM(require("./ssr"));
35
+ const createRenderHandler = ({
36
+ distDir,
37
+ staticGenerate,
38
+ forceCSR
39
+ }) => async function render({
40
+ ctx,
41
+ route,
42
+ runner
43
+ }) {
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
+ if (!import_utils.fs.existsSync(templatePath)) {
55
+ throw new Error(`Could not find template file: ${templatePath}`);
56
+ }
57
+ const content = await (0, import_reader.readFile)(templatePath);
58
+ if (!content) {
59
+ return null;
60
+ }
61
+ const useCSR = forceCSR && ctx.query.csr;
62
+ if (route.isSSR && !useCSR) {
63
+ try {
64
+ const result = await ssr.render(
65
+ ctx,
66
+ {
67
+ distDir,
68
+ entryName: route.entryName,
69
+ urlPath: route.urlPath,
70
+ bundle: route.bundle,
71
+ template: content.toString(),
72
+ staticGenerate
73
+ },
74
+ runner
75
+ );
76
+ return result;
77
+ } catch (err) {
78
+ ctx.error(
79
+ import_constants.ERROR_DIGEST.ERENDER,
80
+ err.stack || err.message
81
+ );
82
+ ctx.res.setHeader("x-modern-ssr-fallback", "1");
83
+ }
84
+ }
85
+ return {
86
+ content,
87
+ contentType: import_utils.mime.contentType(import_path.default.extname(templatePath))
88
+ };
89
+ };
90
+ // Annotate the CommonJS export names for ESM import in node:
91
+ 0 && (module.exports = {
92
+ createRenderHandler
93
+ });
@@ -1,24 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
- var __spreadValues = (a, b) => {
11
- for (var prop in b || (b = {}))
12
- if (__hasOwnProp.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- if (__getOwnPropSymbols)
15
- for (var prop of __getOwnPropSymbols(b)) {
16
- if (__propIsEnum.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- }
19
- return a;
20
- };
21
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
5
  var __export = (target, all) => {
23
6
  for (var name in all)
24
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -43,16 +26,18 @@ const createMetrics = (context, metrics) => {
43
26
  const { entryName: entry, request } = context;
44
27
  const { pathname = "" } = request || {};
45
28
  const emitTimer = (name, cost, tags = {}) => {
46
- metrics.emitTimer(name, cost, __spreadProps(__spreadValues({}, tags), {
29
+ metrics.emitTimer(name, cost, {
30
+ ...tags,
47
31
  pathname,
48
32
  entry
49
- }));
33
+ });
50
34
  };
51
35
  const emitCounter = (name, counter, tags = {}) => {
52
- metrics.emitCounter(name, counter, __spreadProps(__spreadValues({}, tags), {
36
+ metrics.emitCounter(name, counter, {
37
+ ...tags,
53
38
  pathname,
54
39
  entry
55
- }));
40
+ });
56
41
  };
57
42
  return { emitTimer, emitCounter };
58
43
  };
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  mod
22
22
  ));
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
- var __async = (__this, __arguments, generator) => {
25
- return new Promise((resolve, reject) => {
26
- var fulfilled = (value) => {
27
- try {
28
- step(generator.next(value));
29
- } catch (e) {
30
- reject(e);
31
- }
32
- };
33
- var rejected = (value) => {
34
- try {
35
- step(generator.throw(value));
36
- } catch (e) {
37
- reject(e);
38
- }
39
- };
40
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
41
- step((generator = generator.apply(__this, __arguments)).next());
42
- });
43
- };
44
24
  var reader_exports = {};
45
25
  __export(reader_exports, {
46
26
  LruReader: () => LruReader,
@@ -56,13 +36,13 @@ const Byte = 1;
56
36
  const KB = 1024 * Byte;
57
37
  const MB = 1024 * KB;
58
38
  const getContentLength = (cache) => cache.content.length;
59
- const createCacheItem = (filepath, mtime) => __async(void 0, null, function* () {
60
- const content = yield import_utils.fs.readFile(filepath);
39
+ const createCacheItem = async (filepath, mtime) => {
40
+ const content = await import_utils.fs.readFile(filepath);
61
41
  return {
62
42
  content,
63
43
  mtime
64
44
  };
65
- });
45
+ };
66
46
  class LruReader {
67
47
  constructor() {
68
48
  this.cache = new import_lru_cache.default({
@@ -75,26 +55,24 @@ class LruReader {
75
55
  }
76
56
  close() {
77
57
  }
78
- read(filepath) {
79
- return __async(this, null, function* () {
80
- if (this.cache.has(filepath)) {
81
- const { content } = this.cache.get(filepath);
82
- return { content };
83
- }
84
- if (!import_utils.fs.existsSync(filepath)) {
85
- return null;
86
- }
87
- const stat = import_utils.fs.statSync(filepath);
88
- if (stat.isDirectory()) {
89
- return null;
90
- }
91
- if (stat.size > 20 * MB) {
92
- return null;
93
- }
94
- const item = yield createCacheItem(filepath, stat.mtime);
95
- this.cache.set(filepath, item);
96
- return item;
97
- });
58
+ async read(filepath) {
59
+ if (this.cache.has(filepath)) {
60
+ const { content } = this.cache.get(filepath);
61
+ return { content };
62
+ }
63
+ if (!import_utils.fs.existsSync(filepath)) {
64
+ return null;
65
+ }
66
+ const stat = import_utils.fs.statSync(filepath);
67
+ if (stat.isDirectory()) {
68
+ return null;
69
+ }
70
+ if (stat.size > 20 * MB) {
71
+ return null;
72
+ }
73
+ const item = await createCacheItem(filepath, stat.mtime);
74
+ this.cache.set(filepath, item);
75
+ return item;
98
76
  }
99
77
  update() {
100
78
  const { cache } = this;
@@ -117,10 +95,10 @@ class LruReader {
117
95
  }
118
96
  }
119
97
  const reader = new LruReader();
120
- const readFile = (filepath) => __async(void 0, null, function* () {
121
- const file = yield reader.read(filepath);
98
+ const readFile = async (filepath) => {
99
+ const file = await reader.read(filepath);
122
100
  return file == null ? void 0 : file.content;
123
- });
101
+ };
124
102
  const updateFile = () => {
125
103
  reader.update();
126
104
  };