@esportsplus/routing 0.0.1 → 0.0.3
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/build/index.d.ts +6 -34
- package/build/index.js +3 -3
- package/build/listener.d.ts +1 -1
- package/build/middleware/common/dispatch.d.ts +3 -0
- package/build/middleware/common/dispatch.js +11 -0
- package/build/middleware/common/index.d.ts +31 -0
- package/build/middleware/common/index.js +3 -0
- package/build/middleware/common/match.d.ts +4 -0
- package/build/middleware/common/match.js +12 -0
- package/build/middleware/factory.d.ts +3 -0
- package/build/middleware/factory.js +12 -0
- package/build/middleware/index.d.ts +4 -16
- package/build/middleware/index.js +3 -3
- package/build/types.d.ts +5 -1
- package/build/url.d.ts +32 -0
- package/build/url.js +23 -0
- package/package.json +1 -1
- package/src/index.ts +3 -3
- package/src/listener.ts +1 -1
- package/src/middleware/{dispatch.ts → common/dispatch.ts} +2 -2
- package/src/middleware/common/index.ts +5 -0
- package/src/middleware/{match.ts → common/match.ts} +0 -0
- package/src/{request/middleware.ts → middleware/factory.ts} +1 -1
- package/src/middleware/index.ts +5 -5
- package/src/types.ts +9 -1
- package/src/{request/parse.ts → url.ts} +13 -4
- package/src/request/index.ts +0 -6
- package/src/request/types.ts +0 -13
package/build/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import middleware from './middleware';
|
|
2
2
|
import redirect from './redirect';
|
|
3
3
|
import listener from './listener';
|
|
4
|
-
import request from './request';
|
|
5
4
|
import routes from './routes';
|
|
5
|
+
import url from './url';
|
|
6
6
|
declare const _default: {
|
|
7
7
|
listener: (d: Record<string, any>, f: (url?: string) => {
|
|
8
8
|
data: Record<string, any>;
|
|
@@ -19,7 +19,7 @@ declare const _default: {
|
|
|
19
19
|
subdomain: string;
|
|
20
20
|
}) => void;
|
|
21
21
|
middleware: {
|
|
22
|
-
|
|
22
|
+
factory: (...middleware: import("./types").Middleware[]) => (request: {
|
|
23
23
|
data: Record<string, any>;
|
|
24
24
|
href: string;
|
|
25
25
|
hostname: string;
|
|
@@ -32,38 +32,11 @@ declare const _default: {
|
|
|
32
32
|
[k: string]: string;
|
|
33
33
|
};
|
|
34
34
|
subdomain: string;
|
|
35
|
-
}) =>
|
|
36
|
-
match: (routes: import("./routes").Routes) => (request: {
|
|
37
|
-
data: Record<string, any>;
|
|
38
|
-
href: string;
|
|
39
|
-
hostname: string;
|
|
40
|
-
uri: string;
|
|
41
|
-
origin: string;
|
|
42
|
-
pathname: string;
|
|
43
|
-
port: string;
|
|
44
|
-
protocol: string;
|
|
45
|
-
query: {
|
|
46
|
-
[k: string]: string;
|
|
47
|
-
};
|
|
48
|
-
subdomain: string;
|
|
49
|
-
}, next: import("./request/types").Next) => unknown;
|
|
35
|
+
}) => Promise<unknown>;
|
|
50
36
|
};
|
|
51
37
|
redirect: (key: string, _?: Record<string, any>) => void;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
data: Record<string, any>;
|
|
55
|
-
href: string;
|
|
56
|
-
hostname: string;
|
|
57
|
-
uri: string;
|
|
58
|
-
origin: string;
|
|
59
|
-
pathname: string;
|
|
60
|
-
port: string;
|
|
61
|
-
protocol: string;
|
|
62
|
-
query: {
|
|
63
|
-
[k: string]: string;
|
|
64
|
-
};
|
|
65
|
-
subdomain: string;
|
|
66
|
-
}) => Promise<unknown>;
|
|
38
|
+
routes: import("./routes").Routes;
|
|
39
|
+
url: {
|
|
67
40
|
parse: (url?: string) => {
|
|
68
41
|
data: Record<string, any>;
|
|
69
42
|
href: string;
|
|
@@ -79,7 +52,6 @@ declare const _default: {
|
|
|
79
52
|
subdomain: string;
|
|
80
53
|
};
|
|
81
54
|
};
|
|
82
|
-
routes: import("./routes").Routes;
|
|
83
55
|
};
|
|
84
56
|
export default _default;
|
|
85
|
-
export { listener, middleware, redirect,
|
|
57
|
+
export { listener, middleware, redirect, routes, url };
|
package/build/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import middleware from './middleware';
|
|
2
2
|
import redirect from './redirect';
|
|
3
3
|
import listener from './listener';
|
|
4
|
-
import request from './request';
|
|
5
4
|
import routes from './routes';
|
|
6
|
-
|
|
7
|
-
export { listener, middleware, redirect,
|
|
5
|
+
import url from './url';
|
|
6
|
+
export default { listener, middleware, redirect, routes, url };
|
|
7
|
+
export { listener, middleware, redirect, routes, url };
|
package/build/listener.d.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { factory } from '../../middleware';
|
|
2
|
+
export default (request) => {
|
|
3
|
+
let route = request.data.route;
|
|
4
|
+
if (!route) {
|
|
5
|
+
throw new Error(`Route dispatching failed, route was not defined!`);
|
|
6
|
+
}
|
|
7
|
+
if (!route.middleware.length) {
|
|
8
|
+
return route.responder(request);
|
|
9
|
+
}
|
|
10
|
+
return factory(...route.middleware, (request => route.responder(request)))(request);
|
|
11
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
dispatch: (request: {
|
|
3
|
+
data: Record<string, any>;
|
|
4
|
+
href: string;
|
|
5
|
+
hostname: string;
|
|
6
|
+
uri: string;
|
|
7
|
+
origin: string;
|
|
8
|
+
pathname: string;
|
|
9
|
+
port: string;
|
|
10
|
+
protocol: string;
|
|
11
|
+
query: {
|
|
12
|
+
[k: string]: string;
|
|
13
|
+
};
|
|
14
|
+
subdomain: string;
|
|
15
|
+
}) => any;
|
|
16
|
+
match: (routes: import("../../routes").Routes) => (request: {
|
|
17
|
+
data: Record<string, any>;
|
|
18
|
+
href: string;
|
|
19
|
+
hostname: string;
|
|
20
|
+
uri: string;
|
|
21
|
+
origin: string;
|
|
22
|
+
pathname: string;
|
|
23
|
+
port: string;
|
|
24
|
+
protocol: string;
|
|
25
|
+
query: {
|
|
26
|
+
[k: string]: string;
|
|
27
|
+
};
|
|
28
|
+
subdomain: string;
|
|
29
|
+
}, next: import("../../types").Next) => unknown;
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default (routes) => {
|
|
2
|
+
return (request, next) => {
|
|
3
|
+
let name = (routes.subdomains[request.subdomain] || {})[request.uri], route = routes.static[name];
|
|
4
|
+
if (!route) {
|
|
5
|
+
}
|
|
6
|
+
if (!route && routes.fallback) {
|
|
7
|
+
route = routes.static[routes.fallback];
|
|
8
|
+
}
|
|
9
|
+
request.data.route = route;
|
|
10
|
+
return next(request);
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default (...middleware) => {
|
|
2
|
+
let i = -1, n = middleware.length, next = (request) => middleware[++i](request, (i < n ? next : () => {
|
|
3
|
+
throw new Error('Request middleware did not return a responder');
|
|
4
|
+
}));
|
|
5
|
+
return async (request) => {
|
|
6
|
+
if (!middleware.length) {
|
|
7
|
+
throw new Error('Request middleware has not been defined');
|
|
8
|
+
}
|
|
9
|
+
i = -1;
|
|
10
|
+
return await next(request);
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import factory from './factory';
|
|
1
2
|
declare const _default: {
|
|
2
|
-
|
|
3
|
+
factory: (...middleware: import("../types").Middleware[]) => (request: {
|
|
3
4
|
data: Record<string, any>;
|
|
4
5
|
href: string;
|
|
5
6
|
hostname: string;
|
|
@@ -12,20 +13,7 @@ declare const _default: {
|
|
|
12
13
|
[k: string]: string;
|
|
13
14
|
};
|
|
14
15
|
subdomain: string;
|
|
15
|
-
}) =>
|
|
16
|
-
match: (routes: import("../routes").Routes) => (request: {
|
|
17
|
-
data: Record<string, any>;
|
|
18
|
-
href: string;
|
|
19
|
-
hostname: string;
|
|
20
|
-
uri: string;
|
|
21
|
-
origin: string;
|
|
22
|
-
pathname: string;
|
|
23
|
-
port: string;
|
|
24
|
-
protocol: string;
|
|
25
|
-
query: {
|
|
26
|
-
[k: string]: string;
|
|
27
|
-
};
|
|
28
|
-
subdomain: string;
|
|
29
|
-
}, next: import("../request/types").Next) => unknown;
|
|
16
|
+
}) => Promise<unknown>;
|
|
30
17
|
};
|
|
31
18
|
export default _default;
|
|
19
|
+
export { factory };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import factory from './factory';
|
|
2
|
+
export default { factory };
|
|
3
|
+
export { factory };
|
package/build/types.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { Middleware, Next, Request, Responder } from "./request/types";
|
|
2
1
|
import { Routes } from './routes';
|
|
2
|
+
import { parse } from './url';
|
|
3
3
|
type Group = {
|
|
4
4
|
middleware: Middleware[];
|
|
5
5
|
name: string;
|
|
6
6
|
pattern: string;
|
|
7
7
|
subdomain: string;
|
|
8
8
|
};
|
|
9
|
+
type Middleware = (request: Request, next: Next) => unknown;
|
|
10
|
+
type Next = (request: Request) => unknown;
|
|
11
|
+
type Request = ReturnType<typeof parse>;
|
|
12
|
+
type Responder = (request: Request) => Promise<unknown> | unknown;
|
|
9
13
|
type Route = {
|
|
10
14
|
middleware: Middleware[];
|
|
11
15
|
name: string;
|
package/build/url.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
declare const parse: (url?: string) => {
|
|
2
|
+
data: Record<string, any>;
|
|
3
|
+
href: string;
|
|
4
|
+
hostname: string;
|
|
5
|
+
uri: string;
|
|
6
|
+
origin: string;
|
|
7
|
+
pathname: string;
|
|
8
|
+
port: string;
|
|
9
|
+
protocol: string;
|
|
10
|
+
query: {
|
|
11
|
+
[k: string]: string;
|
|
12
|
+
};
|
|
13
|
+
subdomain: string;
|
|
14
|
+
};
|
|
15
|
+
declare const _default: {
|
|
16
|
+
parse: (url?: string) => {
|
|
17
|
+
data: Record<string, any>;
|
|
18
|
+
href: string;
|
|
19
|
+
hostname: string;
|
|
20
|
+
uri: string;
|
|
21
|
+
origin: string;
|
|
22
|
+
pathname: string;
|
|
23
|
+
port: string;
|
|
24
|
+
protocol: string;
|
|
25
|
+
query: {
|
|
26
|
+
[k: string]: string;
|
|
27
|
+
};
|
|
28
|
+
subdomain: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
32
|
+
export { parse };
|
package/build/url.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const parse = (url = window.location.href) => {
|
|
2
|
+
let data = new URL(url), parts = data.host.split('.'), subdomain = '';
|
|
3
|
+
if (parts.length > 2) {
|
|
4
|
+
subdomain = parts[0];
|
|
5
|
+
if (['127', 'www'].includes(subdomain)) {
|
|
6
|
+
subdomain = '';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
data: {},
|
|
11
|
+
href: data.href,
|
|
12
|
+
hostname: data.hostname,
|
|
13
|
+
uri: data.hash.replace('#/', '/') || '/',
|
|
14
|
+
origin: data.origin,
|
|
15
|
+
pathname: data.pathname,
|
|
16
|
+
port: data.port,
|
|
17
|
+
protocol: data.protocol,
|
|
18
|
+
query: Object.fromEntries(data.searchParams.entries()),
|
|
19
|
+
subdomain
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export default { parse };
|
|
23
|
+
export { parse };
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import middleware from './middleware';
|
|
2
2
|
import redirect from './redirect';
|
|
3
3
|
import listener from './listener';
|
|
4
|
-
import request from './request';
|
|
5
4
|
import routes from './routes';
|
|
5
|
+
import url from './url';
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
export default { listener, middleware, redirect,
|
|
9
|
-
export { listener, middleware, redirect,
|
|
8
|
+
export default { listener, middleware, redirect, routes, url };
|
|
9
|
+
export { listener, middleware, redirect, routes, url };
|
package/src/listener.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { factory } from '~/middleware';
|
|
2
2
|
import { Request } from '~/types';
|
|
3
3
|
|
|
4
4
|
|
|
@@ -13,5 +13,5 @@ export default (request: Request) => {
|
|
|
13
13
|
return route.responder(request);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
return
|
|
16
|
+
return factory(...route.middleware, (request => route.responder(request)))(request);
|
|
17
17
|
};
|
|
File without changes
|
package/src/middleware/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
1
|
+
import factory from './factory';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export default { factory };
|
|
5
|
+
export { factory };
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Middleware, Next, Request, Responder } from "./request/types";
|
|
2
1
|
import { Routes } from './routes';
|
|
2
|
+
import { parse } from './url';
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
type Group = {
|
|
@@ -9,6 +9,14 @@ type Group = {
|
|
|
9
9
|
subdomain: string;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
+
type Middleware = (request: Request, next: Next) => unknown;
|
|
13
|
+
|
|
14
|
+
type Next = (request: Request) => unknown;
|
|
15
|
+
|
|
16
|
+
type Request = ReturnType<typeof parse>;
|
|
17
|
+
|
|
18
|
+
type Responder = (request: Request) => Promise<unknown> | unknown;
|
|
19
|
+
|
|
12
20
|
type Route = {
|
|
13
21
|
middleware: Middleware[];
|
|
14
22
|
name: string;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
const parse = (url: string = window.location.href) => {
|
|
2
2
|
let data = new URL( url ),
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (['127', 'www'].includes(`${subdomain}`)) {
|
|
3
|
+
parts = data.host.split('.'),
|
|
6
4
|
subdomain = '';
|
|
5
|
+
|
|
6
|
+
if (parts.length > 2) {
|
|
7
|
+
subdomain = parts[0];
|
|
8
|
+
|
|
9
|
+
if (['127', 'www'].includes(subdomain)) {
|
|
10
|
+
subdomain = '';
|
|
11
|
+
}
|
|
7
12
|
}
|
|
8
13
|
|
|
9
14
|
return {
|
|
@@ -19,3 +24,7 @@ export default (url: string = window.location.href) => {
|
|
|
19
24
|
subdomain
|
|
20
25
|
};
|
|
21
26
|
};
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
export default { parse };
|
|
30
|
+
export { parse };
|
package/src/request/index.ts
DELETED
package/src/request/types.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import parse from './parse';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
type Middleware = (request: Request, next: Next) => unknown;
|
|
5
|
-
|
|
6
|
-
type Next = (request: Request) => unknown;
|
|
7
|
-
|
|
8
|
-
type Request = ReturnType<typeof parse>;
|
|
9
|
-
|
|
10
|
-
type Responder = (request: Request) => Promise<unknown> | unknown;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export { Middleware, Next, Request, Responder };
|