diff --git a/src/UniversalRouter.d.ts b/src/UniversalRouter.d.ts index 1d7e2dc..1ee52c4 100644 --- a/src/UniversalRouter.d.ts +++ b/src/UniversalRouter.d.ts @@ -9,8 +9,8 @@ import pathToRegexp = require('path-to-regexp') -export interface Params { - [paramName: string]: any +export interface QueryParams { + [paramName: string]: string | string[] } export interface Context { @@ -23,33 +23,51 @@ export interface ResolveContext extends Context { export interface RouteContext extends ResolveContext { router: UniversalRouter - route: Route + route: Route baseUrl: string path: string - params: Params + params: QueryParams keys: pathToRegexp.Key[] next: (resume?: boolean) => Promise } +export type Result = T | Promise | void + export interface Route { path?: string | RegExp | Array name?: string - parent?: Route | null + parent?: Route | null children?: Routes | null - action?: (context: RouteContext & C, params: Params) => R | Promise | void + action?: (context: RouteContext & C, params: QueryParams) => Result } export type Routes = Array> +export type ResolveRoute = ( + context: C & RouteContext, + params: QueryParams, +) => Result + +export type ErrorHandler = ( + error: Error & { status?: number }, + context: C & RouteContext, +) => Result + export interface Options { context?: C baseUrl?: string - resolveRoute?: (context: C & RouteContext, params: Params) => any - errorHandler?: (error: Error & { status?: number }, context: C & RouteContext) => any + resolveRoute?: ResolveRoute + errorHandler?: ErrorHandler } export default class UniversalRouter { static pathToRegexp: typeof pathToRegexp - constructor(routes: Route | Routes, options?: Options) + baseUrl: string + errorHandler?: ErrorHandler + resolveRoute: ResolveRoute + context: C & { router: UniversalRouter } + root: Route + routesByName?: Map> + constructor(routes: Route | Routes, options?: Options) resolve(pathnameOrContext: string | ResolveContext): Promise } diff --git a/src/UniversalRouterSync.d.ts b/src/UniversalRouterSync.d.ts index ae71ab2..0fe6736 100644 --- a/src/UniversalRouterSync.d.ts +++ b/src/UniversalRouterSync.d.ts @@ -9,8 +9,8 @@ import pathToRegexp = require('path-to-regexp') -export interface Params { - [paramName: string]: any +export interface QueryParams { + [paramName: string]: string | string[] } export interface Context { @@ -23,33 +23,51 @@ export interface ResolveContext extends Context { export interface RouteContext extends ResolveContext { router: UniversalRouter - route: Route + route: Route baseUrl: string path: string - params: Params + params: QueryParams keys: pathToRegexp.Key[] next: (resume?: boolean) => R } +export type Result = T | void + export interface Route { path?: string | RegExp | Array name?: string - parent?: Route | null + parent?: Route | null children?: Routes | null - action?: (context: RouteContext & C, params: Params) => R | void + action?: (context: RouteContext & C, params: QueryParams) => Result } export type Routes = Array> +export type ResolveRoute = ( + context: C & RouteContext, + params: QueryParams, +) => Result + +export type ErrorHandler = ( + error: Error & { status?: number }, + context: C & RouteContext, +) => Result + export interface Options { context?: C baseUrl?: string - resolveRoute?: (context: C & RouteContext, params: Params) => any - errorHandler?: (error: Error & { status?: number }, context: C & RouteContext) => any + resolveRoute?: ResolveRoute + errorHandler?: ErrorHandler } export default class UniversalRouter { static pathToRegexp: typeof pathToRegexp - constructor(routes: Route | Routes, options?: Options) + baseUrl: string + errorHandler?: ErrorHandler + resolveRoute: ResolveRoute + context: C & { router: UniversalRouter } + root: Route + routesByName?: Map> + constructor(routes: Route | Routes, options?: Options) resolve(pathnameOrContext: string | ResolveContext): R } diff --git a/src/generateUrls.d.ts b/src/generateUrls.d.ts index f048c08..e7068b5 100644 --- a/src/generateUrls.d.ts +++ b/src/generateUrls.d.ts @@ -8,7 +8,11 @@ */ import { PathFunctionOptions } from 'path-to-regexp' -import UniversalRouter, { Params } from './UniversalRouter' +import UniversalRouter from './UniversalRouter' + +export interface Params { + [paramName: string]: any +} export interface GenerateUrlsOptions extends PathFunctionOptions { stringifyQueryParams?: (params: Params) => string diff --git a/test/generateUrls.test.ts b/test/generateUrls.test.ts index 53239eb..0834b29 100644 --- a/test/generateUrls.test.ts +++ b/test/generateUrls.test.ts @@ -7,8 +7,8 @@ * LICENSE.txt file in the root directory of this source tree. */ -import UniversalRouter, { Params } from '../src/UniversalRouter' -import generateUrls from '../src/generateUrls' +import UniversalRouter from '../src/UniversalRouter' +import generateUrls, { Params } from '../src/generateUrls' const router = new UniversalRouter( [