Massage types
This commit is contained in:
@@ -1,40 +1,57 @@
|
||||
// types.ts
|
||||
|
||||
// FIXME: split this up into types used by app developers and types internal
|
||||
// to the framework.
|
||||
|
||||
|
||||
import { HttpCode, httpCodes } from "./http-codes.ts";
|
||||
import { ContentType, contentTypes } from "./content-types";
|
||||
|
||||
|
||||
export type Method = "get" | "post" | "put" | "patch" | "delete";
|
||||
|
||||
|
||||
export type DenoRequest = globalThis.Request;
|
||||
export type UserRequest = {};
|
||||
export type Request = {
|
||||
pattern: string;
|
||||
path: string;
|
||||
method: Method;
|
||||
parameters: object;
|
||||
denoRequest: globalThis.Request;
|
||||
};
|
||||
export type ProcessedRoute = { pattern: URLPattern; method: Method; handler: Handler };
|
||||
|
||||
|
||||
|
||||
export type Response = {
|
||||
code: HttpCode;
|
||||
contentType: ContentType;
|
||||
result: string;
|
||||
};
|
||||
|
||||
export type Handler = (req: Request) => Promise<Response>;
|
||||
|
||||
export type Route = {
|
||||
path: string;
|
||||
methods: Method[];
|
||||
handler: Handler;
|
||||
interruptable?: boolean
|
||||
};
|
||||
// types.ts
|
||||
|
||||
// FIXME: split this up into types used by app developers and types internal
|
||||
// to the framework.
|
||||
|
||||
import { z } from "zod";
|
||||
import { HttpCode, httpCodes } from "./http-codes.ts";
|
||||
import { ContentType, contentTypes } from "./content-types.ts";
|
||||
|
||||
const methodParser = z.union([
|
||||
z.literal("get"),
|
||||
z.literal("post"),
|
||||
z.literal("put"),
|
||||
z.literal("patch"),
|
||||
z.literal("delete"),
|
||||
]);
|
||||
|
||||
export type Method = z.infer<typeof methodParser>;
|
||||
|
||||
const massageMethod = (input: string): Method => {
|
||||
const r = methodParser.parse(input.toLowerCase())
|
||||
|
||||
return r;
|
||||
};
|
||||
|
||||
export type DenoRequest = globalThis.Request;
|
||||
export type DenoResponse=globalThis.Response;
|
||||
export type UserRequest = {};
|
||||
export type Request = {
|
||||
pattern: string;
|
||||
path: string;
|
||||
method: Method;
|
||||
parameters: object;
|
||||
denoRequest: globalThis.Request;
|
||||
};
|
||||
export type ProcessedRoute = {
|
||||
pattern: URLPattern;
|
||||
method: Method;
|
||||
handler: Handler;
|
||||
};
|
||||
|
||||
export type Response = {
|
||||
code: HttpCode;
|
||||
contentType: ContentType;
|
||||
result: string;
|
||||
};
|
||||
|
||||
export type Handler = (req: Request) => Promise<Response>;
|
||||
|
||||
export type Route = {
|
||||
path: string;
|
||||
methods: Method[];
|
||||
handler: Handler;
|
||||
interruptable?: boolean;
|
||||
};
|
||||
|
||||
export { massageMethod };
|
||||
|
||||
Reference in New Issue
Block a user