@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.
Files changed (46) hide show
  1. package/dist/Http/Router.d.ts +2 -0
  2. package/dist/Http/Router.d.ts.map +1 -0
  3. package/dist/Http/Router.js +2 -0
  4. package/dist/Http/Router.js.map +1 -0
  5. package/dist/Link.d.ts +12 -11
  6. package/dist/Link.d.ts.map +1 -1
  7. package/dist/Link.js +9 -7
  8. package/dist/Link.js.map +1 -1
  9. package/dist/Match.d.ts +3 -3
  10. package/dist/Match.d.ts.map +1 -1
  11. package/dist/Matcher.d.ts +30 -4
  12. package/dist/Matcher.d.ts.map +1 -1
  13. package/dist/Matcher.js +27 -4
  14. package/dist/Matcher.js.map +1 -1
  15. package/dist/Redirect.d.ts +1 -1
  16. package/dist/cjs/Link.d.ts +12 -11
  17. package/dist/cjs/Link.d.ts.map +1 -1
  18. package/dist/cjs/Link.js +8 -6
  19. package/dist/cjs/Link.js.map +1 -1
  20. package/dist/cjs/Match.d.ts +3 -3
  21. package/dist/cjs/Match.d.ts.map +1 -1
  22. package/dist/cjs/Matcher.d.ts +30 -4
  23. package/dist/cjs/Matcher.d.ts.map +1 -1
  24. package/dist/cjs/Matcher.js +28 -5
  25. package/dist/cjs/Matcher.js.map +1 -1
  26. package/dist/cjs/Redirect.d.ts +1 -1
  27. package/dist/cjs/matchRoutes.js +1 -1
  28. package/dist/cjs/matchRoutes.js.map +1 -1
  29. package/dist/cjs/router.d.ts +14 -4
  30. package/dist/cjs/router.d.ts.map +1 -1
  31. package/dist/cjs/router.js +18 -2
  32. package/dist/cjs/router.js.map +1 -1
  33. package/dist/matchRoutes.js +1 -1
  34. package/dist/matchRoutes.js.map +1 -1
  35. package/dist/router.d.ts +14 -4
  36. package/dist/router.d.ts.map +1 -1
  37. package/dist/router.js +14 -1
  38. package/dist/router.js.map +1 -1
  39. package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
  40. package/package.json +10 -9
  41. package/src/Link.ts +36 -31
  42. package/src/Match.ts +3 -3
  43. package/src/Matcher.ts +95 -11
  44. package/src/matchRoutes.ts +1 -1
  45. package/src/router.ts +59 -6
  46. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/Http/Router.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Router.js.map
