@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.
- package/README.md +111 -2
- package/dist/AST.d.ts +96 -0
- package/dist/AST.d.ts.map +1 -0
- package/dist/AST.js +32 -0
- package/dist/CurrentRoute.d.ts +18 -0
- package/dist/CurrentRoute.d.ts.map +1 -0
- package/dist/CurrentRoute.js +18 -0
- package/dist/Matcher.d.ts +191 -0
- package/dist/Matcher.d.ts.map +1 -0
- package/dist/Matcher.js +597 -0
- package/dist/Parser.d.ts +96 -0
- package/dist/Parser.d.ts.map +1 -0
- package/dist/Parser.js +1 -0
- package/dist/Path.d.ts +216 -0
- package/dist/Path.d.ts.map +1 -0
- package/dist/Path.js +248 -0
- package/dist/Route.d.ts +57 -0
- package/dist/Route.d.ts.map +1 -0
- package/dist/Route.js +151 -0
- package/dist/Router.d.ts +9 -0
- package/dist/Router.d.ts.map +1 -0
- package/dist/Router.js +8 -0
- package/dist/Uri.d.ts +115 -0
- package/dist/Uri.d.ts.map +1 -0
- package/dist/Uri.js +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/package.json +25 -69
- package/src/AST.ts +166 -0
- package/src/CurrentRoute.ts +30 -331
- package/src/Matcher.test.ts +476 -0
- package/src/Matcher.ts +1269 -328
- package/src/Parser.ts +282 -0
- package/src/Path.test.ts +318 -0
- package/src/Path.ts +691 -0
- package/src/Route.test.ts +268 -0
- package/src/Route.ts +316 -0
- package/src/Router.ts +31 -0
- package/src/Uri.ts +214 -0
- package/src/index.ts +4 -28
- package/tsconfig.json +6 -0
- package/CurrentRoute/package.json +0 -6
- package/LICENSE +0 -21
- package/MatchInput/package.json +0 -6
- package/Matcher/package.json +0 -6
- package/RouteGuard/package.json +0 -6
- package/RouteMatch/package.json +0 -6
- package/dist/cjs/CurrentRoute.js +0 -170
- package/dist/cjs/CurrentRoute.js.map +0 -1
- package/dist/cjs/MatchInput.js +0 -96
- package/dist/cjs/MatchInput.js.map +0 -1
- package/dist/cjs/Matcher.js +0 -138
- package/dist/cjs/Matcher.js.map +0 -1
- package/dist/cjs/RouteGuard.js +0 -78
- package/dist/cjs/RouteGuard.js.map +0 -1
- package/dist/cjs/RouteMatch.js +0 -49
- package/dist/cjs/RouteMatch.js.map +0 -1
- package/dist/cjs/index.js +0 -53
- package/dist/cjs/index.js.map +0 -1
- package/dist/dts/CurrentRoute.d.ts +0 -94
- package/dist/dts/CurrentRoute.d.ts.map +0 -1
- package/dist/dts/MatchInput.d.ts +0 -135
- package/dist/dts/MatchInput.d.ts.map +0 -1
- package/dist/dts/Matcher.d.ts +0 -121
- package/dist/dts/Matcher.d.ts.map +0 -1
- package/dist/dts/RouteGuard.d.ts +0 -94
- package/dist/dts/RouteGuard.d.ts.map +0 -1
- package/dist/dts/RouteMatch.d.ts +0 -50
- package/dist/dts/RouteMatch.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -24
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/esm/CurrentRoute.js +0 -152
- package/dist/esm/CurrentRoute.js.map +0 -1
- package/dist/esm/MatchInput.js +0 -79
- package/dist/esm/MatchInput.js.map +0 -1
- package/dist/esm/Matcher.js +0 -130
- package/dist/esm/Matcher.js.map +0 -1
- package/dist/esm/RouteGuard.js +0 -57
- package/dist/esm/RouteGuard.js.map +0 -1
- package/dist/esm/RouteMatch.js +0 -29
- package/dist/esm/RouteMatch.js.map +0 -1
- package/dist/esm/index.js +0 -24
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/src/MatchInput.ts +0 -282
- package/src/RouteGuard.ts +0 -217
- package/src/RouteMatch.ts +0 -104
package/dist/esm/Matcher.js
DELETED
|
@@ -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
|
package/dist/esm/Matcher.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../../src/Matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/RouteGuard.js
DELETED
|
@@ -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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"}
|
package/dist/esm/RouteMatch.js
DELETED
|
@@ -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
|
package/dist/esm/index.js.map
DELETED
|
@@ -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"}
|
package/dist/esm/package.json
DELETED
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
|
-
}
|