@typed/router 0.31.0 → 1.0.0-beta.0

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.
Files changed (88) hide show
  1. package/README.md +111 -2
  2. package/dist/AST.d.ts +96 -0
  3. package/dist/AST.d.ts.map +1 -0
  4. package/dist/AST.js +32 -0
  5. package/dist/CurrentRoute.d.ts +18 -0
  6. package/dist/CurrentRoute.d.ts.map +1 -0
  7. package/dist/CurrentRoute.js +18 -0
  8. package/dist/Matcher.d.ts +191 -0
  9. package/dist/Matcher.d.ts.map +1 -0
  10. package/dist/Matcher.js +597 -0
  11. package/dist/Parser.d.ts +96 -0
  12. package/dist/Parser.d.ts.map +1 -0
  13. package/dist/Parser.js +1 -0
  14. package/dist/Path.d.ts +216 -0
  15. package/dist/Path.d.ts.map +1 -0
  16. package/dist/Path.js +248 -0
  17. package/dist/Route.d.ts +57 -0
  18. package/dist/Route.d.ts.map +1 -0
  19. package/dist/Route.js +151 -0
  20. package/dist/Router.d.ts +9 -0
  21. package/dist/Router.d.ts.map +1 -0
  22. package/dist/Router.js +8 -0
  23. package/dist/Uri.d.ts +115 -0
  24. package/dist/Uri.d.ts.map +1 -0
  25. package/dist/Uri.js +1 -0
  26. package/dist/index.d.ts +5 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/package.json +25 -69
  30. package/src/AST.ts +166 -0
  31. package/src/CurrentRoute.ts +30 -331
  32. package/src/Matcher.test.ts +476 -0
  33. package/src/Matcher.ts +1269 -328
  34. package/src/Parser.ts +282 -0
  35. package/src/Path.test.ts +318 -0
  36. package/src/Path.ts +691 -0
  37. package/src/Route.test.ts +268 -0
  38. package/src/Route.ts +316 -0
  39. package/src/Router.ts +31 -0
  40. package/src/Uri.ts +214 -0
  41. package/src/index.ts +4 -28
  42. package/tsconfig.json +6 -0
  43. package/CurrentRoute/package.json +0 -6
  44. package/LICENSE +0 -21
  45. package/MatchInput/package.json +0 -6
  46. package/Matcher/package.json +0 -6
  47. package/RouteGuard/package.json +0 -6
  48. package/RouteMatch/package.json +0 -6
  49. package/dist/cjs/CurrentRoute.js +0 -170
  50. package/dist/cjs/CurrentRoute.js.map +0 -1
  51. package/dist/cjs/MatchInput.js +0 -96
  52. package/dist/cjs/MatchInput.js.map +0 -1
  53. package/dist/cjs/Matcher.js +0 -138
  54. package/dist/cjs/Matcher.js.map +0 -1
  55. package/dist/cjs/RouteGuard.js +0 -78
  56. package/dist/cjs/RouteGuard.js.map +0 -1
  57. package/dist/cjs/RouteMatch.js +0 -49
  58. package/dist/cjs/RouteMatch.js.map +0 -1
  59. package/dist/cjs/index.js +0 -53
  60. package/dist/cjs/index.js.map +0 -1
  61. package/dist/dts/CurrentRoute.d.ts +0 -94
  62. package/dist/dts/CurrentRoute.d.ts.map +0 -1
  63. package/dist/dts/MatchInput.d.ts +0 -135
  64. package/dist/dts/MatchInput.d.ts.map +0 -1
  65. package/dist/dts/Matcher.d.ts +0 -121
  66. package/dist/dts/Matcher.d.ts.map +0 -1
  67. package/dist/dts/RouteGuard.d.ts +0 -94
  68. package/dist/dts/RouteGuard.d.ts.map +0 -1
  69. package/dist/dts/RouteMatch.d.ts +0 -50
  70. package/dist/dts/RouteMatch.d.ts.map +0 -1
  71. package/dist/dts/index.d.ts +0 -24
  72. package/dist/dts/index.d.ts.map +0 -1
  73. package/dist/esm/CurrentRoute.js +0 -152
  74. package/dist/esm/CurrentRoute.js.map +0 -1
  75. package/dist/esm/MatchInput.js +0 -79
  76. package/dist/esm/MatchInput.js.map +0 -1
  77. package/dist/esm/Matcher.js +0 -130
  78. package/dist/esm/Matcher.js.map +0 -1
  79. package/dist/esm/RouteGuard.js +0 -57
  80. package/dist/esm/RouteGuard.js.map +0 -1
  81. package/dist/esm/RouteMatch.js +0 -29
  82. package/dist/esm/RouteMatch.js.map +0 -1
  83. package/dist/esm/index.js +0 -24
  84. package/dist/esm/index.js.map +0 -1
  85. package/dist/esm/package.json +0 -4
  86. package/src/MatchInput.ts +0 -282
  87. package/src/RouteGuard.ts +0 -217
  88. package/src/RouteMatch.ts +0 -104
