@modern-js/prod-server 2.0.0-beta.3 → 2.0.0-beta.4

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 (130) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/js/modern/constants.js +32 -25
  3. package/dist/js/modern/index.js +11 -6
  4. package/dist/js/modern/libs/context/context.js +52 -84
  5. package/dist/js/modern/libs/context/index.js +5 -2
  6. package/dist/js/modern/libs/hook-api/index.js +42 -35
  7. package/dist/js/modern/libs/hook-api/route.js +6 -7
  8. package/dist/js/modern/libs/hook-api/template.js +20 -34
  9. package/dist/js/modern/libs/loadConfig.js +45 -24
  10. package/dist/js/modern/libs/metrics.js +3 -4
  11. package/dist/js/modern/libs/proxy.js +68 -37
  12. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -67
  13. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -216
  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 +88 -54
  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 -6
  20. package/dist/js/modern/libs/render/cache/spr.js +133 -117
  21. package/dist/js/modern/libs/render/cache/type.js +0 -1
  22. package/dist/js/modern/libs/render/cache/util.js +71 -39
  23. package/dist/js/modern/libs/render/index.js +76 -56
  24. package/dist/js/modern/libs/render/measure.js +38 -27
  25. package/dist/js/modern/libs/render/reader.js +65 -62
  26. package/dist/js/modern/libs/render/ssr.js +50 -32
  27. package/dist/js/modern/libs/render/static.js +50 -33
  28. package/dist/js/modern/libs/render/type.js +9 -6
  29. package/dist/js/modern/libs/route/index.js +8 -15
  30. package/dist/js/modern/libs/route/matcher.js +20 -34
  31. package/dist/js/modern/libs/route/route.js +9 -18
  32. package/dist/js/modern/libs/serve-file.js +33 -20
  33. package/dist/js/modern/server/index.js +144 -145
  34. package/dist/js/modern/server/modern-server-split.js +46 -12
  35. package/dist/js/modern/server/modern-server.js +377 -417
  36. package/dist/js/modern/type.js +0 -1
  37. package/dist/js/modern/utils.js +62 -43
  38. package/dist/js/modern/worker-server.js +34 -14
  39. package/dist/js/node/constants.js +45 -30
  40. package/dist/js/node/index.js +31 -57
  41. package/dist/js/node/libs/context/context.js +79 -94
  42. package/dist/js/node/libs/context/index.js +23 -13
  43. package/dist/js/node/libs/hook-api/index.js +69 -48
  44. package/dist/js/node/libs/hook-api/route.js +22 -11
  45. package/dist/js/node/libs/hook-api/template.js +36 -39
  46. package/dist/js/node/libs/loadConfig.js +69 -35
  47. package/dist/js/node/libs/metrics.js +21 -9
  48. package/dist/js/node/libs/proxy.js +86 -44
  49. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +132 -70
  50. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +268 -218
  51. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +61 -55
  52. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +54 -40
  53. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +101 -119
  54. package/dist/js/node/libs/render/cache/index.js +110 -64
  55. package/dist/js/node/libs/render/cache/page-caches/index.js +50 -14
  56. package/dist/js/node/libs/render/cache/page-caches/lru.js +29 -12
  57. package/dist/js/node/libs/render/cache/spr.js +156 -129
  58. package/dist/js/node/libs/render/cache/type.js +0 -5
  59. package/dist/js/node/libs/render/cache/util.js +88 -45
  60. package/dist/js/node/libs/render/index.js +102 -67
  61. package/dist/js/node/libs/render/measure.js +55 -31
  62. package/dist/js/node/libs/render/reader.js +87 -70
  63. package/dist/js/node/libs/render/ssr.js +76 -47
  64. package/dist/js/node/libs/render/static.js +75 -40
  65. package/dist/js/node/libs/render/type.js +27 -12
  66. package/dist/js/node/libs/route/index.js +26 -26
  67. package/dist/js/node/libs/route/matcher.js +36 -41
  68. package/dist/js/node/libs/route/route.js +25 -22
  69. package/dist/js/node/libs/serve-file.js +61 -32
  70. package/dist/js/node/server/index.js +160 -160
  71. package/dist/js/node/server/modern-server-split.js +68 -22
  72. package/dist/js/node/server/modern-server.js +395 -441
  73. package/dist/js/node/type.js +0 -3
  74. package/dist/js/node/utils.js +74 -52
  75. package/dist/js/node/worker-server.js +53 -21
  76. package/dist/js/treeshaking/constants.js +26 -25
  77. package/dist/js/treeshaking/index.js +10 -10
  78. package/dist/js/treeshaking/libs/context/context.js +268 -237
  79. package/dist/js/treeshaking/libs/context/index.js +3 -3
  80. package/dist/js/treeshaking/libs/hook-api/index.js +265 -143
  81. package/dist/js/treeshaking/libs/hook-api/route.js +65 -30
  82. package/dist/js/treeshaking/libs/hook-api/template.js +121 -85
  83. package/dist/js/treeshaking/libs/loadConfig.js +80 -37
  84. package/dist/js/treeshaking/libs/metrics.js +4 -10
  85. package/dist/js/treeshaking/libs/proxy.js +240 -76
  86. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +288 -121
  87. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +772 -455
  88. package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +65 -51
  89. package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -35
  90. package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +144 -118
  91. package/dist/js/treeshaking/libs/render/cache/index.js +337 -175
  92. package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +151 -27
  93. package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +80 -42
  94. package/dist/js/treeshaking/libs/render/cache/spr.js +470 -340
  95. package/dist/js/treeshaking/libs/render/cache/type.js +1 -1
  96. package/dist/js/treeshaking/libs/render/cache/util.js +271 -92
  97. package/dist/js/treeshaking/libs/render/index.js +228 -95
  98. package/dist/js/treeshaking/libs/render/measure.js +142 -57
  99. package/dist/js/treeshaking/libs/render/reader.js +325 -177
  100. package/dist/js/treeshaking/libs/render/ssr.js +220 -95
  101. package/dist/js/treeshaking/libs/render/static.js +210 -78
  102. package/dist/js/treeshaking/libs/render/type.js +7 -6
  103. package/dist/js/treeshaking/libs/route/index.js +125 -89
  104. package/dist/js/treeshaking/libs/route/matcher.js +132 -107
  105. package/dist/js/treeshaking/libs/route/route.js +40 -26
  106. package/dist/js/treeshaking/libs/serve-file.js +177 -68
  107. package/dist/js/treeshaking/server/index.js +468 -327
  108. package/dist/js/treeshaking/server/modern-server-split.js +352 -144
  109. package/dist/js/treeshaking/server/modern-server.js +1046 -909
  110. package/dist/js/treeshaking/type.js +1 -1
  111. package/dist/js/treeshaking/utils.js +138 -81
  112. package/dist/js/treeshaking/worker-server.js +176 -55
  113. package/dist/types/index.d.ts +2 -0
  114. package/dist/types/libs/context/context.d.ts +4 -1
  115. package/dist/types/libs/loadConfig.d.ts +1 -0
  116. package/dist/types/libs/render/cache/index.d.ts +2 -0
  117. package/dist/types/libs/render/cache/spr.d.ts +2 -0
  118. package/dist/types/libs/route/route.d.ts +0 -1
  119. package/dist/types/server/index.d.ts +3 -0
  120. package/dist/types/utils.d.ts +1 -1
  121. package/dist/types/worker-server.d.ts +1 -2
  122. package/package.json +7 -14
  123. package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
  124. package/dist/js/modern/libs/render/modern/index.js +0 -37
  125. package/dist/js/node/libs/render/modern/browser-list.js +0 -14
  126. package/dist/js/node/libs/render/modern/index.js +0 -46
  127. package/dist/js/treeshaking/libs/render/modern/browser-list.js +0 -7
  128. package/dist/js/treeshaking/libs/render/modern/index.js +0 -39
  129. package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
  130. package/dist/types/libs/render/modern/index.d.ts +0 -3
