@esportsplus/routing 0.0.13 → 0.0.14

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 CHANGED
@@ -1,6 +1,6 @@
1
- import spa from './spa';
2
1
  import middleware from './middleware';
3
2
  import router from './router';
4
3
  import slugify from './slugify';
5
- export { spa, middleware, router, slugify };
4
+ import spa from './spa';
5
+ export { middleware, router, slugify, spa };
6
6
  export * from './types';
package/build/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import spa from './spa';
2
1
  import middleware from './middleware';
3
2
  import router from './router';
4
3
  import slugify from './slugify';
5
- export { spa, middleware, router, slugify };
4
+ import spa from './spa';
5
+ export { middleware, router, slugify, spa };
6
6
  export * from './types';
@@ -1,5 +1,5 @@
1
- import { Router } from '../types';
2
- declare const _default: (request: {
1
+ import { Middleware, Request, Router } from '../types';
2
+ declare const _default: <R>(request: {
3
3
  data: ReturnType<Router['match']>;
4
- }) => unknown;
4
+ }) => Middleware<Request, R>;
5
5
  export default _default;
@@ -2,16 +2,16 @@ import factory from '@esportsplus/middleware';
2
2
  import dispatch from './dispatch';
3
3
  import match from './match';
4
4
  declare const _default: {
5
- dispatch: (request: {
5
+ dispatch: <R>(request: {
6
6
  data: {
7
7
  parameters?: Record<PropertyKey, unknown> | undefined;
8
8
  route?: import("../router/route").Route | undefined;
9
9
  };
10
- }) => unknown;
11
- factory: <I, R>(...middleware: import("@esportsplus/middleware/build/types").Middleware<I, R>[]) => import("@esportsplus/middleware/build/types").Next<I, R>;
12
- match: (router: import("../router").Router, { spa }?: {
10
+ }) => import("@esportsplus/middleware/build/types").Middleware<import("../types").Request, R>;
11
+ factory: <I, R_1>(...middleware: import("@esportsplus/middleware/build/types").Middleware<I, R_1>[]) => import("@esportsplus/middleware/build/types").Next<I, R_1>;
12
+ match: <R_2>(router: import("../router").Router, { spa }?: {
13
13
  spa?: boolean | undefined;
14
- }) => (request: import("../types").Request, next: import("@esportsplus/middleware/build/types").Next<import("../types").Request, unknown>) => unknown;
14
+ }) => import("@esportsplus/middleware/build/types").Middleware<import("../types").Request, R_2>;
15
15
  };
16
16
  export default _default;
17
17
  export { dispatch, factory, match };
@@ -1,5 +1,5 @@
1
- import { Next, Request, Router } from '../types';
2
- declare const _default: (router: Router, { spa }?: {
1
+ import { Middleware, Request, Router } from '../types';
2
+ declare const _default: <R>(router: Router, { spa }?: {
3
3
  spa?: boolean | undefined;
4
- }) => (request: Request, next: Next<Request, unknown>) => unknown;
4
+ }) => Middleware<Request, R>;
5
5
  export default _default;
