@esportsplus/routing 0.0.24 → 0.0.26

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.
@@ -1,14 +1,53 @@
1
- import { Middleware, Response, Router } from './types';
1
+ import { Middleware, Router } from './types';
2
2
  declare function back(): void;
3
3
  declare function forward(): void;
4
4
  declare const _default: <T>(instance?: Router<T> | undefined) => {
5
5
  back: typeof back;
6
6
  forward: typeof forward;
7
- middleware: (...middleware: Middleware<T>[]) => () => Response<T>;
8
- redirect: (path: string, { state, values }: {
9
- state?: Record<PropertyKey, unknown> | undefined;
10
- values?: unknown[] | undefined;
11
- }) => void;
7
+ middleware: (...middleware: Middleware<T>[]) => {
8
+ pipeline: () => T;
9
+ request: {
10
+ data: {
11
+ [x: string]: unknown;
12
+ [x: number]: unknown;
13
+ [x: symbol]: unknown;
14
+ parameters?: Record<PropertyKey, unknown> | undefined;
15
+ route?: import("./router/route").Route<T> | undefined;
16
+ };
17
+ href: string;
18
+ hostname: string;
19
+ method: string;
20
+ origin: string;
21
+ path: string;
22
+ port: string;
23
+ protocol: string;
24
+ query: {
25
+ [x: string]: unknown;
26
+ };
27
+ subdomain?: string | undefined;
28
+ dispose: () => void;
29
+ reset: () => void;
30
+ nodes: {
31
+ data: import("@esportsplus/reactivity/build/signal").default<{
32
+ [x: string]: unknown;
33
+ [x: number]: unknown;
34
+ [x: symbol]: unknown;
35
+ parameters?: Record<PropertyKey, unknown> | undefined;
36
+ route?: import("./router/route").Route<T> | undefined;
37
+ }>;
38
+ href: import("@esportsplus/reactivity/build/signal").default<string>;
39
+ hostname: import("@esportsplus/reactivity/build/signal").default<string>;
40
+ method: import("@esportsplus/reactivity/build/signal").default<string>;
41
+ origin: import("@esportsplus/reactivity/build/signal").default<string>;
42
+ path: import("@esportsplus/reactivity/build/signal").default<string>;
43
+ port: import("@esportsplus/reactivity/build/signal").default<string>;
44
+ protocol: import("@esportsplus/reactivity/build/signal").default<string>;
45
+ query: import("@esportsplus/reactivity/build/signal").default<Record<string, unknown>>;
46
+ subdomain?: import("@esportsplus/reactivity/build/signal").default<string> | import("@esportsplus/reactivity/build/signal").default<undefined> | undefined;
47
+ };
48
+ };
49
+ };
50
+ redirect: (path: string, values?: unknown[]) => void;
12
51
  router: Router<T>;
13
52
  uri: (path: string, values?: unknown[]) => string;
14
53
  };
