@modern-js/prod-server 1.21.6 → 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.
- package/CHANGELOG.md +274 -13
- package/dist/js/modern/constants.js +32 -27
- package/dist/js/modern/index.js +11 -7
- package/dist/js/modern/libs/context/context.js +54 -132
- package/dist/js/modern/libs/context/index.js +5 -2
- package/dist/js/modern/libs/hook-api/index.js +134 -0
- package/dist/js/modern/libs/hook-api/route.js +13 -37
- package/dist/js/modern/libs/hook-api/template.js +41 -32
- package/dist/js/modern/libs/loadConfig.js +46 -32
- package/dist/js/modern/libs/metrics.js +6 -7
- package/dist/js/modern/libs/proxy.js +70 -44
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -68
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -225
- package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
- package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
- package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
- package/dist/js/modern/libs/render/cache/index.js +93 -50
- package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -16
- package/dist/js/modern/libs/render/cache/spr.js +133 -167
- package/dist/js/modern/libs/render/cache/type.js +0 -1
- package/dist/js/modern/libs/render/cache/util.js +71 -45
- package/dist/js/modern/libs/render/index.js +76 -61
- package/dist/js/modern/libs/render/measure.js +42 -34
- package/dist/js/modern/libs/render/reader.js +68 -76
- package/dist/js/modern/libs/render/ssr.js +63 -33
- package/dist/js/modern/libs/render/static.js +51 -37
- package/dist/js/modern/libs/render/type.js +9 -7
- package/dist/js/modern/libs/route/index.js +12 -30
- package/dist/js/modern/libs/route/matcher.js +28 -50
- package/dist/js/modern/libs/route/route.js +9 -31
- package/dist/js/modern/libs/serve-file.js +40 -20
- package/dist/js/modern/server/index.js +152 -168
- package/dist/js/modern/server/modern-server-split.js +44 -60
- package/dist/js/modern/server/modern-server.js +416 -526
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +62 -58
- package/dist/js/modern/worker-server.js +54 -0
- package/dist/js/node/constants.js +53 -32
- package/dist/js/node/index.js +37 -67
- package/dist/js/node/libs/context/context.js +84 -150
- package/dist/js/node/libs/context/index.js +28 -16
- package/dist/js/node/libs/hook-api/index.js +164 -0
- package/dist/js/node/libs/hook-api/route.js +35 -45
- package/dist/js/node/libs/hook-api/template.js +64 -40
- package/dist/js/node/libs/loadConfig.js +74 -55
- package/dist/js/node/libs/metrics.js +28 -12
- package/dist/js/node/libs/proxy.js +90 -55
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +99 -61
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +147 -140
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +65 -55
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +58 -40
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +105 -119
- package/dist/js/node/libs/render/cache/index.js +115 -65
- package/dist/js/node/libs/render/cache/page-caches/index.js +54 -16
- package/dist/js/node/libs/render/cache/page-caches/lru.js +33 -26
- package/dist/js/node/libs/render/cache/spr.js +161 -188
- package/dist/js/node/libs/render/cache/type.js +15 -5
- package/dist/js/node/libs/render/cache/util.js +99 -63
- package/dist/js/node/libs/render/index.js +106 -87
- package/dist/js/node/libs/render/measure.js +61 -44
- package/dist/js/node/libs/render/reader.js +98 -100
- package/dist/js/node/libs/render/ssr.js +92 -58
- package/dist/js/node/libs/render/static.js +80 -53
- package/dist/js/node/libs/render/type.js +31 -13
- package/dist/js/node/libs/route/index.js +35 -44
- package/dist/js/node/libs/route/matcher.js +48 -65
- package/dist/js/node/libs/route/route.js +29 -37
- package/dist/js/node/libs/serve-file.js +74 -37
- package/dist/js/node/server/index.js +170 -203
- package/dist/js/node/server/modern-server-split.js +70 -73
- package/dist/js/node/server/modern-server.js +432 -577
- package/dist/js/node/type.js +15 -3
- package/dist/js/node/utils.js +87 -93
- package/dist/js/node/worker-server.js +77 -0
- package/dist/js/treeshaking/constants.js +29 -0
- package/dist/js/treeshaking/index.js +13 -0
- package/dist/js/treeshaking/libs/context/context.js +274 -0
- package/dist/js/treeshaking/libs/context/index.js +5 -0
- package/dist/js/treeshaking/libs/hook-api/index.js +281 -0
- package/dist/js/treeshaking/libs/hook-api/route.js +68 -0
- package/dist/js/treeshaking/libs/hook-api/template.js +127 -0
- package/dist/js/treeshaking/libs/loadConfig.js +82 -0
- package/dist/js/treeshaking/libs/metrics.js +6 -0
- package/dist/js/treeshaking/libs/proxy.js +244 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +291 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +781 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +67 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +147 -0
- package/dist/js/treeshaking/libs/render/cache/index.js +346 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +154 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +84 -0
- package/dist/js/treeshaking/libs/render/cache/spr.js +492 -0
- package/dist/js/treeshaking/libs/render/cache/type.js +1 -0
- package/dist/js/treeshaking/libs/render/cache/util.js +280 -0
- package/dist/js/treeshaking/libs/render/index.js +233 -0
- package/dist/js/treeshaking/libs/render/measure.js +146 -0
- package/dist/js/treeshaking/libs/render/reader.js +339 -0
- package/dist/js/treeshaking/libs/render/ssr.js +223 -0
- package/dist/js/treeshaking/libs/render/static.js +216 -0
- package/dist/js/treeshaking/libs/render/type.js +7 -0
- package/dist/js/treeshaking/libs/route/index.js +130 -0
- package/dist/js/treeshaking/libs/route/matcher.js +138 -0
- package/dist/js/treeshaking/libs/route/route.js +40 -0
- package/dist/js/treeshaking/libs/serve-file.js +184 -0
- package/dist/js/treeshaking/server/index.js +505 -0
- package/dist/js/treeshaking/server/modern-server-split.js +360 -0
- package/dist/js/treeshaking/server/modern-server.js +1083 -0
- package/dist/js/treeshaking/type.js +1 -0
- package/dist/js/treeshaking/utils.js +147 -0
- package/dist/js/treeshaking/worker-server.js +177 -0
- package/dist/types/libs/context/context.d.ts +1 -1
- package/dist/types/libs/hook-api/index.d.ts +5 -0
- package/dist/types/libs/hook-api/route.d.ts +9 -14
- package/dist/types/libs/hook-api/template.d.ts +19 -9
- package/dist/types/libs/render/cache/index.d.ts +4 -2
- package/dist/types/libs/render/type.d.ts +3 -1
- package/dist/types/libs/route/route.d.ts +0 -1
- package/dist/types/libs/serve-file.d.ts +2 -1
- package/dist/types/server/index.d.ts +2 -0
- package/dist/types/server/modern-server.d.ts +11 -11
- package/dist/types/type.d.ts +8 -10
- package/dist/types/utils.d.ts +3 -4
- package/dist/types/worker-server.d.ts +15 -0
- package/package.json +31 -45
- package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
- package/dist/js/modern/libs/render/modern/index.js +0 -48
- package/dist/js/node/libs/render/modern/browser-list.js +0 -14
- package/dist/js/node/libs/render/modern/index.js +0 -64
- package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
- package/dist/types/libs/render/modern/index.d.ts +0 -3
|
@@ -1,224 +1,208 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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";
|
|
11
56
|
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
12
|
-
import {
|
|
57
|
+
import {
|
|
58
|
+
loadConfig,
|
|
59
|
+
getServerConfigPath,
|
|
60
|
+
requireConfig
|
|
61
|
+
} from "../libs/loadConfig";
|
|
13
62
|
import { debug } from "../utils";
|
|
14
63
|
import { createProdServer } from "./modern-server-split";
|
|
15
|
-
|
|
64
|
+
class Server {
|
|
16
65
|
constructor(options) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
_defineProperty(this, "serverImpl", createProdServer);
|
|
20
|
-
|
|
21
|
-
_defineProperty(this, "server", void 0);
|
|
22
|
-
|
|
23
|
-
_defineProperty(this, "app", void 0);
|
|
24
|
-
|
|
25
|
-
_defineProperty(this, "runner", void 0);
|
|
26
|
-
|
|
27
|
-
_defineProperty(this, "serverConfig", void 0);
|
|
28
|
-
|
|
66
|
+
this.serverImpl = createProdServer;
|
|
29
67
|
options.logger = options.logger || new Logger({
|
|
30
|
-
level:
|
|
68
|
+
level: "warn"
|
|
31
69
|
});
|
|
32
70
|
options.metrics = options.metrics || defaultMetrics;
|
|
33
71
|
this.options = options;
|
|
34
72
|
this.serverConfig = {};
|
|
35
73
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
async init() {
|
|
53
|
-
const {
|
|
54
|
-
options
|
|
55
|
-
} = this;
|
|
56
|
-
this.loadServerEnv(options);
|
|
57
|
-
this.initServerConfig(options);
|
|
58
|
-
await this.injectContext(this.runner, options); // initialize server runner
|
|
59
|
-
|
|
60
|
-
this.runner = await this.createHookRunner(); // init config and execute config hook
|
|
61
|
-
|
|
62
|
-
await this.initConfig(this.runner, options);
|
|
63
|
-
await this.injectContext(this.runner, options); // initialize server
|
|
64
|
-
|
|
65
|
-
this.server = this.serverImpl(options);
|
|
66
|
-
await this.runPrepareHook(this.runner); // create http-server
|
|
67
|
-
|
|
68
|
-
this.app = await this.server.createHTTPServer(this.getRequestHandler()); // runner can only be used after server init
|
|
69
|
-
|
|
70
|
-
await this.server.onInit(this.runner, this.app);
|
|
71
|
-
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
|
+
});
|
|
72
89
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Execute config hooks
|
|
75
|
-
* @param runner
|
|
76
|
-
* @param options
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
90
|
runConfigHook(runner, serverConfig) {
|
|
81
91
|
const newServerConfig = runner.config(serverConfig || {});
|
|
82
92
|
return newServerConfig;
|
|
83
93
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
runPrepareHook(runner) {
|
|
95
|
+
return __async(this, null, function* () {
|
|
96
|
+
runner.prepare();
|
|
97
|
+
});
|
|
87
98
|
}
|
|
88
|
-
|
|
89
99
|
initServerConfig(options) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
100
|
+
const { pwd, serverConfigFile } = options;
|
|
101
|
+
const distDirectory = path.join(pwd, options.config.output.path || "dist");
|
|
102
|
+
const serverConfigPath = getServerConfigPath(
|
|
103
|
+
distDirectory,
|
|
94
104
|
serverConfigFile
|
|
95
|
-
|
|
96
|
-
const distDirectory = path.join(pwd, ((_options$config$outpu = options.config.output) === null || _options$config$outpu === void 0 ? void 0 : _options$config$outpu.path) || 'dist');
|
|
97
|
-
const serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
|
|
105
|
+
);
|
|
98
106
|
const serverConfig = requireConfig(serverConfigPath);
|
|
99
107
|
this.serverConfig = serverConfig;
|
|
100
108
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
} = this;
|
|
117
|
-
const finalServerConfig = this.runConfigHook(runner, serverConfig);
|
|
118
|
-
const resolvedConfigPath = path.join(pwd, (config === null || config === void 0 ? void 0 : (_config$output = config.output) === null || _config$output === void 0 ? void 0 : _config$output.path) || 'dist', OUTPUT_CONFIG_FILE);
|
|
119
|
-
options.config = loadConfig({
|
|
120
|
-
cliConfig: config,
|
|
121
|
-
serverConfig: finalServerConfig,
|
|
122
|
-
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
|
+
});
|
|
123
124
|
});
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
close() {
|
|
127
|
+
return __async(this, null, function* () {
|
|
128
|
+
this.app.close();
|
|
129
|
+
});
|
|
128
130
|
}
|
|
129
|
-
|
|
130
131
|
listen(options, listener) {
|
|
131
132
|
const callback = () => {
|
|
132
|
-
listener
|
|
133
|
+
listener == null ? void 0 : listener();
|
|
133
134
|
};
|
|
134
|
-
|
|
135
|
-
if (typeof options === 'object') {
|
|
135
|
+
if (typeof options === "object") {
|
|
136
136
|
this.app.listen(options, callback);
|
|
137
137
|
} else {
|
|
138
138
|
this.app.listen(process.env.PORT || options || 8080, callback);
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
|
|
142
141
|
getRequestHandler() {
|
|
143
142
|
return (req, res, next) => {
|
|
144
143
|
const requestHandler = this.server.getRequestHandler();
|
|
145
144
|
return requestHandler(req, res, next);
|
|
146
145
|
};
|
|
147
146
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const {
|
|
153
|
-
options
|
|
154
|
-
} = this; // TODO: 确认下这里是不是可以不从 options 中取插件,而是从 config 中取和过滤
|
|
155
|
-
|
|
156
|
-
const {
|
|
157
|
-
plugins = [],
|
|
158
|
-
pwd,
|
|
159
|
-
config
|
|
160
|
-
} = options;
|
|
161
|
-
const serverPlugins = this.serverConfig.plugins || []; // server app context for serve plugin
|
|
162
|
-
|
|
163
|
-
const loadedPlugins = loadPlugins(plugins.concat(serverPlugins), pwd);
|
|
164
|
-
debug('plugins', config.plugins, loadedPlugins);
|
|
165
|
-
loadedPlugins.forEach(p => {
|
|
166
|
-
serverManager.usePlugin(p);
|
|
167
|
-
}); // create runner
|
|
168
|
-
|
|
169
|
-
const hooksRunner = await serverManager.init();
|
|
170
|
-
return hooksRunner;
|
|
147
|
+
render(req, res, url) {
|
|
148
|
+
return __async(this, null, function* () {
|
|
149
|
+
return this.server.render(req, res, url);
|
|
150
|
+
});
|
|
171
151
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
152
|
+
createHookRunner() {
|
|
153
|
+
return __async(this, null, function* () {
|
|
154
|
+
serverManager.clear();
|
|
155
|
+
const { options } = this;
|
|
156
|
+
const {
|
|
157
|
+
internalPlugins = INTERNAL_SERVER_PLUGINS,
|
|
158
|
+
pwd,
|
|
159
|
+
plugins = []
|
|
160
|
+
} = options;
|
|
161
|
+
const serverPlugins = this.serverConfig.plugins || [];
|
|
162
|
+
const loadedPlugins = loadPlugins(pwd, [...serverPlugins, ...plugins], {
|
|
163
|
+
internalPlugins
|
|
164
|
+
});
|
|
165
|
+
debug("plugins", loadedPlugins);
|
|
166
|
+
loadedPlugins.forEach((p) => {
|
|
167
|
+
serverManager.usePlugin(p);
|
|
168
|
+
});
|
|
169
|
+
const hooksRunner = yield serverManager.init();
|
|
170
|
+
return hooksRunner;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
injectContext(runner, options) {
|
|
174
|
+
return __async(this, null, function* () {
|
|
175
|
+
const appContext = this.initAppContext();
|
|
176
|
+
const { config, pwd } = options;
|
|
177
|
+
ConfigContext.set(config);
|
|
178
|
+
AppContext.set(__spreadProps(__spreadValues({}, appContext), {
|
|
179
|
+
distDirectory: path.join(pwd, config.output.path || "dist")
|
|
180
|
+
}));
|
|
181
|
+
});
|
|
185
182
|
}
|
|
186
|
-
|
|
187
183
|
initAppContext() {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const {
|
|
191
|
-
options
|
|
192
|
-
} = this;
|
|
193
|
-
const {
|
|
194
|
-
pwd: appDirectory,
|
|
195
|
-
plugins = [],
|
|
196
|
-
config
|
|
197
|
-
} = options;
|
|
198
|
-
const serverPlugins = plugins.map(p => ({
|
|
184
|
+
const { options } = this;
|
|
185
|
+
const { pwd: appDirectory, plugins = [], config } = options;
|
|
186
|
+
const serverPlugins = plugins.map((p) => ({
|
|
199
187
|
server: p
|
|
200
188
|
}));
|
|
201
189
|
return {
|
|
202
190
|
appDirectory,
|
|
203
|
-
distDirectory: path.join(appDirectory,
|
|
191
|
+
distDirectory: path.join(appDirectory, config.output.path || "dist"),
|
|
204
192
|
sharedDirectory: path.resolve(appDirectory, SHARED_DIR),
|
|
205
193
|
plugins: serverPlugins
|
|
206
194
|
};
|
|
207
195
|
}
|
|
208
|
-
|
|
209
196
|
loadServerEnv(options) {
|
|
210
|
-
const {
|
|
211
|
-
pwd: appDirectory
|
|
212
|
-
} = options;
|
|
197
|
+
const { pwd: appDirectory } = options;
|
|
213
198
|
const serverEnv = process.env.MODERN_ENV;
|
|
214
199
|
const serverEnvPath = path.resolve(appDirectory, `.env.${serverEnv}`);
|
|
215
|
-
|
|
216
200
|
if (serverEnv && fs.existsSync(serverEnvPath) && !fs.statSync(serverEnvPath).isDirectory()) {
|
|
217
|
-
const envConfig = dotenv.config({
|
|
218
|
-
path: serverEnvPath
|
|
219
|
-
});
|
|
201
|
+
const envConfig = dotenv.config({ path: serverEnvPath });
|
|
220
202
|
dotenvExpand(envConfig);
|
|
221
203
|
}
|
|
222
204
|
}
|
|
223
|
-
|
|
224
|
-
|
|
205
|
+
}
|
|
206
|
+
export {
|
|
207
|
+
Server
|
|
208
|
+
};
|
|
@@ -1,83 +1,64 @@
|
|
|
1
|
-
|
|
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
|
+
};
|
|
2
24
|
import { ModernServer } from "./modern-server";
|
|
3
|
-
|
|
4
25
|
class ModernSSRServer extends ModernServer {
|
|
5
26
|
prepareAPIHandler(_) {
|
|
6
27
|
return null;
|
|
7
28
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
async setupBeforeProdMiddleware() {
|
|
14
|
-
if (this.runMode === RUN_MODE.FULL) {
|
|
15
|
-
await super.setupBeforeProdMiddleware();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async emitRouteHook(_, _input) {
|
|
20
|
-
if (this.runMode === RUN_MODE.FULL) {
|
|
21
|
-
await super.emitRouteHook(_, _input);
|
|
22
|
-
}
|
|
29
|
+
handleAPI(context) {
|
|
30
|
+
return __async(this, null, function* () {
|
|
31
|
+
return this.render404(context);
|
|
32
|
+
});
|
|
23
33
|
}
|
|
24
|
-
|
|
25
34
|
}
|
|
26
|
-
|
|
27
35
|
class ModernAPIServer extends ModernServer {
|
|
28
36
|
prepareWebHandler(_) {
|
|
29
37
|
return null;
|
|
30
38
|
}
|
|
31
|
-
|
|
32
39
|
filterRoutes(routes) {
|
|
33
|
-
return routes.filter(route => route.isApi);
|
|
40
|
+
return routes.filter((route) => route.isApi);
|
|
34
41
|
}
|
|
35
|
-
|
|
36
|
-
async setupBeforeProdMiddleware() {
|
|
37
|
-
if (this.runMode === RUN_MODE.FULL) {
|
|
38
|
-
await super.setupBeforeProdMiddleware();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async emitRouteHook(_, _input) {// empty
|
|
43
|
-
}
|
|
44
|
-
|
|
45
42
|
}
|
|
46
|
-
|
|
47
43
|
class ModernWebServer extends ModernServer {
|
|
48
|
-
|
|
49
|
-
return null
|
|
44
|
+
warmupSSRBundle() {
|
|
45
|
+
return __async(this, null, function* () {
|
|
46
|
+
return null;
|
|
47
|
+
});
|
|
50
48
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const {
|
|
54
|
-
proxyTarget
|
|
55
|
-
} = this;
|
|
56
|
-
|
|
57
|
-
if (proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.api) {
|
|
58
|
-
return this.proxy();
|
|
59
|
-
} else {
|
|
49
|
+
handleAPI(context) {
|
|
50
|
+
return __async(this, null, function* () {
|
|
60
51
|
return this.render404(context);
|
|
61
|
-
}
|
|
52
|
+
});
|
|
62
53
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const {
|
|
66
|
-
proxyTarget
|
|
67
|
-
} = this;
|
|
68
|
-
|
|
69
|
-
if (route.isSSR && proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.ssr) {
|
|
70
|
-
return this.proxy();
|
|
71
|
-
} else {
|
|
72
|
-
// if no proxyTarget but access web server, degradation to csr
|
|
54
|
+
handleWeb(context, route) {
|
|
55
|
+
return __async(this, null, function* () {
|
|
73
56
|
route.isSSR = false;
|
|
74
|
-
return
|
|
75
|
-
}
|
|
57
|
+
return __superGet(ModernWebServer.prototype, this, "handleWeb").call(this, context, route);
|
|
58
|
+
});
|
|
76
59
|
}
|
|
77
|
-
|
|
78
60
|
}
|
|
79
|
-
|
|
80
|
-
export const createProdServer = options => {
|
|
61
|
+
const createProdServer = (options) => {
|
|
81
62
|
if (options.apiOnly) {
|
|
82
63
|
return new ModernAPIServer(options);
|
|
83
64
|
} else if (options.ssrOnly) {
|
|
@@ -87,4 +68,7 @@ export const createProdServer = options => {
|
|
|
87
68
|
} else {
|
|
88
69
|
return new ModernServer(options);
|
|
89
70
|
}
|
|
90
|
-
};
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
createProdServer
|
|
74
|
+
};
|