1 | const { parse } = require('url');
|
2 | const UrlPattern = require('url-pattern');
|
3 |
|
4 | const patternOpts = {
|
5 | segmentNameCharset: 'a-zA-Z0-9_-',
|
6 | segmentValueCharset: 'a-zA-Z0-9@.+-_'
|
7 | };
|
8 |
|
9 | const isPattern = pattern => pattern instanceof UrlPattern;
|
10 |
|
11 | const getParamsAndQuery = (pattern, url) => {
|
12 | const { query, pathname } = parse(url, true);
|
13 | const route = isPattern(pattern) ? pattern : new UrlPattern(pattern, patternOpts);
|
14 | const params = route.match(pathname);
|
15 |
|
16 | return { query, params };
|
17 | };
|
18 |
|
19 | module.exports = {
|
20 | getParamsAndQuery,
|
21 | isPattern,
|
22 | patternOpts
|
23 | }; |
\ | No newline at end of file |