@typed/router 0.0.17 → 0.0.18
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/RouteMatch.d.ts +2 -2
- package/dist/RouteMatch.d.ts.map +1 -1
- package/dist/RouteMatch.js.map +1 -1
- package/dist/RouteMatcher.d.ts +6 -6
- package/dist/RouteMatcher.d.ts.map +1 -1
- package/dist/router.d.ts +16 -16
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js.map +1 -1
- package/package.json +8 -8
- package/src/RouteMatch.ts +5 -5
- package/src/RouteMatcher.ts +12 -12
- package/src/router.ts +31 -27
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/RouteMatch.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ import type * as html from '@typed/html';
|
|
|
5
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
|
-
readonly route: Route.Route<R, P>;
|
|
8
|
+
readonly route: Route.Route<R, E, P>;
|
|
9
9
|
readonly layout?: Fx.Fx<R, E, html.Renderable>;
|
|
10
10
|
readonly match: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R, E, html.Renderable>;
|
|
11
11
|
readonly provideContext: (environment: Context.Context<R>) => RouteMatch<never, E, P>;
|
|
12
12
|
readonly provideService: <S>(tag: Context.Tag<S>, service: S) => RouteMatch<Exclude<R, S>, E, P>;
|
|
13
13
|
readonly provideSomeLayer: <R2, S>(layer: Layer.Layer<R2, never, S>) => RouteMatch<R2 | Exclude<R, S>, E, P>;
|
|
14
14
|
}
|
|
15
|
-
export declare function RouteMatch<R, P extends string, R2, E2, R3, E3>(route: Route.Route<R, P>, match: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R2, E2, html.Renderable>, layout?: Fx.Fx<R3, E3, html.Renderable>): RouteMatch<R | R2 | R3, E2 | E3, P>;
|
|
15
|
+
export declare function RouteMatch<R, E, P extends string, R2, E2, R3, E3>(route: Route.Route<R, E, P>, match: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R2, E2, html.Renderable>, layout?: Fx.Fx<R3, E3, html.Renderable>): RouteMatch<R | R2 | R3, E | E2 | E3, P>;
|
|
16
16
|
//# sourceMappingURL=RouteMatch.d.ts.map
|
package/dist/RouteMatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,OAAO,MAAM,gBAAgB,CAAA;AACzC,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;
|
|
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,OAAO,MAAM,gBAAgB,CAAA;AACzC,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,EAAE,CAAC,CAAC,CAAA;IAEpC,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,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAErF,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,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAC/B,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,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC/D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CA0BzC"}
|
package/dist/RouteMatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMatch.js","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAG/B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAkBrC,MAAM,UAAU,UAAU,CACxB,
|
|
1
|
+
{"version":3,"file":"RouteMatch.js","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAG/B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAkBrC,MAAM,UAAU,UAAU,CACxB,KAA2B,EAC3B,KAAwF,EACxF,MAAuC;IAEvC,MAAM,UAAU,GAA4C;QAC1D,KAAK;QACL,KAAK;QACL,MAAM;QACN,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CACtB,UAAU,CACR,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAChC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACpD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACpD;QACH,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAC/B,UAAU,CACR,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,EACzC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAC7D;QACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1B,UAAU,CACR,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACpC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACxD;KACJ,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
package/dist/RouteMatcher.d.ts
CHANGED
|
@@ -8,17 +8,17 @@ 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> {
|
|
11
|
-
readonly routes: ReadonlyMap<Route.Route<any, any>, RouteMatch<any, any, any>>;
|
|
12
|
-
readonly match: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Path.ParamsOf<P>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R | R2, E | E3>;
|
|
13
|
-
readonly matchFx: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R | R2, E | E3>;
|
|
14
|
-
readonly matchEffect: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Path.ParamsOf<P>) => Effect.Effect<R3, E3, html.Renderable>) => RouteMatcher<R | R2, E | E3>;
|
|
11
|
+
readonly routes: ReadonlyMap<Route.Route<any, any, any>, RouteMatch<any, any, any>>;
|
|
12
|
+
readonly match: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Path.ParamsOf<P>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R | R2 | R3, E | E2 | E3>;
|
|
13
|
+
readonly matchFx: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R | R2 | R3, E | E2 | E3>;
|
|
14
|
+
readonly matchEffect: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Path.ParamsOf<P>) => Effect.Effect<R3, E3, html.Renderable>) => RouteMatcher<R | R2 | R3, E | E2 | E3>;
|
|
15
15
|
readonly withLayout: <R2, E2>(fx: Fx.Fx<R2, E2, html.Renderable>) => RouteMatcher<R | R2, E | E2>;
|
|
16
16
|
readonly provideContext: <R2>(environment: Context.Context<R2>) => RouteMatcher<Exclude<R, R2>, E>;
|
|
17
17
|
readonly provideService: <R2>(tag: Context.Tag<R2>, service: R2) => RouteMatcher<Exclude<R, R2>, E>;
|
|
18
18
|
readonly provideSomeLayer: <R2, S>(layer: Layer.Layer<R2, never, S>) => RouteMatcher<Exclude<R, S> | R2, E>;
|
|
19
19
|
readonly notFound: <R2, E2, R3 = never, E3 = never>(f: (path: string) => Fx.Fx<R2, E2, html.Renderable>, options?: FallbackOptions<R3, E3>) => Fx.Fx<Router | R | R2 | R3, E | E2 | E3, html.Renderable>;
|
|
20
20
|
readonly notFoundEffect: <R2, E2, R3 = never, E3 = never>(f: (path: string) => Effect.Effect<R2, E2, html.Renderable>, options?: FallbackOptions<R3, E3>) => Fx.Fx<Router | R | R2 | R3, E | E2 | E3, html.Renderable>;
|
|
21
|
-
readonly redirectTo: <R2, P extends string>(route: Route.Route<R2, P>, ...params: [keyof Path.ParamsOf<P>] extends [never] ? [
|
|
21
|
+
readonly redirectTo: <R2, E2, P extends string>(route: Route.Route<R2, E2, P>, ...params: [keyof Path.ParamsOf<P>] extends [never] ? [
|
|
22
22
|
{}?
|
|
23
23
|
] : [(path: string) => Path.ParamsOf<P>]) => Fx.Fx<Router | R | R2, E | Redirect, html.Renderable>;
|
|
24
24
|
readonly run: Fx.Fx<Router | R, E | Redirect, html.Renderable | null>;
|
|
@@ -31,5 +31,5 @@ export declare namespace RouteMatcher {
|
|
|
31
31
|
const empty: RouteMatcher<never, never>;
|
|
32
32
|
const concat: <R, E, R2, E2>(matcher: RouteMatcher<R, E>, matcher2: RouteMatcher<R2, E2>) => RouteMatcher<R | R2, E | E2>;
|
|
33
33
|
}
|
|
34
|
-
export declare const matchFx: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Fx.Fx<never, never, Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R2, E3>, match: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R2, E3>, matchEffect: <R2, P extends string, R3, E3>(route: Route.Route<R2, P>, f: (params: Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never) => Effect.Effect<R3, E3, html.Renderable>) => RouteMatcher<R2, E3>;
|
|
34
|
+
export declare const matchFx: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Fx.Fx<never, never, Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never>) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R2 | R3, E2 | E3>, match: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never) => Fx.Fx<R3, E3, html.Renderable>) => RouteMatcher<R2 | R3, E2 | E3>, matchEffect: <R2, E2, P extends string, R3, E3>(route: Route.Route<R2, E2, P>, f: (params: Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never) => Effect.Effect<R3, E3, html.Renderable>) => RouteMatcher<R2 | R3, E2 | E3>;
|
|
35
35
|
//# sourceMappingURL=RouteMatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAG9C,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAc,MAAM,EAAE,MAAM,aAAa,CAAA;AAE1D,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK;IAEhD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/router.d.ts
CHANGED
|
@@ -9,11 +9,11 @@ import type * as html from '@typed/html';
|
|
|
9
9
|
import { RenderContext } from '@typed/html';
|
|
10
10
|
import * as Path from '@typed/path';
|
|
11
11
|
import * as Route from '@typed/route';
|
|
12
|
-
export interface Router<out R = never, in out P extends string = string> {
|
|
12
|
+
export interface Router<out R = never, out E = never, in out P extends string = string> {
|
|
13
13
|
/**
|
|
14
14
|
* The base route the Router is starting from.
|
|
15
15
|
*/
|
|
16
|
-
readonly route: Route.Route<R, P>;
|
|
16
|
+
readonly route: Route.Route<R, E, P>;
|
|
17
17
|
/**
|
|
18
18
|
* The current path of the application
|
|
19
19
|
*/
|
|
@@ -21,7 +21,7 @@ export interface Router<out R = never, in out P extends string = string> {
|
|
|
21
21
|
/**
|
|
22
22
|
* The current matched params of the router
|
|
23
23
|
*/
|
|
24
|
-
readonly params: Fx.Fx<R,
|
|
24
|
+
readonly params: Fx.Fx<R, E, Path.ParamsOf<P>>;
|
|
25
25
|
/**
|
|
26
26
|
* The current outlet of this Router
|
|
27
27
|
*/
|
|
@@ -29,27 +29,27 @@ export interface Router<out R = never, in out P extends string = string> {
|
|
|
29
29
|
/**
|
|
30
30
|
* Helper for constructing a path from a route relative to the router.
|
|
31
31
|
*/
|
|
32
|
-
readonly createPath: <R2 extends Route.Route<any, string>, P extends Route.ParamsOf<R2>>(route: R2, ...[params]: [keyof P] extends [never] ? [] : [P]) => Effect.Effect<R, never, Path.PathJoin<[
|
|
32
|
+
readonly createPath: <R2 extends Route.Route<any, any, string>, P extends Route.ParamsOf<R2>>(route: R2, ...[params]: [keyof P] extends [never] ? [] : [P]) => Effect.Effect<R, never, Path.PathJoin<[
|
|
33
33
|
Path.Interpolate<Route.PathOf<R>, Route.ParamsOf<R>>,
|
|
34
34
|
Path.Interpolate<Route.PathOf<R2>, P>
|
|
35
35
|
]>>;
|
|
36
36
|
/**
|
|
37
37
|
* Helper for constructing a nested router
|
|
38
38
|
*/
|
|
39
|
-
readonly define: <R2, Path2 extends string>(route: Route.Route<R2, Path2>) => Router<R | R2, Path.PathJoin<[P, Path2]>>;
|
|
40
|
-
/**
|
|
41
|
-
* Provide all the resources needed for a Router
|
|
42
|
-
*/
|
|
43
|
-
readonly provideContext: (environment: Context.Context<R>) => Router<never, P>;
|
|
39
|
+
readonly define: <R2, E2, Path2 extends string>(route: Route.Route<R2, E2, Path2>) => Router<R | R2, E | E2, Path.PathJoin<[P, Path2]>>;
|
|
44
40
|
/**
|
|
45
41
|
* The parent router if one exists
|
|
46
42
|
*/
|
|
47
43
|
readonly parent: Option.Option<Router<any, string>>;
|
|
44
|
+
/**
|
|
45
|
+
* Provide all the resources needed for a Router
|
|
46
|
+
*/
|
|
47
|
+
readonly provideContext: (environment: Context.Context<R>) => Router<never, E, P>;
|
|
48
48
|
}
|
|
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>>;
|
|
49
|
+
export declare const Router: (<R = never, E = never, P extends string = string>(route: Route.Route<R, E, P>, currentPath: Fx.RefSubject<string>, parent?: Option.Option<Router<any, any, string>>) => Router<R, E, P>) & Context.Tag<Router<never, never, string>>;
|
|
50
50
|
export declare const outlet: Fx.Fx<RenderContext | Router, never, html.Renderable>;
|
|
51
51
|
export declare const currentPath: Fx.Fx<Router, never, string>;
|
|
52
|
-
export declare function provideContext<R>(environment: Context.Context<R>): <P extends string>(router: Router<R, P>) => Router<never, P>;
|
|
52
|
+
export declare function provideContext<R>(environment: Context.Context<R>): <E, P extends string>(router: Router<R, E, P>) => Router<never, E, P>;
|
|
53
53
|
export interface Redirect {
|
|
54
54
|
readonly _tag: 'Redirect';
|
|
55
55
|
readonly path: string;
|
|
@@ -63,12 +63,12 @@ export declare namespace redirect {
|
|
|
63
63
|
var fx: (path: string) => Fx.Fx<never, Redirect, never>;
|
|
64
64
|
}
|
|
65
65
|
export declare const redirectTo: {
|
|
66
|
-
<R, P extends string>(route: Route.Route<R, P>, ...[params]: [keyof Path.PartsToParams<Path.PathToParts<P>, {}>] extends [never] ? [({} | undefined)?] : [Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never]): Effect.Effect<Router, Redirect, never>;
|
|
67
|
-
fx<R_1, P_1 extends string>(route: Route.Route<R_1, P_1>, ...params: [keyof Path.PartsToParams<Path.PathToParts<P_1>, {}>] extends [never] ? [({} | undefined)?] : [(path: string) => Path.PartsToParams<Path.PathToParts<P_1>, {}> extends infer T_1 ? { readonly [K_1 in keyof T_1]: Path.PartsToParams<Path.PathToParts<P_1>, {}>[K_1]; } : never]): Fx.Fx<Router, Redirect, never>;
|
|
66
|
+
<R, E, P extends string>(route: Route.Route<R, E, P>, ...[params]: [keyof Path.PartsToParams<Path.PathToParts<P>, {}>] extends [never] ? [({} | undefined)?] : [Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never]): Effect.Effect<Router, Redirect, never>;
|
|
67
|
+
fx<R_1, E_1, P_1 extends string>(route: Route.Route<R_1, E_1, P_1>, ...params: [keyof Path.PartsToParams<Path.PathToParts<P_1>, {}>] extends [never] ? [({} | undefined)?] : [(path: string) => Path.PartsToParams<Path.PathToParts<P_1>, {}> extends infer T_1 ? { readonly [K_1 in keyof T_1]: Path.PartsToParams<Path.PathToParts<P_1>, {}>[K_1]; } : never]): Fx.Fx<Router, Redirect, never>;
|
|
68
68
|
};
|
|
69
69
|
export declare const makeRouter: (currentPath?: Fx.RefSubject<string>) => Effect.Effect<Location | History | Window | Document | Scope.Scope, never, Router>;
|
|
70
|
-
export declare const live: (currentPath?: Fx.RefSubject<string>) => Layer.Layer<Location | History | Window | Document, never, Router<never, string>>;
|
|
70
|
+
export declare const live: (currentPath?: Fx.RefSubject<string>) => Layer.Layer<Location | History | Window | Document, never, Router<never, never, string>>;
|
|
71
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>;
|
|
72
|
+
export declare const getCurrentPath: Effect.Effect<Router<never, never, string>, never, string>;
|
|
73
|
+
export declare const getBasePath: Effect.Effect<Router<never, never, string>, never, string>;
|
|
74
74
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,WAAW,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAuDrC,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,UAAU,
|
|
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.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@effect/io": "^0.1.
|
|
24
|
+
"@effect/io": "^0.1.9",
|
|
25
25
|
"@fp-ts/core": "^0.1.1",
|
|
26
|
-
"@typed/context": "0.0.
|
|
27
|
-
"@typed/dom": "8.0.
|
|
28
|
-
"@typed/fx": "1.0.
|
|
29
|
-
"@typed/html": "3.0.
|
|
26
|
+
"@typed/context": "0.0.15",
|
|
27
|
+
"@typed/dom": "8.0.15",
|
|
28
|
+
"@typed/fx": "1.0.14",
|
|
29
|
+
"@typed/html": "3.0.15",
|
|
30
30
|
"@typed/path": "0.0.7",
|
|
31
|
-
"@typed/route": "0.0.
|
|
31
|
+
"@typed/route": "0.0.13"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "351f1357e265925936a4c1984e8bb9b7d205ba4d",
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
package/src/RouteMatch.ts
CHANGED
|
@@ -8,7 +8,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> {
|
|
11
|
-
readonly route: Route.Route<R, P>
|
|
11
|
+
readonly route: Route.Route<R, E, P>
|
|
12
12
|
|
|
13
13
|
readonly layout?: Fx.Fx<R, E, html.Renderable>
|
|
14
14
|
|
|
@@ -23,12 +23,12 @@ export interface RouteMatch<R, E, P extends string> {
|
|
|
23
23
|
) => RouteMatch<R2 | Exclude<R, S>, E, P>
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export function RouteMatch<R, P extends string, R2, E2, R3, E3>(
|
|
27
|
-
route: Route.Route<R, P>,
|
|
26
|
+
export function RouteMatch<R, E, P extends string, R2, E2, R3, E3>(
|
|
27
|
+
route: Route.Route<R, E, P>,
|
|
28
28
|
match: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R2, E2, html.Renderable>,
|
|
29
29
|
layout?: Fx.Fx<R3, E3, html.Renderable>,
|
|
30
|
-
): RouteMatch<R | R2 | R3, E2 | E3, P> {
|
|
31
|
-
const routeMatch: RouteMatch<R | R2 | R3, E2 | E3, P> = {
|
|
30
|
+
): RouteMatch<R | R2 | R3, E | E2 | E3, P> {
|
|
31
|
+
const routeMatch: RouteMatch<R | R2 | R3, E | E2 | E3, P> = {
|
|
32
32
|
route,
|
|
33
33
|
match,
|
|
34
34
|
layout,
|
package/src/RouteMatcher.ts
CHANGED
|
@@ -17,24 +17,24 @@ import { Redirect, redirectTo, Router } from './router.js'
|
|
|
17
17
|
|
|
18
18
|
export interface RouteMatcher<R = never, E = never> {
|
|
19
19
|
// Where things are actually stored immutably
|
|
20
|
-
readonly routes: ReadonlyMap<Route.Route<any, any>, RouteMatch<any, any, any>>
|
|
20
|
+
readonly routes: ReadonlyMap<Route.Route<any, any, any>, RouteMatch<any, any, any>>
|
|
21
21
|
|
|
22
22
|
// Add Routes
|
|
23
23
|
|
|
24
|
-
readonly match: <R2, P extends string, R3, E3>(
|
|
25
|
-
route: Route.Route<R2, P>,
|
|
24
|
+
readonly match: <R2, E2, P extends string, R3, E3>(
|
|
25
|
+
route: Route.Route<R2, E2, P>,
|
|
26
26
|
f: (params: Path.ParamsOf<P>) => Fx.Fx<R3, E3, html.Renderable>,
|
|
27
|
-
) => RouteMatcher<R | R2, E | E3>
|
|
27
|
+
) => RouteMatcher<R | R2 | R3, E | E2 | E3>
|
|
28
28
|
|
|
29
|
-
readonly matchFx: <R2, P extends string, R3, E3>(
|
|
30
|
-
route: Route.Route<R2, P>,
|
|
29
|
+
readonly matchFx: <R2, E2, P extends string, R3, E3>(
|
|
30
|
+
route: Route.Route<R2, E2, P>,
|
|
31
31
|
f: (params: Fx.Fx<never, never, Path.ParamsOf<P>>) => Fx.Fx<R3, E3, html.Renderable>,
|
|
32
|
-
) => RouteMatcher<R | R2, E | E3>
|
|
32
|
+
) => RouteMatcher<R | R2 | R3, E | E2 | E3>
|
|
33
33
|
|
|
34
|
-
readonly matchEffect: <R2, P extends string, R3, E3>(
|
|
35
|
-
route: Route.Route<R2, P>,
|
|
34
|
+
readonly matchEffect: <R2, E2, P extends string, R3, E3>(
|
|
35
|
+
route: Route.Route<R2, E2, P>,
|
|
36
36
|
f: (params: Path.ParamsOf<P>) => Effect.Effect<R3, E3, html.Renderable>,
|
|
37
|
-
) => RouteMatcher<R | R2, E | E3>
|
|
37
|
+
) => RouteMatcher<R | R2 | R3, E | E2 | E3>
|
|
38
38
|
|
|
39
39
|
// Add Layout
|
|
40
40
|
|
|
@@ -66,8 +66,8 @@ export interface RouteMatcher<R = never, E = never> {
|
|
|
66
66
|
options?: FallbackOptions<R3, E3>,
|
|
67
67
|
) => Fx.Fx<Router | R | R2 | R3, E | E2 | E3, html.Renderable>
|
|
68
68
|
|
|
69
|
-
readonly redirectTo: <R2, P extends string>(
|
|
70
|
-
route: Route.Route<R2, P>,
|
|
69
|
+
readonly redirectTo: <R2, E2, P extends string>(
|
|
70
|
+
route: Route.Route<R2, E2, P>,
|
|
71
71
|
...params: [keyof Path.ParamsOf<P>] extends [never]
|
|
72
72
|
? // eslint-disable-next-line @typescript-eslint/ban-types
|
|
73
73
|
[{}?]
|
package/src/router.ts
CHANGED
|
@@ -12,11 +12,11 @@ import { RenderContext } from '@typed/html'
|
|
|
12
12
|
import * as Path from '@typed/path'
|
|
13
13
|
import * as Route from '@typed/route'
|
|
14
14
|
|
|
15
|
-
export interface Router<out R = never, in out P extends string = string> {
|
|
15
|
+
export interface Router<out R = never, out E = never, in out P extends string = string> {
|
|
16
16
|
/**
|
|
17
17
|
* The base route the Router is starting from.
|
|
18
18
|
*/
|
|
19
|
-
readonly route: Route.Route<R, P>
|
|
19
|
+
readonly route: Route.Route<R, E, P>
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* The current path of the application
|
|
@@ -26,7 +26,7 @@ export interface Router<out R = never, in out P extends string = string> {
|
|
|
26
26
|
/**
|
|
27
27
|
* The current matched params of the router
|
|
28
28
|
*/
|
|
29
|
-
readonly params: Fx.Fx<R,
|
|
29
|
+
readonly params: Fx.Fx<R, E, Path.ParamsOf<P>>
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* The current outlet of this Router
|
|
@@ -36,7 +36,7 @@ export interface Router<out R = never, in out P extends string = string> {
|
|
|
36
36
|
/**
|
|
37
37
|
* Helper for constructing a path from a route relative to the router.
|
|
38
38
|
*/
|
|
39
|
-
readonly createPath: <R2 extends Route.Route<any, string>, P extends Route.ParamsOf<R2>>(
|
|
39
|
+
readonly createPath: <R2 extends Route.Route<any, any, string>, P extends Route.ParamsOf<R2>>(
|
|
40
40
|
route: R2,
|
|
41
41
|
...[params]: [keyof P] extends [never] ? [] : [P]
|
|
42
42
|
) => Effect.Effect<
|
|
@@ -50,34 +50,38 @@ export interface Router<out R = never, in out P extends string = string> {
|
|
|
50
50
|
/**
|
|
51
51
|
* Helper for constructing a nested router
|
|
52
52
|
*/
|
|
53
|
-
readonly define: <R2, Path2 extends string>(
|
|
54
|
-
route: Route.Route<R2, Path2>,
|
|
55
|
-
) => Router<R | R2, Path.PathJoin<[P, Path2]>>
|
|
53
|
+
readonly define: <R2, E2, Path2 extends string>(
|
|
54
|
+
route: Route.Route<R2, E2, Path2>,
|
|
55
|
+
) => Router<R | R2, E | E2, Path.PathJoin<[P, Path2]>>
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* The parent router if one exists
|
|
59
59
|
*/
|
|
60
|
-
readonly
|
|
60
|
+
readonly parent: Option.Option<Router<any, string>>
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* Provide all the resources needed for a Router
|
|
64
64
|
*/
|
|
65
|
-
readonly
|
|
65
|
+
readonly provideContext: (environment: Context.Context<R>) => Router<never, E, P>
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
export const Router = Object.assign(function makeRouter<
|
|
69
|
-
|
|
68
|
+
export const Router = Object.assign(function makeRouter<
|
|
69
|
+
R = never,
|
|
70
|
+
E = never,
|
|
71
|
+
P extends string = string,
|
|
72
|
+
>(
|
|
73
|
+
route: Route.Route<R, E, P>,
|
|
70
74
|
currentPath: Fx.RefSubject<string>,
|
|
71
|
-
parent: Option.Option<Router<any, string>> = Option.none(),
|
|
72
|
-
): Router<R, P> {
|
|
75
|
+
parent: Option.Option<Router<any, any, string>> = Option.none(),
|
|
76
|
+
): Router<R, E, P> {
|
|
73
77
|
const outlet = Fx.RefSubject.unsafeMake((): html.Renderable => null)
|
|
74
78
|
|
|
75
|
-
const createPath = <R2 extends Route.Route<any, string>, P extends Route.ParamsOf<R2>>(
|
|
79
|
+
const createPath = <R2 extends Route.Route<any, any, string>, P extends Route.ParamsOf<R2>>(
|
|
76
80
|
other: R2,
|
|
77
81
|
...[params]: [keyof P] extends [never] ? [] : [P]
|
|
78
82
|
): Effect.Effect<
|
|
79
83
|
R,
|
|
80
|
-
|
|
84
|
+
E,
|
|
81
85
|
Path.PathJoin<
|
|
82
86
|
[Path.Interpolate<Route.PathOf<R>, Route.ParamsOf<R>>, Path.Interpolate<Route.PathOf<R2>, P>]
|
|
83
87
|
>
|
|
@@ -100,14 +104,14 @@ export const Router = Object.assign(function makeRouter<R = never, P extends str
|
|
|
100
104
|
return route.concat(other).make({ ...baseParams.value, ...params } as any) as any
|
|
101
105
|
})
|
|
102
106
|
|
|
103
|
-
const router: Router<R, P> = {
|
|
107
|
+
const router: Router<R, E, P> = {
|
|
104
108
|
route,
|
|
105
109
|
currentPath,
|
|
106
110
|
params: pipe(currentPath, Fx.switchMapEffect(route.match), Fx.compact, Fx.skipRepeats),
|
|
107
111
|
outlet,
|
|
108
112
|
createPath: createPath as Router<R, P>['createPath'],
|
|
109
|
-
define: <R2, Path2 extends string>(other: Route.Route<R2, Path2>) =>
|
|
110
|
-
makeRouter(route.concat(other), currentPath, Option.some(router as any)),
|
|
113
|
+
define: <R2, E2, Path2 extends string>(other: Route.Route<R2, E2, Path2>) =>
|
|
114
|
+
makeRouter(route.concat(other), currentPath, Option.some(router as any)) as any,
|
|
111
115
|
provideContext: (env) => provideContext(env)(router),
|
|
112
116
|
parent,
|
|
113
117
|
}
|
|
@@ -132,8 +136,8 @@ export const outlet: Fx.Fx<RenderContext | Router, never, html.Renderable> = Ren
|
|
|
132
136
|
export const currentPath: Fx.Fx<Router, never, string> = Router.withFx((r) => r.currentPath)
|
|
133
137
|
|
|
134
138
|
export function provideContext<R>(environment: Context.Context<R>) {
|
|
135
|
-
return <P extends string>(router: Router<R, P>): Router<never, P> => {
|
|
136
|
-
const provided: Router<never, P> = {
|
|
139
|
+
return <E, P extends string>(router: Router<R, E, P>): Router<never, E, P> => {
|
|
140
|
+
const provided: Router<never, E, P> = {
|
|
137
141
|
...router,
|
|
138
142
|
params: pipe(router.params, Fx.provideContext(environment)),
|
|
139
143
|
route: Route.provideContext(environment)(router.route),
|
|
@@ -167,8 +171,8 @@ export function redirect(path: string) {
|
|
|
167
171
|
|
|
168
172
|
redirect.fx = (path: string) => Fx.fail<Redirect>(Redirect.make(path))
|
|
169
173
|
|
|
170
|
-
export const redirectTo = <R, P extends string>(
|
|
171
|
-
route: Route.Route<R, P>,
|
|
174
|
+
export const redirectTo = <R, E, P extends string>(
|
|
175
|
+
route: Route.Route<R, E, P>,
|
|
172
176
|
...[params]: [keyof Path.ParamsOf<P>] extends [never] ? [{}?] : [Path.ParamsOf<P>]
|
|
173
177
|
): Effect.Effect<Router, Redirect, never> =>
|
|
174
178
|
pipe(
|
|
@@ -176,8 +180,8 @@ export const redirectTo = <R, P extends string>(
|
|
|
176
180
|
Effect.flatMap(redirect),
|
|
177
181
|
)
|
|
178
182
|
|
|
179
|
-
redirectTo.fx = <R, P extends string>(
|
|
180
|
-
route: Route.Route<R, P>,
|
|
183
|
+
redirectTo.fx = <R, E, P extends string>(
|
|
184
|
+
route: Route.Route<R, E, P>,
|
|
181
185
|
...params: [keyof Path.ParamsOf<P>] extends [never] ? [{}?] : [(path: string) => Path.ParamsOf<P>]
|
|
182
186
|
): Fx.Fx<Router, Redirect, never> =>
|
|
183
187
|
pipe(
|
|
@@ -242,7 +246,7 @@ export const makeRouter = (
|
|
|
242
246
|
|
|
243
247
|
export const live = (
|
|
244
248
|
currentPath?: Fx.RefSubject<string>,
|
|
245
|
-
): Layer.Layer<Location | History | Window | Document, never, Router<never, string>> =>
|
|
249
|
+
): Layer.Layer<Location | History | Window | Document, never, Router<never, never, string>> =>
|
|
246
250
|
Router.layerScoped(makeRouter(currentPath))
|
|
247
251
|
|
|
248
252
|
export function getCurrentPathFromLocation(location: Location | HTMLAnchorElement | URL) {
|