@modern-js/prod-server 1.22.1 → 2.0.0-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 (132) hide show
  1. package/CHANGELOG.md +271 -17
  2. package/dist/js/modern/constants.js +32 -27
  3. package/dist/js/modern/index.js +11 -7
  4. package/dist/js/modern/libs/context/context.js +54 -132
  5. package/dist/js/modern/libs/context/index.js +5 -2
  6. package/dist/js/modern/libs/hook-api/index.js +134 -0
  7. package/dist/js/modern/libs/hook-api/route.js +13 -37
  8. package/dist/js/modern/libs/hook-api/template.js +41 -32
  9. package/dist/js/modern/libs/loadConfig.js +46 -32
  10. package/dist/js/modern/libs/metrics.js +6 -7
  11. package/dist/js/modern/libs/proxy.js +70 -44
  12. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -68
  13. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -225
  14. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
  15. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
  16. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
  17. package/dist/js/modern/libs/render/cache/index.js +93 -50
  18. package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
  19. package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -16
  20. package/dist/js/modern/libs/render/cache/spr.js +133 -167
  21. package/dist/js/modern/libs/render/cache/type.js +0 -1
  22. package/dist/js/modern/libs/render/cache/util.js +71 -45
  23. package/dist/js/modern/libs/render/index.js +76 -61
  24. package/dist/js/modern/libs/render/measure.js +42 -34
  25. package/dist/js/modern/libs/render/reader.js +68 -76
  26. package/dist/js/modern/libs/render/ssr.js +63 -33
  27. package/dist/js/modern/libs/render/static.js +51 -37
  28. package/dist/js/modern/libs/render/type.js +9 -7
  29. package/dist/js/modern/libs/route/index.js +12 -30
  30. package/dist/js/modern/libs/route/matcher.js +28 -50
  31. package/dist/js/modern/libs/route/route.js +9 -31
  32. package/dist/js/modern/libs/serve-file.js +40 -20
  33. package/dist/js/modern/server/index.js +152 -168
  34. package/dist/js/modern/server/modern-server-split.js +44 -60
  35. package/dist/js/modern/server/modern-server.js +416 -526
  36. package/dist/js/modern/type.js +0 -1
  37. package/dist/js/modern/utils.js +62 -58
  38. package/dist/js/modern/worker-server.js +54 -0
  39. package/dist/js/node/constants.js +53 -32
  40. package/dist/js/node/index.js +37 -67
  41. package/dist/js/node/libs/context/context.js +84 -150
  42. package/dist/js/node/libs/context/index.js +28 -16
  43. package/dist/js/node/libs/hook-api/index.js +164 -0
  44. package/dist/js/node/libs/hook-api/route.js +35 -45
  45. package/dist/js/node/libs/hook-api/template.js +64 -40
  46. package/dist/js/node/libs/loadConfig.js +74 -55
  47. package/dist/js/node/libs/metrics.js +28 -12
  48. package/dist/js/node/libs/proxy.js +90 -55
  49. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +99 -61
  50. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +147 -140
  51. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +65 -55
  52. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +58 -40
  53. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +105 -119
  54. package/dist/js/node/libs/render/cache/index.js +115 -65
  55. package/dist/js/node/libs/render/cache/page-caches/index.js +54 -16
  56. package/dist/js/node/libs/render/cache/page-caches/lru.js +33 -26
  57. package/dist/js/node/libs/render/cache/spr.js +161 -188
  58. package/dist/js/node/libs/render/cache/type.js +15 -5
  59. package/dist/js/node/libs/render/cache/util.js +99 -63
  60. package/dist/js/node/libs/render/index.js +106 -87
  61. package/dist/js/node/libs/render/measure.js +61 -44
  62. package/dist/js/node/libs/render/reader.js +98 -100
  63. package/dist/js/node/libs/render/ssr.js +92 -58
  64. package/dist/js/node/libs/render/static.js +80 -53
  65. package/dist/js/node/libs/render/type.js +31 -13
  66. package/dist/js/node/libs/route/index.js +35 -44
  67. package/dist/js/node/libs/route/matcher.js +48 -65
  68. package/dist/js/node/libs/route/route.js +29 -37
  69. package/dist/js/node/libs/serve-file.js +74 -37
  70. package/dist/js/node/server/index.js +170 -203
  71. package/dist/js/node/server/modern-server-split.js +70 -73
  72. package/dist/js/node/server/modern-server.js +432 -577
  73. package/dist/js/node/type.js +15 -3
  74. package/dist/js/node/utils.js +87 -93
  75. package/dist/js/node/worker-server.js +77 -0
  76. package/dist/js/treeshaking/constants.js +29 -0
  77. package/dist/js/treeshaking/index.js +13 -0
  78. package/dist/js/treeshaking/libs/context/context.js +274 -0
  79. package/dist/js/treeshaking/libs/context/index.js +5 -0
  80. package/dist/js/treeshaking/libs/hook-api/index.js +281 -0
  81. package/dist/js/treeshaking/libs/hook-api/route.js +68 -0
  82. package/dist/js/treeshaking/libs/hook-api/template.js +127 -0
  83. package/dist/js/treeshaking/libs/loadConfig.js +82 -0
  84. package/dist/js/treeshaking/libs/metrics.js +6 -0
  85. package/dist/js/treeshaking/libs/proxy.js +244 -0
  86. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +291 -0
  87. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +781 -0
  88. package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +67 -0
  89. package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -0
  90. package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +147 -0
  91. package/dist/js/treeshaking/libs/render/cache/index.js +346 -0
  92. package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +154 -0
  93. package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +84 -0
  94. package/dist/js/treeshaking/libs/render/cache/spr.js +492 -0
  95. package/dist/js/treeshaking/libs/render/cache/type.js +1 -0
  96. package/dist/js/treeshaking/libs/render/cache/util.js +280 -0
  97. package/dist/js/treeshaking/libs/render/index.js +233 -0
  98. package/dist/js/treeshaking/libs/render/measure.js +146 -0
  99. package/dist/js/treeshaking/libs/render/reader.js +339 -0
  100. package/dist/js/treeshaking/libs/render/ssr.js +223 -0
  101. package/dist/js/treeshaking/libs/render/static.js +216 -0
  102. package/dist/js/treeshaking/libs/render/type.js +7 -0
  103. package/dist/js/treeshaking/libs/route/index.js +130 -0
  104. package/dist/js/treeshaking/libs/route/matcher.js +138 -0
  105. package/dist/js/treeshaking/libs/route/route.js +40 -0
  106. package/dist/js/treeshaking/libs/serve-file.js +184 -0
  107. package/dist/js/treeshaking/server/index.js +505 -0
  108. package/dist/js/treeshaking/server/modern-server-split.js +360 -0
  109. package/dist/js/treeshaking/server/modern-server.js +1083 -0
  110. package/dist/js/treeshaking/type.js +1 -0
  111. package/dist/js/treeshaking/utils.js +147 -0
  112. package/dist/js/treeshaking/worker-server.js +177 -0
  113. package/dist/types/libs/context/context.d.ts +1 -1
  114. package/dist/types/libs/hook-api/index.d.ts +5 -0
  115. package/dist/types/libs/hook-api/route.d.ts +9 -14
  116. package/dist/types/libs/hook-api/template.d.ts +19 -9
  117. package/dist/types/libs/render/cache/index.d.ts +4 -2
  118. package/dist/types/libs/render/type.d.ts +3 -1
  119. package/dist/types/libs/route/route.d.ts +0 -1
  120. package/dist/types/libs/serve-file.d.ts +2 -1
  121. package/dist/types/server/index.d.ts +2 -0
  122. package/dist/types/server/modern-server.d.ts +11 -11
  123. package/dist/types/type.d.ts +8 -10
  124. package/dist/types/utils.d.ts +3 -4
  125. package/dist/types/worker-server.d.ts +15 -0
  126. package/package.json +31 -45
  127. package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
  128. package/dist/js/modern/libs/render/modern/index.js +0 -48
  129. package/dist/js/node/libs/render/modern/browser-list.js +0 -14
  130. package/dist/js/node/libs/render/modern/index.js +0 -64
  131. package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
  132. package/dist/types/libs/render/modern/index.d.ts +0 -3