@@ -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<R = never, E = never, R2 = never, E2 = never, R3 = never, E3 = never, R4 = never, E4 = never, R5 = never, E5 = never> {
8
- readonly to: Placeholder<R, E, string>;
9
- readonly replace?: Placeholder<R2, E2, boolean>;
10
- readonly state?: Placeholder<R3, E3, unknown> | unknown;
11
- readonly relative?: Placeholder<R4, E4, boolean>;
12
- readonly key?: Placeholder<R5, E5, string>;
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<any, any, any, any, any, any, any, any, any, any>;
16
- type Context<T extends Any> = Placeholder.ResourcesOf<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
17
- type Error<T extends Any> = Placeholder.ErrorsOf<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
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.Computed<Router, E, boolean>;
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 [
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"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"}
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
- ]), ([to, replace, state, key, relative]) => {
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 } = yield* $(Router);
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 = url.mapEffect((url) => Effect.gen(function* ($) {
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":"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"}
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.ResourcesOf<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.ErrorsOf<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.OutputOf<Rendered<M>>;
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>;
@@ -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":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,MAAM,EAChB,KAAK,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CACxE,KAAK,EACL,eAAe,EACf,OAAO,CACR,EACD,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IACjF;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAA;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAA;CACpD,CAAA;AAED,yBAAiB,YAAY,CAAC;IAC5B,KAAY,GAAG,CAAC,CAAC,SAAS,MAAM,IAC5B,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GACzB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAC7B,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAC3B,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,KAAK,CACf,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,EACvB,GAAG,CAAC,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACzC,EAAE,CAAC,GAAG,CAAC,OAAO,SAAS,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAC1D;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAG/D,KAAY,QAAQ,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAExF,KAAY,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAA;IAG/F,KAAY,KAAK,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAC7F,KAAK,GACL,KAAK,CAAA;IAGT,KAAY,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,GAC7F,OAAO,GACP,KAAK,CAAA;IAET,KAAY,OAAO,CAAC,CAAC,SAAS,GAAG,IAC7B,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GACtE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9E,KAAY,KAAK,CAAC,CAAC,SAAS,GAAG,IAC3B,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAC9F,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5E,KAAY,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;CAChE;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC3E,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,GACnE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAEtC,wBAAgB,KAAK,CACnB,CAAC,SAAS,MAAM,EAChB,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrC,OAAO,SAAS,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAEnC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpE,OAAO,EAAE,OAAO,GACf,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;yBARd,KAAK"}
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.OutputOf<Match.Rendered<Matches[number]>>>;
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.OutputOf<Match.Rendered<Matches[number]>>>;
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]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Matcher.d.ts","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
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
- return {
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(route, render, options) {
10
- return Matcher(Chunk.append(matches, Match(route, render, options || {})));
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
@@ -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;AAE9C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAK/B,OAAO,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAsC9C,MAAM,UAAU,OAAO,CACrB,OAA+B;IAE/B,OAAO;QACL,OAAO;QAEP,KAAK,CACH,KAAe,EACf,MAA0E,EAC1E,OAAc;YAEd,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5E,CAAC;QAED,SAAS,CACP,KAAe,EACf,MAAyF,EACzF,OAAc;YAEd,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACjF,CAAC;QAED,QAAQ,EAAE,CACR,MAEmB,EACnB,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAY,EAAE,MAAM,CAAC,CAAC;QAE9E,MAAM,EAAE,CACN,KAA4B,EACqB,EAAE;YACnD,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAc,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,QAAQ,GAmBjB,KAAK,CAAC,IAAI,CACZ,CAAC,EACD,CACE,OAAyB,EACzB,MAA+F,EAC/F,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC9B,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAmBvB,KAAK,CAAC,IAAI,CACZ,CAAC,EACD,CACE,OAAyB,EACzB,MAAkC,EAClC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CACpD,CAAA"}
1
+ {"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
@@ -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> | E2_2, A2_2>) => Fx.Fx<R_2 | R2_2, E_2 | Exclude<E2_2, InstanceType<T_5>>, A_2 | A2_2>;
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 {
@@ -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<R = never, E = never, R2 = never, E2 = never, R3 = never, E3 = never, R4 = never, E4 = never, R5 = never, E5 = never> {
8
- readonly to: Placeholder<R, E, string>;
9
- readonly replace?: Placeholder<R2, E2, boolean>;
10
- readonly state?: Placeholder<R3, E3, unknown> | unknown;
11
- readonly relative?: Placeholder<R4, E4, boolean>;
12
- readonly key?: Placeholder<R5, E5, string>;
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<any, any, any, any, any, any, any, any, any, any>;
16
- type Context<T extends Any> = Placeholder.ResourcesOf<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
17
- type Error<T extends Any> = Placeholder.ErrorsOf<T['to'] | T['replace'] | T['state'] | T['relative'] | T['key']>;
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.Computed<Router, E, boolean>;
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 [
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":"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"}
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
- ]), ([to, replace, state, key, relative]) => {
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 } = yield* $(router_js_1.Router);
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 = url.mapEffect((url) => Effect.gen(function* ($) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAE3C,8CAA+B;AAC/B,sCAAyC;AAEzC,sCAAsC;AAEtC,2CAA2D;AAgD3D,SAAgB,OAAO,CACrB,MAAc;IAEd,OAAO,MAAM,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC;QACT,kBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,kBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAC1C,kBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACvC,kBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,kBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;KAClC,CAAC,EACX,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,GAAG,EAAE,CAAA;YAEZ,gEAAgE;YAChE,IAAI,QAAQ,EAAE;gBACZ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAM,CAAC,CAAA;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAEpC,GAAG,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;aAC9B;YAED,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CACH,CAAA;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAC1D,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAA8B,EAAE,CAAC,CAAC;YACtD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACrC,KAAK;YACL,GAAG,EAAE,GAAG,IAAI,SAAS;SACtB,CAAC,CACH,CAAA;QAED,MAAM,MAAM,GAA8D,GAAG,CAAC,SAAS,CACrF,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,MAAM,EACJ,UAAU,EAAE,EAAE,YAAY,EAAE,GAC7B,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAM,CAAC,CAAA;YAEpB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACpD,CAAC,CAAC,CACL,CAAA;QAED,MAAM,QAAQ,GAIV,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,CAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CACzE,kBAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAC9D,CAAA;QAED,OAAO;YACL,GAAG;YACH,OAAO;YACP,QAAQ;YACR,MAAM;SAC8B,CAAA;IACxC,CAAC,CACF,CAAA;AACH,CAAC;AA/DD,0BA+DC;AAED,SAAgB,IAAI,CAClB,MAAc,EACd,MAA2D;IAE3D,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC;AALD,oBAKC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,OAAY;IACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAE5B,OAAO,CACL,GAAG,KAAK,OAAO,CAAC,IAAI;QACpB,GAAG,KAAK,QAAQ;QAChB,GAAG,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM;QACjC,GAAG,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI;QAC/B,GAAG,KAAK,IAAA,iCAAqB,EAAC,OAAO,CAAC,CACvC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/Link.ts"],"names":[],"mappings":"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"}
@@ -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.ResourcesOf<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.ErrorsOf<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.OutputOf<Rendered<M>>;
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>;
@@ -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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"}
@@ -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.OutputOf<Match.Rendered<Matches[number]>>>;
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.OutputOf<Match.Rendered<Matches[number]>>>;
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]>>;