@typed/router 0.0.8 → 0.0.10

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/Link.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Effect from '@effect/io/Effect';
2
2
  import * as Fx from '@typed/fx';
3
- import { Hole, Placeholder } from '@typed/html';
3
+ import { Hole, type Placeholder } from '@typed/html';
4
4
  import { Router } from './router.js';
5
5
  export declare function Link<R = never, E = never, R2 = never>(props: LinkProps<R, E, R2>): Fx.Fx<R | R2 | Router, E, Hole>;
6
6
  export interface LinkProps<R, E, R2> {
@@ -10,5 +10,6 @@ export interface LinkProps<R, E, R2> {
10
10
  readonly onClick?: (event: MouseEvent & {
11
11
  currentTarget: HTMLAnchorElement;
12
12
  }) => Effect.Effect<R2, never, unknown>;
13
+ readonly useBase?: boolean;
13
14
  }
14
15
  //# sourceMappingURL=Link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAsB,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,wBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK,EACnD,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GACzB,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAmBjC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,KAAK,EAAE,UAAU,GAAG;QAAE,aAAa,EAAE,iBAAiB,CAAA;KAAE,KACrD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CACvC"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAsB,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAA;AAEjD,wBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK,EACnD,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GACzB,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAqBjC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,KAAK,EAAE,UAAU,GAAG;QAAE,aAAa,EAAE,iBAAiB,CAAA;KAAE,KACrD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAEtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B"}
package/dist/Link.js CHANGED
@@ -1,19 +1,22 @@
1
1
  import * as Effect from '@effect/io/Effect';
2
2
  import * as Fx from '@typed/fx';
3
- import { EventHandler, html } from '@typed/html';
4
- import { Router } from './router.js';
3
+ import { EventHandler, html, Hole } from '@typed/html';
4
+ import { pathJoin } from '@typed/path';
5
+ import { Router, getBasePath } from './router.js';
5
6
  export function Link(props) {
6
7
  return Fx.gen(function* ($) {
8
+ const useBase = props.useBase ?? true;
9
+ const href = useBase ? pathJoin(yield* $(getBasePath), props.href) : props.href;
7
10
  const router = yield* $(Router.get);
8
11
  const clickHandler = (event) => Effect.gen(function* ($) {
9
- yield* $(router.currentPath.set(props.href));
12
+ yield* $(router.currentPath.set(href));
10
13
  if (props.onClick) {
11
14
  yield* $(props.onClick(event));
12
15
  }
13
16
  });
14
17
  return html `<a
15
18
  class=${props.className}
16
- href="${props.href}"
19
+ href=${href}
17
20
  onclick=${EventHandler.preventDefault(clickHandler)}
18
21
  >${props.label}</a
19
22
  >`;
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;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAqB,MAAM,aAAa,CAAA;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,UAAU,IAAI,CAClB,KAA0B;IAE1B,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,YAAY,GAAG,CAAC,KAAwD,EAAE,EAAE,CAChF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAE5C,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;aAC/B;QACH,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAA;cACD,KAAK,CAAC,SAAS;cACf,KAAK,CAAC,IAAI;gBACR,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC;SAChD,KAAK,CAAC,KAAK;MACd,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../src/Link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAoB,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,UAAU,IAAI,CAClB,KAA0B;IAE1B,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAA;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;QAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,YAAY,GAAG,CAAC,KAAwD,EAAE,EAAE,CAChF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YAEtC,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;aAC/B;QACH,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAA;cACD,KAAK,CAAC,SAAS;aAChB,IAAI;gBACD,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC;SAChD,KAAK,CAAC,KAAK;MACd,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,8 +1,8 @@
1
- import * as Layer from '@effect/io/Layer';
2
- import * as Context from '@typed/context';
1
+ import type * as Layer from '@effect/io/Layer';
2
+ import type * as Context from '@typed/context';
3
3
  import * as Fx from '@typed/fx';
4
- import * as html from '@typed/html';
5
- import * as Path from '@typed/path';
4
+ import type * as html from '@typed/html';
5
+ import type * as Path from '@typed/path';
6
6
  import * as Route from '@typed/route';
7
7
  export interface RouteMatch<R, E, P extends string> {
8
8
  readonly route: Route.Route<R, P>;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteMatch.d.ts","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM;IAChD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAE9C,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAE/F,QAAQ,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzF,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEhG,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,EAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAC7B,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EACxF,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GACtC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CA0BrC"}
1
+ {"version":3,"file":"RouteMatch.d.ts","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM;IAChD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAE9C,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAE/F,QAAQ,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzF,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEhG,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,EAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAC7B,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC5D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EACxF,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GACtC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CA0BrC"}
@@ -1,10 +1,10 @@
1
1
  import * as Effect from '@effect/io/Effect';
2
- import * as Layer from '@effect/io/Layer';
3
- import * as Context from '@typed/context';
2
+ import type * as Layer from '@effect/io/Layer';
3
+ import type * as Context from '@typed/context';
4
4
  import * as Fx from '@typed/fx';
5
- import * as html from '@typed/html';
6
- import * as Path from '@typed/path';
7
- import * as Route from '@typed/route';
5
+ import type * as html from '@typed/html';
6
+ import type * as Path from '@typed/path';
7
+ import type * as Route from '@typed/route';
8
8
  import { RouteMatch } from './RouteMatch.js';
9
9
  import { Redirect, Router } from './router.js';
10
10
  export interface RouteMatcher<R = never, E = never> {
@@ -1 +1 @@
1
- {"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as Option from '@fp-ts/data/Option';
6
6
  import * as Fx from '@typed/fx';
7
7
  import { RenderContext } from '@typed/html';
8
8
  import { RouteMatch } from './RouteMatch.js';
9
- import { redirectTo, Router } from './router.js';
9
+ import { Redirect, redirectTo, Router } from './router.js';
10
10
  export function RouteMatcher(routes) {
11
11
  const matcher = {
12
12
  routes,
@@ -1 +1 @@
1
- {"version":3,"file":"RouteMatcher.js","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteMatcher.js","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as Effect from '@effect/io/Effect';
2
- import * as Layer from '@effect/io/Layer';
3
- import * as Scope from '@effect/io/Scope';
2
+ import type * as Layer from '@effect/io/Layer';
3
+ import type * as Scope from '@effect/io/Scope';
4
+ import * as Option from '@fp-ts/data/Option';
4
5
  import * as Context from '@typed/context';
5
6
  import { Document, Location, History } from '@typed/dom';
6
7
  import * as Fx from '@typed/fx';
7
- import * as html from '@typed/html';
8
+ import type * as html from '@typed/html';
8
9
  import { RenderContext } from '@typed/html';
9
10
  import * as Path from '@typed/path';
10
11
  import * as Route from '@typed/route';
@@ -40,8 +41,12 @@ export interface Router<out R = never, in out P extends string = string> {
40
41
  * Provide all the resources needed for a Router
41
42
  */
42
43
  readonly provideEnvironment: (environment: Context.Context<R>) => Router<never, P>;
44
+ /**
45
+ * The parent router if one exists
46
+ */
47
+ readonly parent: Option.Option<Router<any, string>>;
43
48
  }
44
- export declare const Router: (<R = never, P extends string = string>(route: Route.Route<R, P>, currentPath: Fx.RefSubject<string>) => Router<R, P>) & Context.Tag<Router<never, string>>;
49
+ export declare const Router: (<R = never, P extends string = string>(route: Route.Route<R, P>, currentPath: Fx.RefSubject<string>, parent?: Option.Option<Router<any, string>>) => Router<R, P>) & Context.Tag<Router<never, string>>;
45
50
  export declare const outlet: Fx.Fx<RenderContext | Router, never, html.Renderable>;
46
51
  export declare const currentPath: Fx.Fx<Router, never, string>;
47
52
  export declare function provideEnvironment<R>(environment: Context.Context<R>): <P extends string>(router: Router<R, P>) => Router<never, P>;
@@ -63,5 +68,7 @@ export declare const redirectTo: {
63
68
  };
64
69
  export declare const makeRouter: (currentPath?: Fx.RefSubject<string>) => Effect.Effect<Location | History | Window | Document | Scope.Scope, never, Router>;
65
70
  export declare const live: (currentPath?: Fx.RefSubject<string>) => Layer.Layer<Location | History | Window | Document, never, Router<never, string>>;
66
- export declare function getCurrentPath(location: Location | HTMLAnchorElement | URL): string;
71
+ export declare function getCurrentPathFromLocation(location: Location | HTMLAnchorElement | URL): string;
72
+ export declare const getCurrentPath: Effect.Effect<Router<never, string>, never, string>;
73
+ export declare const getBasePath: Effect.Effect<Router<never, string>, never, string>;
67
74
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/router.js CHANGED
@@ -6,8 +6,9 @@ import * as Context from '@typed/context';
6
6
  import { Document, Location, History, addWindowListener } from '@typed/dom';
7
7
  import * as Fx from '@typed/fx';
8
8
  import { RenderContext } from '@typed/html';
9
+ import * as Path from '@typed/path';
9
10
  import * as Route from '@typed/route';
10
- export const Router = Object.assign(function makeRouter(route, currentPath) {
11
+ export const Router = Object.assign(function makeRouter(route, currentPath, parent = Option.none) {
11
12
  const outlet = Fx.RefSubject.unsafeMake(() => null);
12
13
  const createPath = (other, ...[params]) => Effect.gen(function* ($) {
13
14
  const path = yield* $(currentPath.get);
@@ -26,8 +27,9 @@ export const Router = Object.assign(function makeRouter(route, currentPath) {
26
27
  params: pipe(currentPath, Fx.switchMapEffect(route.match), Fx.compact, Fx.skipRepeats),
27
28
  outlet,
28
29
  createPath: createPath,
29
- define: (other) => makeRouter(route.concat(other), currentPath),
30
+ define: (other) => makeRouter(route.concat(other), currentPath, Option.some(router)),
30
31
  provideEnvironment: (env) => provideEnvironment(env)(router),
32
+ parent,
31
33
  };
32
34
  return router;
33
35
  }, Context.Tag());
@@ -63,7 +65,7 @@ export const makeRouter = (currentPath) => Effect.gen(function* ($) {
63
65
  const history = yield* $(History.get);
64
66
  const location = yield* $(Location.get);
65
67
  if (!currentPath) {
66
- currentPath = Fx.RefSubject.unsafeMake(() => getCurrentPath(location));
68
+ currentPath = Fx.RefSubject.unsafeMake(() => getCurrentPathFromLocation(location));
67
69
  }
68
70
  // Patch history events to emit an event when the path changes
69
71
  const historyEvents = yield* $(patchHistory);
@@ -73,24 +75,34 @@ export const makeRouter = (currentPath) => Effect.gen(function* ($) {
73
75
  // - history events
74
76
  yield* $(pipe(Fx.mergeAll(addWindowListener('popstate'), addWindowListener('hashchange'), historyEvents),
75
77
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
76
- Fx.switchMapEffect(() => currentPath.set(getCurrentPath(location))), Fx.forkScoped));
78
+ Fx.switchMapEffect(() => currentPath.set(getCurrentPathFromLocation(location))), Fx.forkScoped));
77
79
  // Listen to path changes and update the current history location, if necessary
78
80
  yield* $(pipe(currentPath, Fx.skipRepeats, Fx.observe((path) => Effect.sync(() => {
79
- if (path !== getCurrentPath(location)) {
81
+ if (path !== getCurrentPathFromLocation(location)) {
80
82
  history.pushState({}, '', path);
81
83
  }
82
84
  })), Effect.forkScoped));
83
85
  // Find the configured base path
84
86
  const document = yield* $(Document.get);
85
87
  const base = document.querySelector('base');
86
- const baseHref = base ? getBasePath(base.href) : '/';
88
+ const baseHref = base ? getBasePathFromHref(base.href) : '/';
87
89
  // Make our base router
88
90
  return Router(Route.Route(baseHref), currentPath);
89
91
  });
90
92
  export const live = (currentPath) => Router.layerSoped(makeRouter(currentPath));
91
- export function getCurrentPath(location) {
93
+ export function getCurrentPathFromLocation(location) {
92
94
  return location.pathname + location.search + location.hash;
93
95
  }
96
+ export const getCurrentPath = Router.withEffect((r) => r.currentPath.get);
97
+ export const getBasePath = Router.with((r) => {
98
+ const routers = [r];
99
+ let current = r;
100
+ while (Option.isSome(current.parent)) {
101
+ current = current.parent.value;
102
+ routers.push(current);
103
+ }
104
+ return routers.reduceRight((acc, r) => Path.pathJoin(r.route.path, acc), '');
105
+ });
94
106
  const patchHistory = Effect.gen(function* ($) {
95
107
  const history = yield* $(History.get);
96
108
  const historyEvents = Fx.Subject.unsafeMake();
@@ -135,10 +147,10 @@ function patchHistory_(history, sendEvent) {
135
147
  history.forward = forward;
136
148
  };
137
149
  }
138
- function getBasePath(href) {
150
+ function getBasePathFromHref(href) {
139
151
  try {
140
152
  const url = new URL(href);
141
- return getCurrentPath(url);
153
+ return getCurrentPathFromLocation(url);
142
154
  }
143
155
  catch {
144
156
  return href;
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed/router",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -23,14 +23,14 @@
23
23
  "dependencies": {
24
24
  "@effect/io": "~0.0.61",
25
25
  "@fp-ts/data": "~0.0.36",
26
- "@typed/context": "0.0.7",
27
- "@typed/dom": "8.0.7",
28
- "@typed/fx": "1.0.6",
29
- "@typed/html": "3.0.7",
26
+ "@typed/context": "0.0.8",
27
+ "@typed/dom": "8.0.8",
28
+ "@typed/fx": "1.0.7",
29
+ "@typed/html": "3.0.8",
30
30
  "@typed/path": "0.0.6",
31
- "@typed/route": "0.0.6"
31
+ "@typed/route": "0.0.7"
32
32
  },
33
- "gitHead": "152506255b5531d3d0034f9f269c0580cec5eaad",
33
+ "gitHead": "3ae3d0caee56c34fe92cd31ce4092765769ef519",
34
34
  "publishConfig": {
35
35
  "access": "public"
36
36
  },
package/src/Link.ts CHANGED
@@ -1,17 +1,20 @@
1
1
  import * as Effect from '@effect/io/Effect'
2
2
  import * as Fx from '@typed/fx'
3
- import { EventHandler, html, Hole, Placeholder } from '@typed/html'
3
+ import { EventHandler, html, Hole, type Placeholder } from '@typed/html'
4
+ import { pathJoin } from '@typed/path'
4
5
 
5
- import { Router } from './router.js'
6
+ import { Router, getBasePath } from './router.js'
6
7
 
7
8
  export function Link<R = never, E = never, R2 = never>(
8
9
  props: LinkProps<R, E, R2>,
9
10
  ): Fx.Fx<R | R2 | Router, E, Hole> {
10
11
  return Fx.gen(function* ($) {
12
+ const useBase = props.useBase ?? true
13
+ const href = useBase ? pathJoin(yield* $(getBasePath), props.href) : props.href
11
14
  const router = yield* $(Router.get)
12
15
  const clickHandler = (event: MouseEvent & { currentTarget: HTMLAnchorElement }) =>
13
16
  Effect.gen(function* ($) {
14
- yield* $(router.currentPath.set(props.href))
17
+ yield* $(router.currentPath.set(href))
15
18
 
16
19
  if (props.onClick) {
17
20
  yield* $(props.onClick(event))
@@ -20,7 +23,7 @@ export function Link<R = never, E = never, R2 = never>(
20
23
 
21
24
  return html`<a
22
25
  class=${props.className}
23
- href="${props.href}"
26
+ href=${href}
24
27
  onclick=${EventHandler.preventDefault(clickHandler)}
25
28
  >${props.label}</a
26
29
  >`
@@ -34,4 +37,6 @@ export interface LinkProps<R, E, R2> {
34
37
  readonly onClick?: (
35
38
  event: MouseEvent & { currentTarget: HTMLAnchorElement },
36
39
  ) => Effect.Effect<R2, never, unknown>
40
+
41
+ readonly useBase?: boolean
37
42
  }
package/src/RouteMatch.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
- import * as Layer from '@effect/io/Layer'
2
+ import type * as Layer from '@effect/io/Layer'
3
3
  import { flow } from '@fp-ts/data/Function'
4
- import * as Context from '@typed/context'
4
+ import type * as Context from '@typed/context'
5
5
  import * as Fx from '@typed/fx'
6
- import * as html from '@typed/html'
7
- import * as Path from '@typed/path'
6
+ import type * as html from '@typed/html'
7
+ import type * as Path from '@typed/path'
8
8
  import * as Route from '@typed/route'
9
9
 
10
10
  export interface RouteMatch<R, E, P extends string> {
@@ -1,15 +1,15 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
  import * as Effect from '@effect/io/Effect'
3
3
  import * as Fiber from '@effect/io/Fiber'
4
- import * as Layer from '@effect/io/Layer'
4
+ import type * as Layer from '@effect/io/Layer'
5
5
  import { pipe } from '@fp-ts/data/Function'
6
6
  import * as Option from '@fp-ts/data/Option'
7
- import * as Context from '@typed/context'
7
+ import type * as Context from '@typed/context'
8
8
  import * as Fx from '@typed/fx'
9
- import * as html from '@typed/html'
9
+ import type * as html from '@typed/html'
10
10
  import { RenderContext } from '@typed/html'
11
- import * as Path from '@typed/path'
12
- import * as Route from '@typed/route'
11
+ import type * as Path from '@typed/path'
12
+ import type * as Route from '@typed/route'
13
13
 
14
14
  import { RouteMatch } from './RouteMatch.js'
15
15
  import { Redirect, redirectTo, Router } from './router.js'
package/src/router.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
  import * as Effect from '@effect/io/Effect'
3
- import * as Layer from '@effect/io/Layer'
4
- import * as Scope from '@effect/io/Scope'
3
+ import type * as Layer from '@effect/io/Layer'
4
+ import type * as Scope from '@effect/io/Scope'
5
5
  import { pipe } from '@fp-ts/data/Function'
6
6
  import * as Option from '@fp-ts/data/Option'
7
7
  import * as Context from '@typed/context'
8
8
  import { Document, Location, History, addWindowListener } from '@typed/dom'
9
9
  import * as Fx from '@typed/fx'
10
- import * as html from '@typed/html'
10
+ import type * as html from '@typed/html'
11
11
  import { RenderContext } from '@typed/html'
12
12
  import * as Path from '@typed/path'
13
13
  import * as Route from '@typed/route'
@@ -58,11 +58,17 @@ export interface Router<out R = never, in out P extends string = string> {
58
58
  * Provide all the resources needed for a Router
59
59
  */
60
60
  readonly provideEnvironment: (environment: Context.Context<R>) => Router<never, P>
61
+
62
+ /**
63
+ * The parent router if one exists
64
+ */
65
+ readonly parent: Option.Option<Router<any, string>>
61
66
  }
62
67
 
63
68
  export const Router = Object.assign(function makeRouter<R = never, P extends string = string>(
64
69
  route: Route.Route<R, P>,
65
70
  currentPath: Fx.RefSubject<string>,
71
+ parent: Option.Option<Router<any, string>> = Option.none,
66
72
  ): Router<R, P> {
67
73
  const outlet = Fx.RefSubject.unsafeMake((): html.Renderable => null)
68
74
 
@@ -101,8 +107,9 @@ export const Router = Object.assign(function makeRouter<R = never, P extends str
101
107
  outlet,
102
108
  createPath: createPath as Router<R, P>['createPath'],
103
109
  define: <R2, Path2 extends string>(other: Route.Route<R2, Path2>) =>
104
- makeRouter(route.concat(other), currentPath),
110
+ makeRouter(route.concat(other), currentPath, Option.some(router as any)),
105
111
  provideEnvironment: (env) => provideEnvironment(env)(router),
112
+ parent,
106
113
  }
107
114
 
108
115
  return router
@@ -189,7 +196,7 @@ export const makeRouter = (
189
196
  const location = yield* $(Location.get)
190
197
 
191
198
  if (!currentPath) {
192
- currentPath = Fx.RefSubject.unsafeMake(() => getCurrentPath(location))
199
+ currentPath = Fx.RefSubject.unsafeMake(() => getCurrentPathFromLocation(location))
193
200
  }
194
201
 
195
202
  // Patch history events to emit an event when the path changes
@@ -203,7 +210,7 @@ export const makeRouter = (
203
210
  pipe(
204
211
  Fx.mergeAll(addWindowListener('popstate'), addWindowListener('hashchange'), historyEvents),
205
212
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
- Fx.switchMapEffect(() => currentPath!.set(getCurrentPath(location))),
213
+ Fx.switchMapEffect(() => currentPath!.set(getCurrentPathFromLocation(location))),
207
214
  Fx.forkScoped,
208
215
  ),
209
216
  )
@@ -215,7 +222,7 @@ export const makeRouter = (
215
222
  Fx.skipRepeats,
216
223
  Fx.observe((path) =>
217
224
  Effect.sync(() => {
218
- if (path !== getCurrentPath(location)) {
225
+ if (path !== getCurrentPathFromLocation(location)) {
219
226
  history.pushState({}, '', path)
220
227
  }
221
228
  }),
@@ -227,7 +234,7 @@ export const makeRouter = (
227
234
  // Find the configured base path
228
235
  const document = yield* $(Document.get)
229
236
  const base = document.querySelector('base')
230
- const baseHref = base ? getBasePath(base.href) : '/'
237
+ const baseHref = base ? getBasePathFromHref(base.href) : '/'
231
238
 
232
239
  // Make our base router
233
240
  return Router(Route.Route(baseHref), currentPath) as Router
@@ -238,10 +245,24 @@ export const live = (
238
245
  ): Layer.Layer<Location | History | Window | Document, never, Router<never, string>> =>
239
246
  Router.layerSoped(makeRouter(currentPath))
240
247
 
241
- export function getCurrentPath(location: Location | HTMLAnchorElement | URL) {
248
+ export function getCurrentPathFromLocation(location: Location | HTMLAnchorElement | URL) {
242
249
  return location.pathname + location.search + location.hash
243
250
  }
244
251
 
252
+ export const getCurrentPath = Router.withEffect((r) => r.currentPath.get)
253
+
254
+ export const getBasePath = Router.with((r) => {
255
+ const routers: Router<any, any>[] = [r]
256
+ let current: Router<any, any> = r
257
+
258
+ while (Option.isSome(current.parent)) {
259
+ current = current.parent.value
260
+ routers.push(current)
261
+ }
262
+
263
+ return routers.reduceRight((acc, r) => Path.pathJoin(r.route.path, acc), '')
264
+ })
265
+
245
266
  const patchHistory = Effect.gen(function* ($) {
246
267
  const history = yield* $(History.get)
247
268
  const historyEvents = Fx.Subject.unsafeMake<never, void>()
@@ -296,11 +317,11 @@ function patchHistory_(history: History, sendEvent: () => void) {
296
317
  }
297
318
  }
298
319
 
299
- function getBasePath(href: string) {
320
+ function getBasePathFromHref(href: string) {
300
321
  try {
301
322
  const url = new URL(href)
302
323
 
303
- return getCurrentPath(url)
324
+ return getCurrentPathFromLocation(url)
304
325
  } catch {
305
326
  return href
306
327
  }