wapplr 1.0.44 → 1.0.45
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/dist/client/app.js +350 -0
- package/dist/client/config.js +30 -0
- package/dist/client/createClient.js +254 -0
- package/dist/client/history.js +229 -0
- package/dist/client/index.js +70 -0
- package/dist/client/middlewares.js +347 -0
- package/dist/common/config.js +38 -0
- package/dist/common/contents.js +348 -0
- package/dist/common/index.js +104 -0
- package/dist/common/log/index.js +144 -0
- package/dist/common/log/log.css +27 -0
- package/dist/common/log/log_css.js +8 -0
- package/dist/common/log/renderedContent.js +109 -0
- package/dist/common/logo/index.js +15 -0
- package/dist/common/logo/logo.css +27 -0
- package/dist/common/logo/logo_css.js +8 -0
- package/dist/common/middlewares.js +351 -0
- package/dist/common/requests.js +276 -0
- package/dist/common/router.js +446 -0
- package/dist/common/states.js +560 -0
- package/dist/common/styles.js +243 -0
- package/dist/common/template/app.css +29 -0
- package/dist/common/template/app_css.js +8 -0
- package/dist/common/template/index.js +51 -0
- package/dist/common/template/template.css +137 -0
- package/dist/common/template/template_css.js +8 -0
- package/dist/common/utils.js +70 -0
- package/dist/server/app.js +356 -0
- package/dist/server/config.js +69 -0
- package/dist/server/createServer.js +403 -0
- package/dist/server/html.js +107 -0
- package/dist/server/index.js +73 -0
- package/dist/server/middlewares.js +354 -0
- package/dist/server/static.js +58 -0
- package/package.json +2 -2
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createRenderMiddleware = createRenderMiddleware;
|
|
9
|
+
exports.createNotModifiedMiddleware = createNotModifiedMiddleware;
|
|
10
|
+
exports["default"] = createMiddlewares;
|
|
11
|
+
exports.mimeType = void 0;
|
|
12
|
+
|
|
13
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
14
|
+
|
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
16
|
+
|
|
17
|
+
var _utils = require("../common/utils");
|
|
18
|
+
|
|
19
|
+
var _middlewares = _interopRequireDefault(require("../common/middlewares"));
|
|
20
|
+
|
|
21
|
+
var _html2 = _interopRequireDefault(require("./html"));
|
|
22
|
+
|
|
23
|
+
var _excluded = ["log"];
|
|
24
|
+
var mimeType = {
|
|
25
|
+
".ico": "image/x-icon",
|
|
26
|
+
".html": "text/html",
|
|
27
|
+
".js": "application/javascript",
|
|
28
|
+
".json": "application/json",
|
|
29
|
+
".css": "text/css",
|
|
30
|
+
".png": "image/png",
|
|
31
|
+
".jpg": "image/jpeg",
|
|
32
|
+
".webp": "image/webp",
|
|
33
|
+
".svg": "image/svg+xml",
|
|
34
|
+
".wav": "audio/wav",
|
|
35
|
+
".mp3": "audio/mpeg",
|
|
36
|
+
".mpg": "video/mpeg",
|
|
37
|
+
".mp4": "video/mp4",
|
|
38
|
+
".webm": "video/webm",
|
|
39
|
+
".pdf": "application/pdf",
|
|
40
|
+
".zip": "application/zip",
|
|
41
|
+
".doc": "application/msword",
|
|
42
|
+
".eot": "application/vnd.ms-fontobject",
|
|
43
|
+
".ttf": "application/x-font-ttf"
|
|
44
|
+
};
|
|
45
|
+
exports.mimeType = mimeType;
|
|
46
|
+
|
|
47
|
+
function createRenderMiddleware() {
|
|
48
|
+
var p = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
49
|
+
var wapp = p.wapp;
|
|
50
|
+
|
|
51
|
+
function defaultRenderHandle(req, res, next) {
|
|
52
|
+
var wappResponse = res.wappResponse;
|
|
53
|
+
|
|
54
|
+
if (wappResponse.content && !wappResponse.content.renderType) {
|
|
55
|
+
res.wappResponse.status(wappResponse.statusCode || 200);
|
|
56
|
+
var render = wapp.contents.getComponent("html");
|
|
57
|
+
res.wappResponse.send(render({
|
|
58
|
+
wapp: wapp,
|
|
59
|
+
req: req,
|
|
60
|
+
res: res
|
|
61
|
+
}).replace(/>\s+</g, "><"));
|
|
62
|
+
next();
|
|
63
|
+
} else {
|
|
64
|
+
next();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function defaultHandle(req, res, out) {
|
|
69
|
+
if (!wapp.contents.getComponent("html")) {
|
|
70
|
+
wapp.contents.addComponent({
|
|
71
|
+
html: defaultRender
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
var renderMiddlewares = Object.keys(renderMiddleware.handles).map(function (key) {
|
|
76
|
+
return renderMiddleware.handles[key];
|
|
77
|
+
});
|
|
78
|
+
renderMiddlewares.sort();
|
|
79
|
+
var index = 0;
|
|
80
|
+
|
|
81
|
+
function next(err) {
|
|
82
|
+
if (renderMiddlewares[index]) {
|
|
83
|
+
var func = renderMiddlewares[index];
|
|
84
|
+
index = index + 1;
|
|
85
|
+
return func(req, res, err ? function () {
|
|
86
|
+
next(err);
|
|
87
|
+
} : next);
|
|
88
|
+
} else if (typeof out === "function") {
|
|
89
|
+
index = 0;
|
|
90
|
+
return out(err);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return next();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var defaultRender = _html2["default"];
|
|
100
|
+
|
|
101
|
+
function defaultAddHandle(obj) {
|
|
102
|
+
if (typeof obj === "object" && !obj.length) {
|
|
103
|
+
Object.keys(obj).forEach(function (handleName) {
|
|
104
|
+
var handle = obj[handleName];
|
|
105
|
+
|
|
106
|
+
if (typeof handle == "function") {
|
|
107
|
+
renderMiddleware.handles[handleName] = handle;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
var renderMiddlewareProperties = Object.create(Object.prototype, {
|
|
114
|
+
handle: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
115
|
+
value: defaultHandle
|
|
116
|
+
}),
|
|
117
|
+
handles: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
118
|
+
value: {
|
|
119
|
+
render: defaultRenderHandle
|
|
120
|
+
}
|
|
121
|
+
}),
|
|
122
|
+
render: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
123
|
+
value: defaultRender
|
|
124
|
+
}),
|
|
125
|
+
addHandle: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
126
|
+
value: defaultAddHandle
|
|
127
|
+
})
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
function renderMiddleware(req, res, next) {
|
|
131
|
+
if (typeof renderMiddleware.handle === "function") {
|
|
132
|
+
renderMiddleware.handle(req, res, next);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return renderMiddleware;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
(0, _utils.mergeProperties)(renderMiddleware, renderMiddlewareProperties);
|
|
139
|
+
Object.defineProperty(renderMiddleware, "wapp", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
140
|
+
writable: false,
|
|
141
|
+
enumerable: false,
|
|
142
|
+
value: wapp
|
|
143
|
+
}));
|
|
144
|
+
return renderMiddleware;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function createNotModifiedMiddleware() {
|
|
148
|
+
var p = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
149
|
+
var wapp = p.wapp;
|
|
150
|
+
|
|
151
|
+
function defaultIsFromCache(req, res) {
|
|
152
|
+
var ifMatch = req.headers["if-match"];
|
|
153
|
+
var ifUnmodifiedSince = req.headers["if-unmodified-since"];
|
|
154
|
+
var ifNoneMatch = req.headers["if-none-match"];
|
|
155
|
+
var ifModifiedSince = req.headers["if-modified-since"];
|
|
156
|
+
var cacheControl = req.headers["cache-control"];
|
|
157
|
+
var etag = res.getHeader("etag");
|
|
158
|
+
var lastModified = res.getHeader("last-modified");
|
|
159
|
+
var conditionalGet = ifMatch || ifUnmodifiedSince || ifNoneMatch || ifModifiedSince;
|
|
160
|
+
var isCacheable = res.wappResponse.statusCode >= 200 && res.wappResponse.statusCode < 300 || res.wappResponse.statusCode === 304;
|
|
161
|
+
var noCache = cacheControl && /(?:^|,)\s*?no-cache\s*?(?:,|$)/.test(cacheControl);
|
|
162
|
+
var unconditional = !ifUnmodifiedSince && !ifNoneMatch;
|
|
163
|
+
|
|
164
|
+
if (unconditional || noCache || !isCacheable || !conditionalGet) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
var fromCache = false;
|
|
169
|
+
|
|
170
|
+
if (ifNoneMatch && ifNoneMatch !== "*" && etag) {
|
|
171
|
+
var parseTokenList = function parseTokenList(str) {
|
|
172
|
+
var end = 0;
|
|
173
|
+
var list = [];
|
|
174
|
+
var start = 0;
|
|
175
|
+
|
|
176
|
+
for (var i = 0, len = str.length; i < len; i++) {
|
|
177
|
+
switch (str.charCodeAt(i)) {
|
|
178
|
+
case 0x20:
|
|
179
|
+
/* */
|
|
180
|
+
if (start === end) {
|
|
181
|
+
start = end = i + 1;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
break;
|
|
185
|
+
|
|
186
|
+
case 0x2c:
|
|
187
|
+
/* , */
|
|
188
|
+
list.push(str.substring(start, end));
|
|
189
|
+
start = end = i + 1;
|
|
190
|
+
break;
|
|
191
|
+
|
|
192
|
+
default:
|
|
193
|
+
end = i + 1;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
list.push(str.substring(start, end));
|
|
199
|
+
return list;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
var matches = parseTokenList(ifNoneMatch);
|
|
203
|
+
|
|
204
|
+
for (var i = 0; i < matches.length; i++) {
|
|
205
|
+
var match = matches[i];
|
|
206
|
+
|
|
207
|
+
if (match === etag || match === "W/" + etag || "W/" + match === etag) {
|
|
208
|
+
fromCache = true;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (ifModifiedSince && lastModified) {
|
|
215
|
+
var parseHttpDate = function parseHttpDate(date) {
|
|
216
|
+
var timestamp = date && Date.parse(date);
|
|
217
|
+
return typeof timestamp === 'number' ? timestamp : NaN;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
if (parseHttpDate(lastModified) <= parseHttpDate(ifModifiedSince)) {
|
|
221
|
+
fromCache = true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return fromCache;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function defaultHandle(req, res, next) {
|
|
229
|
+
var fromCache = notModifiedMiddleware.isFromCache(req, res);
|
|
230
|
+
|
|
231
|
+
if (fromCache) {
|
|
232
|
+
res.wappResponse.status(304);
|
|
233
|
+
res.wapp.log(req, res);
|
|
234
|
+
res.end();
|
|
235
|
+
} else {
|
|
236
|
+
return next();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
var notModifiedMiddlewareProperties = Object.create(Object.prototype, {
|
|
241
|
+
handle: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
242
|
+
value: defaultHandle
|
|
243
|
+
}),
|
|
244
|
+
isFromCache: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
245
|
+
value: defaultIsFromCache
|
|
246
|
+
})
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
function notModifiedMiddleware(req, res, next) {
|
|
250
|
+
if (typeof notModifiedMiddleware.handle === "function") {
|
|
251
|
+
notModifiedMiddleware.handle(req, res, next);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return notModifiedMiddleware;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
(0, _utils.mergeProperties)(notModifiedMiddleware, notModifiedMiddlewareProperties);
|
|
258
|
+
Object.defineProperty(notModifiedMiddleware, "wapp", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
259
|
+
writable: false,
|
|
260
|
+
enumerable: false,
|
|
261
|
+
value: wapp
|
|
262
|
+
}));
|
|
263
|
+
return notModifiedMiddleware;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function createMiddlewares(p) {
|
|
267
|
+
var _commonMiddlewares = (0, _middlewares["default"])(p),
|
|
268
|
+
log = _commonMiddlewares.log,
|
|
269
|
+
rest = (0, _objectWithoutProperties2["default"])(_commonMiddlewares, _excluded);
|
|
270
|
+
|
|
271
|
+
var wapp = p.wapp;
|
|
272
|
+
var wappMiddleware = wapp.middleware;
|
|
273
|
+
var notModifiedMiddleware = createNotModifiedMiddleware(p);
|
|
274
|
+
wappMiddleware.addSendMiddleware({
|
|
275
|
+
headers: function headers(req, res, next) {
|
|
276
|
+
var _res$wappResponse$sen = res.wappResponse.sendData,
|
|
277
|
+
sendData = _res$wappResponse$sen === void 0 ? {} : _res$wappResponse$sen;
|
|
278
|
+
|
|
279
|
+
if (res.setHeader) {
|
|
280
|
+
var data = sendData.data,
|
|
281
|
+
_sendData$stats = sendData.stats,
|
|
282
|
+
stats = _sendData$stats === void 0 ? {} : _sendData$stats,
|
|
283
|
+
_sendData$parsedPath = sendData.parsedPath,
|
|
284
|
+
parsedPath = _sendData$parsedPath === void 0 ? {} : _sendData$parsedPath;
|
|
285
|
+
var _html = data;
|
|
286
|
+
var _parsedPath$ext = parsedPath.ext,
|
|
287
|
+
ext = _parsedPath$ext === void 0 ? ".html" : _parsedPath$ext;
|
|
288
|
+
var mtime = stats.mtime;
|
|
289
|
+
|
|
290
|
+
if (!res.getHeader("Accept-Ranges")) {
|
|
291
|
+
res.setHeader("Accept-Ranges", "bytes");
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (!res.getHeader("Content-Type")) {
|
|
295
|
+
res.setHeader("Content-Type", mimeType[ext] || "text/plain");
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (!res.getHeader("Content-Length")) {
|
|
299
|
+
res.setHeader("Content-Length", Buffer.byteLength(_html));
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (!res.getHeader("Last-Modified") && mtime) {
|
|
303
|
+
res.setHeader("Last-Modified", mtime.toUTCString());
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (!res.getHeader("Cache-Control")) {
|
|
307
|
+
res.setHeader("Cache-Control", "public, max-age=0");
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (!res.getHeader("X-Powered-By")) {
|
|
311
|
+
res.setHeader("X-Powered-By", "Wapplr");
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return next();
|
|
316
|
+
},
|
|
317
|
+
etag: function etag(req, res, next) {
|
|
318
|
+
var _res$wappResponse$sen2 = res.wappResponse.sendData,
|
|
319
|
+
sendData = _res$wappResponse$sen2 === void 0 ? {} : _res$wappResponse$sen2;
|
|
320
|
+
|
|
321
|
+
if (res.setHeader) {
|
|
322
|
+
var _sendData$stats2 = sendData.stats,
|
|
323
|
+
stats = _sendData$stats2 === void 0 ? {} : _sendData$stats2;
|
|
324
|
+
var mtime = stats.mtime,
|
|
325
|
+
size = stats.size;
|
|
326
|
+
|
|
327
|
+
if (!res.getHeader("ETag") && mtime && size) {
|
|
328
|
+
var etag = "W/\"".concat(size.toString(16), "-").concat(mtime.getTime().toString(16), "\"");
|
|
329
|
+
res.setHeader("ETag", etag);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return next();
|
|
334
|
+
},
|
|
335
|
+
notModified: function notModified(req, res, next) {
|
|
336
|
+
if (res.setHeader) {
|
|
337
|
+
var fromCache = notModifiedMiddleware.isFromCache(req, res);
|
|
338
|
+
|
|
339
|
+
if (fromCache) {
|
|
340
|
+
res.wappResponse.status(304);
|
|
341
|
+
res.wapp.log(req, res);
|
|
342
|
+
res.end();
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return next();
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, rest), {}, {
|
|
351
|
+
render: createRenderMiddleware(p),
|
|
352
|
+
log: log
|
|
353
|
+
});
|
|
354
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = serveStatic;
|
|
7
|
+
|
|
8
|
+
var fs = require("fs");
|
|
9
|
+
|
|
10
|
+
var path = require("path");
|
|
11
|
+
|
|
12
|
+
function serveStatic(publicPath) {
|
|
13
|
+
return function staticMiddleware(req, res, next) {
|
|
14
|
+
var parsedUrl = {
|
|
15
|
+
pathname: req.wappRequest.path
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
parsedUrl = new URL(req.wappRequest.url);
|
|
20
|
+
} catch (e) {}
|
|
21
|
+
|
|
22
|
+
var sanitizePath = path.normalize(parsedUrl.pathname).replace(/^(\.\.[\/\\])+/, "");
|
|
23
|
+
var pathname = path.join(publicPath, sanitizePath);
|
|
24
|
+
var paredSanitizePath = path.parse(pathname);
|
|
25
|
+
var ext = paredSanitizePath.ext;
|
|
26
|
+
|
|
27
|
+
if (!fs.existsSync(pathname) || !ext) {
|
|
28
|
+
return next();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
var data = fs.readFileSync(pathname);
|
|
33
|
+
var stats = fs.statSync(pathname);
|
|
34
|
+
res.wappResponse.status(200);
|
|
35
|
+
res.wappResponse.sendData = {
|
|
36
|
+
data: data,
|
|
37
|
+
stats: stats,
|
|
38
|
+
parsedPath: paredSanitizePath
|
|
39
|
+
};
|
|
40
|
+
var stream = fs.createReadStream(pathname);
|
|
41
|
+
stream.on("error", function onerror(err) {
|
|
42
|
+
res.wappResponse.status(err.statusCode || 500, err);
|
|
43
|
+
res.wapp.log(err, req, res);
|
|
44
|
+
next(err);
|
|
45
|
+
});
|
|
46
|
+
stream.on("open", function onopen() {
|
|
47
|
+
res.wapp.middleware.runSendMiddlewares(req, res, function next() {
|
|
48
|
+
res.wapp.log(req, res);
|
|
49
|
+
stream.pipe(res);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
} catch (err) {
|
|
53
|
+
res.wappResponse.status(err.statusCode || 500, err);
|
|
54
|
+
res.wapp.log(err, req, res);
|
|
55
|
+
next(err);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
package/package.json
CHANGED