diff --git a/src/packages/router/define/index.js b/src/packages/router/define/index.js index 064316e5..f4747384 100644 --- a/src/packages/router/define/index.js +++ b/src/packages/router/define/index.js @@ -1,11 +1,3 @@ // @flow -import route from './utils/define-route'; -import resource from './utils/define-resource'; - export { default as route } from './utils/define-route'; export { default as resource } from './utils/define-resource'; - -export default { - route, - resource -}; diff --git a/src/packages/router/define/interfaces.js b/src/packages/router/define/interfaces.js index 98738319..fca47517 100644 --- a/src/packages/router/define/interfaces.js +++ b/src/packages/router/define/interfaces.js @@ -1,5 +1,14 @@ // @flow import type Router from '../index'; +import type Controller from '../../controller'; import type { Route$opts } from '../../route'; -export type options = Route$opts & { router: Router }; +export type Router$route = Route$opts & { + router: Router; +}; + +export type Router$resource = { + path: string; + router: Router; + controllers: Map; +}; diff --git a/src/packages/router/define/utils/define-resource.js b/src/packages/router/define/utils/define-resource.js index e1977f2d..c52730b0 100644 --- a/src/packages/router/define/utils/define-resource.js +++ b/src/packages/router/define/utils/define-resource.js @@ -1,6 +1,7 @@ // @flow import defineRoute from './define-route'; -import type { options } from '../interfaces'; + +import type { Router$resource } from '../interfaces'; /** * @private @@ -9,11 +10,7 @@ export default function defineResource({ path, router, controllers -}: { - path: options.path; - router: options.router; - controllers: options.controllers; -}): void { +}: Router$resource) { defineRoute({ path, router, diff --git a/src/packages/router/define/utils/define-route.js b/src/packages/router/define/utils/define-route.js index 93509b4b..6a85408c 100644 --- a/src/packages/router/define/utils/define-route.js +++ b/src/packages/router/define/utils/define-route.js @@ -1,12 +1,12 @@ // @flow import Route from '../../../route'; -import type { options } from '../interfaces'; +import type { Router$route } from '../interfaces'; /** * @private */ -export default function defineRoute({ router, ...opts }: options): void { +export default function defineRoute({ router, ...opts }: Router$route) { const route = new Route(opts); router.set(`${route.method}:/${route.staticPath}`, route); diff --git a/src/packages/router/index.js b/src/packages/router/index.js index c45abb81..f081c71c 100644 --- a/src/packages/router/index.js +++ b/src/packages/router/index.js @@ -3,7 +3,7 @@ import { ID_PATTERN } from '../route'; import { FreezeableMap } from '../freezeable'; -import define from './define'; +import * as define from './define'; import type { Request } from '../server'; import type { Router$opts } from './interfaces'; @@ -17,9 +17,10 @@ class Router extends FreezeableMap { super(); Reflect.apply(routes, { - route: (path: string, opts: Route$opts) => define.route({ - ...opts, + route: (path: string, { method, action }: Route$opts) => define.route({ path, + method, + action, controllers, router: this }), diff --git a/src/packages/router/interfaces.js b/src/packages/router/interfaces.js index 72d5ce34..2b2d48f1 100644 --- a/src/packages/router/interfaces.js +++ b/src/packages/router/interfaces.js @@ -2,6 +2,7 @@ import type Controller from '../controller'; export type Router$opts = { - routes: () => void, - controllers: Map + controllers: Map; + + routes(): void; };