@modern-js/prod-server 2.27.0 → 2.29.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 (64) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/index.js +4 -0
  3. package/dist/cjs/libs/context/context.js +10 -4
  4. package/dist/cjs/libs/hook-api/index.js +2 -1
  5. package/dist/cjs/libs/hook-api/index.worker.js +2 -1
  6. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +12 -7
  7. package/dist/cjs/libs/render/cache/index.js +2 -1
  8. package/dist/cjs/libs/render/cache/spr.js +2 -1
  9. package/dist/cjs/libs/render/index.js +12 -3
  10. package/dist/cjs/libs/render/reader.js +2 -1
  11. package/dist/cjs/libs/render/ssr.js +3 -20
  12. package/dist/cjs/libs/reporter.js +22 -0
  13. package/dist/cjs/libs/route/matcher.js +2 -2
  14. package/dist/cjs/libs/serverTiming.js +27 -0
  15. package/dist/cjs/server/index.js +6 -4
  16. package/dist/cjs/server/modernServer.js +44 -16
  17. package/dist/cjs/utils.js +33 -0
  18. package/dist/cjs/workerServer.js +15 -6
  19. package/dist/esm/index.js +1 -0
  20. package/dist/esm/libs/context/context.js +8 -2
  21. package/dist/esm/libs/hook-api/index.js +2 -1
  22. package/dist/esm/libs/hook-api/index.worker.js +2 -1
  23. package/dist/esm/libs/render/cache/__tests__/cache.test.js +12 -12
  24. package/dist/esm/libs/render/cache/index.js +2 -2
  25. package/dist/esm/libs/render/cache/spr.js +2 -2
  26. package/dist/esm/libs/render/index.js +12 -3
  27. package/dist/esm/libs/render/reader.js +2 -2
  28. package/dist/esm/libs/render/ssr.js +6 -28
  29. package/dist/esm/libs/reporter.js +12 -0
  30. package/dist/esm/libs/route/matcher.js +2 -2
  31. package/dist/esm/libs/serverTiming.js +27 -0
  32. package/dist/esm/renderHtml.js +6 -6
  33. package/dist/esm/server/index.js +6 -4
  34. package/dist/esm/server/modernServer.js +84 -44
  35. package/dist/esm/server/modernServerSplit.js +6 -6
  36. package/dist/esm/utils.js +57 -0
  37. package/dist/esm/workerServer.js +14 -5
  38. package/dist/esm-node/index.js +1 -0
  39. package/dist/esm-node/libs/context/context.js +8 -2
  40. package/dist/esm-node/libs/hook-api/index.js +2 -1
  41. package/dist/esm-node/libs/hook-api/index.worker.js +2 -1
  42. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +12 -7
  43. package/dist/esm-node/libs/render/cache/index.js +2 -1
  44. package/dist/esm-node/libs/render/cache/spr.js +2 -1
  45. package/dist/esm-node/libs/render/index.js +12 -3
  46. package/dist/esm-node/libs/render/reader.js +2 -1
  47. package/dist/esm-node/libs/render/ssr.js +3 -20
  48. package/dist/esm-node/libs/reporter.js +12 -0
  49. package/dist/esm-node/libs/route/matcher.js +2 -2
  50. package/dist/esm-node/libs/serverTiming.js +17 -0
  51. package/dist/esm-node/server/index.js +6 -4
  52. package/dist/esm-node/server/modernServer.js +45 -17
  53. package/dist/esm-node/utils.js +30 -0
  54. package/dist/esm-node/workerServer.js +15 -6
  55. package/dist/types/index.d.ts +1 -0
  56. package/dist/types/libs/context/context.d.ts +5 -2
  57. package/dist/types/libs/hook-api/index.worker.d.ts +2 -1
  58. package/dist/types/libs/render/index.d.ts +13 -18
  59. package/dist/types/libs/reporter.d.ts +2 -0
  60. package/dist/types/libs/serverTiming.d.ts +12 -0
  61. package/dist/types/server/modernServer.d.ts +6 -4
  62. package/dist/types/type.d.ts +1 -0
  63. package/dist/types/utils.d.ts +3 -2
  64. package/package.json +8 -8
