From 3e7024258a8a47e7c08ad973bd61e07a3a655514 Mon Sep 17 00:00:00 2001 From: Matthew Dahl Date: Fri, 5 Feb 2016 22:18:00 -0800 Subject: [PATCH] add router5 definition update typings fix typings attribution add tests and cleanup undo attribute change add line back --- router5/router5-tests.ts | 28 +++++++++++++ router5/router5.d.ts | 90 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 router5/router5-tests.ts create mode 100644 router5/router5.d.ts diff --git a/router5/router5-tests.ts b/router5/router5-tests.ts new file mode 100644 index 000000000..bc1bfba9a --- /dev/null +++ b/router5/router5-tests.ts @@ -0,0 +1,28 @@ +/// + +import Router5, {loggerPlugin, RouteNode, Router5 as _Router5} from 'router5'; + +const router1: Router5 = new Router5(); +const router2: Router5 = new _Router5(); + +[router1, router2].forEach(function (router: Router5) { + const settingsNode: RouteNode = new RouteNode('settings', '/settings'); + + router + .setOption('useHash', true) + .setOption('defaultRoute', 'home'); + + router.setAdditionalArgs([]); + + router + .add(settingsNode) + .addNode('home', '/') + .addNode('profile', '/profile', function () { + return false; + }) + .usePlugin(loggerPlugin()) + .useMiddleware(function () {}) + .useMiddleware(function () {}, function () {}) + .start() + .stop(); +}); diff --git a/router5/router5.d.ts b/router5/router5.d.ts new file mode 100644 index 000000000..a15187ac0 --- /dev/null +++ b/router5/router5.d.ts @@ -0,0 +1,90 @@ +// Type definitions for router5 +// Project: https://github.com/router5/router5 +// Definitions by: Matthew Dahl +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module 'router5' { + interface constants { + ROUTER_NOT_STARTED: String; + ROUTER_ALREADY_STARTED: String; + ROUTE_NOT_FOUND: String; + SAME_STATES: String; + CANNOT_DEACTIVATE: String; + CANNOT_ACTIVATE: String; + TRANSITION_ERR: String; + TRANSITION_CANCELLED: String; + } + + interface State { + _meta: Array; + name: String; + params: Object; + } + + interface RouteNode { + add(route: any, cb?: Function): RouteNode; + addNode(name?: any, params?: any): RouteNode; + buildPath(routeName: String, params?: Object): String; + buildPathFromSegments(segment: Array, params?: Object): String; + buildState(name: String, params?: Object): State; + buildStateFromSegments(segments: Array): State; + getMetaFromSegments(segments: Array): Array; + getPath(routeName: String): String; + getPathFromSegments(segments: Array): String; + getSegmentsByName(routeName: String): Array; + getSegmentsMatchingPath(path: any, options: Object): Array; + matchPath(path: any, options?: Object): State; + setPath(path?: any): void; + } + + interface RouteNodeFactory { + new(name?: any, path?: any, childRoutes?: any, cb?: Function): RouteNode; + (name?: any, path?: any, childRoutes?: any, cb?: Function): RouteNode; + } + + interface Router5 { + add(routes: any): Router5; + addNode(name: String, path: String, canActivate?: Function): Router5; + areStatesDescendants(parentState: any, childState: any): Boolean; + areStatesEqual(state1: any, state2: any): Boolean; + buildPath(route: String, params: Object): String; + buildState(route: String, params: Object): String; + buildUrl(route: String, params: Object): String; + canActivate(name: String, canActivate: Function): Router5; + canDeactivate(name: String, canDeactivate: Boolean): any; + cancel(): void; + getAdditionalArgs(): Array; + getState(): Object; + isActive(name: String, params?: Object, strictEquality?: Boolean, ignoreQueryParams?: Boolean): Boolean; + matchPath(path: String): Object; + matchUrl(url: String): Object; + navigate(name: String, ...args: Array): Function; + setAdditionalArgs(args: Array): void; + setOption(opt: String, val: any): Router5; + start(...args: Array): Router5; + stop(): Router5; + urlToPath(path: String): String; + useMiddleware(...args: Array): Router5; + usePlugin(pluginFactory: Function): Router5; + } + + interface Router5Factory { + new(routes?: any, opts?: Object): Router5; + (routes?: any, opts?: Object): Router5; + } + + var errCodes: constants; + var loggerPlugin: () => Function; + var RouteNode: RouteNodeFactory; + var Router5: Router5Factory; + var transitionPath: (toState: any, fromState: any) => any; + + export default Router5; + export { + errCodes, + loggerPlugin, + RouteNode, + Router5, + transitionPath + }; +}