@modern-js/prod-server 2.0.0-beta.2 → 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 +132 -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 -419
  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 -443
  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 -911
  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,25 +1,16 @@
1
- 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; }
2
- export class ModernRoute {
1
+ class ModernRoute {
3
2
  constructor(routeSpec) {
4
- var _routeSpec$enableMode;
5
- _defineProperty(this, "entryName", void 0);
6
- _defineProperty(this, "urlPath", void 0);
7
- _defineProperty(this, "entryPath", void 0);
8
- _defineProperty(this, "bundle", void 0);
9
- _defineProperty(this, "isApi", void 0);
10
- _defineProperty(this, "isSSR", void 0);
11
- _defineProperty(this, "isSPA", void 0);
12
- _defineProperty(this, "enableModernMode", void 0);
13
- _defineProperty(this, "params", {});
14
- _defineProperty(this, "responseHeaders", void 0);
15
- this.entryName = routeSpec.entryName || '';
3
+ this.params = {};
4
+ this.entryName = routeSpec.entryName || "";
16
5
  this.urlPath = routeSpec.urlPath;
17
- this.entryPath = routeSpec.entryPath || '';
6
+ this.entryPath = routeSpec.entryPath || "";
18
7
  this.isSSR = routeSpec.isSSR || false;
19
8
  this.isSPA = routeSpec.isSPA || false;
20
9
  this.isApi = routeSpec.isApi || false;
21
- this.bundle = routeSpec.bundle || '';
22
- this.enableModernMode = (_routeSpec$enableMode = routeSpec.enableModernMode) !== null && _routeSpec$enableMode !== void 0 ? _routeSpec$enableMode : false;
10
+ this.bundle = routeSpec.bundle || "";
23
11
  this.responseHeaders = routeSpec.responseHeaders;
24
12
  }
25
- }
13
+ }
14
+ export {
15
+ ModernRoute
16
+ };
@@ -1,7 +1,25 @@
1
- // Todo 看看是不是能 fork 一份,即使命中也返回
2
-
3
- import serve from 'serve-static';
4
- import { isString, isRegExp } from '@modern-js/utils';
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import serve from "serve-static";
22
+ import { isString, isRegExp } from "@modern-js/utils";
5
23
  import { useLocalPrefix } from "../utils";
6
24
  const removedPrefix = (req, prefix) => {
7
25
  if (useLocalPrefix(prefix)) {
@@ -11,30 +29,21 @@ const removedPrefix = (req, prefix) => {
11
29
  };
12
30
  } else {
13
31
  return () => {
14
- // emptyy
15
32
  };
16
33
  }
17
34
  };