@@ -1,87 +1,78 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.RouteMatchManager = void 0;
7
- Object.defineProperty(exports, "RouteMatcher", {
8
- enumerable: true,
9
- get: function () {
10
- return _matcher.RouteMatcher;
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 });
11
14
  }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var route_exports = {};
19
+ __export(route_exports, {
20
+ RouteMatchManager: () => RouteMatchManager,
21
+ RouteMatcher: () => import_matcher.RouteMatcher
12
22
  });
13
-
14
- var _matcher = require("./matcher");
15
-
16
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
-
23
+ module.exports = __toCommonJS(route_exports);
24
+ var import_matcher = require("./matcher");
18
25
  class RouteMatchManager {
19
26
  constructor() {
20
- _defineProperty(this, "matchers", void 0);
21
-
22
- _defineProperty(this, "specs", []);
23
-
27
+ this.specs = [];
24
28
  this.matchers = [];
25
- } // get all routes matches pathname
26
-
27
-
29
+ }
28
30
  filter(pathname) {
29
31
  return this.matchers.reduce((matches, matcher) => {
30
32
  if (matcher.matchUrlPath(pathname)) {
31
33
  matches.push(matcher);
32
34
  }
33
-
34
35
  return matches;
35
36
  }, []);
36
- } // get best match from a set of matches
37
-
38
-
37
+ }
39
38
  best(pathname, matches) {
40
39
  let best;
41
40
  let matchedLen = 0;
42
-
43
41
  for (const match of matches) {
44
42
  const len = match.matchLength(pathname);
45
-
46
43
  if (len === null) {
47
44
  continue;
48
45
  }
49
-
50
46
  if (len > matchedLen) {
51
47
  best = match;
52
48
  matchedLen = len;
53
49
  }
54
50
  }
55
-
56
51
  return best;
57
- } // reset routes matcher
58
-
59
-
52
+ }
60
53
  reset(specs) {
61
54
  this.specs = specs;
62
55
  const matchers = specs.reduce((ms, spec) => {
63
- ms.push(new _matcher.RouteMatcher(spec));
56
+ ms.push(new import_matcher.RouteMatcher(spec));
64
57
  return ms;
65
58
  }, []);
66
59
  this.matchers = matchers;
67
- } // get best match from all matcher in manager
68
-
69
-
60
+ }
70
61
  match(pathname) {
71
62
  const matches = this.filter(pathname);
72
63
  const best = this.best(pathname, matches);
73
64
  return best;
74
65
  }
