1 |
|
2 | const { parse:f } = require('regexparam');
|
3 | const { ServerRequest:u } = require('worktop/request');
|
4 | const { ServerResponse:R } = require('worktop/response');
|
5 |
|
6 |
|
7 | var c = {
|
8 | "400": "Bad Request",
|
9 | "401": "Unauthorized",
|
10 | "403": "Forbidden",
|
11 | "404": "Not Found",
|
12 | "405": "Method Not Allowed",
|
13 | "406": "Not Acceptable",
|
14 | "409": "Conflict",
|
15 | "410": "Gone",
|
16 | "411": "Length Required",
|
17 | "413": "Payload Too Large",
|
18 | "422": "Unprocessable Entity",
|
19 | "426": "Upgrade Required",
|
20 | "428": "Precondition Required",
|
21 | "429": "Too Many Requests",
|
22 | "500": "Internal Server Error",
|
23 | "501": "Not Implemented",
|
24 | "502": "Bad Gateway",
|
25 | "503": "Service Unavailable",
|
26 | "504": "Gateway Timeout"
|
27 | };
|
28 |
|
29 |
|
30 | function m(t) {
|
31 | return (o) => o.respondWith(t(o));
|
32 | }
|
33 | function w(t) {
|
34 | addEventListener("fetch", m(t));
|
35 | }
|
36 | var l = !1;
|
37 | function E(...t) {
|
38 | return async function(o, s) {
|
39 | let r, e, n = t.length;
|
40 | for (r of t)
|
41 | if (e = await d(r, --n <= 0 && !l, o, s))
|
42 | return e;
|
43 | };
|
44 | }
|
45 | async function d(t, o, s, r, ...e) {
|
46 | let n = await t(s, r, ...e);
|
47 | if (n instanceof Response)
|
48 | return n;
|
49 | if (o || r.finished)
|
50 | return new Response(r.body, r);
|
51 | }
|
52 | function y(t, o, s) {
|
53 | let r = {}, e, n, a, i, p;
|
54 | if (n = t[o]) {
|
55 | if (e = n.__s[s])
|
56 | return {params: r, handler: e.handler};
|
57 | for ([a, i] of n.__d)
|
58 | if (p = a.exec(s), p !== null) {
|
59 | if (p.groups !== void 0)
|
60 | for (e in p.groups)
|
61 | r[e] = p.groups[e];
|
62 | else if (i.keys.length > 0)
|
63 | for (e = 0; e < i.keys.length; )
|
64 | r[i.keys[e++]] = p[e];
|
65 | return {params: r, handler: i.handler};
|
66 | }
|
67 | }
|
68 | }
|
69 | function x() {
|
70 | let t, o = {};
|
71 | return t = {
|
72 | add(s, r, e) {
|
73 | let n = o[s];
|
74 | if (n === void 0 && (n = o[s] = {
|
75 | __d: new Map(),
|
76 | __s: {}
|
77 | }), r instanceof RegExp)
|
78 | n.__d.set(r, {keys: [], handler: e});
|
79 | else if (/[:|*]/.test(r)) {
|
80 | let {keys: a, pattern: i} = f(r);
|
81 | n.__d.set(i, {keys: a, handler: e});
|
82 | } else
|
83 | n.__s[r] = {keys: [], handler: e};
|
84 | },
|
85 | onerror(s, r, e, n) {
|
86 | let a = c[e = e || 500], i = n && n.message || a || String(e);
|
87 | return new Response(i, {status: e, statusText: a});
|
88 | },
|
89 | async run(s) {
|
90 | let r, e = new u(s), n = new R(e.method);
|
91 | if (l = !!t.prepare) {
|
92 | if (r = await d(t.prepare, !1, e, n), r)
|
93 | return r;
|
94 | l = !1;
|
95 | }
|
96 | return r = y(o, e.method, e.path), r ? (e.params = r.params, d(r.handler, !0, e, n).catch((a) => d(t.onerror, !0, e, n, 500, a))) : d(t.onerror, !0, e, n, 404);
|
97 | }
|
98 | };
|
99 | }
|
100 |
|
101 |
|
102 | exports.Router = x;
|
103 | exports.STATUS_CODES = c;
|
104 | exports.compose = E;
|
105 | exports.listen = w;
|
106 | exports.reply = m; |
\ | No newline at end of file |