Skip to main content
Home
It is unknown whether this package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Node.js
It is unknown whether this package works with Deno
It is unknown whether this package works with Bun
It is unknown whether this package works with Browsers
JSR Score
76%
Published
2 years ago (0.1.0)

Declarative Routes

declarative-routing sets up an optional declarative routing system for React or QwikCity projects. For NextJS, it maintains a global list of both pages and API routes and provides components and functions to easily navigate to pages, or make API requests.

What are Declarative Routes?

Typesafe routing is a way to ensure that your routes are structured properly; the parameters in the URL are correct and a route handler exists for that route. Declarative routing goes to the next step and ensures that your link is going to the correct route.

With typesafe routing you still have to deal with urls; <Link to={`/product/${product.id}`}>Product</Link>. With declarative routing you can use a component that is typed to the route, and that will generate the correct URL for you. <ProductDetail.Link productId={product.id}>Product</ProductDetail.Link>. Later on, if the route changes, or the parameters change, the ProductDetail.Link component will be updated to reflect that everwhere it is used in your application.

Installation

For NextJS projects follow the NextJS installation instructions.

For React Router projects follow the React Router installation instructions.

For QwikCity projects follow the QwikCity installation instructions.

Credit where credit is due

This system is based on the work in Fix Next.JS Routing To Have Full Type-Safety. However the original article had a significantly different interface and didn't cover API routes at all.

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";
or

Import directly with a jsr specifier

import * as declarative_routing from "jsr:@dreathorian/declarative-routing";

Add Package

pnpm i jsr:@dreathorian/declarative-routing
or (using pnpm 10.8 or older)
pnpm dlx jsr add @dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";

Add Package

yarn add jsr:@dreathorian/declarative-routing
or (using Yarn 4.8 or older)
yarn dlx jsr add @dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";

Add Package

vlt install jsr:@dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";

Add Package

npx jsr add @dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";

Add Package

bunx jsr add @dreathorian/declarative-routing

Import symbol

import * as declarative_routing from "@dreathorian/declarative-routing";