package/build/browser.js CHANGED
@@ -18,7 +18,7 @@ function onpopstate() {
18
18
  let values = request();
19
19
  for (let i = 0, n = cache.length; i < n; i++) {
20
20
  let state = cache[i];
21
- for (let key in state) {
21
+ for (let key in values) {
22
22
  state[key] = values[key];
23
23
  }
24
24
  }
@@ -42,24 +42,27 @@ export default (instance) => {
42
42
  cache.push(state);
43
43
  if (!registered) {
44
44
  registered = true;
45
- window.addEventListener('popstate', onpopstate);
45
+ window.addEventListener('hashchange', onpopstate);
46
46
  }
47
47
  return {
48
48
  back,
49
49
  forward,
50
50
  middleware: (...middleware) => {
51
51
  let instance = pipeline(...middleware);
52
- return () => instance(state);
52
+ return {
53
+ pipeline: () => instance(state),
54
+ request: state
55
+ };
53
56
  },
54
- redirect: (path, { state, values }) => {
57
+ redirect: (path, values = []) => {
55
58
  if (path.startsWith('https://') || path.startsWith('http://')) {
56
59
  return window.location.replace(path);
57
60
  }
58
- window.history.pushState((state || {}), '', normalize(router.uri(path, values || [])));
61
+ window.location.hash = normalize(router.uri(path, values));
59
62
  },
60
63
  router,
61
64
  uri: (path, values = []) => {
62
- return normalize(router.uri(path, values || []));
65
+ return normalize(router.uri(path, values));
63
66
  }
64
67
  };
65
68
  };
package/build/types.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import { Prettify } from '@esportsplus/typescript';
1
2
  import { Next as N, Stage } from '@esportsplus/pipeline';
2
3
  import { Route, Router } from './router';
3
- type Middleware<T> = Stage<Request<T>, Response<T>>;
4
- type Next<T> = N<Request<T>, Response<T>>;
4
+ type Middleware<T> = Stage<Request<T>, T>;
5
+ type Next<T> = N<Request<T>, T>;
5
6
  type Options<T> = {
6
7
  middleware?: Middleware<T>[];
7
8
  name?: string;
@@ -10,7 +11,7 @@ type Options<T> = {
10
11
  subdomain?: string;
11
12
  };
12
13
  type Request<T> = {
13
- data: Record<PropertyKey, unknown> & ReturnType<Router<T>['match']>;
14
+ data: Prettify<Record<PropertyKey, unknown> & ReturnType<Router<T>['match']>>;
14
15
  href: string;
15
16
  hostname: string;
16
17
  method: string;
@@ -21,6 +22,5 @@ type Request<T> = {
21
22
  query: Record<string, unknown>;
22
23
  subdomain?: string;
23
24
  };
24
- type Responder<T> = (request: Request<T>) => Response<T>;
25
- type Response<T> = Promise<T> | T;
26
- export { Middleware, Next, Options, Request, Responder, Response, Route, Router };
25
+ type Responder<T> = (request: Request<T>) => T;
26
+ export { Middleware, Next, Options, Request, Responder, Route, Router };
package/package.json CHANGED
@@ -17,5 +17,5 @@
17
17
  "prepublishOnly": "npm run build"
18
18
  },
19
19
  "types": "./build/index.d.ts",
20
- "version": "0.0.24"
20
+ "version": "0.0.26"
21
21
  }
package/src/browser.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { reactive } from '@esportsplus/reactivity';
2
- import { Middleware, Request, Response, Router } from './types';
2
+ import { Middleware, Request, Router } from './types';
3
3
  import pipeline from '@esportsplus/pipeline';
4
4
  import factory from './router';
5
5
 
@@ -30,7 +30,7 @@ function onpopstate() {
30
30
  for (let i = 0, n = cache.length; i < n; i++) {
31
31
  let state = cache[i];
32
32
 
33
- for (let key in state) {
33
+ for (let key in values) {
34
34
  // @ts-ignore
35
35
  state[key] = values[key];
36
36
  }
@@ -63,27 +63,30 @@ export default <T>(instance?: Router<T>) => {
63
63
 
64
64
  if (!registered) {
65
65
  registered = true;
66
- window.addEventListener('popstate', onpopstate);
66
+ window.addEventListener('hashchange', onpopstate);
67
67
  }
68
68
 
69
69
  return {
70
70
  back,
71
71
  forward,
72
72
  middleware: (...middleware: Middleware<T>[]) => {
73
- let instance = pipeline<Request<T>, Response<T>>(...middleware);
73
+ let instance = pipeline(...middleware);
74
74
 
75
- return () => instance(state);
75
+ return {
76
+ pipeline: () => instance(state),
77
+ request: state
78
+ };
76
79
  },
77
- redirect: (path: string, { state, values }: { state?: Record<PropertyKey, unknown>; values?: unknown[] }) => {
80
+ redirect: (path: string, values: unknown[] = []) => {
78
81
  if (path.startsWith('https://') || path.startsWith('http://')) {
79
82
  return window.location.replace(path);
80
83
  }
81
84
 
82
- window.history.pushState( (state || {}), '', normalize(router.uri(path, values || [])) );
85
+ window.location.hash = normalize( router.uri(path, values) );
83
86
  },
84
87
  router,
85
88
  uri: (path: string, values: unknown[] = []) => {
86
- return normalize( router.uri(path, values || []) );
89
+ return normalize( router.uri(path, values) );
87
90
  }
88
91
  };
89
92
  };
package/src/types.ts CHANGED
@@ -1,10 +1,11 @@
1
+ import { Prettify } from '@esportsplus/typescript';
1
2
  import { Next as N, Stage } from '@esportsplus/pipeline';
2
3
  import { Route, Router } from './router';
3
4
 
4
5
 
5
- type Middleware<T> = Stage<Request<T>, Response<T>>;
6
+ type Middleware<T> = Stage<Request<T>, T>;
6
7
 
7
- type Next<T> = N<Request<T>, Response<T>>;
8
+ type Next<T> = N<Request<T>, T>;
8
9
 
9
10
  type Options<T> = {
10
11
  middleware?: Middleware<T>[];
@@ -15,7 +16,7 @@ type Options<T> = {
15
16
  };
16
17
 
17
18
  type Request<T> = {
18
- data: Record<PropertyKey, unknown> & ReturnType<Router<T>['match']>;
19
+ data: Prettify<Record<PropertyKey, unknown> & ReturnType<Router<T>['match']>>;
19
20
  href: string;
20
21
  hostname: string;
21
22
  method: string;
@@ -27,9 +28,7 @@ type Request<T> = {
27
28
  subdomain?: string;
28
29
  };
29
30
 
30
- type Responder<T> = (request: Request<T>) => Response<T>;
31
+ type Responder<T> = (request: Request<T>) => T;
31
32
 
32
- type Response<T> = Promise<T> | T;
33
33
 
34
-
35
- export { Middleware, Next, Options, Request, Responder, Response, Route, Router };
34
+ export { Middleware, Next, Options, Request, Responder, Route, Router };