@typed/router 0.31.0 → 1.0.0-beta.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 (88) hide show
  1. package/README.md +111 -2
  2. package/dist/AST.d.ts +96 -0
  3. package/dist/AST.d.ts.map +1 -0
  4. package/dist/AST.js +32 -0
  5. package/dist/CurrentRoute.d.ts +18 -0
  6. package/dist/CurrentRoute.d.ts.map +1 -0
  7. package/dist/CurrentRoute.js +18 -0
  8. package/dist/Matcher.d.ts +191 -0
  9. package/dist/Matcher.d.ts.map +1 -0
  10. package/dist/Matcher.js +597 -0
  11. package/dist/Parser.d.ts +96 -0
  12. package/dist/Parser.d.ts.map +1 -0
  13. package/dist/Parser.js +1 -0
  14. package/dist/Path.d.ts +216 -0
  15. package/dist/Path.d.ts.map +1 -0
  16. package/dist/Path.js +248 -0
  17. package/dist/Route.d.ts +57 -0
  18. package/dist/Route.d.ts.map +1 -0
  19. package/dist/Route.js +151 -0
  20. package/dist/Router.d.ts +9 -0
  21. package/dist/Router.d.ts.map +1 -0
  22. package/dist/Router.js +8 -0
  23. package/dist/Uri.d.ts +115 -0
  24. package/dist/Uri.d.ts.map +1 -0
  25. package/dist/Uri.js +1 -0
  26. package/dist/index.d.ts +5 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/package.json +25 -69
  30. package/src/AST.ts +166 -0
  31. package/src/CurrentRoute.ts +30 -331
  32. package/src/Matcher.test.ts +476 -0
  33. package/src/Matcher.ts +1269 -328
  34. package/src/Parser.ts +282 -0
  35. package/src/Path.test.ts +318 -0
  36. package/src/Path.ts +691 -0
  37. package/src/Route.test.ts +268 -0
  38. package/src/Route.ts +316 -0
  39. package/src/Router.ts +31 -0
  40. package/src/Uri.ts +214 -0
  41. package/src/index.ts +4 -28
  42. package/tsconfig.json +6 -0
  43. package/CurrentRoute/package.json +0 -6
  44. package/LICENSE +0 -21
  45. package/MatchInput/package.json +0 -6
  46. package/Matcher/package.json +0 -6
  47. package/RouteGuard/package.json +0 -6
  48. package/RouteMatch/package.json +0 -6
  49. package/dist/cjs/CurrentRoute.js +0 -170
  50. package/dist/cjs/CurrentRoute.js.map +0 -1
  51. package/dist/cjs/MatchInput.js +0 -96
  52. package/dist/cjs/MatchInput.js.map +0 -1
  53. package/dist/cjs/Matcher.js +0 -138
  54. package/dist/cjs/Matcher.js.map +0 -1
  55. package/dist/cjs/RouteGuard.js +0 -78
  56. package/dist/cjs/RouteGuard.js.map +0 -1
  57. package/dist/cjs/RouteMatch.js +0 -49
  58. package/dist/cjs/RouteMatch.js.map +0 -1
  59. package/dist/cjs/index.js +0 -53
  60. package/dist/cjs/index.js.map +0 -1
  61. package/dist/dts/CurrentRoute.d.ts +0 -94
  62. package/dist/dts/CurrentRoute.d.ts.map +0 -1
  63. package/dist/dts/MatchInput.d.ts +0 -135
  64. package/dist/dts/MatchInput.d.ts.map +0 -1
  65. package/dist/dts/Matcher.d.ts +0 -121
  66. package/dist/dts/Matcher.d.ts.map +0 -1
  67. package/dist/dts/RouteGuard.d.ts +0 -94
  68. package/dist/dts/RouteGuard.d.ts.map +0 -1
  69. package/dist/dts/RouteMatch.d.ts +0 -50
  70. package/dist/dts/RouteMatch.d.ts.map +0 -1
  71. package/dist/dts/index.d.ts +0 -24
  72. package/dist/dts/index.d.ts.map +0 -1
  73. package/dist/esm/CurrentRoute.js +0 -152
  74. package/dist/esm/CurrentRoute.js.map +0 -1
  75. package/dist/esm/MatchInput.js +0 -79
  76. package/dist/esm/MatchInput.js.map +0 -1
  77. package/dist/esm/Matcher.js +0 -130
  78. package/dist/esm/Matcher.js.map +0 -1
  79. package/dist/esm/RouteGuard.js +0 -57
  80. package/dist/esm/RouteGuard.js.map +0 -1
  81. package/dist/esm/RouteMatch.js +0 -29
  82. package/dist/esm/RouteMatch.js.map +0 -1
  83. package/dist/esm/index.js +0 -24
  84. package/dist/esm/index.js.map +0 -1
  85. package/dist/esm/package.json +0 -4
  86. package/src/MatchInput.ts +0 -282
  87. package/src/RouteGuard.ts +0 -217
  88. package/src/RouteMatch.ts +0 -104
package/README.md CHANGED
@@ -1,5 +1,114 @@
1
1
  # @typed/router
2
2
 
3
- > WIP
3
+ > **Beta:** This package is in beta; APIs may change.
4
4
 