75
-
76
66
  matchEntry(entryname) {
77
- return this.matchers.find(matcher => matcher.matchEntry(entryname));
67
+ return this.matchers.find((matcher) => matcher.matchEntry(entryname));
78
68
  }
79
-
80
69
  getBundles() {
81
- const bundles = this.specs.filter(route => route.isSSR).map(route => route.bundle);
70
+ const bundles = this.specs.filter((route) => route.isSSR).map((route) => route.bundle);
82
71
  return bundles;
83
72
  }
84
-
85
73
  }
86
-
87
- exports.RouteMatchManager = RouteMatchManager;
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ RouteMatchManager,
77
+ RouteMatcher
78
+ });
@@ -1,50 +1,48 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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 matcher_exports = {};
19
+ __export(matcher_exports, {
20
+ RouteMatcher: () => RouteMatcher
5
21
  });
6
- exports.RouteMatcher = void 0;
7
-
8
- var _utils = require("@modern-js/utils");
9
-
10
- var _pathToRegexp = require("path-to-regexp");
11
-
12
- var _utils2 = require("../../utils");
13
-
14
- var _route = require("./route");
15
-
16
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
-
18
- // eslint-disable-next-line no-useless-escape
22
+ module.exports = __toCommonJS(matcher_exports);
23
+ var import_path_to_regexp = require("path-to-regexp");
24
+ var import_route = require("./route");
25
+ const removeTailSlash = (s) => s.replace(/\/+$/, "");
26
+ const toPath = (reg, params) => {
27
+ const fn = (0, import_path_to_regexp.compile)(reg, { encode: encodeURIComponent });
28
+ return fn(params);
29
+ };
19
30
  const regCharsDetector = /[^a-zA-Z\-_0-9\/\.]/;
20
-
21
31
  class RouteMatcher {
22
32
  constructor(spec) {
23
- _defineProperty(this, "spec", void 0);
24
-
25
- _defineProperty(this, "urlPath", '');
26
-
27
- _defineProperty(this, "urlMatcher", void 0);
28
-
29
- _defineProperty(this, "urlReg", void 0);
30
-
33
+ this.urlPath = "";
31
34
  this.spec = spec;
32
35
  this.setupUrlPath();
33
- } // generate modern route object
34
-
35
-
36
+ }
36
37
  generate(url) {
37
- const route = new _route.ModernRoute(this.spec);
38
-
38
+ const route = new import_route.ModernRoute(this.spec);
39
39
  if (this.urlPath) {
40
40
  const params = this.parseURLParams(url);
41
- route.urlPath = (0, _utils2.toPath)(route.urlPath, params);
41
+ route.urlPath = toPath(route.urlPath, params);
42
42
  route.params = params;
43
43
  }
44
-
45
44
  return route;
46
45
  }