18
- export const faviconFallbackHandler = (context, next) => {
19
- if (context.url === '/favicon.ico') {
35
+ const faviconFallbackHandler = (context, next) => {
36
+ if (context.url === "/favicon.ico") {
20
37
  context.res.statusCode = 204;
21
38
  context.res.end();
22
39
  } else {
23
40
  next();
24
41
  }
25
42
  };
26
- export const createStaticFileHandler = (rules, output = {}) =>
27
- // eslint-disable-next-line consistent-return
28
- async (context, next) => {
29
- const {
30
- url: requestUrl,
31
- req,
32
- res
33
- } = context;
34
- const {
35
- assetPrefix = '/'
36
- } = output;
37
- const hitRule = rules.find(item => {
43
+ const createStaticFileHandler = (rules, output = {}) => (context, next) => __async(void 0, null, function* () {
44
+ const { url: requestUrl, req, res } = context;
45
+ const { assetPrefix = "/" } = output;
46
+ const hitRule = rules.find((item) => {
38
47
  if (isString(item.path) && requestUrl.startsWith(item.path)) {
39
48
  return true;
40
49
  } else if (isRegExp(item.path) && item.path.test(requestUrl)) {
@@ -51,4 +60,8 @@ async (context, next) => {
51
60
  } else {
52
61
  return next();
53
62
  }
54
- };
63
+ });
64
+ export {
65
+ createStaticFileHandler,
66
+ faviconFallbackHandler
67
+ };
@@ -1,122 +1,138 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- 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; }
4
- import path from 'path';
5
- import fs from 'fs';
6
- import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand, INTERNAL_SERVER_PLUGINS } from '@modern-js/utils';
7
- import { serverManager, AppContext, ConfigContext, loadPlugins } from '@modern-js/server-core';
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+ import path from "path";
41
+ import fs from "fs";
42
+ import {
43
+ Logger,
44
+ SHARED_DIR,
45
+ OUTPUT_CONFIG_FILE,
46
+ dotenv,
47
+ dotenvExpand,
48
+ INTERNAL_SERVER_PLUGINS
49
+ } from "@modern-js/utils";
50
+ import {
51
+ serverManager,
52
+ AppContext,
53
+ ConfigContext,
54
+ loadPlugins
55
+ } from "@modern-js/server-core";
8
56
  import { metrics as defaultMetrics } from "../libs/metrics";
9
- import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
57
+ import {
58
+ loadConfig,
59
+ getServerConfigPath,
60
+ requireConfig
61
+ } from "../libs/loadConfig";
10
62
  import { debug } from "../utils";
11
63
  import { createProdServer } from "./modern-server-split";
12
- export class Server {
64
+ class Server {
13
65
  constructor(options) {
14
- _defineProperty(this, "options", void 0);
15
- _defineProperty(this, "serverImpl", createProdServer);
16
- _defineProperty(this, "server", void 0);
17
- _defineProperty(this, "app", void 0);
18
- _defineProperty(this, "runner", void 0);
19
- _defineProperty(this, "serverConfig", void 0);
66
+ this.serverImpl = createProdServer;
20
67
  options.logger = options.logger || new Logger({
21
- level: 'warn'
68
+ level: "warn"
22
69
  });
23
70
  options.metrics = options.metrics || defaultMetrics;
24
71
  this.options = options;
25
72
  this.serverConfig = {};
26
73
  }
27
-
28
- /**
29
- * 初始化顺序
30
- * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
31
- * - 获取 server runtime config
32
- * - 设置 context
33
- * - 创建 hooksRunner
34
- * - 合并插件,内置插件和 serverConfig 中配置的插件
35
- * - 执行 config hook
36
- * - 获取最终的配置
37
- * - 设置配置到 context
38
- * - 初始化 server
39
- * - 执行 prepare hook
40
- * - 执行 server init
41
- */
42
- async init() {
43
- const {
44
- options
45
- } = this;
46
- this.loadServerEnv(options);
47
- this.initServerConfig(options);
48
- await this.injectContext(this.runner, options);
49
-
50
- // initialize server runner
51
- this.runner = await this.createHookRunner();
52
-
53
- // init config and execute config hook
54
- await this.initConfig(this.runner, options);
55
- await this.injectContext(this.runner, options);
56
-
57
- // initialize server
58
- this.server = this.serverImpl(options);
59
- await this.runPrepareHook(this.runner);
60
-
61
- // create http-server
62
- this.app = await this.server.createHTTPServer(this.getRequestHandler());
63
-
64
- // runner can only be used after server init
65
- await this.server.onInit(this.runner, this.app);
66
- return this;
74
+ init() {
75
+ return __async(this, null, function* () {
76
+ const { options } = this;
77
+ this.loadServerEnv(options);
78
+ this.initServerConfig(options);
79
+ yield this.injectContext(this.runner, options);
80
+ this.runner = yield this.createHookRunner();
81
+ yield this.initConfig(this.runner, options);
82
+ yield this.injectContext(this.runner, options);
83
+ this.server = this.serverImpl(options);
84
+ yield this.runPrepareHook(this.runner);
85
+ this.app = yield this.server.createHTTPServer(this.getRequestHandler());
86
+ yield this.server.onInit(this.runner, this.app);
87
+ return this;
88
+ });
67
89
  }
68
-
69
- /**
70
- * Execute config hooks
71
- * @param runner
72
- * @param options
73
- */
74
90
  runConfigHook(runner, serverConfig) {
75
91
  const newServerConfig = runner.config(serverConfig || {});
76
92
  return newServerConfig;
77
93
  }
78
- async runPrepareHook(runner) {
79
- runner.prepare();
94
+ runPrepareHook(runner) {
95
+ return __async(this, null, function* () {
96
+ runner.prepare();
97
+ });
80
98
  }
81
99
  initServerConfig(options) {
82
- const {
83
- pwd,
100
+ const { pwd, serverConfigFile } = options;
101
+ const distDirectory = path.join(pwd, options.config.output.path || "dist");
102
+ const serverConfigPath = getServerConfigPath(
103
+ distDirectory,
84
104
  serverConfigFile
85
- } = options;
86
- const distDirectory = path.join(pwd, options.config.output.path || 'dist');
87
- const serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
105
+ );
88
106
  const serverConfig = requireConfig(serverConfigPath);
89
107
  this.serverConfig = serverConfig;
90
108
  }
91
-
92
- /**
93
- *
94
- * merge cliConfig and serverConfig
95
- */
96
- async initConfig(runner, options) {
97
- const {
98
- pwd,
99
- config
100
- } = options;
101
- const {
102
- serverConfig
103
- } = this;
104
- const finalServerConfig = this.runConfigHook(runner, serverConfig);
105
- const resolvedConfigPath = path.join(pwd, config.output.path || 'dist', OUTPUT_CONFIG_FILE);
106
- options.config = loadConfig({
107
- cliConfig: config,
108
- serverConfig: finalServerConfig,
109
- resolvedConfigPath
109
+ initConfig(runner, options) {
110
+ return __async(this, null, function* () {
111
+ const { pwd, config } = options;
112
+ const { serverConfig } = this;
113
+ const finalServerConfig = this.runConfigHook(runner, serverConfig);
114
+ const resolvedConfigPath = path.join(
115
+ pwd,
116
+ config.output.path || "dist",
117
+ OUTPUT_CONFIG_FILE
118
+ );
119
+ options.config = loadConfig({
120
+ cliConfig: config,
121
+ serverConfig: finalServerConfig,
122
+ resolvedConfigPath
123
+ });
110
124
  });
111
125
  }
112
- async close() {
113
- this.app.close();
126
+ close() {
127
+ return __async(this, null, function* () {
128
+ this.app.close();
129
+ });
114
130
  }
115
131
  listen(options, listener) {
116
132
  const callback = () => {
117
- listener === null || listener === void 0 ? void 0 : listener();
133
+ listener == null ? void 0 : listener();
118
134
  };
119
- if (typeof options === 'object') {
135
+ if (typeof options === "object") {
120
136
  this.app.listen(options, callback);
121
137
  } else {
122
138
  this.app.listen(process.env.PORT || options || 8080, callback);
@@ -128,76 +144,59 @@ export class Server {
128
144
  return requestHandler(req, res, next);
129
145
  };
130
146
  }
131
- async render(req, res, url) {
132
- return this.server.render(req, res, url);
133
- }
134
- async createHookRunner() {
135
- // clear server manager every create time
136
- serverManager.clear();
137
- const {
138
- options
139
- } = this;
140
- // TODO: 确认下这里是不是可以不从 options 中取插件,而是从 config 中取和过滤
141
- const {
142
- internalPlugins = INTERNAL_SERVER_PLUGINS,
143
- pwd
144
- } = options;
145
- const serverPlugins = this.serverConfig.plugins || [];
146
-
147
- // server app context for serve plugin
148
- const loadedPlugins = loadPlugins(pwd, serverPlugins, {
149
- internalPlugins
147
+ render(req, res, url) {
148
+ return __async(this, null, function* () {
149
+ return this.server.render(req, res, url);
150
150
  });
151
- debug('plugins', loadedPlugins);
152
- loadedPlugins.forEach(p => {
153
- serverManager.usePlugin(p);
151
+ }
152
+ createHookRunner() {
153
+ return __async(this, null, function* () {
154
+ serverManager.clear();
155
+ const { options } = this;
156
+ const { internalPlugins = INTERNAL_SERVER_PLUGINS, pwd } = options;
157
+ const serverPlugins = this.serverConfig.plugins || [];
158
+ const loadedPlugins = loadPlugins(pwd, serverPlugins, { internalPlugins });
159
+ debug("plugins", loadedPlugins);
160
+ loadedPlugins.forEach((p) => {
161
+ serverManager.usePlugin(p);
162
+ });
163
+ const hooksRunner = yield serverManager.init();
164
+ return hooksRunner;
154
165
  });
155
-
156
- // create runner
157
- const hooksRunner = await serverManager.init();
158
- return hooksRunner;
159
166
  }
160
- async injectContext(runner, options) {
161
- const appContext = this.initAppContext();
162
- const {
163
- config,
164
- pwd
165
- } = options;
166
- ConfigContext.set(config);
167
- AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
168
- distDirectory: path.join(pwd, config.output.path || 'dist')
169
- }));
167
+ injectContext(runner, options) {
168
+ return __async(this, null, function* () {
169
+ const appContext = this.initAppContext();
170
+ const { config, pwd } = options;
171
+ ConfigContext.set(config);
172
+ AppContext.set(__spreadProps(__spreadValues({}, appContext), {
173
+ distDirectory: path.join(pwd, config.output.path || "dist")
174
+ }));
175
+ });
170
176
  }
171
177
  initAppContext() {
172
- const {
173
- options
174
- } = this;
175
- const {
176
- pwd: appDirectory,
177
- plugins = [],
178
- config
179
- } = options;
180
- const serverPlugins = plugins.map(p => ({
178
+ const { options } = this;
179
+ const { pwd: appDirectory, plugins = [], config } = options;
180
+ const serverPlugins = plugins.map((p) => ({
181
181
  server: p
182
182
  }));
183
183
  return {
184
184
  appDirectory,
185
- distDirectory: path.join(appDirectory, config.output.path || 'dist'),
185
+ distDirectory: path.join(appDirectory, config.output.path || "dist"),
186
186
  sharedDirectory: path.resolve(appDirectory, SHARED_DIR),
187
187
  plugins: serverPlugins
188
188
  };
189
189
  }
190
190
  loadServerEnv(options) {
191
- const {
192
- pwd: appDirectory
193
- } = options;
191
+ const { pwd: appDirectory } = options;
194
192
  const serverEnv = process.env.MODERN_ENV;
195
193
  const serverEnvPath = path.resolve(appDirectory, `.env.${serverEnv}`);
196
194
  if (serverEnv && fs.existsSync(serverEnvPath) && !fs.statSync(serverEnvPath).isDirectory()) {
197
- const envConfig = dotenv.config({
198
- path: serverEnvPath
199
- });
195
+ const envConfig = dotenv.config({ path: serverEnvPath });
200
196
  dotenvExpand(envConfig);
201
197
  }
202
198
  }
203
- }
199
+ }
200
+ export {
201
+ Server
202
+ };
@@ -1,10 +1,35 @@
1
+ var __getProtoOf = Object.getPrototypeOf;
2
+ var __reflectGet = Reflect.get;
3
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
4
+ var __async = (__this, __arguments, generator) => {
5
+ return new Promise((resolve, reject) => {
6
+ var fulfilled = (value) => {
7
+ try {
8
+ step(generator.next(value));
9
+ } catch (e) {
10
+ reject(e);
11
+ }
12
+ };
13
+ var rejected = (value) => {
14
+ try {
15
+ step(generator.throw(value));
16
+ } catch (e) {
17
+ reject(e);
18
+ }
19
+ };
20
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
21
+ step((generator = generator.apply(__this, __arguments)).next());
22
+ });
23
+ };
1
24
  import { ModernServer } from "./modern-server";
2
25
  class ModernSSRServer extends ModernServer {
3
26
  prepareAPIHandler(_) {
4
27
  return null;
5
28
  }
6
- async handleAPI(context) {
7
- return this.render404(context);
29
+ handleAPI(context) {
30
+ return __async(this, null, function* () {
31
+ return this.render404(context);
32
+ });
8
33
  }
9
34
  }
10
35
  class ModernAPIServer extends ModernServer {
@@ -12,22 +37,28 @@ class ModernAPIServer extends ModernServer {
12
37
  return null;
13
38
  }
14
39
  filterRoutes(routes) {
15
- return routes.filter(route => route.isApi);
40
+ return routes.filter((route) => route.isApi);
16
41
  }
17
42
  }
18
43
  class ModernWebServer extends ModernServer {
19
- async warmupSSRBundle() {
20
- return null;
44
+ warmupSSRBundle() {
45
+ return __async(this, null, function* () {
46
+ return null;
47
+ });
21
48
  }
22
- async handleAPI(context) {
23
- return this.render404(context);
49
+ handleAPI(context) {
50
+ return __async(this, null, function* () {
51
+ return this.render404(context);
52
+ });
24
53
  }
25
- async handleWeb(context, route) {
26
- route.isSSR = false;
27
- return super.handleWeb(context, route);
54
+ handleWeb(context, route) {
55
+ return __async(this, null, function* () {
56
+ route.isSSR = false;
57
+ return __superGet(ModernWebServer.prototype, this, "handleWeb").call(this, context, route);
58
+ });
28
59
  }
29
60
  }
30
- export const createProdServer = options => {
61
+ const createProdServer = (options) => {
31
62
  if (options.apiOnly) {
32
63
  return new ModernAPIServer(options);
33
64
  } else if (options.ssrOnly) {
@@ -37,4 +68,7 @@ export const createProdServer = options => {
37
68
  } else {
38
69
  return new ModernServer(options);
39
70
  }
40
- };
71
+ };
72
+ export {
73
+ createProdServer
74
+ };