routes regexp implemented with custom regexp

This commit is contained in:
NikolaBorislavovHristov 2019-08-28 15:21:47 +03:00
parent 493b6c3d79
commit 4e02638e7c

View file

@ -1,25 +1,44 @@
const PathToRegexp = require('path-to-regexp');
const compilePath = (path, options) => {
const keys = [];
const regexp = PathToRegexp(path, keys, { ...options });
return {
regexp,
urlParamsNames: keys.map(({ name }) => name)
};
};
const routesRegexp = {
intro: compilePath('/intro'),
board: compilePath('/'),
discover: compilePath('/discover/:type?/:catalog?'),
library: compilePath('/library/:sort?'),
calendar: compilePath('/calendar'),
search: compilePath('/search'),
detail: compilePath('/detail/:type/:id/:videoId?'),
addons: compilePath('/addons'),
settings: compilePath('/settings'),
player: compilePath('/player')
intro: {
regexp: /^\/intro\/?$/i,
urlParamsNames: []
},
board: {
regexp: /^\/?$/i,
urlParamsNames: []
},
discover: {
regexp: /^\/discover(?:\/([^\/]*?))?(?:\/([^\/]*?))?\/?$/i,
urlParamsNames: ['type', 'catalog']
},
library: {
regexp: /^\/library(?:\/([^\/]*?))?\/?$/i,
urlParamsNames: ['sort']
},
calendar: {
regexp: /^\/calendar\/?$/i,
urlParamsNames: []
},
search: {
regexp: /^\/search\/?$/i,
urlParamsNames: []
},
detail: {
regexp: /^\/detail\/(?:([^\/]+?))\/(?:([^\/]+?))(?:\/([^\/]*?))?\/?$/i,
urlParamsNames: []
},
addons: {
regexp: /^\/addons\/?$/i,
urlParamsNames: []
},
settings: {
regexp: /^\/settings\/?$/i,
urlParamsNames: []
},
player: {
regexp: /^\/player\/?$/i,
urlParamsNames: []
}
};
module.exports = routesRegexp;