@@ -1,130 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Fx from "@typed/fx/Fx";
5
- import * as Match from "@typed/fx/Match";
6
- import { CurrentPath, isRedirectError, navigate, RedirectError } from "@typed/navigation";
7
- import * as Data from "effect/Data";
8
- import * as Effect from "effect/Effect";
9
- import { dual, pipe } from "effect/Function";
10
- import * as Option from "effect/Option";
11
- import { pipeArguments } from "effect/Pipeable";
12
- import { hasProperty } from "effect/Predicate";
13
- import * as Unify from "effect/Unify";
14
- import { makeHref } from "./CurrentRoute.js";
15
- import * as RouteMatch from "./RouteMatch.js";
16
- /**
17
- * @since 1.0.0
18
- */
19
- export const RouteMatcherTypeId = Symbol.for("@typed/router/RouteMatcher");
20
- class RouteMatcherImpl {
21
- matches;
22
- [RouteMatcherTypeId] = RouteMatcherTypeId;
23
- constructor(matches) {
24
- this.matches = matches;
25
- this.add = this.add.bind(this);
26
- this.match = this.match.bind(this);
27
- this.switch = this.switch.bind(this);
28
- this.effect = this.effect.bind(this);
29
- this.to = this.to.bind(this);
30
- }
31
- add(match) {
32
- return new RouteMatcherImpl([...this.matches, match]);
33
- }
34
- match(input, match) {
35
- return this.add(RouteMatch.fromInput(input, match));
36
- }
37
- switch(input, match) {
38
- return this.match(input, Fx.switchMap(match));
39
- }
40
- effect(input, match) {
41
- return this.match(input, Fx.switchMapEffect(match));
42
- }
43
- to(input, f) {
44
- return this.match(input, Fx.map(f));
45
- }
46
- pipe() {
47
- return pipeArguments(this, arguments);
48
- }
49
- }
50
- /**
51
- * @since 1.0.0
52
- */
53
- export function make(matches) {
54
- return new RouteMatcherImpl(matches);
55
- }
56
- /**
57
- * @since 1.0.0
58
- */
59
- export const empty = make([]);
60
- const { effect, match, switch: switch_, to } = empty;
61
- export {
62
- /**
63
- * @since 1.0.0
64
- */
65
- effect,
66
- /**
67
- * @since 1.0.0
68
- */
69
- match,
70
- /**
71
- * @since 1.0.0
72
- */
73
- switch_ as switch,
74
- /**
75
- * @since 1.0.0
76
- */
77
- to };
78
- /**
79
- * @since 1.0.0
80
- */
81
- export const catchRedirectError = (fx) => Fx.filterMapErrorEffect(fx, Unify.unify((_) => isRedirectError(_)
82
- ? Effect.as(Effect.forkScoped(Effect.ignoreLogged(navigate(_.path, _.options))), Option.none())
83
- : Effect.succeedSome(_)));
84
- /**
85
- * @since 1.0.0
86
- */
87
- export const notFound = dual(2, function notFound(router, onNotFound) {
88
- let matcher = Match.value(CurrentPath);
89
- for (const match of router.matches) {
90
- matcher = matcher.when(match.guard, match.match);
91
- }
92
- return catchRedirectError(matcher.getOrElse(() => onNotFound));
93
- });
94
- /**
95
- * @since 1.0.0
96
- */
97
- export const notFoundWith = dual(2, function notFoundWith(router, onNotFound) {
98
- return notFound(router, Fx.fromEffect(onNotFound));
99
- });
100
- /**
101
- * @since 1.0.0
102
- */
103
- export function isRouteMatcher(value) {
104
- return hasProperty(value, RouteMatcherTypeId);
105
- }
106
- /**
107
- * @since 1.0.0
108
- */
109
- export const redirectWith = dual(2, function redirectWith(router, effect) {
110
- return notFoundWith(router, Effect.flatMap(effect, (path) => new RedirectError({ path })));
111
- });
112
- /**
113
- * @since 1.0.0
114
- */
115
- export const redirectTo = dual((args) => isRouteMatcher(args[0]), function redirect(router, route, ...params) {
116
- return redirectWith(router, pipe(Effect.catchTag(makeHref(route, ...params), "NoSuchElementException", () => Effect.fail(new RedirectRouteMatchError(route, (params[0] || {})))), Effect.flatMap((path) => new RedirectError({ path }))));
117
- });
118
- /**
119
- * @since 1.0.0
120
- */
121
- export class RedirectRouteMatchError extends Data.TaggedError("RedirectRouteMatchError") {
122
- route;
123
- params;
124
- constructor(route, params) {
125
- super();
126
- this.route = route;
127
- this.params = params;
128
- }
129
- }
130
- //# sourceMappingURL=Matcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../../src/Matcher.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Guard from "@typed/guard";
5
- import * as Route from "@typed/route";
6
- import * as Effect from "effect/Effect";
7
- import { dual, flow } from "effect/Function";
8
- import * as Option from "effect/Option";
9
- /**
10
- * @since 1.0.0
11
- */
12
- export function make(route, guard) {
13
- return { route, guard };
14
- }
15
- /**
16
- * @since 1.0.0
17
- */
18
- export function fromRoute(route) {
19
- return make(route, flow(Route.decode_(route), Effect.optionFromOptional));
20
- }
21
- /**
22
- * @since 1.0.0
23
- */
24
- export const map = dual(2, function map(self, f) {
25
- return make(self.route, Guard.map(self.guard, f));
26
- });
27
- /**
28
- * @since 1.0.0
29
- */
30
- export const mapEffect = dual(2, function mapEffect(self, f) {
31
- return make(self.route, Guard.mapEffect(self.guard, f));
32
- });
33
- /**
34
- * @since 1.0.0
35
- */
36
- export const filter = dual(2, function filter(self, f) {
37
- return make(self.route, Guard.filter(self.guard, f));
38
- });
39
- /**
40
- * @since 1.0.0
41
- */
42
- export const filterMap = dual(2, function filterMap(self, f) {
43
- return make(self.route, Guard.filterMap(self.guard, f));
44
- });
45
- /**
46
- * @since 1.0.0
47
- */
48
- export const flatMap = dual(2, function flatMap(self, guard) {
49
- return make(self.route, Guard.compose(self.guard, guard));
50
- });
51
- /**
52
- * @since 1.0.0
53
- */
54
- export const concat = dual(2, function concat(self, other) {
55
- return make(Route.concat(self.route, other.route), (input) => Effect.Do.pipe(Effect.bind("a", () => self.guard(input)), Effect.bind("b", () => other.guard(input)), Effect.map((options) => Option.map(Option.all(options), ({ a, b }) => ({ ...a, ...b })))));
56
- });
57
- //# sourceMappingURL=RouteGuard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouteGuard.js","sourceRoot":"","sources":["../../src/RouteGuard.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { middleware } from "@typed/fx/Fx";
5
- import { flow } from "effect/Function";
6
- import { withCurrentRoute } from "./CurrentRoute.js";
7
- import { asRouteGuard } from "./MatchInput.js";
8
- import * as RouteGuard from "./RouteGuard.js";
9
- /**
10
- * @since 1.0.0
11
- */
12
- export function make(route, guard, match) {
13
- return { route, guard, match: flow(match, middleware(withCurrentRoute(route))) };
14
- }
15
- /**
16
- * @since 1.0.0
17
- */
18
- export function fromRoute(route, match) {
19
- const { guard } = RouteGuard.fromRoute(route);
20
- return make(route, guard, match);
21
- }
22
- /**
23
- * @since 1.0.0
24
- */
25
- export function fromInput(input, match) {
26
- const { guard, route } = asRouteGuard(input);
27
- return make(route, guard, match);
28
- }
29
- //# sourceMappingURL=RouteMatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouteMatch.js","sourceRoot":"","sources":["../../src/RouteMatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,cAAc,CAAA;AAIlD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAqB,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AA0C7C;;GAEG;AACH,MAAM,UAAU,IAAI,CAClB,KAAQ,EACR,KAA+B,EAC/B,KAA4C;IAE5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAQ,EACR,KAA8D;IAU9D,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAE7C,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAQ,EACR,KAA8D;IAU9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAE5C,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC"}
package/dist/esm/index.js DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- /**
5
- * @since 1.0.0
6
- */
7
- export * from "./CurrentRoute.js";
8
- /**
9
- * @since 1.0.0
10
- */
11
- export * from "./Matcher.js";
12
- /**
13
- * @since 1.0.0
14
- */
15
- export * from "./MatchInput.js";
16
- /**
17
- * @since 1.0.0
18
- */
19
- export * as RouteGuard from "./RouteGuard.js";
20
- /**
21
- * @since 1.0.0
22
- */
23
- export * as RouteMatch from "./RouteMatch.js";
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,cAAc,mBAAmB,CAAA;AAEjC;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
@@ -1,4 +0,0 @@
1
- {
2
- "type": "module",
3
- "sideEffects": []
4
- }
package/src/MatchInput.ts DELETED
@@ -1,282 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
-
5
- import type * as Schema from "@effect/schema/Schema"
6
- import type { Guard } from "@typed/guard"
7
- import type * as _Path from "@typed/path"
8
- import * as Route from "@typed/route"
9
- import type * as Effect from "effect/Effect"
10
- import { dual } from "effect/Function"
11
- import type * as Option from "effect/Option"
12
- import * as RouteGuard from "./RouteGuard.js"
13
-
14
- /**
15
- * @since 1.0.0
16
- */
17
- export type MatchInput<
18
- P extends string,
19
- S extends Schema.Schema.All,
20
- A = never,
21
- E = never,
22
- R = never
23
- > = Route.Route<P, S> | RouteGuard.RouteGuard<Route.Route<P, S>, A, E, R>
24
-
25
- /**
26
- * @since 1.0.0
27
- */
28
- export namespace MatchInput {
29
- /**
30
- * @since 1.0.0
31
- */
32
- export type Any = MatchInput<any, any, any, any, any> | MatchInput<any, never, any, any, any>
33
-
34
- /**
35
- * @since 1.0.0
36
- */
37
- export type Route<T> = T extends Route.Route<infer P, infer S> ? Route.Route<P, S>
38
- : T extends RouteGuard.RouteGuard<Route.Route<infer P, infer S>, infer _A, infer _E, infer _R> ? Route.Route<P, S>
39
- : never
40
-
41
- /**
42
- * @since 1.0.0
43
- */
44
- export type Path<T> = _Path.PathJoin<[Route.Route.Path<Route<T>>]>
45
-
46
- /**
47
- * @since 1.0.0
48
- */
49
- export type ParamsOf<T> = Route.Route.Params<Route<T>>
50
-
51
- /**
52
- * @since 1.0.0
53
- */
54
- export type HasParams<T> = Route<T> extends Route.Route<infer P, infer _> ? _Path.HasParams<P> : false
55
-
56
- /**
57
- * @since 1.0.0
58
- */
59
- export type HasPathParams<T> = Route<T> extends Route.Route<infer P, infer _>
60
- ? P extends `${infer P2}\\?${infer _}` ? _Path.HasParams<P2> : _Path.HasParams<P>
61
- : false
62
-
63
- /**
64
- * @since 1.0.0
65
- */
66
- export type HasQueryParams<T> = Route<T> extends Route.Route<infer P, infer _>
67
- ? P extends `${infer _}\\?${infer P2}` ? _Path.HasParams<`\\?${P2}`> : false
68
- : false
69
-
70
- /**
71
- * @since 1.0.0
72
- */
73
- export type Success<T> = T extends Route.Route<infer _P, infer _S> ? Route.Route.Type<T>
74
- : T extends RouteGuard.RouteGuard<Route.Route<infer _P, infer _S>, infer A, infer _E, infer _R> ? A
75
- : never
76
-
77
- /**
78
- * @since 1.0.0
79
- */
80
- export type Error<T> = T extends Route.Route<infer _P, infer _S> ? Route.RouteDecodeError<T>
81
- : T extends RouteGuard.RouteGuard<Route.Route<infer _P, infer _S>, infer _A, infer E, infer _R> ? E
82
- : never
83
-
84
- /**
85
- * @since 1.0.0
86
- */
87
- export type Context<T> = T extends Route.Route<infer _P, infer _S> ? Route.Route.Context<T>
88
- : T extends RouteGuard.RouteGuard<Route.Route<infer _P, infer _S>, infer _A, infer _E, infer R> ? R
89
- : never
90
-
91
- /**
92
- * @since 1.0.0
93
- */
94
- export type Schema<T> = Route.Route.Schema<MatchInput.Route<T>>
95
-
96
- /**
97
- * @since 1.0.0
98
- */
99
- export type PathSchema<T> = Route.Route.PathSchema<MatchInput.Route<T>>
100
-
101
- /**
102
- * @since 1.0.0
103
- */
104
- export type QuerySchema<T> = Route.Route.QuerySchema<MatchInput.Route<T>>
105
- }
106
-
107
- /**
108
- * @since 1.0.0
109
- */
110
- export function asRouteGuard<I extends MatchInput.Any>(
111
- input: I
112
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>> {
113
- return Route.isRoute(input) ? RouteGuard.fromRoute(input) as any : input
114
- }
115
-
116
- /**
117
- * @since 1.0.0
118
- */
119
- export const map: {
120
- <I extends MatchInput.Any, A>(
121
- f: (a: MatchInput.Success<I>) => A
122
- ): (input: I) => RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>>
123
-
124
- <I extends MatchInput.Any, A>(
125
- input: I,
126
- f: (a: MatchInput.Success<I>) => A
127
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>>
128
- } = dual(2, function map<I extends MatchInput.Any, A>(
129
- input: I,
130
- f: (a: MatchInput.Success<I>) => A
131
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>> {
132
- return RouteGuard.map<
133
- RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>,
134
- A
135
- >(asRouteGuard<I>(input), f)
136
- })
137
-
138
- /**
139
- * @since 1.0.0
140
- */
141
- export const mapEffect: {
142
- <I extends MatchInput.Any, A, E2, R2>(
143
- f: (a: MatchInput.Success<I>) => Effect.Effect<A, E2, R2>
144
- ): (input: I) => RouteGuard.RouteGuard<MatchInput.Route<I>, A, E2 | MatchInput.Error<I>, R2 | MatchInput.Context<I>>
145
-
146
- <I extends MatchInput.Any, A, E2, R2>(
147
- input: I,
148
- f: (a: MatchInput.Success<I>) => Effect.Effect<A, E2, R2>
149
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, E2 | MatchInput.Error<I>, R2 | MatchInput.Context<I>>
150
- } = dual(2, function mapEffect<I extends MatchInput.Any, A, E2, R2>(
151
- input: I,
152
- f: (a: MatchInput.Success<I>) => Effect.Effect<A, E2, R2>
153
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I> | E2, MatchInput.Context<I> | R2> {
154
- return RouteGuard.mapEffect<
155
- RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>,
156
- A,
157
- E2,
158
- R2
159
- >(asRouteGuard<I>(input), f)
160
- })
161
-
162
- /**
163
- * @since 1.0.0
164
- */
165
- export const filter: {
166
- <I extends MatchInput.Any>(
167
- f: (a: MatchInput.Success<I>) => boolean
168
- ): (
169
- input: I
170
- ) => RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>
171
-
172
- <I extends MatchInput.Any>(
173
- input: I,
174
- f: (a: MatchInput.Success<I>) => boolean
175
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>
176
- } = dual(2, function filter<I extends MatchInput.Any>(
177
- input: I,
178
- f: (a: MatchInput.Success<I>) => boolean
179
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>> {
180
- return RouteGuard.filter<
181
- RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>
182
- >(asRouteGuard<I>(input), f)
183
- })
184
-
185
- /**
186
- * @since 1.0.0
187
- */
188
- export const filterMap: {
189
- <I extends MatchInput.Any, A>(
190
- f: (a: MatchInput.Success<I>) => Option.Option<A>
191
- ): (input: I) => RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>>
192
-
193
- <I extends MatchInput.Any, A>(
194
- input: I,
195
- f: (a: MatchInput.Success<I>) => Option.Option<A>
196
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>>
197
- } = dual(2, function filterMap<I extends MatchInput.Any, A>(
198
- input: I,
199
- f: (a: MatchInput.Success<I>) => Option.Option<A>
200
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I>, MatchInput.Context<I>> {
201
- return RouteGuard.filterMap<
202
- RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>,
203
- A
204
- >(asRouteGuard<I>(input), f)
205
- })
206
-
207
- /**
208
- * @since 1.0.0
209
- */
210
- export const flatMap: {
211
- <I extends MatchInput.Any, A, E2, R2>(
212
- guard: Guard<MatchInput.Success<I>, A, E2, R2>
213
- ): (input: I) => RouteGuard.RouteGuard<MatchInput.Route<I>, A, E2 | MatchInput.Error<I>, R2 | MatchInput.Context<I>>
214
-
215
- <I extends MatchInput.Any, A, E2, R2>(
216
- input: I,
217
- guard: Guard<MatchInput.Success<I>, A, E2, R2>
218
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, E2 | MatchInput.Error<I>, R2 | MatchInput.Context<I>>
219
- } = dual(2, function flatMap<I extends MatchInput.Any, A, E2, R2>(
220
- input: I,
221
- guard: Guard<MatchInput.Success<I>, A, E2, R2>
222
- ): RouteGuard.RouteGuard<MatchInput.Route<I>, A, MatchInput.Error<I> | E2, MatchInput.Context<I> | R2> {
223
- return RouteGuard.flatMap<
224
- RouteGuard.RouteGuard<MatchInput.Route<I>, MatchInput.Success<I>, MatchInput.Error<I>, MatchInput.Context<I>>,
225
- A,
226
- E2,
227
- R2
228
- >(asRouteGuard<I>(input), guard)
229
- })
230
-
231
- /**
232
- * @since 1.0.0
233
- */
234
- export function concat<L extends MatchInput.Any, R extends MatchInput.Any>(
235
- left: L,
236
- right: R
237
- ): RouteGuard.RouteGuard<
238
- Route.Route.Concat<MatchInput.Route<L>, MatchInput.Route<R>>,
239
- MatchInput.Success<L> & MatchInput.Success<R>,
240
- MatchInput.Error<L> | MatchInput.Error<R>,
241
- MatchInput.Context<L> | MatchInput.Context<R>
242
- > {
243
- return RouteGuard.concat<
244
- RouteGuard.RouteGuard<MatchInput.Route<L>, MatchInput.Success<L>, MatchInput.Error<L>, MatchInput.Context<L>>,
245
- RouteGuard.RouteGuard<MatchInput.Route<R>, MatchInput.Success<R>, MatchInput.Error<R>, MatchInput.Context<R>>
246
- >(asRouteGuard<L>(left), asRouteGuard<R>(right))
247
- }
248
-
249
- /**
250
- * @since 1.0.0
251
- */
252
- export function getRoute<I extends MatchInput.Any>(input: I): MatchInput.Route<I> {
253
- return asRouteGuard<I>(input).route
254
- }
255
-
256
- /**
257
- * @since 1.0.0
258
- */
259
- export function getSchema<I extends MatchInput.Any>(input: I): MatchInput.Schema<I> {
260
- return asRouteGuard<I>(input).route.schema
261
- }
262
-
263
- /**
264
- * @since 1.0.0
265
- */
266
- export function getPathSchema<I extends MatchInput.Any>(input: I): MatchInput.PathSchema<I> {
267
- return asRouteGuard<I>(input).route.pathSchema as MatchInput.PathSchema<I>
268
- }
269
-
270
- /**
271
- * @since 1.0.0
272
- */
273
- export function getQuerySchema<I extends MatchInput.Any>(input: I): MatchInput.QuerySchema<I> {
274
- return asRouteGuard<I>(input).route.querySchema as MatchInput.QuerySchema<I>
275
- }
276
-
277
- /**
278
- * @since 1.0.0
279
- */
280
- export function getPath<I extends MatchInput.Any>(input: I): MatchInput.Path<I> {
281
- return asRouteGuard<I>(input).route.path as MatchInput.Path<I>
282
- }