@typed/router 0.17.6 → 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 (55) 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 +2 -2
  16. package/dist/Redirect.d.ts.map +1 -1
  17. package/dist/Redirect.js +2 -2
  18. package/dist/Redirect.js.map +1 -1
  19. package/dist/cjs/Link.d.ts +12 -11
  20. package/dist/cjs/Link.d.ts.map +1 -1
  21. package/dist/cjs/Link.js +8 -6
  22. package/dist/cjs/Link.js.map +1 -1
  23. package/dist/cjs/Match.d.ts +3 -3
  24. package/dist/cjs/Match.d.ts.map +1 -1
  25. package/dist/cjs/Matcher.d.ts +30 -4
  26. package/dist/cjs/Matcher.d.ts.map +1 -1
  27. package/dist/cjs/Matcher.js +28 -5
  28. package/dist/cjs/Matcher.js.map +1 -1
  29. package/dist/cjs/Redirect.d.ts +2 -2
  30. package/dist/cjs/Redirect.d.ts.map +1 -1
  31. package/dist/cjs/Redirect.js +2 -2
  32. package/dist/cjs/Redirect.js.map +1 -1
  33. package/dist/cjs/matchRoutes.d.ts.map +1 -1
  34. package/dist/cjs/matchRoutes.js +2 -1
  35. package/dist/cjs/matchRoutes.js.map +1 -1
  36. package/dist/cjs/router.d.ts +14 -4
  37. package/dist/cjs/router.d.ts.map +1 -1
  38. package/dist/cjs/router.js +18 -2
  39. package/dist/cjs/router.js.map +1 -1
  40. package/dist/matchRoutes.d.ts.map +1 -1
  41. package/dist/matchRoutes.js +2 -1
  42. package/dist/matchRoutes.js.map +1 -1
  43. package/dist/router.d.ts +14 -4
  44. package/dist/router.d.ts.map +1 -1
  45. package/dist/router.js +14 -1
  46. package/dist/router.js.map +1 -1
  47. package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
  48. package/package.json +11 -10
  49. package/src/Link.ts +36 -31
  50. package/src/Match.ts +3 -3
  51. package/src/Matcher.ts +95 -11
  52. package/src/Redirect.ts +8 -2
  53. package/src/matchRoutes.ts +6 -4
  54. package/src/router.ts +59 -6
  55. package/tsconfig.build.tsbuildinfo +1 -1
@@ -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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"}
@@ -24,29 +24,52 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  var _a;
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.redirectEffect = exports.notFound = exports.matchLazy = exports.match = exports.Matcher = void 0;
27
+ exports.redirectEffect = exports.notFound = exports.matchLazy = exports.matchTo = exports.match = exports.Matcher = void 0;
28
28
  const Chunk = __importStar(require("@effect/data/Chunk"));
29
29
  const Debug = __importStar(require("@effect/data/Function"));
30
+ const Pipeable = __importStar(require("@effect/data/Pipeable"));
31
+ const Effect = __importStar(require("@effect/io/Effect"));
30
32
  const Fx = __importStar(require("@typed/fx"));
31
33
  const Match_js_1 = require("./Match.js");
34
+ const Redirect_js_1 = require("./Redirect.js");
32
35
  const matchRoutes_js_1 = require("./matchRoutes.js");