@@ -23,6 +23,7 @@ const _indexworker = require("./libs/hook-api/index.worker");
23
23
  const _logger = require("./libs/logger");
24
24
  const _route = require("./libs/route");
25
25
  const _metrics = require("./libs/metrics");
26
+ const _reporter = require("./libs/reporter");
26
27
  class ReturnResponse {
27
28
  /**
28
29
  * Iterate a Object
@@ -88,7 +89,7 @@ const createHandler = (manifest) => {
88
89
  const { pages, routes } = manifest;
89
90
  routeMgr.reset(routes);
90
91
  return async (options) => {
91
- var _page_serverHooks, _page_serverHooks_afterMatch;
92
+ var _page_serverHooks_afterMatch, _page_serverHooks, _page;
92
93
  const { request, loadableStats, routeManifest } = options;
93
94
  const url = new URL(request.url);
94
95
  const pageMatch = routeMgr.match(url.pathname);
@@ -101,15 +102,16 @@ const createHandler = (manifest) => {
101
102
  level: "warn"
102
103
  });
103
104
  const metrics = _metrics.metrics;
104
- const hookContext = createWorkerHookContext(request.url, logger, metrics);
105
+ const reporter = _reporter.defaultReporter;
106
+ const hookContext = createWorkerHookContext(request.url, logger, metrics, reporter);
105
107
  const afterMatchHookContext = (0, _indexworker.createAfterMatchContext)(hookContext, entryName);
106
- page === null || page === void 0 ? void 0 : (_page_serverHooks = page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, () => void 0);
108
+ (_page = page) === null || _page === void 0 ? void 0 : (_page_serverHooks = _page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, () => void 0);
107
109
  if (checkIsSent(hookContext)) {
108
110
  return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
109
111
  }
110
112
  if (page.serverRender) {
111
113
  try {
112
- var _page_serverHooks1, _page_serverHooks2, _page_serverHooks_afterRender;
114
+ var _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2;
113
115
  const middlewarsHookContext = (0, _indexworker.createMiddlewareContext)(hookContext);
114
116
  applyMiddlewares(middlewarsHookContext, (_page_serverHooks1 = page.serverHooks) === null || _page_serverHooks1 === void 0 ? void 0 : _page_serverHooks1.middleware);
115
117
  if (checkIsSent(hookContext)) {
@@ -137,9 +139,15 @@ const createHandler = (manifest) => {
137
139
  template: page.template,
138
140
  entryName: page.entryName,
139
141
  logger,
142
+ reporter: _reporter.defaultReporter,
140
143
  metrics,
141
144
  // FIXME: pass correctly req & res
142
145
  req: request,
146
+ serverTiming: {
147
+ addServeTiming() {
148
+ return this;
149
+ }
150
+ },
143
151
  res: responseLike
144
152
  };
145
153
  const body = await page.serverRender(serverRenderContext);
@@ -184,7 +192,7 @@ function createResponse(template) {
184
192
  return RESPONSE_NOTFOUND;
185
193
  }
186
194
  }
187
- function createWorkerHookContext(url, logger, metrics) {
195
+ function createWorkerHookContext(url, logger, metrics, reporter) {
188
196
  const [res, req] = [
189
197
  {
190
198
  headers: new Headers(),
@@ -198,7 +206,8 @@ function createWorkerHookContext(url, logger, metrics) {
198
206
  res,
199
207
  req,
200
208
  logger,
201
- metrics
209
+ metrics,
210
+ reporter
202
211
  };
203
212
  }
204
213
  function applyMiddlewares(ctx, middleware) {
package/dist/esm/index.js CHANGED
@@ -4,6 +4,7 @@ export { ModernServer } from "./server/modernServer";
4
4
  export { createProxyHandler } from "./libs/proxy";
5
5
  export * from "./type";
6
6
  export * from "./constants";
7
+ export { createRenderHandler } from "./libs/render";
7
8
  export default function(options) {
8
9
  if (options == null) {
9
10
  throw new Error("can not start mserver without options");
@@ -7,21 +7,27 @@ import qs from "querystring";
7
7
  import { Buffer } from "buffer";
8
8
  import createEtag from "etag";
9
9
  import fresh from "fresh";
10
+ import { cutNameByHyphen } from "@modern-js/utils";
11
+ import { ServerTiming } from "../serverTiming";
12
+ import { defaultReporter } from "../reporter";
10
13
  import { headersWithoutCookie } from "../../utils";
11
14
  var MOCK_URL_BASE = "https://modernjs.dev/";
12
15
  export var ModernServerContext = /* @__PURE__ */ function() {
13
16
  "use strict";
14
17
  function ModernServerContext2(req, res, options) {
15
18
  _class_call_check(this, ModernServerContext2);
19
+ var _options;
16
20
  _define_property(this, "req", void 0);
17
21
  _define_property(this, "res", void 0);
18
22
  _define_property(this, "params", {});
19
- _define_property(this, "serverData", void 0);
23
+ _define_property(this, "reporter", defaultReporter);
24
+ _define_property(this, "serverTiming", void 0);
25
+ _define_property(this, "serverData", {});
20
26
  _define_property(this, "options", {});
21
27
  this.req = req;
22
28
  this.res = res;
23
29
  this.options = options || {};
24
- this.serverData = {};
30
+ this.serverTiming = new ServerTiming(res, cutNameByHyphen(((_options = options) === null || _options === void 0 ? void 0 : _options.metaName) || "modern-js"));
25
31
  this.bind();
26
32
  }
27
33
  _create_class(ModernServerContext2, [
@@ -4,10 +4,11 @@ import { RouteAPI } from "./route";
4
4
  import { TemplateAPI } from "./template";
5
5
  import { BaseRequest, BaseResponse } from "./base";
6
6
  export var base = function(context) {
7
- var res = context.res;
7
+ var res = context.res, reporter = context.reporter;
8
8
  return {
9
9
  response: new BaseResponse(res),
10
10
  request: new BaseRequest(context),
11
+ reporter: reporter,
11
12
  logger: context.logger,
12
13
  metrics: context.metrics
13
14
  };
@@ -55,7 +55,7 @@ var ServerResponse = /* @__PURE__ */ function() {
55
55
  return ServerResponse2;
56
56
  }();
57
57
  export var base = function(context) {
58
- var req = context.req, res = context.res, logger = context.logger, metrics = context.metrics;
58
+ var req = context.req, res = context.res, logger = context.logger, metrics = context.metrics, reporter = context.reporter;
59
59
  var serverResponse = new ServerResponse(res);
60
60
  var _ref = new URL(req.url), host = _ref.host, pathname = _ref.pathname, searchParams = _ref.searchParams;
61
61
  var headers = {};
@@ -64,6 +64,7 @@ export var base = function(context) {
64
64
  });
65
65
  return {
66
66
  response: new BaseResponse(serverResponse),
67
+ reporter: reporter,
67
68
  request: new BaseRequest({
68
69
  url: req.url,
69
70
  host: host,
@@ -21,7 +21,7 @@ var createCacheConfig = function() {
21
21
  jest.setTimeout(6e4);
22
22
  describe("cache", function() {
23
23
  it("should cache correctly", /* @__PURE__ */ _async_to_generator(function() {
24
- var cache, context, content, cacheConfig, cacheResult;
24
+ var _cacheResult, cache, context, content, cacheConfig, cacheResult;
25
25
  return _ts_generator(this, function(_state) {
26
26
  switch (_state.label) {
27
27
  case 0:
@@ -48,7 +48,7 @@ describe("cache", function() {
48
48
  case 2:
49
49
  cacheResult = _state.sent();
50
50
  expect(cacheResult).not.toBe(null);
51
- expect(cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.content).toBe("hello");
51
+ expect((_cacheResult = cacheResult) === null || _cacheResult === void 0 ? void 0 : _cacheResult.content).toBe("hello");
52
52
  return [
53
53
  2
54
54
  ];
@@ -261,7 +261,7 @@ describe("cache", function() {
261
261
  });
262
262
  }));
263
263
  it("should get cache correctly", /* @__PURE__ */ _async_to_generator(function() {
264
- var cache, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, cacheable, context, cacheConfig, cacheResult, err;
264
+ var cache, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, cacheable, _cacheResult, context, cacheConfig, cacheResult, err;
265
265
  return _ts_generator(this, function(_state) {
266
266
  switch (_state.label) {
267
267
  case 0:
@@ -304,7 +304,7 @@ describe("cache", function() {
304
304
  ];
305
305
  case 4:
306
306
  cacheResult = _state.sent();
307
- expect(cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.content).toBe(cacheable.content);
307
+ expect((_cacheResult = cacheResult) === null || _cacheResult === void 0 ? void 0 : _cacheResult.content).toBe(cacheable.content);
308
308
  _state.label = 5;
309
309
  case 5:
310
310
  _iteratorNormalCompletion = true;
@@ -346,7 +346,7 @@ describe("cache", function() {
346
346
  });
347
347
  }));
348
348
  it("should match cache correctly", /* @__PURE__ */ _async_to_generator(function() {
349
- var cache, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, cacheable, _cacheable, baseCacheable, matchOne, other, _baseCacheable_requestOpt, requestOpt, cacheConfig, content, context, matchContext, cacheResult, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, notMatch, notMatchContext, nothing, err, err;
349
+ var cache, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, cacheable, _cacheResult, _cacheable, baseCacheable, matchOne, other, _baseCacheable_requestOpt, requestOpt, cacheConfig, content, context, matchContext, cacheResult, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, notMatch, notMatchContext, nothing, err, err;
350
350
  return _ts_generator(this, function(_state) {
351
351
  switch (_state.label) {
352
352
  case 0:
@@ -396,7 +396,7 @@ describe("cache", function() {
396
396
  ];
397
397
  case 4:
398
398
  cacheResult = _state.sent();
399
- expect(cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.content).toBe(content);
399
+ expect((_cacheResult = cacheResult) === null || _cacheResult === void 0 ? void 0 : _cacheResult.content).toBe(content);
400
400
  _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
401
401
  _state.label = 5;
402
402
  case 5:
@@ -501,7 +501,7 @@ describe("cache", function() {
501
501
  });
502
502
  }));
503
503
  it("should stale cache correctly", /* @__PURE__ */ _async_to_generator(function() {
504
- var cache, context, config, content, shouldCache, freshResult, staleResult;
504
+ var _freshResult, _staleResult, cache, context, config, content, shouldCache, freshResult, staleResult;
505
505
  return _ts_generator(this, function(_state) {
506
506
  switch (_state.label) {
507
507
  case 0:
@@ -530,7 +530,7 @@ describe("cache", function() {
530
530
  ];
531
531
  case 2:
532
532
  freshResult = _state.sent();
533
- expect(freshResult === null || freshResult === void 0 ? void 0 : freshResult.isStale).toBe(false);
533
+ expect((_freshResult = freshResult) === null || _freshResult === void 0 ? void 0 : _freshResult.isStale).toBe(false);
534
534
  return [
535
535
  4,
536
536
  new Promise(function(resolve) {
@@ -547,7 +547,7 @@ describe("cache", function() {
547
547
  ];
548
548
  case 4:
549
549
  staleResult = _state.sent();
550
- expect(staleResult === null || staleResult === void 0 ? void 0 : staleResult.isStale).toBe(true);
550
+ expect((_staleResult = staleResult) === null || _staleResult === void 0 ? void 0 : _staleResult.isStale).toBe(true);
551
551
  return [
552
552
  2
553
553
  ];
@@ -555,7 +555,7 @@ describe("cache", function() {
555
555
  });
556
556
  }));
557
557
  it("should garbage cache correctly", /* @__PURE__ */ _async_to_generator(function() {
558
- var cache, context, config, content, shouldCache, freshResult, staleResult;
558
+ var _freshResult, _staleResult, cache, context, config, content, shouldCache, freshResult, staleResult;
559
559
  return _ts_generator(this, function(_state) {
560
560
  switch (_state.label) {
561
561
  case 0:
@@ -585,7 +585,7 @@ describe("cache", function() {
585
585
  ];
586
586
  case 2:
587
587
  freshResult = _state.sent();
588
- expect(freshResult === null || freshResult === void 0 ? void 0 : freshResult.isGarbage).toBe(false);
588
+ expect((_freshResult = freshResult) === null || _freshResult === void 0 ? void 0 : _freshResult.isGarbage).toBe(false);
589
589
  return [
590
590
  4,
591
591
  new Promise(function(resolve) {
@@ -602,7 +602,7 @@ describe("cache", function() {
602
602
  ];
603
603
  case 4:
604
604
  staleResult = _state.sent();
605
- expect(staleResult === null || staleResult === void 0 ? void 0 : staleResult.isGarbage).toBe(true);
605
+ expect((_staleResult = staleResult) === null || _staleResult === void 0 ? void 0 : _staleResult.isGarbage).toBe(true);
606
606
  return [
607
607
  2
608
608
  ];
@@ -9,7 +9,7 @@ export default function(renderFn, ctx) {
9
9
  var sprCache = createCache();
10
10
  var doRender = function() {
11
11
  var _ref = _async_to_generator(function(context) {
12
- var cacheContext, cacheFile, renderResult, cacheHash, renderResult1, render;
12
+ var _cacheFile, cacheContext, cacheFile, renderResult, cacheHash, renderResult1, render;
13
13
  function afterRender(source, onAfterRender) {
14
14
  return _afterRender.apply(this, arguments);
15
15
  }
@@ -124,7 +124,7 @@ export default function(renderFn, ctx) {
124
124
  afterRender(renderResult, saveHtmlIntoCache)
125
125
  ];
126
126
  case 3:
127
- cacheHash = cacheFile === null || cacheFile === void 0 ? void 0 : cacheFile.hash;
127
+ cacheHash = (_cacheFile = cacheFile) === null || _cacheFile === void 0 ? void 0 : _cacheFile.hash;
128
128
  if (!cacheFile.isGarbage)
129
129
  return [
130
130
  3,
@@ -311,11 +311,11 @@ var CacheManager = /* @__PURE__ */ function() {
311
311
  value: function del(context, cacheHash) {
312
312
  var _this = this;
313
313
  return _async_to_generator(function() {
314
- var cacheKey, data;
314
+ var _data, cacheKey, data;
315
315
  return _ts_generator(this, function(_state) {
316
316
  cacheKey = _this.generateRequestKey(context);
317
317
  data = _this.cache.get(cacheKey);
318
- data === null || data === void 0 ? void 0 : data.caches.del(cacheHash);
318
+ (_data = data) === null || _data === void 0 ? void 0 : _data.caches.del(cacheHash);
319
319
  return [
320
320
  2
321
321
  ];
@@ -8,10 +8,10 @@ import { readFile } from "./reader";
8
8
  import * as ssr from "./ssr";
9
9
  import { injectServerData } from "./utils";
10
10
  export var createRenderHandler = function(param) {
11
- var distDir = param.distDir, staticGenerate = param.staticGenerate, forceCSR = param.forceCSR, nonce = param.nonce, _param_metaName = param.metaName, metaName = _param_metaName === void 0 ? "modern-js" : _param_metaName;
11
+ var distDir = param.distDir, staticGenerate = param.staticGenerate, forceCSR = param.forceCSR, nonce = param.nonce, ssrRender = param.ssrRender, _param_metaName = param.metaName, metaName = _param_metaName === void 0 ? "modern-js" : _param_metaName;
12
12
  return function() {
13
13
  var _render = _async_to_generator(function(param2) {
14
- var ctx, route, runner, entryPath, urlPath, entry, result, templatePath, content, useCSR, result1, err;
14
+ var ctx, route, runner, entryPath, urlPath, entry, result, templatePath, content, useCSR, ssrRenderOptions, result1, err;
15
15
  return _ts_generator(this, function(_state) {
16
16
  switch (_state.label) {
17
17
  case 0:
@@ -67,9 +67,18 @@ export var createRenderHandler = function(param) {
67
67
  ,
68
68
  7
69
69
  ]);
70
+ ssrRenderOptions = {
71
+ distDir: distDir,
72
+ entryName: route.entryName,
73
+ urlPath: route.urlPath,
74
+ bundle: route.bundle,
75
+ template: content.toString(),
76
+ staticGenerate: staticGenerate,
77
+ nonce: nonce
78
+ };
70
79
  return [
71
80
  4,
72
- ssr.render(ctx, {
81
+ ssrRender ? ssrRender(ctx, ssrRenderOptions, runner) : ssr.render(ctx, {
73
82
  distDir: distDir,
74
83
  entryName: route.entryName,
75
84
  urlPath: route.urlPath,
@@ -157,7 +157,7 @@ export var LruReader = /* @__PURE__ */ function() {
157
157
  var reader = new LruReader();
158
158
  export var readFile = function() {
159
159
  var _ref = _async_to_generator(function(filepath) {
160
- var file;
160
+ var _file, file;
161
161
  return _ts_generator(this, function(_state) {
162
162
  switch (_state.label) {
163
163
  case 0:
@@ -169,7 +169,7 @@ export var readFile = function() {
169
169
  file = _state.sent();
170
170
  return [
171
171
  2,
172
- file === null || file === void 0 ? void 0 : file.content
172
+ (_file = file) === null || _file === void 0 ? void 0 : _file.content
173
173
  ];
174
174
  }
175
175
  });
@@ -7,7 +7,7 @@ import { createLogger, createMetrics } from "./measure";
7
7
  import { injectServerDataStream, injectServerData } from "./utils";
8
8
  export var render = function() {
9
9
  var _ref = _async_to_generator(function(ctx, renderOptions, runner) {
10
- var _ctx_res, urlPath, bundle, distDir, template, entryName, staticGenerate, _renderOptions_enableUnsafeCtx, enableUnsafeCtx, nonce, bundleJS, loadableUri, loadableStats, routesManifestUri, routeManifest, body, context, bundleJSContent, serverRender, content, _context_redirection, url, _context_redirection_status, status;
10
+ var _ctx_res, urlPath, bundle, distDir, template, entryName, staticGenerate, _renderOptions_enableUnsafeCtx, enableUnsafeCtx, nonce, bundleJS, loadableUri, loadableStats, routesManifestUri, routeManifest, context, bundleJSContent, serverRender, content, _context_redirection, url, _context_redirection_status, status;
11
11
  return _ts_generator(this, function(_state) {
12
12
  switch (_state.label) {
13
13
  case 0:
@@ -17,12 +17,6 @@ export var render = function() {
17
17
  loadableStats = fs.existsSync(loadableUri) ? require(loadableUri) : "";
18
18
  routesManifestUri = path.join(distDir, ROUTE_MANIFEST_FILE);
19
19
  routeManifest = fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
20
- return [
21
- 4,
22
- getRequestBody(ctx.req)
23
- ];
24
- case 1:
25
- body = _state.sent();
26
20
  context = {
27
21
  request: {
28
22
  baseUrl: urlPath,
@@ -32,7 +26,7 @@ export var render = function() {
32
26
  query: ctx.query,
33
27
  url: ctx.href,
34
28
  headers: ctx.headers,
35
- body: body
29
+ body: ctx.req.body
36
30
  },
37
31
  response: {
38
32
  setHeader: function(key, value) {
@@ -51,6 +45,8 @@ export var render = function() {
51
45
  staticGenerate: staticGenerate,
52
46
  logger: void 0,
53
47
  metrics: void 0,
48
+ reporter: ctx.reporter,
49
+ serverTiming: ctx.serverTiming,
54
50
  req: ctx.req,
55
51
  res: ctx.res,
56
52
  enableUnsafeCtx: enableUnsafeCtx,
@@ -63,14 +59,14 @@ export var render = function() {
63
59
  4,
64
60
  Promise.resolve(require(bundleJS))
65
61
  ];
66
- case 2:
62
+ case 1:
67
63
  bundleJSContent = _state.sent();
68
64
  serverRender = bundleJSContent[SERVER_RENDER_FUNCTION_NAME];
69
65
  return [
70
66
  4,
71
67
  cache(serverRender, ctx)(context)
72
68
  ];
73
- case 3:
69
+ case 2:
74
70
  content = _state.sent();
75
71
  _context_redirection = context.redirection, url = _context_redirection.url, _context_redirection_status = _context_redirection.status, status = _context_redirection_status === void 0 ? 302 : _context_redirection_status;
76
72
  if (url) {
@@ -112,21 +108,3 @@ export var render = function() {
112
108
  return _ref.apply(this, arguments);
113
109
  };
114
110
  }();
115
- var getRequestBody = function(req) {
116
- return new Promise(function(resolve, reject) {
117
- if ((req === null || req === void 0 ? void 0 : req.method) && req.method.toLowerCase() !== "get") {
118
- var body = "";
119
- req.on("data", function(chunk) {
120
- body += chunk.toString();
121
- });
122
- req.on("end", function() {
123
- resolve(body);
124
- });
125
- req.on("error", function(err) {
126
- reject(err);
127
- });
128
- } else {
129
- resolve(void 0);
130
- }
131
- });
132
- };
@@ -0,0 +1,12 @@
1
+ export var defaultReporter = {
2
+ init: function init() {
3
+ },
4
+ reportError: function reportError() {
5
+ },
6
+ reportTiming: function reportTiming() {
7
+ },
8
+ reportInfo: function reportInfo() {
9
+ },
10
+ reportWarn: function reportWarn() {
11
+ }
12
+ };
@@ -65,9 +65,9 @@ export var RouteMatcher = /* @__PURE__ */ function() {
65
65
  if (!this.urlReg) {
66
66
  return this.urlPath.length;
67
67
  } else {
68
- var _result_;
68
+ var _result_, _result;
69
69
  var result = this.urlReg.exec(pathname);
70
- return (result === null || result === void 0 ? void 0 : (_result_ = result[0]) === null || _result_ === void 0 ? void 0 : _result_.length) || null;
70
+ return ((_result = result) === null || _result === void 0 ? void 0 : (_result_ = _result[0]) === null || _result_ === void 0 ? void 0 : _result_.length) || null;
71
71
  }
72
72
  }
73
73
  )
@@ -0,0 +1,27 @@
1
+ import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
2
+ import { _ as _create_class } from "@swc/helpers/_/_create_class";
3
+ import { _ as _define_property } from "@swc/helpers/_/_define_property";
4
+ var SERVER_TIMING = "Server-Timing";
5
+ export var ServerTiming = /* @__PURE__ */ function() {
6
+ "use strict";
7
+ function ServerTiming2(res, meta) {
8
+ _class_call_check(this, ServerTiming2);
9
+ _define_property(this, "meta", void 0);
10
+ _define_property(this, "res", void 0);
11
+ this.meta = meta;
12
+ this.res = res;
13
+ }
14
+ _create_class(ServerTiming2, [
15
+ {
16
+ key: "addServeTiming",
17
+ value: function addServeTiming(name, dur, desc) {
18
+ var _name = "bd-".concat(this.meta, "-").concat(name);
19
+ var serverTiming = this.res.getHeader(SERVER_TIMING) || this.res.getHeader(SERVER_TIMING.toLocaleLowerCase());
20
+ var value = "".concat(_name, ";").concat(desc ? 'decs="'.concat(desc, '";') : "", " dur=").concat(dur);
21
+ this.res.setHeader(SERVER_TIMING, serverTiming ? "".concat(serverTiming, ", ").concat(value) : value);
22
+ return this;
23
+ }
24
+ }
25
+ ]);
26
+ return ServerTiming2;
27
+ }();
@@ -11,9 +11,9 @@ import { Readable } from "stream";
11
11
  import { Socket } from "net";
12
12
  import { Server } from "./server";
13
13
  import { isRedirect } from "./utils";
14
- var IncomingMessageLike = /* @__PURE__ */ function(Readable2) {
14
+ var IncomingMessageLike = /* @__PURE__ */ function(Readable1) {
15
15
  "use strict";
16
- _inherits(IncomingMessageLike2, Readable2);
16
+ _inherits(IncomingMessageLike2, Readable1);
17
17
  var _super = _create_super(IncomingMessageLike2);
18
18
  function IncomingMessageLike2(param) {
19
19
  var method = param.method, url = param.url, headers = param.headers;
@@ -33,9 +33,9 @@ var IncomingMessageLike = /* @__PURE__ */ function(Readable2) {
33
33
  }
34
34
  return IncomingMessageLike2;
35
35
  }(Readable);
36
- var ServerResponseLike = /* @__PURE__ */ function(OutgoingMessage2) {
36
+ var ServerResponseLike = /* @__PURE__ */ function(OutgoingMessage1) {
37
37
  "use strict";
38
- _inherits(ServerResponseLike2, OutgoingMessage2);
38
+ _inherits(ServerResponseLike2, OutgoingMessage1);
39
39
  var _super = _create_super(ServerResponseLike2);
40
40
  function ServerResponseLike2() {
41
41
  _class_call_check(this, ServerResponseLike2);
@@ -60,9 +60,9 @@ var ServerResponseLike = /* @__PURE__ */ function(OutgoingMessage2) {
60
60
  ]);
61
61
  return ServerResponseLike2;
62
62
  }(OutgoingMessage);
63
- var CustomServer = /* @__PURE__ */ function(Server2) {
63
+ var CustomServer = /* @__PURE__ */ function(Server1) {
64
64
  "use strict";
65
- _inherits(CustomServer2, Server2);
65
+ _inherits(CustomServer2, Server1);
66
66
  var _super = _create_super(CustomServer2);
67
67
  function CustomServer2() {
68
68
  _class_call_check(this, CustomServer2);
@@ -210,7 +210,8 @@ export var Server = /* @__PURE__ */ function() {
210
210
  key: "listen",
211
211
  value: function listen(options, listener) {
212
212
  var callback = function() {
213
- listener === null || listener === void 0 ? void 0 : listener();
213
+ var _listener;
214
+ (_listener = listener) === null || _listener === void 0 ? void 0 : _listener();
214
215
  };
215
216
  if (typeof options === "object") {
216
217
  if (process.env.PORT) {
@@ -306,6 +307,7 @@ export var Server = /* @__PURE__ */ function() {
306
307
  {
307
308
  key: "initAppContext",
308
309
  value: function initAppContext() {
310
+ var _appContext, _appContext1, _appContext2;
309
311
  var options = this.options;
310
312
  var appDirectory = options.pwd, _options_plugins = options.plugins, plugins = _options_plugins === void 0 ? [] : _options_plugins, config = options.config, appContext = options.appContext;
311
313
  var serverPlugins = plugins.map(function(p) {
@@ -315,9 +317,9 @@ export var Server = /* @__PURE__ */ function() {
315
317
  });
316
318
  return {
317
319
  appDirectory: appDirectory,
318
- apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
319
- lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
320
- sharedDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || path.resolve(appDirectory, SHARED_DIR),
320
+ apiDirectory: (_appContext = appContext) === null || _appContext === void 0 ? void 0 : _appContext.apiDirectory,
321
+ lambdaDirectory: (_appContext1 = appContext) === null || _appContext1 === void 0 ? void 0 : _appContext1.lambdaDirectory,
322
+ sharedDirectory: ((_appContext2 = appContext) === null || _appContext2 === void 0 ? void 0 : _appContext2.sharedDirectory) || path.resolve(appDirectory, SHARED_DIR),
321
323
  distDirectory: path.join(appDirectory, config.output.path || "dist"),
322
324
  plugins: serverPlugins
323
325
  };