5
- Docs: https://tylors.github.io/typed/docs/router
5
+ `@typed/router` provides **typed routing**: path and query parameters with Effect Schema, route definitions (**Route**), **Matcher** (pattern matching on routes), **CurrentRoute**, and **Router** (compile, layout/catch managers). Use it for type-safe routing in Effect apps, with parsable path/query and composable matchers that produce Fx streams.
6
+
7
+ ## Dependencies
8
+
9
+ - `effect`
10
+ - `@typed/fx`
11
+ - `@typed/guard`
12
+ - `@typed/id`
13
+ - `@typed/navigation`
14
+ - `find-my-way-ts`
15
+ - `hkt-core`
16
+
17
+ ## API overview
18
+
19
+ - **Route** — `make(ast)`, `path`, `paramsSchema`, `pathSchema`, `querySchema`; path/query types are derived from the route path string.
20
+ - **Matcher** — cases keyed by route; each case returns an Fx; `prefix(parentRoute)` for nested routes; compile to router entries.
21
+ - **CurrentRoute** — service exposing the current matched route tree.
22
+ - **Router** — `compile(matcher)`, `makeLayerManager`, `makeCatchManager`, `makeLayoutManager` for building the routing layer.
23
+ - **Join**, **Parse** — helpers for path/query construction and parsing.
24
+
25
+ ## Example
26
+
27
+ Define routes with `Router.Parse` and `Router.match`, then provide `Router.BrowserRouter()` (see the [TodoMVC example](https://github.com/typed-smol/typed-smol/tree/main/examples/todomvc)):
28
+
29
+ ```ts
30
+ import * as Router from "@typed/router";
31
+
32
+ const filterState = Router.match(Router.Slash, "all")
33
+ .match(Router.Parse("active"), "active")
34
+ .match(Router.Parse("completed"), "completed")
35
+ .pipe(Router.redirectTo("/"));
36
+
37
+ // Provide Router.BrowserRouter() and use filterState (or other matchers) in your layers
38
+ ```
39
+
40
+ ## API reference
41
+
42
+ ### Router
43
+
44
+ | Symbol | Description |
45
+ |--------|-------------|
46
+ | `Router` | Type: `CurrentRoute` or `Navigation`. The routing service union. |
47
+ | `BrowserRouter(window?)` | `Layer<Router>`. Provides router using the browser `window` (or global). |
48
+ | `ServerRouter(options)` | `Layer<Router>`. Provides router with `memory()` or `initialMemory()` from `@typed/navigation`. |
49
+ | `TestRouter(options)` | `Layer<Router>`. Like `ServerRouter` but with `Ids.Test()` for deterministic IDs. |
50
+
51
+ ### Route
52
+
53
+ | Symbol | Description |
54
+ |--------|-------------|
55
+ | `Route<P, S>` | Interface: `ast`, `path`, `paramsSchema`, `pathSchema`, `querySchema`. Path/query types come from the path string. |
56
+ | `Route.make(ast)` | Build a `Route` from an `AST.RouteAst`. |
57
+ | `Route.Parse(path)` | Parse a path string (e.g. `"/todos/:id?filter=all"`) into a typed `Route`. |
58
+ | `Route.Slash` | Route for `"/"`. |
59
+ | `Route.Wildcard` | Route for `"*"`. |
60
+ | `Route.Param(name)` | Route for `/:name` (string param). |
61
+ | `Route.ParamWithSchema(name, schema)` | Route for `/:name` with an Effect Schema codec. |
62
+ | `Route.Number(name)` | Route for `/:name` decoded as number. |
63
+ | `Route.Int(name)` | Route for `/:name` decoded as integer. |
64
+ | `Route.Join(...routes)` | Join route segments into one route (path and params combined). |
65
+ | `Route.Path<T>`, `Route.Type<T>`, `Route.Params<T>` | Type helpers for a route’s path string, decoded type, and params. |
66
+
67
+ ### Matcher
68
+
69
+ | Symbol | Description |
70
+ |--------|-------------|
71
+ | `Matcher<A, E, R>` | Interface: pattern match on routes; each case yields an Fx. |
72
+ | `match` | Start a matcher (same as `empty.match`). |
73
+ | `empty` | Empty matcher (no cases). |
74
+ | `matcher.match(route, handler)` | Add a case: `route` + handler (function, Fx, Effect, Stream, or value). |
75
+ | `matcher.match(route, options)` | Add a case with `handler`, optional `dependencies`, `layout`, `catch`. |
76
+ | `matcher.match(route, guard, handler)` | Add a case with a guard (e.g. from `@typed/guard`) before the handler. |
77
+ | `matcher.prefix(route)` | Nest this matcher under a parent route. |
78
+ | `matcher.provide(...layers)` | Provide Effect layers to the matcher. |
79
+ | `matcher.provideService(tag, service)` | Provide a single service. |
80
+ | `matcher.provideServices(services)` | Provide a service map. |
81
+ | `matcher.catchCause(f)` | Handle failures by cause. |
82
+ | `matcher.catch(f)` | Handle failures by error value. |
83
+ | `matcher.catchTag(tag, f)` | Handle a specific error tag. |
84
+ | `matcher.layout(layout)` | Wrap matcher output in a layout Fx. |
85
+ | `run(matcher)` | Compile the matcher and return an `Fx` that reacts to the current path (requires `Router` + `CurrentRoute`). |
86
+ | `catchCause(input, f)` | Attach cause-based error handling to an Fx or matcher run. |
87
+ | `catch(input, f)` | Attach error-based handling. |
88
+ | `catchTag(input, tag, f)` | Attach tag-based error handling. |
89
+ | `redirectTo(path)` | Returns a function that, given an Fx or matcher, redirects to `path` on failure. |
90
+
91
+ **Matcher types**
92
+
93
+ | Type | Description |
94
+ |------|-------------|
95
+ | `Layout<Params, A, E, R, B, E2, R2>` | `(params) => Fx<B, E2, R2>`; wraps content with params and inner Fx. |
96
+ | `CatchHandler<E, A, E2, R2>` | `(cause: RefSubject<Cause<E>>) => Fx<A, E2, R2>`. |
97
+ | `MatchHandler<Params, A, E, R>` | Handler for a route: Fx, Effect, Stream, value, or `(params) => ...`. |
98
+
99
+ **Errors**
100
+
101
+ | Class | Description |
102
+ |-------|-------------|
103
+ | `RouteNotFound` | No route matched the path. |
104
+ | `RouteDecodeError` | Path/query failed to decode (e.g. schema validation). |
105
+ | `RouteGuardError` | Guard rejected (e.g. auth). |
106
+
107
+ ### CurrentRoute
108
+
109
+ | Symbol | Description |
110
+ |--------|-------------|
111
+ | `CurrentRoute` | Effect Service exposing the current matched route tree. |
112
+ | `CurrentRouteTree` | `{ route: Route<string, any>; parent?: CurrentRouteTree }`. |
113
+ | `CurrentRoute.Default` | Layer that provides `CurrentRoute` from `Navigation.base`. |
114
+ | `CurrentRoute.extend(route)` | Layer that provides `CurrentRoute` with a fixed `route` and optional `parent`. |
package/dist/AST.d.ts ADDED
@@ -0,0 +1,96 @@
1
+ import type { Cause } from "effect/Cause";
2
+ import type { Top } from "effect/Schema";
3
+ import type { Transformation } from "effect/SchemaTransformation";
4
+ import type { Fx } from "@typed/fx/Fx";
5
+ import type { RefSubject } from "@typed/fx/RefSubject/RefSubject";
6
+ import type { Guard } from "@typed/guard";
7
+ import type { AnyLayer, Layout as LayoutType, MatchHandler } from "./Matcher.js";
8
+ export type PathAst = PathAst.Literal | PathAst.Parameter | PathAst.Slash | PathAst.Wildcard | PathAst.QueryParams;
9
+ export declare namespace PathAst {
10
+ type Literal = {
11
+ type: "literal";
12
+ value: string;
13
+ };
14
+ type Parameter = {
15
+ type: "parameter";
16
+ name: string;
17
+ optional?: boolean;
18
+ regex?: string;
19
+ };
20
+ type Wildcard = {
21
+ type: "wildcard";
22
+ };
23
+ type Slash = {
24
+ type: "slash";
25
+ };
26
+ type QueryParams = {
27
+ type: "query-params";
28
+ value: ReadonlyArray<PathAst.QueryParam>;
29
+ };
30
+ type QueryParam = {
31
+ type: "query-param";
32
+ name: string;
33
+ value: PathAst;
34
+ };
35
+ }
36
+ export declare const literal: (value: string) => PathAst.Literal;
37
+ export declare const parameter: (name: string, optional?: boolean, regex?: string) => PathAst.Parameter;
38
+ export declare const wildcard: () => PathAst.Wildcard;
39
+ export declare const slash: () => PathAst.Slash;
40
+ export declare const queryParams: (value: ReadonlyArray<PathAst.QueryParam>) => PathAst.QueryParams;
41
+ export declare const queryParam: (name: string, value: PathAst) => PathAst.QueryParam;
42
+ export type RouteAst = RouteAst.Path | RouteAst.Transform | RouteAst.Join;
43
+ export declare namespace RouteAst {
44
+ interface Path {
45
+ type: "path";
46
+ path: PathAst;
47
+ }
48
+ interface Transform {
49
+ type: "transform";
50
+ from: RouteAst;
51
+ to: Top;
52
+ transformation: Transformation<any, any, any, any>;
53
+ }
54
+ interface Join {
55
+ type: "join";
56
+ parts: ReadonlyArray<RouteAst>;
57
+ }
58
+ }
59
+ export declare const path: (path: PathAst) => RouteAst.Path;
60
+ export declare const transform: (from: RouteAst, to: Top, transformation: Transformation<any, any, any, any>) => RouteAst.Transform;
61
+ export declare const join: (parts: ReadonlyArray<RouteAst>) => RouteAst.Join;
62
+ export type MatchAst = MatchAst.Route | MatchAst.Layer | MatchAst.Layout | MatchAst.Prefixed | MatchAst.Catch;
63
+ export declare namespace MatchAst {
64
+ interface Route {
65
+ type: "route";
66
+ route: RouteAst;
67
+ guard: Guard<any, any, any, any>;
68
+ handler: MatchHandler<any, any, any, any>;
69
+ }
70
+ interface Layer {
71
+ type: "layer";
72
+ matches: ReadonlyArray<MatchAst>;
73
+ deps: ReadonlyArray<AnyLayer>;
74
+ }
75
+ interface Layout {
76
+ type: "layout";
77
+ matches: ReadonlyArray<MatchAst>;
78
+ layout: LayoutType<any, any, any, any, any, any, any>;
79
+ }
80
+ interface Prefixed {
81
+ type: "prefixed";
82
+ matches: ReadonlyArray<MatchAst>;
83
+ prefix: RouteAst;
84
+ }
85
+ interface Catch {
86
+ type: "catch";
87
+ matches: ReadonlyArray<MatchAst>;
88
+ f: (cause: RefSubject<Cause<any>>) => Fx<any, any, any>;
89
+ }
90
+ }
91
+ export declare const route: (route: RouteAst, handler: MatchHandler<any, any, any, any>, guard?: Guard<any, any, any, any>) => MatchAst.Route;
92
+ export declare const layer: (matches: ReadonlyArray<MatchAst>, deps: ReadonlyArray<AnyLayer>) => MatchAst.Layer;
93
+ export declare const layout: (matches: ReadonlyArray<MatchAst>, layout: LayoutType<any, any, any, any, any, any, any>) => MatchAst.Layout;
94
+ export declare const prefixed: (matches: ReadonlyArray<MatchAst>, prefix: RouteAst) => MatchAst.Prefixed;
95
+ export declare const catchCause: (matches: ReadonlyArray<MatchAst>, f: (cause: RefSubject<Cause<any>>) => Fx<any, any, any>) => MatchAst.Catch;
96
+ //# sourceMappingURL=AST.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AST.d.ts","sourceRoot":"","sources":["../src/AST.ts"],"names":[],"mappings":"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"}
package/dist/AST.js ADDED
@@ -0,0 +1,32 @@
1
+ import { succeedSome } from "effect/Effect";
2
+ export const literal = (value) => ({ type: "literal", value });
3
+ export const parameter = (name, optional, regex) => ({
4
+ type: "parameter",
5
+ name,
6
+ ...(optional ? { optional } : {}),
7
+ ...(regex ? { regex } : {}),
8
+ });
9
+ export const wildcard = () => ({ type: "wildcard" });
10
+ export const slash = () => ({ type: "slash" });
11
+ export const queryParams = (value) => ({
12
+ type: "query-params",
13
+ value,
14
+ });
15
+ export const queryParam = (name, value) => ({
16
+ type: "query-param",
17
+ name,
18
+ value,
19
+ });
20
+ export const path = (path) => ({ type: "path", path });
21
+ export const transform = (from, to, transformation) => ({
22
+ type: "transform",
23
+ from,
24
+ to,
25
+ transformation,
26
+ });
27
+ export const join = (parts) => ({ type: "join", parts });
28
+ export const route = (route, handler, guard = succeedSome) => ({ type: "route", route, guard, handler });
29
+ export const layer = (matches, deps) => ({ type: "layer", matches, deps });
30
+ export const layout = (matches, layout) => ({ type: "layout", matches, layout });
31
+ export const prefixed = (matches, prefix) => ({ type: "prefixed", matches, prefix });
32
+ export const catchCause = (matches, f) => ({ type: "catch", matches, f });
@@ -0,0 +1,18 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as ServiceMap from "effect/ServiceMap";
4
+ import { Navigation } from "@typed/navigation/Navigation";
5
+ import { type Route } from "./Route.js";
6
+ export interface CurrentRouteTree {
7
+ readonly route: Route<string, any>;
8
+ readonly parent?: CurrentRouteTree | undefined;
9
+ }
10
+ declare const CurrentRoute_base: ServiceMap.ServiceClass<CurrentRoute, "@typed/router/CurrentRoute", CurrentRouteTree> & {
11
+ readonly make: Effect.Effect<CurrentRouteTree, never, Navigation>;
12
+ };
13
+ export declare class CurrentRoute extends CurrentRoute_base {
14
+ static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;
15
+ static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=CurrentRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentRoute.d.ts","sourceRoot":"","sources":["../src/CurrentRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAChD;;;;AAED,qBAAa,YAAa,SAAQ,iBAKjC;IACC,MAAM,CAAC,QAAQ,CAAC,OAAO,+CAAiD;IAExE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAI,OAAO,KAAK,CAAC,GAAG,6CAUtC;CACL"}
@@ -0,0 +1,18 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as ServiceMap from "effect/ServiceMap";
4
+ import { Navigation } from "@typed/navigation/Navigation";
5
+ import { Parse } from "./Route.js";
6
+ export class CurrentRoute extends ServiceMap.Service()("@typed/router/CurrentRoute", {
7
+ make: Effect.map(Navigation.base, (base) => ({ route: Parse(base) })),
8
+ }) {
9
+ static Default = Layer.effect(CurrentRoute, CurrentRoute.make);
10
+ static extend = (route) => Layer.unwrap(Effect.gen(function* () {
11
+ const services = yield* Effect.services();
12
+ const parent = ServiceMap.getOrUndefined(services, CurrentRoute);
13
+ return Layer.succeed(CurrentRoute, {
14
+ route,
15
+ parent,
16
+ });
17
+ }));
18
+ }
@@ -0,0 +1,191 @@
1
+ import type * as Arr from "effect/Array";
2
+ import * as Cause from "effect/Cause";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Option from "effect/Option";
6
+ import { type Pipeable } from "effect/Pipeable";
7
+ import * as Schema from "effect/Schema";
8
+ import * as Scope from "effect/Scope";
9
+ import * as ServiceMap from "effect/ServiceMap";
10
+ import * as Stream from "effect/Stream";
11
+ import type { ExcludeTag, ExtractTag, NoInfer, Tags } from "effect/Types";
12
+ import type * as Fx from "@typed/fx/Fx/Fx";
13
+ import { RefSubject } from "@typed/fx/RefSubject";
14
+ import type { MatchAst } from "./AST.js";
15
+ import { CurrentRoute } from "./CurrentRoute.js";
16
+ import { type Route } from "./Route.js";
17
+ import type { Router } from "./Router.js";
18
+ export type Layout<Params, A, E, R, B, E2, R2> = (params: LayoutParams<Params, A, E, R>) => Fx.Fx<B, E2, R2>;
19
+ export type LayoutParams<Params, A, E, R> = {
20
+ readonly params: RefSubject.RefSubject<Params>;
21
+ readonly content: Fx.Fx<A, E, R>;
22
+ };
23
+ export type CatchHandler<E, A, E2, R2> = (cause: RefSubject.RefSubject<Cause.Cause<E>>) => Fx.Fx<A, E2, R2>;
24
+ export type AnyLayer = Layer.Layer<any, any, any> | Layer.Layer<never, any, any> | Layer.Layer<any, never, any> | Layer.Layer<any, any, never> | Layer.Layer<never, never, never> | Layer.Layer<any, never, never> | Layer.Layer<never, any, never> | Layer.Layer<never, never, any>;
25
+ type AnyServiceMap = ServiceMap.ServiceMap<any> | ServiceMap.ServiceMap<never>;
26
+ type AnyDependency = AnyLayer | AnyServiceMap;
27
+ type AnyLayout = Layout<any, any, any, any, any, any, any>;
28
+ type AnyCatch = CatchHandler<any, any, any, any>;
29
+ type AnyGuard = GuardType<any, any, any, any>;
30
+ type AnyMatchHandler = (params: RefSubject.RefSubject<any>) => Fx.Fx<any, any, any>;
31
+ type DependencyProvided<D> = D extends Layer.Layer<infer Provided, any, any> ? Provided : D extends ServiceMap.ServiceMap<infer Provided> ? Provided : never;
32
+ type DependencyError<D> = D extends Layer.Layer<any, infer E, any> ? E : never;
33
+ type DependencyRequirements<D> = D extends Layer.Layer<any, any, infer R> ? R : never;
34
+ type LayerSuccess<L> = L extends Layer.Layer<infer Provided, any, any> ? Provided : never;
35
+ type LayerError<L> = L extends Layer.Layer<any, infer E, any> ? E : never;
36
+ type LayerServices<L> = L extends Layer.Layer<any, any, infer R> ? R : never;
37
+ export type GuardType<I, O, E = never, R = never> = (input: I) => Effect.Effect<Option.Option<O>, E, R>;
38
+ export interface AsGuard<I, O, E = never, R = never> {
39
+ readonly asGuard: () => GuardType<I, O, E, R>;
40
+ }
41
+ export type GuardInput<I, O, E = never, R = never> = GuardType<I, O, E, R> | AsGuard<I, O, E, R>;
42
+ type GuardOutput<G> = G extends GuardType<any, infer O, any, any> ? O : G extends AsGuard<any, infer O, any, any> ? O : never;
43
+ type GuardError<G> = G extends GuardType<any, any, infer E, any> ? E : G extends AsGuard<any, any, infer E, any> ? E : never;
44
+ type GuardServices<G> = G extends GuardType<any, any, any, infer R> ? R : G extends AsGuard<any, any, any, infer R> ? R : never;
45
+ type MatchOptions<Rt extends Route.Any, B, E2, R2, D, LB, LE2, LR2, C> = {
46
+ readonly route: Rt;
47
+ readonly handler: MatchHandlerReturnValue<B, E2, R2> | ((params: RefSubject.RefSubject<Route.Type<Rt>>) => MatchHandlerReturnValue<B, E2, R2>);
48
+ readonly dependencies?: D;
49
+ readonly layout?: Layout<Route.Type<Rt>, B, E2, R2, LB, LE2, LR2>;
50
+ readonly catch?: C;
51
+ };
52
+ type MatchHandlerReturnValue<A, E, R> = Fx.Fx<A, E, R> | Stream.Stream<A, E, R> | Effect.Effect<A, E, R> | A;
53
+ type MatchHandlerOptions<Params, B, E2, R2, D, LB, LE2, LR2, C> = {
54
+ readonly handler: MatchHandlerReturnValue<B, E2, R2> | ((params: RefSubject.RefSubject<Params>) => MatchHandlerReturnValue<B, E2, R2>);
55
+ readonly dependencies?: D;
56
+ readonly layout?: Layout<Params, B, E2, R2, LB, LE2, LR2>;
57
+ readonly catch?: C;
58
+ };
59
+ type ApplyDependencies<E, R, D> = D extends ReadonlyArray<infer Dep> ? {
60
+ readonly e: E | DependencyError<Dep>;
61
+ readonly r: Exclude<R, DependencyProvided<Dep>> | DependencyRequirements<Dep>;
62
+ } : {
63
+ readonly e: E;
64
+ readonly r: R;
65
+ };
66
+ type ApplyCatch<A, E, R, C> = C extends CatchHandler<any, infer CA, infer CE, infer CR> ? {
67
+ readonly a: A | CA;
68
+ readonly e: CE;
69
+ readonly r: R | CR;
70
+ } : {
71
+ readonly a: A;
72
+ readonly e: E;
73
+ readonly r: R;
74
+ };
75
+ type ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, GE, GR> = ApplyCatch<LB, ApplyDependencies<E2 | GE | LE2, R2 | GR | LR2, D>["e"], ApplyDependencies<E2 | GE | LE2, R2 | GR | LR2, D>["r"], C>;
76
+ export interface Matcher<A, E = never, R = never> extends Pipeable {
77
+ readonly cases: ReadonlyArray<MatchAst>;
78
+ match<Rt extends Route.Any, B, E2 = never, R2 = never>(route: Rt, handler: (params: RefSubject.RefSubject<Route.Type<Rt>>) => MatchHandlerReturnValue<B, E2, R2>): Matcher<A | B, E | E2, R | R2 | Scope.Scope>;
79
+ match<Rt extends Route.Any, B, E2 = never, R2 = never>(route: Rt, handler: Fx.Fx<B, E2, R2> | Effect.Effect<B, E2, R2> | Stream.Stream<B, E2, R2>): Matcher<A | B, E | E2, R | R2 | Scope.Scope>;
80
+ match<Rt extends Route.Any, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(route: Rt, options: MatchHandlerOptions<Route.Type<Rt>, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<A | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["a"], E | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["e"], R | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["r"] | Scope.Scope>;
81
+ match<Rt extends Route.Any, const B>(route: Rt, handler: B): Matcher<A | B, E, R | Scope.Scope>;
82
+ match<Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never>(route: Rt, guard: G, handler: (params: RefSubject.RefSubject<GuardOutput<G>>) => MatchHandlerReturnValue<B, E2, R2>): Matcher<A | B, E | E2 | GuardError<G>, R | R2 | GuardServices<G> | Scope.Scope>;
83
+ match<Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never>(route: Rt, guard: G, handler: Fx.Fx<B, E2, R2> | Effect.Effect<B, E2, R2> | Stream.Stream<B, E2, R2>): Matcher<A | B, E | E2 | GuardError<G>, R | R2 | GuardServices<G> | Scope.Scope>;
84
+ match<Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(route: Rt, guard: G, options: MatchHandlerOptions<GuardOutput<G>, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<A | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, GuardError<G>, GuardServices<G>>["a"], E | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, GuardError<G>, GuardServices<G>>["e"], R | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, GuardError<G>, GuardServices<G>>["r"] | Scope.Scope>;
85
+ match<Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B>(route: Rt, guard: G, handler: B): Matcher<A | B, E | GuardError<G>, R | GuardServices<G> | Scope.Scope>;
86
+ match<Rt extends Route.Any, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(options: MatchOptions<Rt, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<A | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["a"], E | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["e"], R | ComputeMatchResult<E2, R2, D, LB, LE2, LR2, C, never, never>["r"] | Scope.Scope>;
87
+ readonly prefix: <Rt extends Route.Any>(route: Rt) => Matcher<A, E, R>;
88
+ readonly provide: <Layers extends readonly [AnyLayer, ...AnyLayer[]]>(...layers: Layers) => Matcher<A, E | LayerError<Layers[number]>, Exclude<R, LayerSuccess<Layers[number]>> | LayerServices<Layers[number]>>;
89
+ readonly provideService: <Id, S>(tag: ServiceMap.Service<Id, S>, service: S) => Matcher<A, E, Exclude<R, Id>>;
90
+ readonly provideServices: <R2>(services: ServiceMap.ServiceMap<R2>) => Matcher<A, E, Exclude<R, R2>>;
91
+ readonly catchCause: <B, E2, R2>(f: CatchHandler<E, B, E2, R2>) => Matcher<A | B, E2, R | R2>;
92
+ readonly catch: <B, E2, R2>(f: (e: E) => Fx.Fx<B, E2, R2>) => Matcher<A | B, E2, R | R2>;
93
+ readonly catchTag: <const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, B, E2, R2>(tag: K, f: (e: ExtractTag<NoInfer<E>, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>) => Fx.Fx<B, E2, R2>) => Matcher<A | B, E2 | ExcludeTag<E, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>, R | R2>;
94
+ readonly layout: <B, E2, R2>(layout: Layout<any, A, E, R, B, E2, R2>) => Matcher<B, E | E2, R | R2>;
95
+ }
96
+ export declare namespace Matcher {
97
+ type Any = Matcher<any, any, any> | Matcher<any, never, any> | Matcher<any, any, never> | Matcher<any, never, never>;
98
+ type Success<T> = [T] extends [Matcher<infer A, infer _E, infer _R>] ? A : never;
99
+ type Error<T> = [T] extends [Matcher<infer _A, infer E, infer _R>] ? E : never;
100
+ type Services<T> = [T] extends [Matcher<infer _A, infer _E, infer R>] ? R : never;
101
+ }
102
+ export type MatchHandler<Params, A, E, R> = Fx.Fx<A, E, R> | Stream.Stream<A, E, R> | Effect.Effect<A, E, R> | A | ((params: RefSubject.RefSubject<Params>) => Fx.Fx<A, E, R> | Stream.Stream<A, E, R> | Effect.Effect<A, E, R> | A);
103
+ export declare const empty: Matcher<never>;
104
+ export declare const match: {
105
+ <Rt extends Route.Any, B, E2 = never, R2 = never>(route: Rt, handler: (params: RefSubject.RefSubject<Route.Type<Rt>, never, never>) => MatchHandlerReturnValue<B, E2, R2>): Matcher<B, E2, R2 | Scope.Scope>;
106
+ <Rt extends Route.Any, B, E2 = never, R2 = never>(route: Rt, handler: Fx.Fx<B, E2, R2> | Effect.Effect<B, E2, R2> | Stream.Stream<B, E2, R2>): Matcher<B, E2, R2 | Scope.Scope>;
107
+ <Rt extends Route.Any, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(route: Rt, options: MatchHandlerOptions<Route.Type<Rt>, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["a"], ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["e"], Scope.Scope | ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["r"]>;
108
+ <Rt extends Route.Any, const B>(route: Rt, handler: B): Matcher<B, never, Scope.Scope>;
109
+ <Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never>(route: Rt, guard: G, handler: (params: RefSubject.RefSubject<GuardOutput<G>, never, never>) => MatchHandlerReturnValue<B, E2, R2>): Matcher<B, E2 | GuardError<G>, R2 | Scope.Scope | GuardServices<G>>;
110
+ <Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never>(route: Rt, guard: G, handler: Fx.Fx<B, E2, R2> | Effect.Effect<B, E2, R2> | Stream.Stream<B, E2, R2>): Matcher<B, E2 | GuardError<G>, R2 | Scope.Scope | GuardServices<G>>;
111
+ <Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(route: Rt, guard: G, options: MatchHandlerOptions<GuardOutput<G>, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<ApplyCatch<LB, ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["e"], ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["r"], C>["a"], ApplyCatch<LB, ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["e"], ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["r"], C>["e"], Scope.Scope | ApplyCatch<LB, ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["e"], ApplyDependencies<E2 | LE2 | GuardError<G>, R2 | LR2 | GuardServices<G>, D>["r"], C>["r"]>;
112
+ <Rt extends Route.Any, G extends GuardInput<Route.Type<Rt>, any, any, any>, B>(route: Rt, guard: G, handler: B): Matcher<B, GuardError<G>, Scope.Scope | GuardServices<G>>;
113
+ <Rt extends Route.Any, B, E2 = never, R2 = never, D extends ReadonlyArray<AnyDependency> | undefined = undefined, LB = B, LE2 = never, LR2 = never, C extends CatchHandler<any, any, any, any> | undefined = undefined>(options: MatchOptions<Rt, B, E2, R2, D, LB, LE2, LR2, C>): Matcher<ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["a"], ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["e"], Scope.Scope | ApplyCatch<LB, ApplyDependencies<E2 | LE2, R2 | LR2, D>["e"], ApplyDependencies<E2 | LE2, R2 | LR2, D>["r"], C>["r"]>;
114
+ };
115
+ declare const RouteGuardError_base: Schema.ErrorClass<RouteGuardError, Schema.Struct<{
116
+ readonly _tag: Schema.tag<"RouteGuardError">;
117
+ readonly path: Schema.String;
118
+ readonly causes: Schema.Array$<Schema.Unknown>;
119
+ }>, Cause.YieldableError>;
120
+ export declare class RouteGuardError extends RouteGuardError_base {
121
+ }
122
+ declare const RouteNotFound_base: Schema.ErrorClass<RouteNotFound, Schema.Struct<{
123
+ readonly _tag: Schema.tag<"RouteNotFound">;
124
+ readonly path: Schema.String;
125
+ }>, Cause.YieldableError>;
126
+ export declare class RouteNotFound extends RouteNotFound_base {
127
+ }
128
+ declare const RouteDecodeError_base: Schema.ErrorClass<RouteDecodeError, Schema.Struct<{
129
+ readonly _tag: Schema.tag<"RouteDecodeError">;
130
+ readonly path: Schema.String;
131
+ readonly cause: Schema.String;
132
+ }>, Cause.YieldableError>;
133
+ export declare class RouteDecodeError extends RouteDecodeError_base {
134
+ }
135
+ /**
136
+ * @internal
137
+ */
138
+ export type CompiledEntry = {
139
+ readonly route: Route.Any;
140
+ readonly guard: AnyGuard;
141
+ readonly handler: AnyMatchHandler;
142
+ readonly layers: ReadonlyArray<AnyLayer>;
143
+ readonly layouts: ReadonlyArray<AnyLayout>;
144
+ readonly catches: ReadonlyArray<AnyCatch>;
145
+ readonly decode: (input: unknown) => Effect.Effect<any, Schema.SchemaError, any>;
146
+ };
147
+ export declare function run<M extends Matcher.Any>(matcher: M): Fx.Fx<Matcher.Success<M>, Matcher.Error<M> | RouteNotFound | RouteDecodeError | RouteGuardError, Matcher.Services<M> | Router | CurrentRoute | Scope.Scope>;
148
+ type InputSucces<T> = [Matcher.Success<T> | Fx.Fx.Success<T>] extends [infer A] ? A : never;
149
+ type InputError<T> = [Matcher.Error<T> | Fx.Fx.Error<T>] extends [infer E] ? E : never;
150
+ type InputServices<T> = [Matcher.Services<T> | Fx.Fx.Services<T>] extends [infer R] ? R : never;
151
+ export declare const catchCause: {
152
+ <I extends Fx.Fx.Any | Matcher.Any, B, E2 = never, R2 = never>(f: (cause: RefSubject.RefSubject<Cause.Cause<InputError<I> | RouteNotFound | RouteDecodeError | RouteGuardError>>) => Fx.Fx<B, E2, R2>): (input: I) => Fx.Fx<InputSucces<I> | B, E2, InputServices<I> | R2 | Router | Scope.Scope>;
153
+ <I extends Fx.Fx.Any | Matcher.Any, B, E2 = never, R2 = never>(input: I, f: (cause: RefSubject.RefSubject<Cause.Cause<InputError<I> | RouteNotFound | RouteDecodeError | RouteGuardError>>) => Fx.Fx<B, E2, R2>): Fx.Fx<InputSucces<I> | B, E2, InputServices<I> | R2 | Router | Scope.Scope>;
154
+ };
155
+ export declare const catch_: {
156
+ <I extends Fx.Fx.Any | Matcher.Any, B, E2, R2>(f: (e: InputError<I>) => Fx.Fx<B, E2, R2>): (input: I) => Fx.Fx<InputSucces<I> | B, E2, InputServices<I> | R2 | Router | Scope.Scope>;
157
+ };
158
+ export { catch_ as catch };
159
+ export declare const catchTag: {
160
+ <I extends Fx.Fx.Any | Matcher.Any, const K extends Tags<E> | Arr.NonEmptyReadonlyArray<Tags<E>>, E, B, E2, R2>(k: K, f: (e: InputError<I>) => Fx.Fx<B, E2, R2>): (input: I) => Fx.Fx<InputSucces<I> | B, E2, InputServices<I> | R2 | Router | Scope.Scope>;
161
+ <I extends Fx.Fx.Any | Matcher.Any, const K extends Tags<InputError<I>> | Arr.NonEmptyReadonlyArray<Tags<InputError<I>>>, B, E2, R2>(input: I, k: K, f: (e: ExtractTag<InputError<I>, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>) => Fx.Fx<B, E2, R2>): Fx.Fx<InputSucces<I> | B, E2 | ExcludeTag<InputError<I>, K extends Arr.NonEmptyReadonlyArray<string> ? K[number] : K>, InputServices<I> | R2 | Router | Scope.Scope>;
162
+ };
163
+ export declare const redirectTo: (path: string) => <I extends Fx.Fx.Any | Matcher.Any>(input: I) => Fx.Fx<InputSucces<I>, never, Router | Scope.Scope | InputServices<I>>;
164
+ /**
165
+ * @internal
166
+ */
167
+ export declare function compile(cases: ReadonlyArray<MatchAst>): ReadonlyArray<CompiledEntry>;
168
+ /**
169
+ * @internal
170
+ */
171
+ export declare function makeLayerManager(memoMap: Layer.MemoMap, rootScope: Scope.Scope, fiberId: number): {
172
+ prepare: (desired: ReadonlyArray<AnyLayer>) => Effect.Effect<{
173
+ services: ServiceMap.ServiceMap<never>;
174
+ commit: Effect.Effect<void, never, never>;
175
+ rollback: Effect.Effect<void, never, never>;
176
+ }, any, any>;
177
+ };
178
+ /**
179
+ * @internal
180
+ */
181
+ export declare function makeLayoutManager(rootScope: Scope.Scope, fiberId: number): {
182
+ apply: (layouts: ReadonlyArray<AnyLayout>, paramsValue: any, inner: Fx.Fx<any, any, any>, services: ServiceMap.ServiceMap<any>) => Effect.Effect<Fx.Fx<any, any, any>, never, never>;
183
+ updateParams: (layouts: ReadonlyArray<AnyLayout>, paramsValue: any) => Effect.Effect<void, never, never>;
184
+ };
185
+ /**
186
+ * @internal
187
+ */
188
+ export declare function makeCatchManager(rootScope: Scope.Scope, fiberId: number): {
189
+ apply: (catches: ReadonlyArray<AnyCatch>, inner: Fx.Fx<any, any, any>, services: ServiceMap.ServiceMap<any>) => Effect.Effect<Fx.Fx<any, any, any>, never, never>;
190
+ };
191
+ //# sourceMappingURL=Matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matcher.d.ts","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}