react-router-sitemap
Version:
Module to generate a sitemap for react-router configuration
55 lines (45 loc) • 1.34 kB
JavaScript
import prepareParams from './params-preparer';
/**
* Module for filter array of paths.
* @function pathsFilter
* @param {Array<String>} [paths] Array of paths
* @param {Array<RegExp>} [rules] Filter rules
* @param {Boolean} [isValidRules] - Flag that defines a way to filter paths.
* If `true`, the path satisfying the rules will be included.
* If `false`, the path satisfying the rules will be excluded.
* @return {Array<String>} Array of paths.
*
* @example
*
* import { pathsFilter as filterPaths } from 'react-router-sitemap';
*
* const paths = ['/', '/home', '/auth'];
* const rules = [/\/auth/];
* const isValidRules = false;
*
* const paths = filterPaths(paths, rules, isValidRules);
* // ['/', '/home']
*
* @example
*
* import { pathsFilter as filterPaths } from 'react-router-sitemap';
*
* const paths = ['/', '/home', '/auth'];
* const rules = [/\/auth/];
* const isValidRules = true;
*
* const paths = filterPaths(paths, rules, isValidRules);
* // ['/auth']
*/
export default (paths = [], rules = [], isValidRules = false) => {
const params = prepareParams(paths, rules);
paths = params.paths;
rules = params.rules;
return paths.filter(path => {
path = path.trim();
if (!path.length) {
return false;
}
return rules.some(regex => regex.test(path)) === isValidRules;
});
};