abi.js
Version:
[![typescript-icon]][typescript-link] [![license-icon]][license-link] [![status-icon]][status-link] [![ci-icon]][ci-link] [![twitter-icon]][twitter-link]
68 lines (67 loc) • 1.79 kB
TypeScript
export type QueryType = 'string' | 'number';
export type QueryValue = string | number;
export type Index = number;
export type Name = string;
export type Key = Index | Name;
export type Argument = {
index: Index;
value: QueryValue;
};
export type Parameter = {
name: Name;
type: QueryType;
value: QueryValue;
};
export type Option = {
key: Key;
value: QueryValue;
};
export type Arguments = Record<Index, QueryValue>;
export type Parameters = Record<Name, QueryValue>;
export type Options = Record<Key, QueryValue>;
export type Result = boolean | number | string | object | Response;
export type Path = string;
export type Pattern = string;
export type Resolver = (...args: any[]) => Result;
export type Port = number;
export type Hostname = `${number}.${number}.${number}.${number}` | string;
export type Address = {
port: Port;
hostname: Hostname;
};
export type ServeHandler = (request: Request) => Response | Promise<Response>;
export type ServeOptions = Address & {
handler: ServeHandler;
};
export type Engine = 'V8' | 'JSC';
export type Runtime = 'Node.js' | 'Deno' | 'Bun';
export type UserConfig = Partial<Config> | undefined;
export type Config = {
root: string;
port: Port;
hostname: Hostname;
assets: string;
routes: string;
errors: string;
};
export interface Logger {
log(...args: any[]): void;
warn(...args: any[]): void;
error(...args: any[]): void;
}
export interface PathInfo {
name: string;
realname: string;
normalname: string;
isAbsolute: boolean;
isFile: boolean;
isDirectory: boolean;
isSymlink: boolean;
size: number;
mtime: Date | null;
atime: Date | null;
birthtime: Date | null;
extension: string;
basename: string;
dirname: string;
}