@typed/router 0.17.7 → 0.18.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/dist/Http/Router.d.ts +2 -0
- package/dist/Http/Router.d.ts.map +1 -0
- package/dist/Http/Router.js +2 -0
- package/dist/Http/Router.js.map +1 -0
- package/dist/Link.d.ts +12 -11
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +9 -7
- package/dist/Link.js.map +1 -1
- package/dist/Match.d.ts +3 -3
- package/dist/Match.d.ts.map +1 -1
- package/dist/Matcher.d.ts +30 -4
- package/dist/Matcher.d.ts.map +1 -1
- package/dist/Matcher.js +27 -4
- package/dist/Matcher.js.map +1 -1
- package/dist/Redirect.d.ts +1 -1
- package/dist/cjs/Link.d.ts +12 -11
- package/dist/cjs/Link.d.ts.map +1 -1
- package/dist/cjs/Link.js +8 -6
- package/dist/cjs/Link.js.map +1 -1
- package/dist/cjs/Match.d.ts +3 -3
- package/dist/cjs/Match.d.ts.map +1 -1
- package/dist/cjs/Matcher.d.ts +30 -4
- package/dist/cjs/Matcher.d.ts.map +1 -1
- package/dist/cjs/Matcher.js +28 -5
- package/dist/cjs/Matcher.js.map +1 -1
- package/dist/cjs/Redirect.d.ts +1 -1
- package/dist/cjs/matchRoutes.js +1 -1
- package/dist/cjs/matchRoutes.js.map +1 -1
- package/dist/cjs/router.d.ts +14 -4
- package/dist/cjs/router.d.ts.map +1 -1
- package/dist/cjs/router.js +18 -2
- package/dist/cjs/router.js.map +1 -1
- package/dist/matchRoutes.js +1 -1
- package/dist/matchRoutes.js.map +1 -1
- package/dist/router.d.ts +14 -4
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +14 -1
- package/dist/router.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/src/Link.ts +36 -31
- package/src/Match.ts +3 -3
- package/src/Matcher.ts +95 -11
- package/src/matchRoutes.ts +1 -1
- package/src/router.ts +59 -6
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/Http/Router.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/Http/Router.ts"],"names":[],"mappings":""}
|
package/dist/Link.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import * as Effect from '@effect/io/Effect';
|
|
2
2
|
import * as Scope from '@effect/io/Scope';
|
|
3
3
|
import * as Fx from '@typed/fx';
|
|
4
|
-
import { Placeholder } from '@typed/html';
|
|
4
|
+
import { EventHandler, Placeholder } from '@typed/html';
|
|
5
5
|
import * as Navigation from '@typed/navigation';
|
|
6
6
|
import { Router } from './router.js';
|
|
7
|
-
export interface UseLinkParams<
|
|
8
|
-
readonly to:
|
|
9
|
-
readonly replace?:
|
|
10
|
-
readonly state?:
|
|
11
|
-
readonly relative?:
|
|
12
|
-
readonly key?:
|
|
7
|
+
export interface UseLinkParams<To extends Placeholder.AnyOf<string>, Replace extends Placeholder.AnyOf<boolean>, State, Relative extends Placeholder.AnyOf<boolean>, Key extends Placeholder.AnyOf<string>> {
|
|
8
|
+
readonly to: To;
|
|
9
|
+
readonly replace?: Replace;
|
|
10
|
+
readonly state?: State;
|
|
11
|
+
readonly relative?: Relative;
|
|
12
|
+
readonly key?: Key;
|
|
13
13
|
}
|
|
14
14
|
export declare namespace UseLinkParams {
|
|
15
|
-
type Any = UseLinkParams<
|
|
16
|
-
type Context<T extends Any> = Placeholder.
|
|
17
|
-
type Error<T extends Any> = Placeholder.
|
|
15
|
+
type Any = UseLinkParams<Placeholder.AnyOf<string>, Placeholder.AnyOf<boolean>, unknown, Placeholder.AnyOf<boolean>, Placeholder.AnyOf<string>>;
|
|
16
|
+
type Context<T extends Any> = Placeholder.Context<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
|
|
17
|
+
type Error<T extends Any> = Placeholder.Error<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
|
|
18
18
|
}
|
|
19
19
|
export interface UseLink<E> {
|
|
20
20
|
readonly url: Fx.Computed<Router, E, string>;
|
|
21
21
|
readonly options: Fx.Computed<never, E, Navigation.NavigateOptions>;
|
|
22
22
|
readonly navigate: Effect.Effect<Router, E, Navigation.Destination>;
|
|
23
|
-
readonly active: Fx.
|
|
23
|
+
readonly active: Fx.Fx<Router, E, boolean>;
|
|
24
|
+
readonly onClick: EventHandler<KeyboardEvent | MouseEvent, Router, E>;
|
|
24
25
|
}
|
|
25
26
|
export declare namespace UseLink {
|
|
26
27
|
type FromParams<T extends UseLinkParams.Any> = [UseLink<UseLinkParams.Error<T>>] extends [
|
package/dist/Link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"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"}
|
package/dist/Link.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { not } from '@effect/data/Predicate';
|
|
1
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
|
+
import { getIsUsingKeyModifier } from '@typed/dom';
|
|
2
4
|
import * as Fx from '@typed/fx';
|
|
3
|
-
import { Placeholder } from '@typed/html';
|
|
5
|
+
import { EventHandler, Placeholder } from '@typed/html';
|
|
4
6
|
import { pathJoin } from '@typed/path';
|
|
5
7
|
import { Router, getCurrentPathFromUrl } from './router.js';
|
|
6
8
|
export function useLink(params) {
|
|
@@ -10,12 +12,13 @@ export function useLink(params) {
|
|
|
10
12
|
Placeholder.asRef(params.state ?? null),
|
|
11
13
|
Placeholder.asRef(params.key),
|
|
12
14
|
Placeholder.asRef(params.relative ?? true),
|
|
13
|
-
|
|
15
|
+
Router,
|
|
16
|
+
]), ([to, replace, state, key, relative, router]) => {
|
|
14
17
|
const url = Fx.RefSubject.tuple(to, relative).mapEffect(([to, relative]) => Effect.gen(function* ($) {
|
|
15
18
|
let url = to;
|
|
16
19
|
// Check if we should make the URL relative to the current route
|
|
17
20
|
if (relative) {
|
|
18
|
-
const { route, params } =
|
|
21
|
+
const { route, params } = router;
|
|
19
22
|
const matched = yield* $(params);
|
|
20
23
|
const basePath = route.make(matched);
|
|
21
24
|
url = pathJoin(basePath, url);
|
|
@@ -27,16 +30,15 @@ export function useLink(params) {
|
|
|
27
30
|
state,
|
|
28
31
|
key: key ?? undefined,
|
|
29
32
|
}));
|
|
30
|
-
const active =
|
|
31
|
-
const { navigation: { currentEntry }, } = yield* $(Router);
|
|
32
|
-
return isActive(url, (yield* $(currentEntry)).url);
|
|
33
|
-
}));
|
|
33
|
+
const active = Fx.map(Fx.combine(url, router.navigation.currentEntry), ([url, destination]) => isActive(url, destination.url));
|
|
34
34
|
const navigate = Effect.flatMap(Effect.all([url, options]), ([url, options]) => Router.withEffect((r) => r.navigation.navigate(url, options)));
|
|
35
|
+
const onClick = EventHandler.preventDefault.if(not(getIsUsingKeyModifier), () => navigate);
|
|
35
36
|
return {
|
|
36
37
|
url,
|
|
37
38
|
options,
|
|
38
39
|
navigate,
|
|
39
40
|
active,
|
|
41
|
+
onClick,
|
|
40
42
|
};
|
|
41
43
|
});
|
|
42
44
|
}
|
package/dist/Link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"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"}
|
package/dist/Match.d.ts
CHANGED
|
@@ -21,9 +21,9 @@ export declare namespace Match {
|
|
|
21
21
|
type Options<M extends Any> = M extends Match<any, any, infer Options> ? Options : never;
|
|
22
22
|
type Guard<M extends Any> = [Options<M>] extends [MatchOptions<any, infer Guard, infer _>] ? Guard : never;
|
|
23
23
|
type Matched<M extends Any> = Options<M> extends MatchOptions<any, infer _, infer Matched> ? Matched : never;
|
|
24
|
-
type Context<M extends Any> = Fx.Fx.
|
|
25
|
-
type Error<M extends Any> = Fx.Fx.
|
|
26
|
-
type Success<M extends Any> = Fx.Fx.
|
|
24
|
+
type Context<M extends Any> = Fx.Fx.Context<Rendered<M>> | ([Guard<M>] extends [never] ? never : Effect.Effect.Context<Guard<M>>) | ([Matched<M>] extends [never] ? never : Effect.Effect.Context<Matched<M>>);
|
|
25
|
+
type Error<M extends Any> = Fx.Fx.Error<Rendered<M>> | ([Guard<M>] extends [never] ? never : Exclude<Effect.Effect.Error<Guard<M>>, NavigationError>) | ([Matched<M>] extends [never] ? never : Effect.Effect.Error<Matched<M>>);
|
|
26
|
+
type Success<M extends Any> = Fx.Fx.Success<Rendered<M>>;
|
|
27
27
|
}
|
|
28
28
|
export declare function Match<P extends string, Rendered extends Fx.Fx<any, any, any>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Rendered): Match<P, Rendered, MatchOptions<P>>;
|
|
29
29
|
export declare function Match<P extends string, Rendered extends Fx.Fx<any, any, any>, Options extends MatchOptions.Any<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Rendered, options: Options): Match<P, Rendered, Options>;
|
package/dist/Match.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Match.d.ts","sourceRoot":"","sources":["../src/Match.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Match.d.ts","sourceRoot":"","sources":["../src/Match.ts"],"names":[],"mappings":"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"}
|
package/dist/Matcher.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as Chunk from '@effect/data/Chunk';
|
|
2
|
+
import * as Pipeable from '@effect/data/Pipeable';
|
|
3
|
+
import * as Cause from '@effect/io/Cause';
|
|
2
4
|
import * as Effect from '@effect/io/Effect';
|
|
3
5
|
import * as Fx from '@typed/fx';
|
|
4
6
|
import { RenderContext } from '@typed/html';
|
|
@@ -7,19 +9,43 @@ import { Route } from '@typed/route';
|
|
|
7
9
|
import { Match, MatchOptions } from './Match.js';
|
|
8
10
|
import { Redirect } from './Redirect.js';
|
|
9
11
|
import { Router } from './router.js';
|
|
10
|
-
export interface Matcher<Matches extends ReadonlyArray<Match.Any>> {
|
|
12
|
+
export interface Matcher<Matches extends ReadonlyArray<Match.Any>> extends Pipeable.Pipeable {
|
|
11
13
|
/** @internal */
|
|
12
14
|
readonly matches: Chunk.Chunk<Match.Any>;
|
|
15
|
+
/**
|
|
16
|
+
* Matches a route to an Fx
|
|
17
|
+
*/
|
|
13
18
|
readonly match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Fx.Fx<R, E, A>, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
19
|
+
/**
|
|
20
|
+
* Matches a route to a value
|
|
21
|
+
*/
|
|
22
|
+
readonly matchTo: <P extends string, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, to: (params: ParamsOf<P>) => A, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<never, never, A>, Opts>]>;
|
|
23
|
+
/**
|
|
24
|
+
* Matches a route to a lazy Fx
|
|
25
|
+
*/
|
|
14
26
|
readonly matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, ParamsOf<P>>) => Fx.Fx<R, E, A>>, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
27
|
+
/**
|
|
28
|
+
* The default way to turn a Matcher into an Fx is by providing an Fx to run when
|
|
29
|
+
* no routes match.
|
|
30
|
+
*/
|
|
15
31
|
readonly notFound: <R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>) => Fx.Fx<Router | RenderContext | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Match.Success<Matches[number]>>;
|
|
32
|
+
/**
|
|
33
|
+
* Redirect to a route when no routes match. This variant will only utilize
|
|
34
|
+
* the route provided to it.
|
|
35
|
+
*/
|
|
36
|
+
readonly redirect: <P extends string>(route: Route<P>, ...params: [keyof ParamsOf<P>] extends [never] ? [] : [ParamsOf<P>]) => Fx.Fx<Router | RenderContext | Match.Context<Matches[number]>, Exclude<Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|
|
37
|
+
/**
|
|
38
|
+
* Redirect to a route when no routes match. This variant will utilize the
|
|
39
|
+
* parent Router to redirect a route relative to it.
|
|
40
|
+
*/
|
|
41
|
+
readonly relativeRedirect: <P extends string>(route: Route<P>, ...params: [keyof ParamsOf<P>] extends [never] ? [] : [ParamsOf<P>]) => Fx.Fx<Router | RenderContext | Match.Context<Matches[number]>, Cause.NoSuchElementException | Exclude<Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|
|
16
42
|
readonly concat: <OtherMatches extends ReadonlyArray<Match.Any>>(other: Matcher<OtherMatches>) => Matcher<readonly [...Matches, ...OtherMatches]>;
|
|
17
43
|
}
|
|
18
44
|
export declare function Matcher<const Matches extends ReadonlyArray<Match.Any>>(matches: Chunk.Chunk<Match.Any>): Matcher<Matches>;
|
|
19
|
-
export declare const match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>, matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
45
|
+
export declare const match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>, matchTo: <P extends string, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, to: (params: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never) => A, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<never, never, A>, Opts>]>, matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
20
46
|
export declare const notFound: {
|
|
21
|
-
<R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.
|
|
22
|
-
<Matches extends readonly Match.Any[], R, E, A>(matcher: Matcher<Matches>, render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.
|
|
47
|
+
<R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.Success<Match.Rendered<Matches[number]>>>;
|
|
48
|
+
<Matches extends readonly Match.Any[], R, E, A>(matcher: Matcher<Matches>, render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.Success<Match.Rendered<Matches[number]>>>;
|
|
23
49
|
};
|
|
24
50
|
export declare const redirectEffect: {
|
|
25
51
|
<R, E>(effect: Effect.Effect<R, E, never>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|
package/dist/Matcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matcher.d.ts","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAE3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,OAAO,CAAC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Matcher.d.ts","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/Matcher.js
CHANGED
|
@@ -1,24 +1,47 @@
|
|
|
1
1
|
import * as Chunk from '@effect/data/Chunk';
|
|
2
2
|
import * as Debug from '@effect/data/Function';
|
|
3
|
+
import * as Pipeable from '@effect/data/Pipeable';
|
|
4
|
+
import * as Effect from '@effect/io/Effect';
|
|
3
5
|
import * as Fx from '@typed/fx';
|
|
4
6
|
import { Match } from './Match.js';
|
|
7
|
+
import { Redirect } from './Redirect.js';
|
|
5
8
|
import { matchRoutes } from './matchRoutes.js';
|
|
9
|
+
import { Router } from './router.js';
|
|
6
10
|
export function Matcher(matches) {
|
|
7
|
-
|
|
11
|
+
function match(route, render, options) {
|
|
12
|
+
return Matcher(Chunk.append(matches, Match(route, render, options || {})));
|
|
13
|
+
}
|
|
14
|
+
const self = {
|
|
8
15
|
matches,
|
|
9
|
-
match
|
|
10
|
-
|
|
16
|
+
match,
|
|
17
|
+
matchTo(route, to, options) {
|
|
18
|
+
return match(route, (params) => params.map(to), options);
|
|
11
19
|
},
|
|
12
20
|
matchLazy(route, render, options) {
|
|
13
21
|
return Matcher(Chunk.append(matches, Match.lazy(route, render, options || {})));
|
|
14
22
|
},
|
|
15
23
|
notFound: (render) => Fx.scoped(matchRoutes(Chunk.toReadonlyArray(matches), render)),
|
|
24
|
+
redirect: (route, params) => redirectEffect(self, Redirect.redirect(route.make(params || {}), {
|
|
25
|
+
history: 'replace',
|
|
26
|
+
})),
|
|
27
|
+
relativeRedirect: (route, params) => redirectEffect(self, Router.withEffect((router) => Effect.gen(function* ($) {
|
|
28
|
+
const parentParams = yield* $(router.params);
|
|
29
|
+
const allParams = { ...parentParams, ...params };
|
|
30
|
+
const nested = router.route.concat(route);
|
|
31
|
+
const url = nested.make(allParams);
|
|
32
|
+
return yield* $(Redirect.redirect(url, { history: 'replace' }));
|
|
33
|
+
}))),
|
|
16
34
|
concat: (other) => {
|
|
17
35
|
return Matcher(Chunk.appendAll(matches, other.matches));
|
|
18
36
|
},
|
|
37
|
+
pipe() {
|
|
38
|
+
// eslint-disable-next-line prefer-rest-params
|
|
39
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
40
|
+
},
|
|
19
41
|
};
|
|
42
|
+
return self;
|
|
20
43
|
}
|
|
21
|
-
export const { match, matchLazy } = Matcher(Chunk.empty());
|
|
44
|
+
export const { match, matchTo, matchLazy } = Matcher(Chunk.empty());
|
|
22
45
|
export const notFound = Debug.dual(2, (matcher, render) => matcher.notFound(render));
|
|
23
46
|
export const redirectEffect = Debug.dual(2, (matcher, effect) => notFound(matcher, () => Fx.fromEffect(effect)));
|
|
24
47
|
//# sourceMappingURL=Matcher.js.map
|
package/dist/Matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/Redirect.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare const Redirect_base: {
|
|
|
15
15
|
failFx<T_2 extends E.TaggedConstructor<"@typed/router/Redirect">>(this: T_2, ...params: ConstructorParameters<T_2>): Fx.Fx<never, E.Tagged<"@typed/router/Redirect">, never>;
|
|
16
16
|
catch<T_3 extends E.TaggedConstructor<"@typed/router/Redirect">, R, E, A>(this: T_3, f: (error: InstanceType<T_3>) => Effect.Effect<R, E, A>): <R2, E2, A2>(effect: Effect.Effect<R2, InstanceType<T_3> | E2, A2>) => Effect.Effect<R | R2, E | Exclude<E2, InstanceType<T_3>>, A | A2>;
|
|
17
17
|
catchAll<T_4 extends E.TaggedConstructor<"@typed/router/Redirect">, R_1, E_1, A_1>(this: T_4, f: (error: InstanceType<T_4>) => Fx.Fx<R_1, E_1, A_1>): <R2_1, E2_1, A2_1>(fx: Fx.Fx<R2_1, InstanceType<T_4> | E2_1, A2_1>) => Fx.Fx<R_1 | R2_1, E_1 | Exclude<E2_1, InstanceType<T_4>>, A_1 | A2_1>;
|
|
18
|
-
switchCatch<T_5 extends E.TaggedConstructor<"@typed/router/Redirect">, R_2, E_2, A_2>(this: T_5, f: (error: InstanceType<T_5>) => Fx.Fx<R_2, E_2, A_2>): <R2_2, E2_2, A2_2>(fx: Fx.Fx<R2_2, InstanceType<T_5
|
|
18
|
+
switchCatch<T_5 extends E.TaggedConstructor<"@typed/router/Redirect">, R_2, E_2, A_2>(this: T_5, f: (error: InstanceType<T_5>) => Fx.Fx<R_2, E_2, A_2>): <R2_2, E2_2, A2_2>(fx: Fx.Fx<R2_2, E2_2 | InstanceType<T_5>, A2_2>) => Fx.Fx<R_2 | R2_2, E_2 | Exclude<E2_2, InstanceType<T_5>>, A_2 | A2_2>;
|
|
19
19
|
switchMatch<T_6 extends E.TaggedConstructor<"@typed/router/Redirect">, I, R_3, E_3, A_3, R2_3, E2_3, B>(this: T_6, f: (error: InstanceType<T_6>) => Fx.Fx<R_3, E_3, A_3>, g: (i: I) => Fx.Fx<R2_3, E2_3, B>): <R3, E3>(fx: Fx.Fx<R3, InstanceType<T_6> | E3, I>) => Fx.Fx<R_3 | R2_3 | R3, E_3 | E2_3 | Exclude<E3, InstanceType<T_6>>, A_3 | B>;
|
|
20
20
|
};
|
|
21
21
|
export declare class Redirect extends Redirect_base {
|
package/dist/cjs/Link.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import * as Effect from '@effect/io/Effect';
|
|
2
2
|
import * as Scope from '@effect/io/Scope';
|
|
3
3
|
import * as Fx from '@typed/fx';
|
|
4
|
-
import { Placeholder } from '@typed/html';
|
|
4
|
+
import { EventHandler, Placeholder } from '@typed/html';
|
|
5
5
|
import * as Navigation from '@typed/navigation';
|
|
6
6
|
import { Router } from './router.js';
|
|
7
|
-
export interface UseLinkParams<
|
|
8
|
-
readonly to:
|
|
9
|
-
readonly replace?:
|
|
10
|
-
readonly state?:
|
|
11
|
-
readonly relative?:
|
|
12
|
-
readonly key?:
|
|
7
|
+
export interface UseLinkParams<To extends Placeholder.AnyOf<string>, Replace extends Placeholder.AnyOf<boolean>, State, Relative extends Placeholder.AnyOf<boolean>, Key extends Placeholder.AnyOf<string>> {
|
|
8
|
+
readonly to: To;
|
|
9
|
+
readonly replace?: Replace;
|
|
10
|
+
readonly state?: State;
|
|
11
|
+
readonly relative?: Relative;
|
|
12
|
+
readonly key?: Key;
|
|
13
13
|
}
|
|
14
14
|
export declare namespace UseLinkParams {
|
|
15
|
-
type Any = UseLinkParams<
|
|
16
|
-
type Context<T extends Any> = Placeholder.
|
|
17
|
-
type Error<T extends Any> = Placeholder.
|
|
15
|
+
type Any = UseLinkParams<Placeholder.AnyOf<string>, Placeholder.AnyOf<boolean>, unknown, Placeholder.AnyOf<boolean>, Placeholder.AnyOf<string>>;
|
|
16
|
+
type Context<T extends Any> = Placeholder.Context<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
|
|
17
|
+
type Error<T extends Any> = Placeholder.Error<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
|
|
18
18
|
}
|
|
19
19
|
export interface UseLink<E> {
|
|
20
20
|
readonly url: Fx.Computed<Router, E, string>;
|
|
21
21
|
readonly options: Fx.Computed<never, E, Navigation.NavigateOptions>;
|
|
22
22
|
readonly navigate: Effect.Effect<Router, E, Navigation.Destination>;
|
|
23
|
-
readonly active: Fx.
|
|
23
|
+
readonly active: Fx.Fx<Router, E, boolean>;
|
|
24
|
+
readonly onClick: EventHandler<KeyboardEvent | MouseEvent, Router, E>;
|
|
24
25
|
}
|
|
25
26
|
export declare namespace UseLink {
|
|
26
27
|
type FromParams<T extends UseLinkParams.Any> = [UseLink<UseLinkParams.Error<T>>] extends [
|
package/dist/cjs/Link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/Link.js
CHANGED
|
@@ -24,7 +24,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.Link = exports.useLink = void 0;
|
|
27
|
+
const Predicate_1 = require("@effect/data/Predicate");
|
|
27
28
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
29
|
+
const dom_1 = require("@typed/dom");
|
|
28
30
|
const Fx = __importStar(require("@typed/fx"));
|
|
29
31
|
const html_1 = require("@typed/html");
|
|
30
32
|
const path_1 = require("@typed/path");
|
|
@@ -36,12 +38,13 @@ function useLink(params) {
|
|
|
36
38
|
html_1.Placeholder.asRef(params.state ?? null),
|
|
37
39
|
html_1.Placeholder.asRef(params.key),
|
|
38
40
|
html_1.Placeholder.asRef(params.relative ?? true),
|
|
39
|
-
|
|
41
|
+
router_js_1.Router,
|
|
42
|
+
]), ([to, replace, state, key, relative, router]) => {
|
|
40
43
|
const url = Fx.RefSubject.tuple(to, relative).mapEffect(([to, relative]) => Effect.gen(function* ($) {
|
|
41
44
|
let url = to;
|
|
42
45
|
// Check if we should make the URL relative to the current route
|
|
43
46
|
if (relative) {
|
|
44
|
-
const { route, params } =
|
|
47
|
+
const { route, params } = router;
|
|
45
48
|
const matched = yield* $(params);
|
|
46
49
|
const basePath = route.make(matched);
|
|
47
50
|
url = (0, path_1.pathJoin)(basePath, url);
|
|
@@ -53,16 +56,15 @@ function useLink(params) {
|
|
|
53
56
|
state,
|
|
54
57
|
key: key ?? undefined,
|
|
55
58
|
}));
|
|
56
|
-
const active =
|
|
57
|
-
const { navigation: { currentEntry }, } = yield* $(router_js_1.Router);
|
|
58
|
-
return isActive(url, (yield* $(currentEntry)).url);
|
|
59
|
-
}));
|
|
59
|
+
const active = Fx.map(Fx.combine(url, router.navigation.currentEntry), ([url, destination]) => isActive(url, destination.url));
|
|
60
60
|
const navigate = Effect.flatMap(Effect.all([url, options]), ([url, options]) => router_js_1.Router.withEffect((r) => r.navigation.navigate(url, options)));
|
|
61
|
+
const onClick = html_1.EventHandler.preventDefault.if((0, Predicate_1.not)(dom_1.getIsUsingKeyModifier), () => navigate);
|
|
61
62
|
return {
|
|
62
63
|
url,
|
|
63
64
|
options,
|
|
64
65
|
navigate,
|
|
65
66
|
active,
|
|
67
|
+
onClick,
|
|
66
68
|
};
|
|
67
69
|
});
|
|
68
70
|
}
|
package/dist/cjs/Link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAE3C,8CAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/Match.d.ts
CHANGED
|
@@ -21,9 +21,9 @@ export declare namespace Match {
|
|
|
21
21
|
type Options<M extends Any> = M extends Match<any, any, infer Options> ? Options : never;
|
|
22
22
|
type Guard<M extends Any> = [Options<M>] extends [MatchOptions<any, infer Guard, infer _>] ? Guard : never;
|
|
23
23
|
type Matched<M extends Any> = Options<M> extends MatchOptions<any, infer _, infer Matched> ? Matched : never;
|
|
24
|
-
type Context<M extends Any> = Fx.Fx.
|
|
25
|
-
type Error<M extends Any> = Fx.Fx.
|
|
26
|
-
type Success<M extends Any> = Fx.Fx.
|
|
24
|
+
type Context<M extends Any> = Fx.Fx.Context<Rendered<M>> | ([Guard<M>] extends [never] ? never : Effect.Effect.Context<Guard<M>>) | ([Matched<M>] extends [never] ? never : Effect.Effect.Context<Matched<M>>);
|
|
25
|
+
type Error<M extends Any> = Fx.Fx.Error<Rendered<M>> | ([Guard<M>] extends [never] ? never : Exclude<Effect.Effect.Error<Guard<M>>, NavigationError>) | ([Matched<M>] extends [never] ? never : Effect.Effect.Error<Matched<M>>);
|
|
26
|
+
type Success<M extends Any> = Fx.Fx.Success<Rendered<M>>;
|
|
27
27
|
}
|
|
28
28
|
export declare function Match<P extends string, Rendered extends Fx.Fx<any, any, any>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Rendered): Match<P, Rendered, MatchOptions<P>>;
|
|
29
29
|
export declare function Match<P extends string, Rendered extends Fx.Fx<any, any, any>, Options extends MatchOptions.Any<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Rendered, options: Options): Match<P, Rendered, Options>;
|
package/dist/cjs/Match.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Match.d.ts","sourceRoot":"","sources":["../../src/Match.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Match.d.ts","sourceRoot":"","sources":["../../src/Match.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/Matcher.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as Chunk from '@effect/data/Chunk';
|
|
2
|
+
import * as Pipeable from '@effect/data/Pipeable';
|
|
3
|
+
import * as Cause from '@effect/io/Cause';
|
|
2
4
|
import * as Effect from '@effect/io/Effect';
|
|
3
5
|
import * as Fx from '@typed/fx';
|
|
4
6
|
import { RenderContext } from '@typed/html';
|
|
@@ -7,19 +9,43 @@ import { Route } from '@typed/route';
|
|
|
7
9
|
import { Match, MatchOptions } from './Match.js';
|
|
8
10
|
import { Redirect } from './Redirect.js';
|
|
9
11
|
import { Router } from './router.js';
|
|
10
|
-
export interface Matcher<Matches extends ReadonlyArray<Match.Any>> {
|
|
12
|
+
export interface Matcher<Matches extends ReadonlyArray<Match.Any>> extends Pipeable.Pipeable {
|
|
11
13
|
/** @internal */
|
|
12
14
|
readonly matches: Chunk.Chunk<Match.Any>;
|
|
15
|
+
/**
|
|
16
|
+
* Matches a route to an Fx
|
|
17
|
+
*/
|
|
13
18
|
readonly match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, ParamsOf<P>>) => Fx.Fx<R, E, A>, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
19
|
+
/**
|
|
20
|
+
* Matches a route to a value
|
|
21
|
+
*/
|
|
22
|
+
readonly matchTo: <P extends string, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, to: (params: ParamsOf<P>) => A, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<never, never, A>, Opts>]>;
|
|
23
|
+
/**
|
|
24
|
+
* Matches a route to a lazy Fx
|
|
25
|
+
*/
|
|
14
26
|
readonly matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, ParamsOf<P>>) => Fx.Fx<R, E, A>>, options?: Opts) => Matcher<readonly [...Matches, Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
27
|
+
/**
|
|
28
|
+
* The default way to turn a Matcher into an Fx is by providing an Fx to run when
|
|
29
|
+
* no routes match.
|
|
30
|
+
*/
|
|
15
31
|
readonly notFound: <R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>) => Fx.Fx<Router | RenderContext | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Match.Success<Matches[number]>>;
|
|
32
|
+
/**
|
|
33
|
+
* Redirect to a route when no routes match. This variant will only utilize
|
|
34
|
+
* the route provided to it.
|
|
35
|
+
*/
|
|
36
|
+
readonly redirect: <P extends string>(route: Route<P>, ...params: [keyof ParamsOf<P>] extends [never] ? [] : [ParamsOf<P>]) => Fx.Fx<Router | RenderContext | Match.Context<Matches[number]>, Exclude<Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|
|
37
|
+
/**
|
|
38
|
+
* Redirect to a route when no routes match. This variant will utilize the
|
|
39
|
+
* parent Router to redirect a route relative to it.
|
|
40
|
+
*/
|
|
41
|
+
readonly relativeRedirect: <P extends string>(route: Route<P>, ...params: [keyof ParamsOf<P>] extends [never] ? [] : [ParamsOf<P>]) => Fx.Fx<Router | RenderContext | Match.Context<Matches[number]>, Cause.NoSuchElementException | Exclude<Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|
|
16
42
|
readonly concat: <OtherMatches extends ReadonlyArray<Match.Any>>(other: Matcher<OtherMatches>) => Matcher<readonly [...Matches, ...OtherMatches]>;
|
|
17
43
|
}
|
|
18
44
|
export declare function Matcher<const Matches extends ReadonlyArray<Match.Any>>(matches: Chunk.Chunk<Match.Any>): Matcher<Matches>;
|
|
19
|
-
export declare const match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>, matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
45
|
+
export declare const match: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: (params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>, matchTo: <P extends string, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, to: (params: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never) => A, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<never, never, A>, Opts>]>, matchLazy: <P extends string, R, E, A, Opts extends MatchOptions.Any<P> = MatchOptions<P>>(route: Route<P>, render: () => Promise<(params: Fx.Filtered<never, never, import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: import("@typed/path").PartsToParams<import("@typed/path").PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R, E, A>>, options?: Opts | undefined) => Matcher<readonly [Match<P, Fx.Fx<R, E, A>, Opts>]>;
|
|
20
46
|
export declare const notFound: {
|
|
21
|
-
<R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.
|
|
22
|
-
<Matches extends readonly Match.Any[], R, E, A>(matcher: Matcher<Matches>, render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.
|
|
47
|
+
<R, E, A>(render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.Success<Match.Rendered<Matches[number]>>>;
|
|
48
|
+
<Matches extends readonly Match.Any[], R, E, A>(matcher: Matcher<Matches>, render: (params: Fx.Filtered<never, never, Readonly<Record<string, string>>>) => Fx.Fx<R, E, A>): Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, A | Fx.Fx.Success<Match.Rendered<Matches[number]>>>;
|
|
23
49
|
};
|
|
24
50
|
export declare const redirectEffect: {
|
|
25
51
|
<R, E>(effect: Effect.Effect<R, E, never>): <Matches extends readonly Match.Any[]>(matcher: Matcher<Matches>) => Fx.Fx<Router | R | Match.Context<Matches[number]>, Exclude<E | Match.Error<Matches[number]>, Redirect>, Match.Success<Matches[number]>>;
|