12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { parse } from 'querystring';
- import pathRegexp from 'path-to-regexp';
-
- /* eslint no-useless-escape:0 import/prefer-default-export:0 */
- const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
- export const isUrl = (path) => reg.test(path);
- export const isAntDesignPro = () => {
- if (ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site') {
- return true;
- }
-
- return window.location.hostname === 'preview.pro.ant.design';
- }; // 给官方演示站点用,用于关闭真实开发环境不需要使用的特性
-
- export const isAntDesignProOrDev = () => {
- const { NODE_ENV } = process.env;
-
- if (NODE_ENV === 'development') {
- return true;
- }
-
- return isAntDesignPro();
- };
- export const getPageQuery = () => parse(window.location.href.split('?')[1]);
- /**
- * props.route.routes
- * @param router [{}]
- * @param pathname string
- */
-
- export const getAuthorityFromRouter = (router = [], pathname) => {
- // const authority = router.find(
- // ({ routes, path = '/' }) =>
- // (path && pathRegexp(path).exec(pathname)) ||
- // (routes && getAuthorityFromRouter(routes, pathname)),
- // );
-
- // if (authority) return authority;
- // return undefined;
-
- for (let r of router) {
- if (pathRegexp(r.path || '/').exec(pathname)) {
- return r
- }
-
- if (r.routes && r.routes.length) {
- const f = getAuthorityFromRouter(r.routes, pathname)
- if (f) {
- return f
- }
- }
- }
- };
- export const getRouteAuthority = (path, routeData) => {
- let authorities;
- routeData.forEach((route) => {
- // match prefix
- if (pathRegexp(`${route.path}/(.*)`).test(`${path}/`)) {
- if (route.authority) {
- authorities = route.authority;
- } // exact match
-
- if (route.path === path) {
- authorities = route.authority || authorities;
- } // get children authority recursively
-
- if (route.routes) {
- authorities = getRouteAuthority(path, route.routes) || authorities;
- }
- }
- });
- return authorities;
- };
|