From da4df7b29d9c47843caa474065c4c9f360c6a295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20=C5=81aziuk?= Date: Tue, 12 Jun 2018 23:50:05 +0200 Subject: [PATCH] generateUrls --- types/universal-router/generateUrls.d.ts | 14 ++++++++++++++ types/universal-router/index.d.ts | 2 +- types/universal-router/tsconfig.json | 3 ++- types/universal-router/universal-router-tests.ts | 9 +++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 types/universal-router/generateUrls.d.ts diff --git a/types/universal-router/generateUrls.d.ts b/types/universal-router/generateUrls.d.ts new file mode 100644 index 0000000000..0a31b3d3c6 --- /dev/null +++ b/types/universal-router/generateUrls.d.ts @@ -0,0 +1,14 @@ +import UniversalRouter, { Params } from "."; + +export interface generateUrlsOptions { + /** + * Provide a function to stringifyQueryParams option to generate URL with query string from unknown route params. + */ + stringifyQueryParams?: (params: Params) => string; + [_: string]: any; +} + +/** + * In most web applications it's much simpler to just use a string for hyperlinks. + */ +export default function generateUrls(router: UniversalRouter, options?: generateUrlsOptions): (routeName: string, params?: Params) => string; diff --git a/types/universal-router/index.d.ts b/types/universal-router/index.d.ts index 66c424d5f0..38f4cec8bd 100644 --- a/types/universal-router/index.d.ts +++ b/types/universal-router/index.d.ts @@ -10,7 +10,7 @@ * Each URL parameter resolves to a string. */ export interface Params { - [_: string]: string; + [_: string]: any; } /** diff --git a/types/universal-router/tsconfig.json b/types/universal-router/tsconfig.json index c83170c372..8ad0ee94ef 100644 --- a/types/universal-router/tsconfig.json +++ b/types/universal-router/tsconfig.json @@ -20,6 +20,7 @@ }, "files": [ "index.d.ts", + "generateUrls.d.ts", "universal-router-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/universal-router/universal-router-tests.ts b/types/universal-router/universal-router-tests.ts index 0c92dad102..02c79fb062 100644 --- a/types/universal-router/universal-router-tests.ts +++ b/types/universal-router/universal-router-tests.ts @@ -1,4 +1,5 @@ import UniversalRouter from "universal-router"; +import generateUrls from "universal-router/generateUrls"; new UniversalRouter( { @@ -63,3 +64,11 @@ new UniversalRouter({ }, ], }); + +const url = generateUrls(new UniversalRouter([ + { name: 'users', path: '/users' }, + { name: 'user', path: '/user/:username' }, +], { baseUrl: '/base' })); + +url('users'); // => '/base/users' +url('user', { username: 'john' }); // => '/base/user/john'