package/build/spa.d.ts CHANGED
@@ -1,17 +1,16 @@
1
- import { Request, Router } from './types';
2
- type Cache = {
3
- factory: typeof request;
4
- state: Request;
1
+ import { Router } from './types';
2
+ type Cache<T = Record<string, unknown>> = {
3
+ factory: () => T;
4
+ state: T;
5
5
  };
6
- declare const request: (url?: string) => Request;
7
- declare const _default: (router: Router, state: Cache['state'], factory?: Cache['factory']) => {
6
+ declare const _default: (router: Router, fn?: Cache['factory']) => {
8
7
  back: () => void;
9
8
  forward: () => void;
10
9
  redirect: (path: string, { state, values }: {
11
10
  state?: Record<PropertyKey, unknown> | undefined;
12
11
  values?: unknown[] | undefined;
13
12
  }) => void;
14
- request: (url?: string) => Request;
13
+ request: Record<string, unknown>;
15
14
  uri: (path: string, values?: unknown[]) => string;
16
15
  };
17
16
  export default _default;
package/build/spa.js CHANGED
@@ -1,15 +1,5 @@
1
1
  let cache = [];
2
- function update() {
3
- for (let i = 0, n = cache.length; i < n; i++) {
4
- let { factory, state } = cache[i], values = factory();
5
- for (let key in values) {
6
- state[key] = values[key];
7
- }
8
- }
9
- }
10
- const back = () => window.history.back();
11
- const forward = () => window.history.forward();
12
- const request = (url = window?.location?.href || '') => {
2
+ function request(url = window?.location?.href || '') {
13
3
  let { hash, hostname, href, origin, port, protocol } = new URL(url), path = hash?.replace('#/', '/')?.split('?') || ['/', ''];
14
4
  return {
15
5
  data: {},
@@ -22,10 +12,21 @@ const request = (url = window?.location?.href || '') => {
22
12
  protocol,
23
13
  query: Object.fromEntries((new URLSearchParams(path[1])).entries())
24
14
  };
25
- };
26
- export default (router, state, factory) => {
15
+ }
16
+ function update() {
17
+ for (let i = 0, n = cache.length; i < n; i++) {
18
+ let { factory, state } = cache[i], values = factory();
19
+ for (let key in values) {
20
+ state[key] = values[key];
21
+ }
22
+ }
23
+ }
24
+ const back = () => window.history.back();
25
+ const forward = () => window.history.forward();
26
+ export default (router, fn = request) => {
27
+ let state = {};
27
28
  cache.push({
28
- factory: factory || request,
29
+ factory: fn,
29
30
  state
30
31
  });
31
32
  update();
@@ -43,7 +44,7 @@ export default (router, state, factory) => {
43
44
  }
44
45
  window.history.pushState(state || {}, '', uri);
45
46
  },
46
- request: factory || request,
47
+ request: state,
47
48
  uri: (path, values = []) => {
48
49
  let uri = router.uri(path, values || []);
49
50
  if (uri[0] === '/') {
package/package.json CHANGED
@@ -16,5 +16,5 @@
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
18
  "types": "./build/index.d.ts",
19
- "version": "0.0.13"
19
+ "version": "0.0.14"
20
20
  }
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
- import spa from './spa';
2
1
  import middleware from './middleware';
3
2
  import router from './router';
4
3
  import slugify from './slugify';
4
+ import spa from './spa';
5
5
 
6
6
 
7
- export { spa, middleware, router, slugify };
7
+ export { middleware, router, slugify, spa };
8
8
  export * from './types';
@@ -1,12 +1,12 @@
1
- import { Router } from '~/types';
1
+ import { Middleware, Request, Router } from '~/types';
2
2
 
3
3
 
4
- export default (request: { data: ReturnType<Router['match']> }) => {
4
+ export default <R>(request: { data: ReturnType<Router['match']> }) => {
5
5
  let { route } = request.data;
6
6
 
7
7
  if (!route) {
8
8
  throw new Error(`Routing: route dispatching failed, route is undefined!`);
9
9
  }
10
10
 
11
- return route.dispatcher(request);
11
+ return route.dispatcher(request) as Middleware<Request, R>;
12
12
  };
@@ -1,10 +1,10 @@
1
- import { Next, Request, Router } from '~/types';
1
+ import { Middleware, Request, Router } from '~/types';
2
2
 
3
3
 
4
- export default (router: Router, { spa }: { spa?: boolean } = {}) => {
4
+ export default <R>(router: Router, { spa }: { spa?: boolean } = {}): Middleware<Request, R> => {
5
5
  let subdomain: string | null = null;
6
6
 
7
- return (request: Request, next: Next<Request, unknown>) => {
7
+ return (request, next) => {
8
8
  if ((typeof request.subdomain !== 'string' && !spa) || subdomain === null) {
9
9
  if (router.subdomains) {
10
10
  for (let i = 0, n = router.subdomains.length; i < n; i++) {
package/src/spa.ts CHANGED
@@ -1,22 +1,38 @@
1
1
  import { Request, Router } from './types';
2
2
 
3
3
 
4
- type Cache = {
5
- factory: typeof request;
6
- state: Request;
4
+ type Cache<T = Record<string, unknown>> = {
5
+ factory: () => T;
6
+ state: T;
7
7
  };
8
8
 
9
9
 
10
10
  let cache: Cache[] = [];
11
11
 
12
12
 
13
+ function request(url: string = window?.location?.href || ''): Request {
14
+ let { hash, hostname, href, origin, port, protocol } = new URL( url ),
15
+ path = hash?.replace('#/', '/')?.split('?') || ['/', ''];
16
+
17
+ return {
18
+ data: {},
19
+ href,
20
+ hostname,
21
+ method: 'GET',
22
+ origin,
23
+ path: path[0],
24
+ port,
25
+ protocol,
26
+ query: Object.fromEntries( (new URLSearchParams(path[1])).entries() )
27
+ };
28
+ }
29
+
13
30
  function update() {
14
31
  for (let i = 0, n = cache.length; i < n; i++) {
15
32
  let { factory, state } = cache[i],
16
- values: Request = factory();
33
+ values = factory();
17
34
 
18
35
  for (let key in values) {
19
- // @ts-ignore STFU
20
36
  state[key] = values[key];
21
37
  }
22
38
  }
@@ -27,27 +43,12 @@ const back = () => window.history.back();
27
43
 
28
44
  const forward = () => window.history.forward();
29
45
 
30
- const request = (url: string = window?.location?.href || ''): Request => {
31
- let { hash, hostname, href, origin, port, protocol } = new URL( url ),
32
- path = hash?.replace('#/', '/')?.split('?') || ['/', ''];
33
-
34
- return {
35
- data: {},
36
- href,
37
- hostname,
38
- method: 'GET',
39
- origin,
40
- path: path[0],
41
- port,
42
- protocol,
43
- query: Object.fromEntries( (new URLSearchParams(path[1])).entries() )
44
- };
45
- };
46
46
 
47
+ export default (router: Router, fn: Cache['factory'] = request) => {
48
+ let state = {} as ReturnType< typeof fn >;
47
49
 
48
- export default (router: Router, state: Cache['state'], factory?: Cache['factory']) => {
49
50
  cache.push({
50
- factory: factory || request,
51
+ factory: fn,
51
52
  state
52
53
  });
53
54
 
@@ -71,7 +72,7 @@ export default (router: Router, state: Cache['state'], factory?: Cache['factory'
71
72
 
72
73
  window.history.pushState(state || {}, '', uri);
73
74
  },
74
- request: factory || request,
75
+ request: state,
75
76
  uri: (path: string, values: unknown[] = []) => {
76
77
  let uri = router.uri(path, values || []);
77
78