typesafe-routes
helps you to accelerate your app development and reduce your test efforts by incorporating the TypeScript compiler for advanced type checking. Don't look for broken router paths manually; instead, let TypeScript notify you about inconsistencies in your routes.
typesafe-routes
features include:
- Autocompletion for paths and parameters
- Path & template rendering
- Nested, absolute, and relative path rendering
- Parameter parsing and serialization
- Type-safe, customizable, and extendable
- Compatible with JavaScript (apart from type safety)
- Small bundle size starting at less than 1kb
import { createRoutes, int, renderPath, parsePath, template } from "typesafe-routes";
// route tree definition
const routes = createRoutes({
users: {
path: ["users", int("uid")], // /users/:uid
children: {
edit: { path: ["edit"] }, // /users/:uid/edit
delete: { path: ["delete"] }, // /users/:uid/delete
}
}
});
// absolute paths
renderPath(routes.users, { uid: 123 }); // ~> "/users/123"
// nested paths
renderPath(routes.users.edit, { uid: 123 }); // ~> "/users/123/edit"
renderPath(routes.users.delete, { uid: 123 }); // ~> "/users/123/delete"
// relative paths ("_" indicates the starting segment)
renderPath(routes._.users.$render, { uid: 123 }); // ~> "users/123"
renderPath(routes.users._.edit, {}); // ~> "edit"
// parse path params
parsePath(routes.users.edit, { uid: "42" }); // ~> { uid: 42 }
parsePath(routes.users.edit, "/users/99/edit"); // ~> { uid: 99 }
// templates
template(routes.users.edit); // ~> "/users/:uid/edit"
template(routes._.users.edit); // ~> "users/:uid/edit"
template(routes.users._.edit); // ~> "edit"
The complete documentation can be found here.
- Functions
renderPath
: renders a path with parametersrenderQuery
: renders a search queryrender
: renders a path with parameters including query stringtemplate
: renders a route templateparsePath
: parses dynamic segments in a pathparseQuery
: parses parameters in a search queryparse
: parses path and search query for parametersreplace
: partially replaces dynamic segments and query params in a string-based path (i.e.location.path
)
npm i typesafe-routes # or any npm alternative
- leave a star ⭐
- report a bug 🐞
- open a pull request 🏗️
- please discuss your idea on github or discord before you start working on your PR
- help others ❤️
- buy me a coffee ☕
- v10-v12 migration guide
- v12beta-v12.1 migration guide
- check for duplicate param names in the route tree
- customizable parsing of search params (for example with qs)
- demos & utils
- react-router
- wouter
- vue router
- angular router
- refinejs
- quickstart
- basic-features
- absolute-routes
- parameters
- nested-routes
- relative-routes
- route-templates
- parameter-parsing
- parameter-binding
- parameter-types
- advanced-features
- replace-dynamic-segments
- global-query-parameters
- customization
- custom-parameter-types
- tutorials
- angular router
- react router
- wouter
- vue router
- refine