@modern-js/plugin-ssg 2.0.0-beta.3 → 2.0.0-beta.6
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 +73 -0
- package/dist/js/modern/global.d.js +0 -0
- package/dist/js/modern/index.js +168 -155
- package/dist/js/modern/libs/make.js +44 -27
- package/dist/js/modern/libs/output.js +7 -4
- package/dist/js/modern/libs/replace.js +45 -27
- package/dist/js/modern/libs/util.js +91 -76
- package/dist/js/modern/server/consts.js +4 -1
- package/dist/js/modern/server/index.js +31 -28
- package/dist/js/modern/server/prerender.js +32 -15
- package/dist/js/modern/server/process.js +78 -57
- package/dist/js/modern/types.js +0 -1
- package/dist/js/node/global.d.js +0 -0
- package/dist/js/node/index.js +189 -166
- package/dist/js/node/libs/make.js +69 -32
- package/dist/js/node/libs/output.js +38 -13
- package/dist/js/node/libs/replace.js +71 -33
- package/dist/js/node/libs/util.js +119 -91
- package/dist/js/node/server/consts.js +26 -7
- package/dist/js/node/server/index.js +63 -39
- package/dist/js/node/server/prerender.js +58 -22
- package/dist/js/node/server/process.js +61 -34
- package/dist/js/node/types.js +15 -5
- package/dist/js/treeshaking/global.d.js +1 -0
- package/dist/js/treeshaking/index.js +334 -0
- package/dist/js/treeshaking/libs/make.js +83 -0
- package/dist/js/treeshaking/libs/output.js +13 -0
- package/dist/js/treeshaking/libs/replace.js +115 -0
- package/dist/js/treeshaking/libs/util.js +239 -0
- package/dist/js/treeshaking/server/consts.js +2 -0
- package/dist/js/treeshaking/server/index.js +63 -0
- package/dist/js/treeshaking/server/prerender.js +97 -0
- package/dist/js/treeshaking/server/process.js +226 -0
- package/dist/js/treeshaking/types.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/libs/util.d.ts +0 -1
- package/package.json +9 -14
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fs } from "@modern-js/utils";
|
|
3
|
+
function writeHtmlFile(htmlAry, ssgRoutes, baseDir) {
|
|
4
|
+
htmlAry.forEach(function(html, index) {
|
|
5
|
+
var ssgRoute = ssgRoutes[index];
|
|
6
|
+
var filepath = path.join(baseDir, ssgRoute.output);
|
|
7
|
+
if (!fs.existsSync(path.dirname(filepath))) {
|
|
8
|
+
fs.ensureDirSync(path.dirname(filepath));
|
|
9
|
+
}
|
|
10
|
+
fs.writeFileSync(filepath, html);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export { writeHtmlFile };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
function _arrayLikeToArray(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _arrayWithoutHoles(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
8
|
+
}
|
|
9
|
+
function _defineProperty(obj, key, value) {
|
|
10
|
+
if (key in obj) {
|
|
11
|
+
Object.defineProperty(obj, key, {
|
|
12
|
+
value: value,
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
obj[key] = value;
|
|
19
|
+
}
|
|
20
|
+
return obj;
|
|
21
|
+
}
|
|
22
|
+
function _iterableToArray(iter) {
|
|
23
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
24
|
+
}
|
|
25
|
+
function _nonIterableSpread() {
|
|
26
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
27
|
+
}
|
|
28
|
+
function _objectSpread(target) {
|
|
29
|
+
for(var i = 1; i < arguments.length; i++){
|
|
30
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
31
|
+
var ownKeys = Object.keys(source);
|
|
32
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
33
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
34
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
ownKeys.forEach(function(key) {
|
|
38
|
+
_defineProperty(target, key, source[key]);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return target;
|
|
42
|
+
}
|
|
43
|
+
function _objectWithoutProperties(source, excluded) {
|
|
44
|
+
if (source == null) return {};
|
|
45
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
46
|
+
var key, i;
|
|
47
|
+
if (Object.getOwnPropertySymbols) {
|
|
48
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
49
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
50
|
+
key = sourceSymbolKeys[i];
|
|
51
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
52
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
53
|
+
target[key] = source[key];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return target;
|
|
57
|
+
}
|
|
58
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
59
|
+
if (source == null) return {};
|
|
60
|
+
var target = {};
|
|
61
|
+
var sourceKeys = Object.keys(source);
|
|
62
|
+
var key, i;
|
|
63
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
64
|
+
key = sourceKeys[i];
|
|
65
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
66
|
+
target[key] = source[key];
|
|
67
|
+
}
|
|
68
|
+
return target;
|
|
69
|
+
}
|
|
70
|
+
function _toConsumableArray(arr) {
|
|
71
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
72
|
+
}
|
|
73
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
74
|
+
if (!o) return;
|
|
75
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
76
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
77
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
78
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
79
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
80
|
+
}
|
|
81
|
+
import normalize from "normalize-path";
|
|
82
|
+
function exist(route, pageRoutes) {
|
|
83
|
+
return pageRoutes.slice().findIndex(function(pageRoute) {
|
|
84
|
+
var urlEqual = normalize(pageRoute.urlPath) === normalize(route.urlPath);
|
|
85
|
+
var entryEqual = pageRoute.entryName === route.entryName;
|
|
86
|
+
if (urlEqual && entryEqual) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function replaceRoute(ssgRoutes, pageRoutes) {
|
|
93
|
+
var _pageRoutes;
|
|
94
|
+
var cleanSsgRoutes = ssgRoutes.map(function(ssgRoute) {
|
|
95
|
+
var output = ssgRoute.output, headers = ssgRoute.headers, cleanSsgRoute = _objectWithoutProperties(ssgRoute, [
|
|
96
|
+
"output",
|
|
97
|
+
"headers"
|
|
98
|
+
]);
|
|
99
|
+
return Object.assign(cleanSsgRoute, output ? {
|
|
100
|
+
entryPath: output
|
|
101
|
+
} : {});
|
|
102
|
+
});
|
|
103
|
+
var freshRoutes = [];
|
|
104
|
+
cleanSsgRoutes.forEach(function(ssgRoute) {
|
|
105
|
+
var index = exist(ssgRoute, pageRoutes);
|
|
106
|
+
if (index < 0) {
|
|
107
|
+
freshRoutes.push(_objectSpread({}, ssgRoute));
|
|
108
|
+
} else {
|
|
109
|
+
pageRoutes[index].entryPath = ssgRoute.entryPath;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
(_pageRoutes = pageRoutes).push.apply(_pageRoutes, _toConsumableArray(freshRoutes));
|
|
113
|
+
return pageRoutes;
|
|
114
|
+
}
|
|
115
|
+
export { exist, replaceRoute };
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _objectSpread(target) {
|
|
15
|
+
for(var i = 1; i < arguments.length; i++){
|
|
16
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
+
var ownKeys = Object.keys(source);
|
|
18
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
ownKeys.forEach(function(key) {
|
|
24
|
+
_defineProperty(target, key, source[key]);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
29
|
+
function ownKeys(object, enumerableOnly) {
|
|
30
|
+
var keys = Object.keys(object);
|
|
31
|
+
if (Object.getOwnPropertySymbols) {
|
|
32
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
33
|
+
if (enumerableOnly) {
|
|
34
|
+
symbols = symbols.filter(function(sym) {
|
|
35
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
keys.push.apply(keys, symbols);
|
|
39
|
+
}
|
|
40
|
+
return keys;
|
|
41
|
+
}
|
|
42
|
+
function _objectSpreadProps(target, source) {
|
|
43
|
+
source = source != null ? source : {};
|
|
44
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
45
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
46
|
+
} else {
|
|
47
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
48
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
import path from "path";
|
|
54
|
+
import { ROUTE_SPEC_FILE, fs, isSingleEntry, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
|
|
55
|
+
function formatOutput(filename) {
|
|
56
|
+
var outputPath = path.extname(filename) ? filename : "".concat(filename, "/index.html");
|
|
57
|
+
return outputPath;
|
|
58
|
+
}
|
|
59
|
+
function formatPath(str) {
|
|
60
|
+
var addr = str;
|
|
61
|
+
if (!addr || typeof addr !== "string") {
|
|
62
|
+
return addr;
|
|
63
|
+
}
|
|
64
|
+
if (addr.startsWith(".")) {
|
|
65
|
+
addr = addr.slice(1);
|
|
66
|
+
}
|
|
67
|
+
if (!addr.startsWith("/")) {
|
|
68
|
+
addr = "/".concat(addr);
|
|
69
|
+
}
|
|
70
|
+
if (addr.endsWith("/") && addr !== "/") {
|
|
71
|
+
addr = addr.slice(0, addr.length - 1);
|
|
72
|
+
}
|
|
73
|
+
return addr;
|
|
74
|
+
}
|
|
75
|
+
function isDynamicUrl(url) {
|
|
76
|
+
return url.includes(":");
|
|
77
|
+
}
|
|
78
|
+
function getUrlPrefix(route, baseUrl) {
|
|
79
|
+
var base = "";
|
|
80
|
+
if (Array.isArray(baseUrl)) {
|
|
81
|
+
var filters = baseUrl.filter(function(url) {
|
|
82
|
+
return route.urlPath.includes(url);
|
|
83
|
+
});
|
|
84
|
+
if (filters.length > 1) {
|
|
85
|
+
var matched = filters.sort(function(a, b) {
|
|
86
|
+
return a.length - b.length;
|
|
87
|
+
})[0];
|
|
88
|
+
if (!matched) {
|
|
89
|
+
throw new Error("");
|
|
90
|
+
}
|
|
91
|
+
base = matched;
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
base = baseUrl;
|
|
95
|
+
}
|
|
96
|
+
base = base === "/" ? "" : base;
|
|
97
|
+
var entryName = route.entryName === "main" ? "" : route.entryName;
|
|
98
|
+
var prefix = "".concat(base, "/").concat(entryName);
|
|
99
|
+
return prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
|
|
100
|
+
}
|
|
101
|
+
function getOutput(route, base, agreed) {
|
|
102
|
+
var output = route.output;
|
|
103
|
+
if (output) {
|
|
104
|
+
return output;
|
|
105
|
+
}
|
|
106
|
+
if (agreed) {
|
|
107
|
+
var urlWithoutBase = route.urlPath.replace(base, "");
|
|
108
|
+
return urlWithoutBase.startsWith("/") ? urlWithoutBase.slice(1) : urlWithoutBase;
|
|
109
|
+
}
|
|
110
|
+
throw new Error("routing must provide output when calling createPage(), check ".concat(route.urlPath));
|
|
111
|
+
}
|
|
112
|
+
var readJSONSpec = function(dir) {
|
|
113
|
+
var routeJSONPath = path.join(dir, ROUTE_SPEC_FILE);
|
|
114
|
+
var routeJSON = require(routeJSONPath);
|
|
115
|
+
var routes = routeJSON.routes;
|
|
116
|
+
return routes;
|
|
117
|
+
};
|
|
118
|
+
var writeJSONSpec = function(dir, routes) {
|
|
119
|
+
var routeJSONPath = path.join(dir, ROUTE_SPEC_FILE);
|
|
120
|
+
fs.writeJSONSync(routeJSONPath, {
|
|
121
|
+
routes: routes
|
|
122
|
+
}, {
|
|
123
|
+
spaces: 2
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
var replaceWithAlias = function(base, filePath, alias) {
|
|
127
|
+
return path.posix.join(alias, path.posix.relative(base, filePath));
|
|
128
|
+
};
|
|
129
|
+
var standardOptions = function(ssgOptions, entrypoints, routes, server) {
|
|
130
|
+
if (ssgOptions === false) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (ssgOptions === true) {
|
|
134
|
+
return entrypoints.reduce(function(opt, entry) {
|
|
135
|
+
opt[entry.entryName] = ssgOptions;
|
|
136
|
+
return opt;
|
|
137
|
+
}, {});
|
|
138
|
+
} else if (typeof ssgOptions === "object") {
|
|
139
|
+
var isSingle = isSingleEntry(entrypoints);
|
|
140
|
+
if (isSingle && typeof ssgOptions.main === "undefined") {
|
|
141
|
+
return {
|
|
142
|
+
main: ssgOptions
|
|
143
|
+
};
|
|
144
|
+
} else {
|
|
145
|
+
return ssgOptions;
|
|
146
|
+
}
|
|
147
|
+
} else if (typeof ssgOptions === "function") {
|
|
148
|
+
var intermediateOptions = {};
|
|
149
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
150
|
+
try {
|
|
151
|
+
var _loop = function() {
|
|
152
|
+
var entrypoint = _step.value;
|
|
153
|
+
var entryName = entrypoint.entryName;
|
|
154
|
+
if (Array.isArray(server === null || server === void 0 ? void 0 : server.baseUrl)) {
|
|
155
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
156
|
+
try {
|
|
157
|
+
var _loop = function() {
|
|
158
|
+
var url = _step1.value;
|
|
159
|
+
var matchUrl = entryName === "main" ? url : "".concat(url, "/").concat(entryName);
|
|
160
|
+
var route = routes.find(function(route2) {
|
|
161
|
+
return route2.urlPath === matchUrl;
|
|
162
|
+
});
|
|
163
|
+
intermediateOptions[route === null || route === void 0 ? void 0 : route.urlPath] = ssgOptions(entryName, {
|
|
164
|
+
baseUrl: url
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
for(var _iterator = server.baseUrl[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
168
|
+
} catch (err) {
|
|
169
|
+
_didIteratorError = true;
|
|
170
|
+
_iteratorError = err;
|
|
171
|
+
} finally{
|
|
172
|
+
try {
|
|
173
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
174
|
+
_iterator.return();
|
|
175
|
+
}
|
|
176
|
+
} finally{
|
|
177
|
+
if (_didIteratorError) {
|
|
178
|
+
throw _iteratorError;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
intermediateOptions[entryName] = ssgOptions(entryName, {
|
|
184
|
+
baseUrl: server === null || server === void 0 ? void 0 : server.baseUrl
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
for(var _iterator = entrypoints[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
189
|
+
} catch (err) {
|
|
190
|
+
_didIteratorError = true;
|
|
191
|
+
_iteratorError = err;
|
|
192
|
+
} finally{
|
|
193
|
+
try {
|
|
194
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
195
|
+
_iterator.return();
|
|
196
|
+
}
|
|
197
|
+
} finally{
|
|
198
|
+
if (_didIteratorError) {
|
|
199
|
+
throw _iteratorError;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return intermediateOptions;
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
};
|
|
207
|
+
var openRouteSSR = function(routes) {
|
|
208
|
+
var entries = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
|
|
209
|
+
return routes.map(function(ssgRoute) {
|
|
210
|
+
return _objectSpreadProps(_objectSpread({}, ssgRoute), {
|
|
211
|
+
isSSR: entries.includes(ssgRoute.entryName),
|
|
212
|
+
bundle: "".concat(SERVER_BUNDLE_DIRECTORY, "/").concat(ssgRoute.entryName, ".js")
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
var flattenRoutes = function(routes) {
|
|
217
|
+
var parents = [];
|
|
218
|
+
var newRoutes = [];
|
|
219
|
+
var traverseRoute = function(route) {
|
|
220
|
+
var parent = parents[parents.length - 1];
|
|
221
|
+
var path2 = parent ? "".concat(parent.path, "/").concat(route.path || "").replace(/\/+/g, "/") : route.path || "";
|
|
222
|
+
path2 = path2.replace(/\/$/, "");
|
|
223
|
+
if (route._component && (path2 !== "/" || path2 === "/" && !parent)) {
|
|
224
|
+
newRoutes.push(_objectSpreadProps(_objectSpread({}, route), {
|
|
225
|
+
path: path2
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
if (route.children) {
|
|
229
|
+
parents.push(_objectSpreadProps(_objectSpread({}, route), {
|
|
230
|
+
path: path2
|
|
231
|
+
}));
|
|
232
|
+
route.children.forEach(traverseRoute);
|
|
233
|
+
parents.pop();
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
routes.forEach(traverseRoute);
|
|
237
|
+
return newRoutes;
|
|
238
|
+
};
|
|
239
|
+
export { flattenRoutes, formatOutput, formatPath, getOutput, getUrlPrefix, isDynamicUrl, openRouteSSR, readJSONSpec, replaceWithAlias, standardOptions, writeJSONSpec };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import childProcess from "child_process";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { logger } from "@modern-js/utils";
|
|
4
|
+
import { openRouteSSR } from "../libs/util";
|
|
5
|
+
import { CLOSE_SIGN } from "./consts";
|
|
6
|
+
var createServer = function(api, ssgRoutes, pageRoutes, apiRoutes, options, appDirectory) {
|
|
7
|
+
return new Promise(function(resolve, reject) {
|
|
8
|
+
var entries = ssgRoutes.map(function(route) {
|
|
9
|
+
return route.entryName;
|
|
10
|
+
});
|
|
11
|
+
var backup = openRouteSSR(pageRoutes, entries);
|
|
12
|
+
var total = backup.concat(apiRoutes);
|
|
13
|
+
var cp = childProcess.fork(path.join(__dirname, "process"), {
|
|
14
|
+
cwd: appDirectory,
|
|
15
|
+
silent: true
|
|
16
|
+
});
|
|
17
|
+
var appContext = api.useAppContext();
|
|
18
|
+
var plugins = appContext.serverInternalPlugins;
|
|
19
|
+
cp.send(JSON.stringify({
|
|
20
|
+
options: options,
|
|
21
|
+
renderRoutes: ssgRoutes,
|
|
22
|
+
routes: total,
|
|
23
|
+
appDirectory: appDirectory,
|
|
24
|
+
plugins: plugins
|
|
25
|
+
}));
|
|
26
|
+
var htmlChunks = [];
|
|
27
|
+
var htmlAry = [];
|
|
28
|
+
cp.on("message", function(chunk) {
|
|
29
|
+
if (chunk !== null) {
|
|
30
|
+
htmlChunks.push(chunk);
|
|
31
|
+
} else {
|
|
32
|
+
var html = htmlChunks.join("");
|
|
33
|
+
htmlAry.push(html);
|
|
34
|
+
htmlChunks.length = 0;
|
|
35
|
+
}
|
|
36
|
+
if (htmlAry.length === ssgRoutes.length) {
|
|
37
|
+
cp.send(CLOSE_SIGN);
|
|
38
|
+
resolve(htmlAry);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
cp.stderr.on("data", function(chunk) {
|
|
42
|
+
var str = chunk.toString();
|
|
43
|
+
if (str.includes("Error")) {
|
|
44
|
+
logger.error(str);
|
|
45
|
+
reject(new Error("ssg render failed"));
|
|
46
|
+
cp.kill("SIGKILL");
|
|
47
|
+
} else {
|
|
48
|
+
logger.info(str.replace(/[^\S\n]+/g, " "));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
cp.stdout.on("data", function(chunk) {
|
|
52
|
+
var str = chunk.toString();
|
|
53
|
+
if (str.includes("Error")) {
|
|
54
|
+
logger.error(str);
|
|
55
|
+
reject(new Error("ssg render failed"));
|
|
56
|
+
cp.kill("SIGKILL");
|
|
57
|
+
} else {
|
|
58
|
+
logger.info(str.replace(/[^\S\n]+/g, " "));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
export { createServer };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _objectSpread(target) {
|
|
15
|
+
for(var i = 1; i < arguments.length; i++){
|
|
16
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
+
var ownKeys = Object.keys(source);
|
|
18
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
ownKeys.forEach(function(key) {
|
|
24
|
+
_defineProperty(target, key, source[key]);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
29
|
+
function ownKeys(object, enumerableOnly) {
|
|
30
|
+
var keys = Object.keys(object);
|
|
31
|
+
if (Object.getOwnPropertySymbols) {
|
|
32
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
33
|
+
if (enumerableOnly) {
|
|
34
|
+
symbols = symbols.filter(function(sym) {
|
|
35
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
keys.push.apply(keys, symbols);
|
|
39
|
+
}
|
|
40
|
+
return keys;
|
|
41
|
+
}
|
|
42
|
+
function _objectSpreadProps(target, source) {
|
|
43
|
+
source = source != null ? source : {};
|
|
44
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
45
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
46
|
+
} else {
|
|
47
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
48
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
var _typeof = function(obj) {
|
|
54
|
+
"@swc/helpers - typeof";
|
|
55
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
56
|
+
};
|
|
57
|
+
import EventEmitter from "events";
|
|
58
|
+
import { Readable } from "stream";
|
|
59
|
+
import httpMocks from "node-mocks-http";
|
|
60
|
+
var compile = function(requestHandler) {
|
|
61
|
+
return function(options) {
|
|
62
|
+
var extend = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
63
|
+
return new Promise(function(resolve, reject) {
|
|
64
|
+
var req = httpMocks.createRequest(_objectSpreadProps(_objectSpread({}, options), {
|
|
65
|
+
eventEmitter: Readable
|
|
66
|
+
}));
|
|
67
|
+
var res = httpMocks.createResponse({
|
|
68
|
+
eventEmitter: EventEmitter
|
|
69
|
+
});
|
|
70
|
+
Object.assign(req, extend);
|
|
71
|
+
var proxyRes = new Proxy(res, {
|
|
72
|
+
get: function get(obj, prop) {
|
|
73
|
+
if ((typeof prop === "undefined" ? "undefined" : _typeof(prop)) === "symbol" && !obj[prop]) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return obj[prop];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
res.on("finish", function() {
|
|
80
|
+
if (res.statusCode !== 200) {
|
|
81
|
+
reject(new Error(res.statusMessage));
|
|
82
|
+
} else {
|
|
83
|
+
resolve(res._getData());
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
res.on("error", function(e) {
|
|
87
|
+
return reject(e);
|
|
88
|
+
});
|
|
89
|
+
try {
|
|
90
|
+
requestHandler(req, proxyRes);
|
|
91
|
+
} catch (e) {
|
|
92
|
+
reject(e);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
export { compile };
|