@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,255 +1,189 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var context_exports = {};
|
|
25
|
+
__export(context_exports, {
|
|
26
|
+
ModernServerContext: () => ModernServerContext
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var _etag = _interopRequireDefault(require("etag"));
|
|
15
|
-
|
|
16
|
-
var _fresh = _interopRequireDefault(require("fresh"));
|
|
17
|
-
|
|
18
|
-
var _utils = require("../../utils");
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
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; }
|
|
23
|
-
|
|
28
|
+
module.exports = __toCommonJS(context_exports);
|
|
29
|
+
var import_url = require("url");
|
|
30
|
+
var import_querystring = __toESM(require("querystring"));
|
|
31
|
+
var import_buffer = require("buffer");
|
|
32
|
+
var import_etag = __toESM(require("etag"));
|
|
33
|
+
var import_fresh = __toESM(require("fresh"));
|
|
34
|
+
var import_utils = require("../../utils");
|
|
24
35
|
class ModernServerContext {
|
|
25
|
-
/**
|
|
26
|
-
* http request
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* http response
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* url params
|
|
35
|
-
*/
|
|
36
|
-
get logger() {
|
|
37
|
-
return this.req.logger;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
get metrics() {
|
|
41
|
-
return this.req.metrics;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
36
|
constructor(req, res, options) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
_defineProperty(this, "res", void 0);
|
|
48
|
-
|
|
49
|
-
_defineProperty(this, "params", {});
|
|
50
|
-
|
|
51
|
-
_defineProperty(this, "serverData", void 0);
|
|
52
|
-
|
|
53
|
-
_defineProperty(this, "options", {});
|
|
54
|
-
|
|
37
|
+
this.params = {};
|
|
38
|
+
this.options = {};
|
|
55
39
|
this.req = req;
|
|
56
40
|
this.res = res;
|
|
57
41
|
this.options = options || {};
|
|
58
42
|
this.serverData = {};
|
|
59
43
|
this.bind();
|
|
60
44
|
}
|
|
61
|
-
|
|
45
|
+
get logger() {
|
|
46
|
+
return this.req.logger;
|
|
47
|
+
}
|
|
48
|
+
get metrics() {
|
|
49
|
+
return this.req.metrics;
|
|
50
|
+
}
|
|
62
51
|
bind() {
|
|
63
|
-
const {
|
|
64
|
-
|
|
65
|
-
res
|
|
66
|
-
} = this;
|
|
67
|
-
|
|
68
|
-
req.get = key => this.getReqHeader(key);
|
|
69
|
-
|
|
52
|
+
const { req, res } = this;
|
|
53
|
+
req.get = (key) => this.getReqHeader(key);
|
|
70
54
|
res.set = (key, value) => this.res.setHeader(key, value);
|
|
71
|
-
|
|
72
|
-
res.send = body => {
|
|
55
|
+
res.send = (body) => {
|
|
73
56
|
this.send(body);
|
|
74
57
|
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
58
|
+
}
|
|
78
59
|
send(body) {
|
|
79
60
|
try {
|
|
80
|
-
const generateETag = !this.res.getHeader(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
const etag = (0, _etag.default)(buf, {
|
|
86
|
-
weak: true
|
|
87
|
-
});
|
|
88
|
-
|
|
61
|
+
const generateETag = !this.res.getHeader("ETag") && this.options.etag;
|
|
62
|
+
if (body !== void 0 && generateETag) {
|
|
63
|
+
const encoding = typeof body === "string" ? "utf-8" : void 0;
|
|
64
|
+
const buf = !import_buffer.Buffer.isBuffer(body) ? import_buffer.Buffer.from(body, encoding) : body;
|
|
65
|
+
const etag = (0, import_etag.default)(buf, { weak: true });
|
|
89
66
|
if (etag) {
|
|
90
|
-
this.res.setHeader(
|
|
67
|
+
this.res.setHeader("ETag", etag);
|
|
91
68
|
}
|
|
92
69
|
}
|
|
93
|
-
|
|
94
70
|
if (this.fresh) {
|
|
95
71
|
this.status = 304;
|
|
96
72
|
}
|
|
97
73
|
} catch (e) {
|
|
98
74
|
this.logger.error(e.message);
|
|
99
75
|
}
|
|
100
|
-
|
|
101
76
|
this.res.end(body);
|
|
102
77
|
}
|
|
103
|
-
|
|
104
78
|
setParams(params) {
|
|
105
79
|
this.params = params;
|
|
106
80
|
}
|
|
107
|
-
|
|
108
81
|
setServerData(key, value) {
|
|
109
82
|
this.serverData[key] = value;
|
|
110
83
|
}
|
|
111
|
-
|
|
112
84
|
getReqHeader(key) {
|
|
113
|
-
const {
|
|
114
|
-
req
|
|
115
|
-
} = this;
|
|
85
|
+
const { req } = this;
|
|
116
86
|
const field = key.toLowerCase();
|
|
117
|
-
|
|
118
87
|
switch (field) {
|
|
119
|
-
case
|
|
120
|
-
case
|
|
121
|
-
return req.headers.referrer || req.headers.referer ||
|
|
122
|
-
|
|
88
|
+
case "referer":
|
|
89
|
+
case "referrer":
|
|
90
|
+
return req.headers.referrer || req.headers.referer || "";
|
|
123
91
|
default:
|
|
124
|
-
return req.headers[field] ||
|
|
92
|
+
return req.headers[field] || "";
|
|
125
93
|
}
|
|
126
94
|
}
|
|
127
|
-
|
|
128
95
|
get fresh() {
|
|
129
|
-
const {
|
|
130
|
-
|
|
131
|
-
res,
|
|
132
|
-
method
|
|
133
|
-
} = this; // GET or HEAD for weak freshness validation only
|
|
134
|
-
|
|
135
|
-
if ('GET' !== method && 'HEAD' !== method) {
|
|
96
|
+
const { status, res, method } = this;
|
|
97
|
+
if ("GET" !== method && "HEAD" !== method) {
|
|
136
98
|
return false;
|
|
137
99
|
}
|
|
138
|
-
|
|
139
100
|
if (status >= 200 && status < 300 || 304 === status) {
|
|
140
|
-
return (0,
|
|
141
|
-
etag: res.getHeader(
|
|
142
|
-
|
|
101
|
+
return (0, import_fresh.default)(this.headers, {
|
|
102
|
+
etag: res.getHeader("ETag"),
|
|
103
|
+
"last-modified": res.getHeader("Last-Modified")
|
|
143
104
|
});
|
|
144
105
|
}
|
|
145
|
-
|
|
146
106
|
return false;
|
|
147
107
|
}
|
|
148
|
-
/* request property */
|
|
149
|
-
|
|
150
|
-
|
|
151
108
|
get headers() {
|
|
152
109
|
return this.req.headers;
|
|
153
110
|
}
|
|
154
|
-
|
|
155
111
|
get method() {
|
|
156
112
|
return this.req.method;
|
|
157
113
|
}
|
|
158
|
-
|
|
159
114
|
get url() {
|
|
160
|
-
return this.req.url ||
|
|
115
|
+
return this.req.url || "";
|
|
161
116
|
}
|
|
162
|
-
|
|
163
117
|
set url(val) {
|
|
164
118
|
this.req.url = val;
|
|
165
119
|
}
|
|
166
|
-
|
|
167
120
|
get host() {
|
|
168
|
-
let host = this.getReqHeader(
|
|
169
|
-
|
|
121
|
+
let host = this.getReqHeader("X-Forwarded-Host");
|
|
170
122
|
if (!host) {
|
|
171
|
-
host = this.getReqHeader(
|
|
123
|
+
host = this.getReqHeader("Host");
|
|
172
124
|
}
|
|
173
|
-
|
|
174
|
-
return host.split(/\s*,\s*/, 1)[0] || '';
|
|
125
|
+
return host.split(/\s*,\s*/, 1)[0] || "";
|
|
175
126
|
}
|
|
176
|
-
|
|
177
127
|
get protocol() {
|
|
178
128
|
if (this.req.socket.encrypted) {
|
|
179
|
-
return
|
|
129
|
+
return "https";
|
|
180
130
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return proto ? proto.split(/\s*,\s*/, 1)[0] : 'http';
|
|
131
|
+
const proto = this.getReqHeader("X-Forwarded-Proto");
|
|
132
|
+
return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
|
|
184
133
|
}
|
|
185
|
-
|
|
186
134
|
get origin() {
|
|
187
135
|
return `${this.protocol}://${this.host}`;
|
|
188
136
|
}
|
|
189
|
-
|
|
190
137
|
get href() {
|
|
191
138
|
return this.origin + this.url;
|
|
192
139
|
}
|
|
193
|
-
|
|
194
140
|
get parsedURL() {
|
|
195
|
-
const url = new
|
|
141
|
+
const url = new import_url.URL(this.req.url, this.origin);
|
|
196
142
|
return url;
|
|
197
143
|
}
|
|
198
|
-
|
|
199
144
|
get path() {
|
|
200
145
|
return this.parsedURL.pathname;
|
|
201
146
|
}
|
|
202
|
-
|
|
203
147
|
set path(p) {
|
|
204
|
-
const url = new
|
|
205
|
-
|
|
148
|
+
const url = new import_url.URL(this.req.url, this.origin);
|
|
206
149
|
if (!url || !p) {
|
|
207
150
|
return;
|
|
208
151
|
}
|
|
209
|
-
|
|
210
152
|
if (url.pathname === p) {
|
|
211
153
|
return;
|
|
212
154
|
}
|
|
213
|
-
|
|
214
155
|
url.pathname = p;
|
|
215
156
|
this.url = url.toString();
|
|
216
157
|
}
|
|
217
|
-
|
|
218
158
|
get querystring() {
|
|
219
159
|
if (!this.req) {
|
|
220
|
-
return
|
|
160
|
+
return "";
|
|
221
161
|
}
|
|
222
|
-
|
|
223
|
-
return this.parsedURL.search.replace(/^\?/, '') || '';
|
|
162
|
+
return this.parsedURL.search.replace(/^\?/, "") || "";
|
|
224
163
|
}
|
|
225
|
-
|
|
226
164
|
get query() {
|
|
227
165
|
const str = this.querystring;
|
|
228
|
-
return
|
|
166
|
+
return import_querystring.default.parse(str);
|
|
229
167
|
}
|
|
230
|
-
/* response property */
|
|
231
|
-
|
|
232
|
-
|
|
233
168
|
get status() {
|
|
234
169
|
return this.res.statusCode;
|
|
235
170
|
}
|
|
236
|
-
|
|
237
171
|
set status(statusCode) {
|
|
238
172
|
this.res.statusCode = statusCode;
|
|
239
173
|
}
|
|
240
|
-
/**
|
|
241
|
-
* 判断链接是否已经关闭
|
|
242
|
-
*/
|
|
243
|
-
|
|
244
|
-
|
|
245
174
|
resHasHandled() {
|
|
246
175
|
return this.res.writableEnded;
|
|
247
176
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
177
|
+
error(dig, e = "") {
|
|
178
|
+
this.logger.error(
|
|
179
|
+
`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`,
|
|
180
|
+
e instanceof Error ? e.stack || e.message : e,
|
|
181
|
+
this.path,
|
|
182
|
+
(0, import_utils.headersWithoutCookie)(this.headers)
|
|
183
|
+
);
|
|
251
184
|
}
|
|
252
|
-
|
|
253
185
|
}
|
|
254
|
-
|
|
255
|
-
exports
|
|
186
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
187
|
+
0 && (module.exports = {
|
|
188
|
+
ModernServerContext
|
|
189
|
+
});
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
14
|
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var context_exports = {};
|
|
19
|
+
__export(context_exports, {
|
|
20
|
+
ModernServerContext: () => import_context.ModernServerContext,
|
|
21
|
+
createContext: () => createContext
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(context_exports);
|
|
24
|
+
var import_context = require("./context");
|
|
25
|
+
const createContext = (req, res, options) => new import_context.ModernServerContext(req, res, options);
|
|
26
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
27
|
+
0 && (module.exports = {
|
|
28
|
+
ModernServerContext,
|
|
29
|
+
createContext
|
|
11
30
|
});
|
|
12
|
-
exports.createContext = void 0;
|
|
13
|
-
|
|
14
|
-
var _context = require("./context");
|
|
15
|
-
|
|
16
|
-
const createContext = (req, res, options) => new _context.ModernServerContext(req, res, options);
|
|
17
|
-
|
|
18
|
-
exports.createContext = createContext;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __spreadValues = (a, b) => {
|
|
13
|
+
for (var prop in b || (b = {}))
|
|
14
|
+
if (__hasOwnProp.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
if (__getOwnPropSymbols)
|
|
17
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
+
if (__propIsEnum.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
24
|
+
var __export = (target, all) => {
|
|
25
|
+
for (var name in all)
|
|
26
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
27
|
+
};
|
|
28
|
+
var __copyProps = (to, from, except, desc) => {
|
|
29
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
30
|
+
for (let key of __getOwnPropNames(from))
|
|
31
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
32
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
33
|
+
}
|
|
34
|
+
return to;
|
|
35
|
+
};
|
|
36
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
37
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
38
|
+
mod
|
|
39
|
+
));
|
|
40
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
41
|
+
var hook_api_exports = {};
|
|
42
|
+
__export(hook_api_exports, {
|
|
43
|
+
base: () => base,
|
|
44
|
+
createAfterMatchContext: () => createAfterMatchContext,
|
|
45
|
+
createAfterRenderContext: () => createAfterRenderContext,
|
|
46
|
+
createMiddlewareContext: () => createMiddlewareContext
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(hook_api_exports);
|
|
49
|
+
var import_cookie = __toESM(require("cookie"));
|
|
50
|
+
var import_route = require("./route");
|
|
51
|
+
var import_template = require("./template");
|
|
52
|
+
class Response {
|
|
53
|
+
constructor(res) {
|
|
54
|
+
this.res = res;
|
|
55
|
+
this._cookie = import_cookie.default.parse(res.getHeader("set-cookie") || "");
|
|
56
|
+
this.cookies = {
|
|
57
|
+
get: this.getCookie.bind(this),
|
|
58
|
+
set: this.setCookie.bind(this),
|
|
59
|
+
delete: this.deleteCookie.bind(this),
|
|
60
|
+
clear: this.clearCookie.bind(this),
|
|
61
|
+
apply: this.applyCookie.bind(this)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
get(key) {
|
|
65
|
+
return this.res.getHeader(key);
|
|
66
|
+
}
|
|
67
|
+
set(key, value) {
|
|
68
|
+
return this.res.setHeader(key, value);
|
|
69
|
+
}
|
|
70
|
+
status(code) {
|
|
71
|
+
this.res.statusCode = code;
|
|
72
|
+
}
|
|
73
|
+
getCookie(key) {
|
|
74
|
+
return this._cookie[key];
|
|
75
|
+
}
|
|
76
|
+
setCookie(key, value) {
|
|
77
|
+
this._cookie[key] = value;
|
|
78
|
+
}
|
|
79
|
+
deleteCookie(key) {
|
|
80
|
+
if (this._cookie[key]) {
|
|
81
|
+
delete this._cookie[key];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
clearCookie() {
|
|
85
|
+
this._cookie = {};
|
|
86
|
+
}
|
|
87
|
+
applyCookie() {
|
|
88
|
+
const str = Object.entries(this._cookie).map(([key, value]) => {
|
|
89
|
+
return import_cookie.default.serialize(key, value);
|
|
90
|
+
}).join("; ");
|
|
91
|
+
if (str) {
|
|
92
|
+
this.res.setHeader("set-cookie", str);
|
|
93
|
+
} else {
|
|
94
|
+
this.res.removeHeader("set-cookie");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
raw(body, options) {
|
|
98
|
+
const { status, headers = {} } = options || {};
|
|
99
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
100
|
+
this.res.setHeader(key, value);
|
|
101
|
+
});
|
|
102
|
+
if (status) {
|
|
103
|
+
this.res.statusCode = status;
|
|
104
|
+
}
|
|
105
|
+
this.res.end(body);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
class Request {
|
|
109
|
+
constructor(ctx) {
|
|
110
|
+
this.url = ctx.url;
|
|
111
|
+
this.host = ctx.host;
|
|
112
|
+
this.pathname = ctx.path;
|
|
113
|
+
this.query = ctx.query;
|
|
114
|
+
this.headers = ctx.headers;
|
|
115
|
+
this.cookie = ctx.headers.cookie || "";
|
|
116
|
+
this._cookie = import_cookie.default.parse(this.cookie);
|
|
117
|
+
this.cookies = {
|
|
118
|
+
get: this.getCookie.bind(this)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
getCookie(key) {
|
|
122
|
+
return this._cookie[key];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const base = (context) => {
|
|
126
|
+
const { res } = context;
|
|
127
|
+
return {
|
|
128
|
+
response: new Response(res),
|
|
129
|
+
request: new Request(context),
|
|
130
|
+
logger: context.logger,
|
|
131
|
+
metrics: context.metrics
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
const createAfterMatchContext = (context, entryName) => {
|
|
135
|
+
const baseContext = base(context);
|
|
136
|
+
return __spreadProps(__spreadValues({}, baseContext), {
|
|
137
|
+
router: new import_route.RouteAPI(entryName)
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
const createAfterRenderContext = (context, content) => {
|
|
141
|
+
const baseContext = base(context);
|
|
142
|
+
return __spreadProps(__spreadValues({}, baseContext), {
|
|
143
|
+
template: new import_template.TemplateAPI(content)
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
const createMiddlewareContext = (context) => {
|
|
147
|
+
const baseContext = base(context);
|
|
148
|
+
return __spreadProps(__spreadValues({}, baseContext), {
|
|
149
|
+
response: __spreadProps(__spreadValues({}, baseContext.response), {
|
|
150
|
+
locals: context.res.locals || {}
|
|
151
|
+
}),
|
|
152
|
+
source: {
|
|
153
|
+
req: context.req,
|
|
154
|
+
res: context.res
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
159
|
+
0 && (module.exports = {
|
|
160
|
+
base,
|
|
161
|
+
createAfterMatchContext,
|
|
162
|
+
createAfterRenderContext,
|
|
163
|
+
createMiddlewareContext
|
|
164
|
+
});
|
|
@@ -1,53 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var route_exports = {};
|
|
19
|
+
__export(route_exports, {
|
|
20
|
+
RouteAPI: () => RouteAPI
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
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; }
|
|
9
|
-
|
|
22
|
+
module.exports = __toCommonJS(route_exports);
|
|
10
23
|
class RouteAPI {
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
_defineProperty(this, "url", void 0);
|
|
17
|
-
|
|
18
|
-
this.current = matched;
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.url = url;
|
|
24
|
+
constructor(entryName) {
|
|
25
|
+
this.current = entryName;
|
|
26
|
+
this.status = 200;
|
|
27
|
+
this.url = "";
|
|
21
28
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
redirect(url, status = 302) {
|
|
30
|
+
this.url = url;
|
|
31
|
+
this.status = status;
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const {
|
|
29
|
-
router
|
|
30
|
-
} = this;
|
|
31
|
-
const matched = router.matchEntry(entryName);
|
|
32
|
-
return matched ? matched.generate(this.url) : null;
|
|
33
|
+
rewrite(entryName) {
|
|
34
|
+
this.current = entryName;
|
|
33
35
|
}
|
|
34
|
-
|
|
35
36
|
use(entryName) {
|
|
36
|
-
|
|
37
|
-
router
|
|
38
|
-
} = this;
|
|
39
|
-
const matched = router.matchEntry(entryName);
|
|
40
|
-
|
|
41
|
-
if (matched) {
|
|
42
|
-
this.current = matched;
|
|
43
|
-
return true;
|
|
44
|
-
} else {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
37
|
+
this.rewrite(entryName);
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
RouteAPI
|
|
43
|
+
});
|