exports types

This commit is contained in:
Emmaline Autumn 2024-12-01 03:57:56 -07:00
parent 67ddb71fdd
commit 3e68ca285b
3 changed files with 37 additions and 34 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "@bearmetal/router", "name": "@bearmetal/router",
"description": "A simple router for Deno", "description": "A simple router for Deno",
"version": "0.1.1", "version": "0.1.2",
"stable": true, "stable": true,
"repository": "https://github.com/emmaos/bearmetal", "repository": "https://github.com/emmaos/bearmetal",
"files": [ "files": [
@ -9,7 +9,10 @@
"README.md", "README.md",
"LICENSE" "LICENSE"
], ],
"exports": "./mod.ts", "exports": {
".": "./mod.ts",
"./types": "./types.ts"
},
"imports": { "imports": {
"@std/assert": "jsr:@std/assert@^1.0.7", "@std/assert": "jsr:@std/assert@^1.0.7",
"@std/testing": "jsr:@std/testing@^1.0.4" "@std/testing": "jsr:@std/testing@^1.0.4"

View File

@ -1,34 +1,4 @@
interface RouterContext { import type { Handler, Middleware, MiddlewareConfig, RouteConfig, RouteConfigurator, RouterContext } from "./types.ts";
url: URL;
params: Record<string, string | undefined>;
state: Record<string, unknown>;
pattern: URLPattern;
request: Request;
}
type Handler = (req: Request, ctx: RouterContext) => Promise<Response> | Response;
type Middleware = (ctx: RouterContext, next: () => Promise<Response>) => Promise<Response>;
interface RouteConfig {
pattern: URLPattern;
handlers: { [method: string]: Handler };
}
interface MiddlewareConfig {
pattern: URLPattern;
handler: Middleware;
// Add path for sorting
path: string;
}
interface RouteConfigurator {
get(handler: Handler): RouteConfigurator;
post(handler: Handler): RouteConfigurator;
put(handler: Handler): RouteConfigurator;
delete(handler: Handler): RouteConfigurator;
patch(handler: Handler): RouteConfigurator;
options(handler: Handler): RouteConfigurator;
}
/** /**
* A simple router for Deno * A simple router for Deno
@ -327,7 +297,7 @@ if (import.meta.main) {
console.log('Starting server...'); console.log('Starting server...');
const router = new Router(); const router = new Router();
router.route('/users') router.route('/users')
.get((ctx) => { .get((_ctx) => {
return new Response('GET /users'); return new Response('GET /users');
}) })
// .post((ctx) => { // .post((ctx) => {

30
types.ts Normal file
View File

@ -0,0 +1,30 @@
export interface RouterContext {
url: URL;
params: Record<string, string | undefined>;
state: Record<string, unknown>;
pattern: URLPattern;
request: Request;
}
export type Handler = (req: Request, ctx: RouterContext) => Promise<Response> | Response;
export type Middleware = (ctx: RouterContext, next: () => Promise<Response>) => Promise<Response>;
export interface RouteConfig {
pattern: URLPattern;
handlers: { [method: string]: Handler };
}
export interface MiddlewareConfig {
pattern: URLPattern;
handler: Middleware;
path: string;
}
export interface RouteConfigurator {
get(handler: Handler): RouteConfigurator;
post(handler: Handler): RouteConfigurator;
put(handler: Handler): RouteConfigurator;
delete(handler: Handler): RouteConfigurator;
patch(handler: Handler): RouteConfigurator;
options(handler: Handler): RouteConfigurator;
}