36
+ const router_js_1 = require("./router.js");
33
37
  function Matcher(matches) {
34
- return {
38
+ function match(route, render, options) {
39
+ return Matcher(Chunk.append(matches, (0, Match_js_1.Match)(route, render, options || {})));
40
+ }
41
+ const self = {
35
42
  matches,
36
- match(route, render, options) {
37
- return Matcher(Chunk.append(matches, (0, Match_js_1.Match)(route, render, options || {})));
43
+ match,
44
+ matchTo(route, to, options) {
45
+ return match(route, (params) => params.map(to), options);
38
46
  },
39
47
  matchLazy(route, render, options) {
40
48
  return Matcher(Chunk.append(matches, Match_js_1.Match.lazy(route, render, options || {})));
41
49
  },
42
50
  notFound: (render) => Fx.scoped((0, matchRoutes_js_1.matchRoutes)(Chunk.toReadonlyArray(matches), render)),
51
+ redirect: (route, params) => (0, exports.redirectEffect)(self, Redirect_js_1.Redirect.redirect(route.make(params || {}), {
52
+ history: 'replace',
53
+ })),
54
+ relativeRedirect: (route, params) => (0, exports.redirectEffect)(self, router_js_1.Router.withEffect((router) => Effect.gen(function* ($) {
55
+ const parentParams = yield* $(router.params);
56
+ const allParams = { ...parentParams, ...params };
57
+ const nested = router.route.concat(route);
58
+ const url = nested.make(allParams);
59
+ return yield* $(Redirect_js_1.Redirect.redirect(url, { history: 'replace' }));
60
+ }))),
43
61
  concat: (other) => {
44
62
  return Matcher(Chunk.appendAll(matches, other.matches));
45
63
  },
64
+ pipe() {
65
+ // eslint-disable-next-line prefer-rest-params
66
+ return Pipeable.pipeArguments(this, arguments);
67
+ },
46
68
  };
69
+ return self;
47
70
  }
48
71
  exports.Matcher = Matcher;
49
- _a = Matcher(Chunk.empty()), exports.match = _a.match, exports.matchLazy = _a.matchLazy;
72
+ _a = Matcher(Chunk.empty()), exports.match = _a.match, exports.matchTo = _a.matchTo, exports.matchLazy = _a.matchLazy;
50
73
  exports.notFound = Debug.dual(2, (matcher, render) => matcher.notFound(render));
51
74
  exports.redirectEffect = Debug.dual(2, (matcher, effect) => (0, exports.notFound)(matcher, () => Fx.fromEffect(effect)));
52
75
  //# sourceMappingURL=Matcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../../src/Matcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAC3C,6DAA8C;AAE9C,8CAA+B;AAK/B,yCAAgD;AAEhD,qDAA8C;AAsC9C,SAAgB,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,IAAA,gBAAK,EAAC,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,gBAAK,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,IAAA,4BAAW,EAAC,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;AAlCD,0BAkCC;AAEY,KAAuB,OAAO,CAAc,KAAK,CAAC,KAAK,EAAE,CAAC,EAAxD,aAAK,aAAE,iBAAS,gBAAwC;AAE1D,QAAA,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;AAEY,QAAA,cAAc,GAmBvB,KAAK,CAAC,IAAI,CACZ,CAAC,EACD,CACE,OAAyB,EACzB,MAAkC,EAClC,EAAE,CAAC,IAAA,gBAAQ,EAAC,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,8 +15,8 @@ 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>;
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, E3 | InstanceType<T_6>, I>) => Fx.Fx<R_3 | R2_3 | R3, E_3 | E2_3 | Exclude<E3, InstanceType<T_6>>, A_3 | B>;
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
+ 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 {
22
22
  readonly url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Redirect.d.ts","sourceRoot":"","sources":["../../src/Redirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;;;;;;;;;;;;;;;;;AAEnD,qBAAa,QAAS,SAAQ,aAAkC;IAE5D,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,CAAC;gBADR,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,6BAAiB;IAKpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IAI9F,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;CAGzF"}
1
+ {"version":3,"file":"Redirect.d.ts","sourceRoot":"","sources":["../../src/Redirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;;;;;;;;;;;;;;;;;AAEnD,qBAAa,QAAS,SAAQ,aAAkC;IAE5D,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,CAAC;gBADR,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,6BAAiB;IAKpC,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAwC,GAChD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IAIxC,MAAM,CAAC,UAAU,CACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAwC,GAChD,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;CAGjC"}
@@ -33,10 +33,10 @@ class Redirect extends E.tagged('@typed/router/Redirect') {
33
33
  this.url = url;
34
34
  this.options = options;
35
35
  }
36
- static redirect(url, options) {
36
+ static redirect(url, options = { history: 'replace' }) {
37
37
  return Effect.fail(new Redirect(url, options));
38
38
  }
39
- static redirectFx(url, options) {
39
+ static redirectFx(url, options = { history: 'replace' }) {
40
40
  return Fx.fail(new Redirect(url, options));
41
41
  }
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Redirect.js","sourceRoot":"","sources":["../../src/Redirect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAC3C,gDAAiC;AACjC,8CAA+B;AAG/B,MAAa,QAAS,SAAQ,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAC9D,YACW,GAAW,EACX,OAAyB;QAElC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;QAHlB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAkB;IAGpC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAyB;QACpD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,OAAyB;QACtD,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAC5C,CAAC;CACF;AAfD,4BAeC"}
1
+ {"version":3,"file":"Redirect.js","sourceRoot":"","sources":["../../src/Redirect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAC3C,gDAAiC;AACjC,8CAA+B;AAG/B,MAAa,QAAS,SAAQ,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAC9D,YACW,GAAW,EACX,OAAyB;QAElC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;QAHlB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAkB;IAGpC,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,GAAW,EACX,UAA2B,EAAE,OAAO,EAAE,SAAS,EAAE;QAEjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,UAAU,CACf,GAAW,EACX,UAA2B,EAAE,OAAO,EAAE,SAAS,EAAE;QAEjD,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAC5C,CAAC;CACF;AArBD,4BAqBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"matchRoutes.d.ts","sourceRoot":"","sources":["../../src/matchRoutes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAyB,MAAM,aAAa,CAAA;AAE3D,wBAAgB,WAAW,CACzB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9C,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EAET,OAAO,EAAE,OAAO,EAChB,UAAU,GAAE,CACV,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAChE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAoB,GACrC,EAAE,CAAC,EAAE,CACN,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACzE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnD,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACnC,CAuFA"}
1
+ {"version":3,"file":"matchRoutes.d.ts","sourceRoot":"","sources":["../../src/matchRoutes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAyB,MAAM,aAAa,CAAA;AAE3D,wBAAgB,WAAW,CACzB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9C,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EAET,OAAO,EAAE,OAAO,EAChB,UAAU,GAAE,CACV,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAChE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAoB,GACrC,EAAE,CAAC,EAAE,CACN,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACzE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnD,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACnC,CAyFA"}
@@ -41,6 +41,7 @@ function matchRoutes(matches, onNotFound = () => Fx.empty()) {
41
41
  const nestedRouter = router.define(match.route);
42
42
  const render = (0, Function_1.pipe)(nestedRouter.params, match.render, Fx.provideService(router_js_1.Router, nestedRouter), Fx.scoped);
43
43
  return [
44
+ // If the route is the a single slash, use the route directly to keep any parsing options.
44
45
  nestedRouter.route,
45
46
  render,
46
47
  match.options?.guard,
@@ -72,7 +73,7 @@ function matchRoutes(matches, onNotFound = () => Fx.empty()) {
72
73
  });
73
74
  // Match a Route when navigation occurs
74
75
  yield* $(router.navigation.onNavigation((event) => matchPath((0, router_js_1.getCurrentPathFromUrl)(event.destination.url))));
75
- return (0, Function_1.pipe)(matched, isBrowser ? Function_1.identity : Fx.take(1), Redirect_js_1.Redirect.switchMatch((r) => Fx.as(Fx.fromEffect(router.navigation.navigate(r.url, r.options)), Option.none()), Fx.map(Option.some)), Fx.compact);
76
+ return (0, Function_1.pipe)(matched, isBrowser ? Function_1.identity : Fx.take(1), Fx.switchLatest, Redirect_js_1.Redirect.switchCatch((redirect) => Fx.fromFxEffect(Effect.map(router.navigation.navigate(redirect.url, redirect.options), () => Fx.never()))));
76
77
  });
77
78
  }
78
79
  exports.matchRoutes = matchRoutes;
@@ -1 +1 @@
1
- {"version":3,"file":"matchRoutes.js","sourceRoot":"","sources":["../../src/matchRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matchRoutes.js","sourceRoot":"","sources":["../../src/matchRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import * as Option from '@effect/data/Option';
2
+ import * as Effect from '@effect/io/Effect';
2
3
  import * as Layer from '@effect/io/Layer';
3
4
  import { Tag } from '@typed/context';
4
5
  import { DomServicesElementParams } from '@typed/dom';
5
- import { Filtered } from '@typed/fx';
6
+ import * as Fx from '@typed/fx';
6
7
  import * as Navigation from '@typed/navigation';
7
8
  import { ParamsOf, PathJoin } from '@typed/path';
8
- import { Route } from '@typed/route';
9
+ import { Route, RouteOptions } from '@typed/route';
9
10
  export interface Router<in out P extends string = string> {
10
11
  /**
11
12
  * The base Route for this Router instance.
@@ -14,12 +15,12 @@ export interface Router<in out P extends string = string> {
14
15
  /**
15
16
  * The current params for the current path.
16
17
  */
17
- readonly params: Filtered<never, never, ParamsOf<P>>;
18
+ readonly params: Fx.Filtered<never, never, ParamsOf<P>>;
18
19
  /**
19
20
  * Construct a new Router instance by defining a new Route which is concatenated
20
21
  * to the current Route.
21
22
  */
22
- readonly define: <P2 extends string>(route: Route<P2>) => Router<PathJoin<[P, P2]>>;
23
+ readonly define: <P2 extends string>(route: Route<P2>, overrides?: RouteOptions) => Router<PathJoin<[P, P2]>>;
23
24
  /**
24
25
  * The parent Router instance if one exists.
25
26
  */
@@ -34,4 +35,13 @@ export declare const navigation: Layer.Layer<Navigation.Navigation, never, Route
34
35
  export declare function getCurrentPathFromUrl(url: URL): string;
35
36
  export declare const dom: (options?: Navigation.DomNavigationOptions & DomServicesElementParams) => Layer.Layer<Navigation.NavigationServices, never, Navigation.Navigation | Router>;
36
37
  export declare const memory: (options: Navigation.MemoryNavigationOptions) => Layer.Layer<never, never, Navigation.Navigation | Router>;
38
+ export declare const back: Effect.Effect<Router, never, Navigation.Destination>;
39
+ export declare const canGoBack: Effect.Effect<Router, never, boolean> & Fx.Fx<Router, never, boolean>;
40
+ export declare const canGoForward: Effect.Effect<Router, never, boolean> & Fx.Fx<Router, never, boolean>;
41
+ export declare const cancelNavigation: Effect.Effect<never, Navigation.CancelNavigation, never>;
42
+ export declare const forward: Effect.Effect<Router<string>, never, Navigation.Destination>;
43
+ export declare const navigate: (url: string, options?: Navigation.NavigateOptions) => Effect.Effect<Router, never, Navigation.Destination>;
44
+ export declare const push: (url: string, options?: Omit<Navigation.NavigateOptions, 'history'>) => Effect.Effect<Router, never, Navigation.Destination>;
45
+ export declare const replace: (url: string, options?: Omit<Navigation.NavigateOptions, 'history'>) => Effect.Effect<Router, never, Navigation.Destination>;
46
+ export declare const reload: Effect.Effect<Router, never, Navigation.Destination>;
37
47
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,MAAM,WAAW,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACtD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAEnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAA;CAC3C;AAED,eAAO,MAAM,MAAM,qCAAwB,CAAA;AAE3C,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAyBxE,CAAA;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,eAAO,MAAM,GAAG,aACJ,WAAW,oBAAoB,GAAG,wBAAwB,KACnE,WAAW,CAAC,WAAW,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAC1B,CAAA;AAEzD,eAAO,MAAM,MAAM,YACR,WAAW,uBAAuB,KAC1C,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CACC,CAAA"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
@@ -23,11 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.memory = exports.dom = exports.getCurrentPathFromUrl = exports.navigation = exports.Router = void 0;
26
+ exports.reload = exports.replace = exports.push = exports.navigate = exports.forward = exports.cancelNavigation = exports.canGoForward = exports.canGoBack = exports.back = exports.memory = exports.dom = exports.getCurrentPathFromUrl = exports.navigation = exports.Router = void 0;
27
27
  const Option = __importStar(require("@effect/data/Option"));
28
28
  const Effect = __importStar(require("@effect/io/Effect"));
29
29
  const Layer = __importStar(require("@effect/io/Layer"));
30
30
  const context_1 = require("@typed/context");
31
+ const Fx = __importStar(require("@typed/fx"));
31
32
  const Navigation = __importStar(require("@typed/navigation"));
32
33
  const route_1 = require("@typed/route");
33
34
  exports.Router = (0, context_1.Tag)('Router');
@@ -39,7 +40,7 @@ exports.navigation = exports.Router.layer(Effect.gen(function* ($) {
39
40
  route,
40
41
  navigation,
41
42
  params: currentPath.filterMap(route.match),
42
- define: (other) => makeRouter(route.concat(other), Option.some(router)),
43
+ define: (other, overrides) => makeRouter(route.concat(other, overrides), Option.some(router)),
43
44
  parent,
44
45
  };
45
46
  return router;
@@ -54,4 +55,19 @@ const dom = (options) => Layer.provideMerge(Navigation.dom(options), exports.nav
54
55
  exports.dom = dom;
55
56
  const memory = (options) => Layer.provideMerge(Navigation.memory(options), exports.navigation);
56
57
  exports.memory = memory;
58
+ const routerNavigation = Layer.effectContext(Effect.map(exports.Router, (router) => Navigation.Navigation.build(router.navigation).context));
59
+ const provideRouterNavigationEffect = Effect.provideSomeLayer(routerNavigation);
60
+ const provideRouterNavigationFx = Fx.provideSomeLayer(routerNavigation);
61
+ exports.back = provideRouterNavigationEffect(Navigation.back);
62
+ exports.canGoBack = Object.assign(provideRouterNavigationEffect(Navigation.canGoBack), provideRouterNavigationFx(Navigation.canGoBack));
63
+ exports.canGoForward = Object.assign(provideRouterNavigationEffect(Navigation.canGoForward), provideRouterNavigationFx(Navigation.canGoForward));
64
+ exports.cancelNavigation = Navigation.cancelNavigation;
65
+ exports.forward = provideRouterNavigationEffect(Navigation.forward);
66
+ const navigate = (url, options) => provideRouterNavigationEffect(Navigation.navigate(url, options));
67
+ exports.navigate = navigate;
68
+ const push = (url, options) => (0, exports.navigate)(url, { ...options, history: 'push' });
69
+ exports.push = push;
70
+ const replace = (url, options) => (0, exports.navigate)(url, { ...options, history: 'replace' });
71
+ exports.replace = replace;
72
+ exports.reload = provideRouterNavigationEffect(Navigation.reload);
57
73
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA6C;AAC7C,0DAA2C;AAC3C,wDAAyC;AACzC,4CAAoC;AAGpC,8DAA+C;AAE/C,wCAAoC;AA8BvB,QAAA,MAAM,GAAG,IAAA,aAAG,EAAS,QAAQ,CAAC,CAAA;AAE9B,QAAA,UAAU,GAAsD,cAAM,CAAC,KAAK,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC9D,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,CACvC,CAAA;IAED,SAAS,UAAU,CACjB,KAAe,EACf,MAAkC;QAElC,MAAM,MAAM,GAAc;YACxB,KAAK;YACL,UAAU;YACV,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,MAAM,EAAE,CAAoB,KAAgB,EAA6B,EAAE,CACzE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM;SACP,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,UAAU,CAAC,IAAA,aAAK,EAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC,CAAC,CACH,CAAA;AAED,SAAgB,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;AAC7C,CAAC;AAFD,sDAEC;AAEM,MAAM,GAAG,GAAG,CACjB,OAAoE,EACe,EAAE,CACrF,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAU,CAAC,CAAA;AAH5C,QAAA,GAAG,OAGyC;AAElD,MAAM,MAAM,GAAG,CACpB,OAA2C,EACgB,EAAE,CAC7D,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAU,CAAC,CAAA;AAH/C,QAAA,MAAM,UAGyC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"matchRoutes.d.ts","sourceRoot":"","sources":["../src/matchRoutes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAyB,MAAM,aAAa,CAAA;AAE3D,wBAAgB,WAAW,CACzB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9C,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EAET,OAAO,EAAE,OAAO,EAChB,UAAU,GAAE,CACV,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAChE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAoB,GACrC,EAAE,CAAC,EAAE,CACN,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACzE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnD,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACnC,CAuFA"}
1
+ {"version":3,"file":"matchRoutes.d.ts","sourceRoot":"","sources":["../src/matchRoutes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAyB,MAAM,aAAa,CAAA;AAE3D,wBAAgB,WAAW,CACzB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9C,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EAET,OAAO,EAAE,OAAO,EAChB,UAAU,GAAE,CACV,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAChE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAoB,GACrC,EAAE,CAAC,EAAE,CACN,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACzE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnD,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACnC,CAyFA"}
@@ -15,6 +15,7 @@ export function matchRoutes(matches, onNotFound = () => Fx.empty()) {
15
15
  const nestedRouter = router.define(match.route);
16
16
  const render = pipe(nestedRouter.params, match.render, Fx.provideService(Router, nestedRouter), Fx.scoped);
17
17
  return [
18
+ // If the route is the a single slash, use the route directly to keep any parsing options.
18
19
  nestedRouter.route,
19
20
  render,
20
21
  match.options?.guard,
@@ -46,7 +47,7 @@ export function matchRoutes(matches, onNotFound = () => Fx.empty()) {
46
47
  });
47
48
  // Match a Route when navigation occurs
48
49
  yield* $(router.navigation.onNavigation((event) => matchPath(getCurrentPathFromUrl(event.destination.url))));
49
- return pipe(matched, isBrowser ? identity : Fx.take(1), Redirect.switchMatch((r) => Fx.as(Fx.fromEffect(router.navigation.navigate(r.url, r.options)), Option.none()), Fx.map(Option.some)), Fx.compact);
50
+ return pipe(matched, isBrowser ? identity : Fx.take(1), Fx.switchLatest, Redirect.switchCatch((redirect) => Fx.fromFxEffect(Effect.map(router.navigation.navigate(redirect.url, redirect.options), () => Fx.never()))));
50
51
  });
51
52
  }
52
53
  //# sourceMappingURL=matchRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchRoutes.js","sourceRoot":"","sources":["../src/matchRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matchRoutes.js","sourceRoot":"","sources":["../src/matchRoutes.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import * as Option from '@effect/data/Option';
2
+ import * as Effect from '@effect/io/Effect';
2
3
  import * as Layer from '@effect/io/Layer';
3
4
  import { Tag } from '@typed/context';
4
5
  import { DomServicesElementParams } from '@typed/dom';
5
- import { Filtered } from '@typed/fx';
6
+ import * as Fx from '@typed/fx';
6
7
  import * as Navigation from '@typed/navigation';
7
8
  import { ParamsOf, PathJoin } from '@typed/path';
8
- import { Route } from '@typed/route';
9
+ import { Route, RouteOptions } from '@typed/route';
9
10
  export interface Router<in out P extends string = string> {
10
11
  /**
11
12
  * The base Route for this Router instance.
@@ -14,12 +15,12 @@ export interface Router<in out P extends string = string> {
14
15
  /**
15
16
  * The current params for the current path.
16
17
  */
17
- readonly params: Filtered<never, never, ParamsOf<P>>;
18
+ readonly params: Fx.Filtered<never, never, ParamsOf<P>>;
18
19
  /**
19
20
  * Construct a new Router instance by defining a new Route which is concatenated
20
21
  * to the current Route.
21
22
  */
22
- readonly define: <P2 extends string>(route: Route<P2>) => Router<PathJoin<[P, P2]>>;
23
+ readonly define: <P2 extends string>(route: Route<P2>, overrides?: RouteOptions) => Router<PathJoin<[P, P2]>>;
23
24
  /**
24
25
  * The parent Router instance if one exists.
25
26
  */
@@ -34,4 +35,13 @@ export declare const navigation: Layer.Layer<Navigation.Navigation, never, Route
34
35
  export declare function getCurrentPathFromUrl(url: URL): string;
35
36
  export declare const dom: (options?: Navigation.DomNavigationOptions & DomServicesElementParams) => Layer.Layer<Navigation.NavigationServices, never, Navigation.Navigation | Router>;
36
37
  export declare const memory: (options: Navigation.MemoryNavigationOptions) => Layer.Layer<never, never, Navigation.Navigation | Router>;
38
+ export declare const back: Effect.Effect<Router, never, Navigation.Destination>;
39
+ export declare const canGoBack: Effect.Effect<Router, never, boolean> & Fx.Fx<Router, never, boolean>;
40
+ export declare const canGoForward: Effect.Effect<Router, never, boolean> & Fx.Fx<Router, never, boolean>;
41
+ export declare const cancelNavigation: Effect.Effect<never, Navigation.CancelNavigation, never>;
42
+ export declare const forward: Effect.Effect<Router<string>, never, Navigation.Destination>;
43
+ export declare const navigate: (url: string, options?: Navigation.NavigateOptions) => Effect.Effect<Router, never, Navigation.Destination>;
44
+ export declare const push: (url: string, options?: Omit<Navigation.NavigateOptions, 'history'>) => Effect.Effect<Router, never, Navigation.Destination>;
45
+ export declare const replace: (url: string, options?: Omit<Navigation.NavigateOptions, 'history'>) => Effect.Effect<Router, never, Navigation.Destination>;
46
+ export declare const reload: Effect.Effect<Router, never, Navigation.Destination>;
37
47
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,MAAM,WAAW,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACtD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAEnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAA;CAC3C;AAED,eAAO,MAAM,MAAM,qCAAwB,CAAA;AAE3C,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAyBxE,CAAA;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,eAAO,MAAM,GAAG,aACJ,WAAW,oBAAoB,GAAG,wBAAwB,KACnE,WAAW,CAAC,WAAW,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAC1B,CAAA;AAEzD,eAAO,MAAM,MAAM,YACR,WAAW,uBAAuB,KAC1C,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CACC,CAAA"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/router.js CHANGED
@@ -2,6 +2,7 @@ import * as Option from '@effect/data/Option';
2
2
  import * as Effect from '@effect/io/Effect';
3
3
  import * as Layer from '@effect/io/Layer';
4
4
  import { Tag } from '@typed/context';
5
+ import * as Fx from '@typed/fx';
5
6
  import * as Navigation from '@typed/navigation';
6
7
  import { Route } from '@typed/route';
7
8
  export const Router = Tag('Router');
@@ -13,7 +14,7 @@ export const navigation = Router.layer(Effect.gen(function* ($) {
13
14
  route,
14
15
  navigation,
15
16
  params: currentPath.filterMap(route.match),
16
- define: (other) => makeRouter(route.concat(other), Option.some(router)),
17
+ define: (other, overrides) => makeRouter(route.concat(other, overrides), Option.some(router)),
17
18
  parent,
18
19
  };
19
20
  return router;
@@ -25,4 +26,16 @@ export function getCurrentPathFromUrl(url) {
25
26
  }
26
27
  export const dom = (options) => Layer.provideMerge(Navigation.dom(options), navigation);
27
28
  export const memory = (options) => Layer.provideMerge(Navigation.memory(options), navigation);
29
+ const routerNavigation = Layer.effectContext(Effect.map(Router, (router) => Navigation.Navigation.build(router.navigation).context));
30
+ const provideRouterNavigationEffect = Effect.provideSomeLayer(routerNavigation);
31
+ const provideRouterNavigationFx = Fx.provideSomeLayer(routerNavigation);
32
+ export const back = provideRouterNavigationEffect(Navigation.back);
33
+ export const canGoBack = Object.assign(provideRouterNavigationEffect(Navigation.canGoBack), provideRouterNavigationFx(Navigation.canGoBack));
34
+ export const canGoForward = Object.assign(provideRouterNavigationEffect(Navigation.canGoForward), provideRouterNavigationFx(Navigation.canGoForward));
35
+ export const cancelNavigation = Navigation.cancelNavigation;
36
+ export const forward = provideRouterNavigationEffect(Navigation.forward);
37
+ export const navigate = (url, options) => provideRouterNavigationEffect(Navigation.navigate(url, options));
38
+ export const push = (url, options) => navigate(url, { ...options, history: 'push' });
39
+ export const replace = (url, options) => navigate(url, { ...options, history: 'replace' });
40
+ export const reload = provideRouterNavigationEffect(Navigation.reload);
28
41
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AA8BpC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAS,QAAQ,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,UAAU,GAAsD,MAAM,CAAC,KAAK,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC9D,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,CACvC,CAAA;IAED,SAAS,UAAU,CACjB,KAAe,EACf,MAAkC;QAElC,MAAM,MAAM,GAAc;YACxB,KAAK;YACL,UAAU;YACV,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,MAAM,EAAE,CAAoB,KAAgB,EAA6B,EAAE,CACzE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM;SACP,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC,CAAC,CACH,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,OAAoE,EACe,EAAE,CACrF,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,OAA2C,EACgB,EAAE,CAC7D,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}