@@ -1,98 +1,223 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import path from 'path';
4
- import { fs, LOADABLE_STATS_FILE, mime, ROUTE_MINIFEST_FILE, SERVER_RENDER_FUNCTION_NAME } from '@modern-js/utils';
5
- import cookie from 'cookie';
6
- import cache from "./cache";
7
- import { createLogger, createMetrics } from "./measure";
8
- export var render = /*#__PURE__*/function () {
9
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, renderOptions, runner) {
10
- var _ctx$res;
11
- var urlPath, bundle, distDir, template, entryName, staticGenerate, bundleJS, loadableUri, loadableStats, routesManifestUri, routeManifest, context, serverRender, content, _context$redirection, url, _context$redirection$, status;
12
- return _regeneratorRuntime().wrap(function _callee$(_context) {
13
- while (1) {
14
- switch (_context.prev = _context.next) {
15
- case 0:
16
- urlPath = renderOptions.urlPath, bundle = renderOptions.bundle, distDir = renderOptions.distDir, template = renderOptions.template, entryName = renderOptions.entryName, staticGenerate = renderOptions.staticGenerate;
17
- bundleJS = path.join(distDir, bundle);
18
- loadableUri = path.join(distDir, LOADABLE_STATS_FILE);
19
- loadableStats = fs.existsSync(loadableUri) ? require(loadableUri) : '';
20
- routesManifestUri = path.join(distDir, ROUTE_MINIFEST_FILE);
21
- routeManifest = fs.existsSync(routesManifestUri) ? require(routesManifestUri) : undefined;
22
- context = {
23
- request: {
24
- baseUrl: urlPath,
25
- params: ctx.params,
26
- pathname: ctx.path,
27
- host: ctx.host,
28
- query: ctx.query,
29
- url: ctx.href,
30
- cookieMap: cookie.parse(ctx.headers.cookie || ''),
31
- headers: ctx.headers
32
- },
33
- response: {
34
- setHeader: function setHeader(key, value) {
35
- return ctx.res.setHeader(key, value);
36
- },
37
- status: function status(code) {
38
- ctx.res.statusCode = code;
39
- },
40
- locals: ((_ctx$res = ctx.res) === null || _ctx$res === void 0 ? void 0 : _ctx$res.locals) || {}
41
- },
42
- redirection: {},
43
- template: template,
44
- loadableStats: loadableStats,
45
- routeManifest: routeManifest,
46
- // for streaming ssr
47
- entryName: entryName,
48
- staticGenerate: staticGenerate,
49
- logger: undefined,
50
- metrics: undefined,
51
- req: ctx.req,
52
- res: ctx.res
53
- };
54
- context.logger = createLogger(context, ctx.logger);
55
- context.metrics = createMetrics(context, ctx.metrics);
56
- runner.extendSSRContext(context);
57
- serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
58
- _context.next = 13;
59
- return cache(serverRender, ctx)(context);
60
- case 13:
61
- content = _context.sent;
62
- _context$redirection = context.redirection, url = _context$redirection.url, _context$redirection$ = _context$redirection.status, status = _context$redirection$ === void 0 ? 302 : _context$redirection$;
63
- if (!url) {
64
- _context.next = 17;
65
- break;
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
66
25
  }
67
- return _context.abrupt("return", {
68
- content: url,
69
- contentType: '',
70
- statusCode: status,
71
- redirect: true
72
- });
73
- case 17:
74
- if (!(typeof content === 'string')) {
75
- _context.next = 21;
76
- break;
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
77
107
  }
78
- return _context.abrupt("return", {
79
- content: content,
80
- contentType: mime.contentType('html')
81
- });
82
- case 21:
83
- return _context.abrupt("return", {
84
- content: '',
85
- contentStream: content,
86
- contentType: mime.contentType('html')
87
- });
88
- case 22:
89
- case "end":
90
- return _context.stop();
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
91
117
  }
92
- }
93
- }, _callee);
94
- }));
95
- return function render(_x, _x2, _x3) {
96
- return _ref.apply(this, arguments);
97
- };
98
- }();
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import path from "path";
126
+ import { fs, LOADABLE_STATS_FILE, mime, ROUTE_MINIFEST_FILE, SERVER_RENDER_FUNCTION_NAME } from "@modern-js/utils";
127
+ import cookie from "cookie";
128
+ import cache from "./cache";
129
+ import { createLogger, createMetrics } from "./measure";
130
+ var render = function() {
131
+ var _ref = _asyncToGenerator(function(ctx, renderOptions, runner) {
132
+ var ref, urlPath, bundle, distDir, template, entryName, staticGenerate, bundleJS, loadableUri, loadableStats, routesManifestUri, routeManifest, context, serverRender, content, _redirection, url, _status, status;
133
+ return __generator(this, function(_state) {
134
+ switch(_state.label){
135
+ case 0:
136
+ urlPath = renderOptions.urlPath, bundle = renderOptions.bundle, distDir = renderOptions.distDir, template = renderOptions.template, entryName = renderOptions.entryName, staticGenerate = renderOptions.staticGenerate;
137
+ bundleJS = path.join(distDir, bundle);
138
+ loadableUri = path.join(distDir, LOADABLE_STATS_FILE);
139
+ loadableStats = fs.existsSync(loadableUri) ? require(loadableUri) : "";
140
+ routesManifestUri = path.join(distDir, ROUTE_MINIFEST_FILE);
141
+ routeManifest = fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
142
+ context = {
143
+ request: {
144
+ baseUrl: urlPath,
145
+ params: ctx.params,
146
+ pathname: ctx.path,
147
+ host: ctx.host,
148
+ query: ctx.query,
149
+ url: ctx.href,
150
+ cookieMap: cookie.parse(ctx.headers.cookie || ""),
151
+ headers: ctx.headers
152
+ },
153
+ response: {
154
+ setHeader: function(key, value) {
155
+ return ctx.res.setHeader(key, value);
156
+ },
157
+ status: function(code) {
158
+ ctx.res.statusCode = code;
159
+ },
160
+ locals: ((ref = ctx.res) === null || ref === void 0 ? void 0 : ref.locals) || {}
161
+ },
162
+ redirection: {},
163
+ template: template,
164
+ loadableStats: loadableStats,
165
+ routeManifest: routeManifest,
166
+ entryName: entryName,
167
+ staticGenerate: staticGenerate,
168
+ logger: void 0,
169
+ metrics: void 0,
170
+ req: ctx.req,
171
+ res: ctx.res
172
+ };
173
+ context.logger = createLogger(context, ctx.logger);
174
+ context.metrics = createMetrics(context, ctx.metrics);
175
+ runner.extendSSRContext(context);
176
+ serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
177
+ return [
178
+ 4,
179
+ cache(serverRender, ctx)(context)
180
+ ];
181
+ case 1:
182
+ content = _state.sent();
183
+ _redirection = context.redirection, url = _redirection.url, _status = _redirection.status, status = _status === void 0 ? 302 : _status;
184
+ if (url) {
185
+ return [
186
+ 2,
187
+ {
188
+ content: url,
189
+ contentType: "",
190
+ statusCode: status,
191
+ redirect: true
192
+ }
193
+ ];
194
+ }
195
+ if (typeof content === "string") {
196
+ return [
197
+ 2,
198
+ {
199
+ content: content,
200
+ contentType: mime.contentType("html")
201
+ }
202
+ ];
203
+ } else {
204
+ return [
205
+ 2,
206
+ {
207
+ content: "",
208
+ contentStream: content,
209
+ contentType: mime.contentType("html")
210
+ }
211
+ ];
212
+ }
213
+ return [
214
+ 2
215
+ ];
216
+ }
217
+ });
218
+ });
219
+ return function render(ctx, renderOptions, runner) {
220
+ return _ref.apply(this, arguments);
221
+ };
222
+ }();
223
+ export { render };
@@ -1,84 +1,216 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import path from 'path';
4
- import { mime } from '@modern-js/utils';
5
- import { readFile } from "./reader";
6
- export function handleDirectory(_x, _x2, _x3) {
7
- return _handleDirectory.apply(this, arguments);
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
8
14
  }