47
-
48
46
  parseURLParams(pathname) {
49
47
  if (!this.urlMatcher) {
50
48
  return {};
@@ -52,67 +50,52 @@ class RouteMatcher {
52
50
  const matchResult = this.urlMatcher(pathname);
53
51
  return matchResult.params;
54
52
  }
55
- } // get match url length
56
-
57
-
53
+ }
58
54
  matchLength(pathname) {
55
+ var _a;
59
56
  if (!this.urlReg) {
60
57
  return this.urlPath.length;
61
58
  } else {
62
- var _result$;
63
-
64
59
  const result = this.urlReg.exec(pathname);
65
- return (result === null || result === void 0 ? void 0 : (_result$ = result[0]) === null || _result$ === void 0 ? void 0 : _result$.length) || null;
60
+ return ((_a = result == null ? void 0 : result[0]) == null ? void 0 : _a.length) || null;
66
61
  }
67
- } // if match url path
68
-
69
-
62
+ }
70
63
  matchUrlPath(requestUrl) {
71
- let urlWithoutSlash = requestUrl.endsWith('/') && requestUrl !== '/' ? requestUrl.slice(0, -1) : requestUrl;
72
-
73
- if (urlWithoutSlash.endsWith('.html')) {
64
+ let urlWithoutSlash = requestUrl.endsWith("/") && requestUrl !== "/" ? requestUrl.slice(0, -1) : requestUrl;
65
+ if (urlWithoutSlash.endsWith(".html")) {
74
66
  urlWithoutSlash = urlWithoutSlash.slice(0, -5);
75
67
  }
76
-
77
68
  if (this.urlMatcher) {
78
69
  return Boolean(this.urlMatcher(urlWithoutSlash));
79
70
  } else {
80
71
  if (urlWithoutSlash.startsWith(this.urlPath)) {
81
- // avoid /abcd match /a
82
- if (this.urlPath !== '/' && urlWithoutSlash.length > this.urlPath.length && !urlWithoutSlash.startsWith(`${this.urlPath}/`)) {
72
+ if (this.urlPath !== "/" && urlWithoutSlash.length > this.urlPath.length && !urlWithoutSlash.startsWith(`${this.urlPath}/`)) {
83
73
  return false;
84
74
  }
85
-
86
75
  return true;
87
76
  }
88
-
89
77
  return false;
90
78
  }
91
79
  }
92
-
93
80
  matchEntry(entryName) {
94
81
  return this.spec.entryName === entryName;
95
- } // compiler urlPath to regexp if necessary
96
-
97
-
82
+ }
98
83
  setupUrlPath() {
99
- const {
100
- urlPath
101
- } = this.spec;
102
- this.urlPath = urlPath === '/' ? urlPath : (0, _utils.removeTailSlash)(urlPath);
84
+ const { urlPath } = this.spec;
85
+ this.urlPath = urlPath === "/" ? urlPath : removeTailSlash(urlPath);
103
86
  const useReg = regCharsDetector.test(urlPath);
104
-
105
87
  if (useReg) {
106
- this.urlMatcher = (0, _pathToRegexp.match)(urlPath, {
88
+ this.urlMatcher = (0, import_path_to_regexp.match)(urlPath, {
107
89
  end: false,
108
90
  decode: decodeURIComponent
109
91
  });
110
- this.urlReg = (0, _pathToRegexp.pathToRegexp)(urlPath, [], {
92
+ this.urlReg = (0, import_path_to_regexp.pathToRegexp)(urlPath, [], {
111
93
  end: false
112
94
  });
113
95
  }
114
96
  }
115
-
116
97
  }
117
-
118
- exports.RouteMatcher = RouteMatcher;
98
+ // Annotate the CommonJS export names for ESM import in node:
99
+ 0 && (module.exports = {
100
+ RouteMatcher
101
+ });
@@ -1,47 +1,39 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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 route_exports = {};
19
+ __export(route_exports, {
20
+ ModernRoute: () => ModernRoute
5
21
  });
6
- exports.ModernRoute = void 0;
7
-
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
-
22
+ module.exports = __toCommonJS(route_exports);
10
23
  class ModernRoute {
11
24
  constructor(routeSpec) {
12
- var _routeSpec$enableMode;
13
-
14
- _defineProperty(this, "entryName", void 0);
15
-
16
- _defineProperty(this, "urlPath", void 0);
17
-
18
- _defineProperty(this, "entryPath", void 0);
19
-
20
- _defineProperty(this, "bundle", void 0);
21
-
22
- _defineProperty(this, "isApi", void 0);
23
-
24
- _defineProperty(this, "isSSR", void 0);
25
-
26
- _defineProperty(this, "isSPA", void 0);
27
-
28
- _defineProperty(this, "enableModernMode", void 0);
29
-
30
- _defineProperty(this, "params", {});
31
-
32
- _defineProperty(this, "responseHeaders", void 0);
33
-
34
- this.entryName = routeSpec.entryName || '';
25
+ this.params = {};
26
+ this.entryName = routeSpec.entryName || "";
35
27
  this.urlPath = routeSpec.urlPath;
36
- this.entryPath = routeSpec.entryPath || '';
28
+ this.entryPath = routeSpec.entryPath || "";
37
29
  this.isSSR = routeSpec.isSSR || false;
38
30
  this.isSPA = routeSpec.isSPA || false;
39
31
  this.isApi = routeSpec.isApi || false;
40
- this.bundle = routeSpec.bundle || '';
41
- this.enableModernMode = (_routeSpec$enableMode = routeSpec.enableModernMode) !== null && _routeSpec$enableMode !== void 0 ? _routeSpec$enableMode : false;
32
+ this.bundle = routeSpec.bundle || "";
42
33
  this.responseHeaders = routeSpec.responseHeaders;
43
34
  }
44
-
45
35
  }
46
-
47
- exports.ModernRoute = ModernRoute;
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ ModernRoute
39
+ });
@@ -1,60 +1,97 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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 __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
+ var serve_file_exports = {};
45
+ __export(serve_file_exports, {
46
+ createStaticFileHandler: () => createStaticFileHandler,
47
+ faviconFallbackHandler: () => faviconFallbackHandler
5
48
  });
6
- exports.createStaticFileHandler = void 0;
7
-
8
- var _serveStatic = _interopRequireDefault(require("serve-static"));
9
-
10
- var _utils = require("@modern-js/utils");
11
-
12
- var _utils2 = require("../utils");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- // Todo 看看是不是能 fork 一份,即使命中也返回
49
+ module.exports = __toCommonJS(serve_file_exports);
50
+ var import_serve_static = __toESM(require("serve-static"));
51
+ var import_utils = require("@modern-js/utils");
52
+ var import_utils2 = require("../utils");
17
53
  const removedPrefix = (req, prefix) => {
18
- if ((0, _utils2.useLocalPrefix)(prefix)) {
54
+ if ((0, import_utils2.useLocalPrefix)(prefix)) {
19
55
  req.url = req.url.slice(prefix.length);
20
56
  return () => {
21
57
  req.url = prefix + req.url;
22
58
  };
23
59
  } else {
24
- return () => {// emptyy
60
+ return () => {
25
61
  };
26
62
  }
27
63
  };
28
-
29
- const createStaticFileHandler = (rules, output = {}) => // eslint-disable-next-line consistent-return
30
- async (context, next) => {
31
- const {
32
- url: requestUrl,
33
- req,
34
- res
35
- } = context;
36
- const {
37
- assetPrefix = '/'
38
- } = output;
39
- const hitRule = rules.find(item => {
40
- if ((0, _utils.isString)(item.path) && requestUrl.startsWith(item.path)) {
64
+ const faviconFallbackHandler = (context, next) => {
65
+ if (context.url === "/favicon.ico") {
66
+ context.res.statusCode = 204;
67
+ context.res.end();
68
+ } else {
69
+ next();
70
+ }
71
+ };
72
+ const createStaticFileHandler = (rules, output = {}) => (context, next) => __async(void 0, null, function* () {
73
+ const { url: requestUrl, req, res } = context;
74
+ const { assetPrefix = "/" } = output;
75
+ const hitRule = rules.find((item) => {
76
+ if ((0, import_utils.isString)(item.path) && requestUrl.startsWith(item.path)) {
41
77
  return true;
42
- } else if ((0, _utils.isRegExp)(item.path) && item.path.test(requestUrl)) {
78
+ } else if ((0, import_utils.isRegExp)(item.path) && item.path.test(requestUrl)) {
43
79
  return true;
44
80
  }
45
-
46
81
  return false;
47
82
  });
48
-
49
83
  if (hitRule) {
50
84
  const resume = removedPrefix(req, assetPrefix);
51
- (0, _serveStatic.default)(hitRule.target)(req, res, () => {
85
+ (0, import_serve_static.default)(hitRule.target)(req, res, () => {
52
86
  resume();
53
87
  next();
54
88
  });
55
89
  } else {
56
90
  return next();
57
91
  }
58
- };
59
-
60
- exports.createStaticFileHandler = createStaticFileHandler;
92
+ });
93
+ // Annotate the CommonJS export names for ESM import in node:
94
+ 0 && (module.exports = {
95
+ createStaticFileHandler,
96
+ faviconFallbackHandler
97
+ });