9
- function _handleDirectory() {
10
- _handleDirectory = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, entryPath, urlPath) {
11
- var pathname, filepath, content, contentType;
12
- return _regeneratorRuntime().wrap(function _callee$(_context) {
13
- while (1) {
14
- switch (_context.prev = _context.next) {
15
- case 0:
16
- pathname = ctx.path;
17
- filepath = path.join(entryPath, trimLeft(pathname, urlPath)); // If can match accurately, always return the one that matches accurately
18
- _context.next = 4;
19
- return readFile(filepath);
20
- case 4:
21
- content = _context.sent;
22
- contentType = mime.contentType(path.extname(filepath) || ''); // automatic addressing
23
- if (content) {
24
- _context.next = 22;
25
- break;
26
- }
27
- if (!pathname.endsWith('/')) {
28
- _context.next = 13;
29
- break;
30
- }
31
- _context.next = 10;
32
- return readFile("".concat(filepath, "index.html"));
33
- case 10:
34
- content = _context.sent;
35
- _context.next = 21;
36
- break;
37
- case 13:
38
- if (pathname.includes('.')) {
39
- _context.next = 21;
40
- break;
41
- }
42
- _context.next = 16;
43
- return readFile("".concat(filepath, ".html"));
44
- case 16:
45
- content = _context.sent;
46
- if (content) {
47
- _context.next = 21;
48
- break;
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
49
22
  }
50
- _context.next = 20;
51
- return readFile("".concat(filepath, "/index.html"));
52
- case 20:
53
- content = _context.sent;
54
- case 21:
55
- // set content-type as html
56
- if (content) {
57
- contentType = mime.contentType('html');
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
58
25
  }
59
- case 22:
60
- if (content) {
61
- _context.next = 24;
62
- break;
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g;
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
63
107
  }
64
- return _context.abrupt("return", null);
65
- case 24:
66
- return _context.abrupt("return", {
67
- content: content,
68
- contentType: contentType || ''
69
- });
70
- case 25:
71
- case "end":
72
- return _context.stop();
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
73
117
  }
74
- }
75
- }, _callee);
76
- }));
77
- return _handleDirectory.apply(this, arguments);
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import path from "path";
126
+ import { mime } from "@modern-js/utils";
127
+ import { readFile } from "./reader";
128
+ function handleDirectory(ctx, entryPath, urlPath) {
129
+ return _handleDirectory.apply(this, arguments);
130
+ }
131
+ function _handleDirectory() {
132
+ _handleDirectory = _asyncToGenerator(function(ctx, entryPath, urlPath) {
133
+ var pathname, filepath, content, contentType;
134
+ return __generator(this, function(_state) {
135
+ switch(_state.label){
136
+ case 0:
137
+ pathname = ctx.path;
138
+ filepath = path.join(entryPath, trimLeft(pathname, urlPath));
139
+ return [
140
+ 4,
141
+ readFile(filepath)
142
+ ];
143
+ case 1:
144
+ content = _state.sent();
145
+ contentType = mime.contentType(path.extname(filepath) || "");
146
+ if (!!content) return [
147
+ 3,
148
+ 7
149
+ ];
150
+ if (!pathname.endsWith("/")) return [
151
+ 3,
152
+ 3
153
+ ];
154
+ return [
155
+ 4,
156
+ readFile("".concat(filepath, "index.html"))
157
+ ];
158
+ case 2:
159
+ content = _state.sent();
160
+ return [
161
+ 3,
162
+ 6
163
+ ];
164
+ case 3:
165
+ if (!!pathname.includes(".")) return [
166
+ 3,
167
+ 6
168
+ ];
169
+ return [
170
+ 4,
171
+ readFile("".concat(filepath, ".html"))
172
+ ];
173
+ case 4:
174
+ content = _state.sent();
175
+ if (!!content) return [
176
+ 3,
177
+ 6
178
+ ];
179
+ return [
180
+ 4,
181
+ readFile("".concat(filepath, "/index.html"))
182
+ ];
183
+ case 5:
184
+ content = _state.sent();
185
+ _state.label = 6;
186
+ case 6:
187
+ if (content) {
188
+ contentType = mime.contentType("html");
189
+ }
190
+ _state.label = 7;
191
+ case 7:
192
+ if (!content) {
193
+ return [
194
+ 2,
195
+ null
196
+ ];
197
+ }
198
+ return [
199
+ 2,
200
+ {
201
+ content: content,
202
+ contentType: contentType || ""
203
+ }
204
+ ];
205
+ }
206
+ });
207
+ });
208
+ return _handleDirectory.apply(this, arguments);
78
209
  }
79
- var trimLeft = function trimLeft(str, prefix) {
80
- if (str.startsWith(prefix)) {
81
- return str.substring(prefix.length);
82
- }
83
- return str;
84
- };
210
+ var trimLeft = function(str, prefix) {
211
+ if (str.startsWith(prefix)) {
212
+ return str.substring(prefix.length);
213
+ }
214
+ return str;
215
+ };
216
+ export { handleDirectory };
@@ -1,6 +1,7 @@
1
- export var RenderLevel;
2
- (function (RenderLevel) {
3
- RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
4
- RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
5
- RenderLevel[RenderLevel["SERVER_RENDER"] = 2] = "SERVER_RENDER";
6
- })(RenderLevel || (RenderLevel = {}));
1
+ var RenderLevel = /* @__PURE__ */ function(RenderLevel2) {
2
+ RenderLevel2[RenderLevel2["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
3
+ RenderLevel2[RenderLevel2["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
4
+ RenderLevel2[RenderLevel2["SERVER_RENDER"] = 2] = "SERVER_RENDER";
5
+ return RenderLevel2;
6
+ }(RenderLevel || {});
7
+ export { RenderLevel };