@tarojs/router 3.5.0-canary.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation.d.ts +4 -0
- package/dist/animation.js +29 -0
- package/dist/api.d.ts +7 -0
- package/dist/api.js +103 -0
- package/dist/events/resize.d.ts +2 -0
- package/dist/events/resize.js +13 -0
- package/dist/events/scroll.d.ts +2 -0
- package/dist/events/scroll.js +31 -0
- package/dist/history.d.ts +5 -0
- package/dist/history.js +100 -0
- package/dist/index.cjs.d.ts +23 -0
- package/dist/index.cjs.js +1043 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.esm.d.ts +23 -0
- package/dist/index.esm.js +1026 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +4 -2674
- package/dist/router/index.d.ts +11 -0
- package/dist/router/index.js +22 -0
- package/dist/router/mpa.d.ts +10 -0
- package/dist/router/mpa.js +62 -0
- package/dist/router/multi-page.d.ts +27 -0
- package/dist/router/multi-page.js +112 -0
- package/dist/router/page.d.ts +42 -0
- package/dist/router/page.js +281 -0
- package/dist/router/spa.d.ts +3 -0
- package/dist/router/spa.js +130 -0
- package/dist/router/stack.d.ts +18 -0
- package/dist/router/stack.js +59 -0
- package/dist/tabbar.d.ts +2 -0
- package/dist/tabbar.js +29 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.js +47 -0
- package/dist/utils/navigate.d.ts +5 -0
- package/dist/utils/navigate.js +44 -0
- package/package.json +18 -17
- package/types/api.d.ts +13 -0
- package/types/history.d.ts +6 -0
- package/types/router.d.ts +30 -0
- package/dist/index.js.map +0 -1
- package/dist/router.esm.js +0 -2650
- package/dist/router.esm.js.map +0 -1
- package/types/index.d.ts +0 -287
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
/* eslint-disable dot-notation */
|
|
11
|
+
import { createPageConfig, Current, eventCenter, hooks, stringify } from '@tarojs/runtime';
|
|
12
|
+
import { Action as LocationAction } from 'history';
|
|
13
|
+
import UniversalRouter from 'universal-router';
|
|
14
|
+
import { history, prependBasename } from '../history';
|
|
15
|
+
import { addLeadingSlash, routesAlias, stripBasename } from '../utils';
|
|
16
|
+
import { setTitle } from '../utils/navigate';
|
|
17
|
+
import { RouterConfig } from '.';
|
|
18
|
+
import PageHandler from './page';
|
|
19
|
+
import stacks from './stack';
|
|
20
|
+
export function createRouter(app, config, framework) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
RouterConfig.config = config;
|
|
23
|
+
const handler = new PageHandler(config);
|
|
24
|
+
routesAlias.set(handler.router.customRoutes);
|
|
25
|
+
const basename = handler.router.basename;
|
|
26
|
+
const routes = handler.routes.map(route => {
|
|
27
|
+
const routePath = addLeadingSlash(route.path);
|
|
28
|
+
const paths = routesAlias.getAll(routePath);
|
|
29
|
+
return {
|
|
30
|
+
path: paths.length < 1 ? routePath : paths,
|
|
31
|
+
action: route.load
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
const router = new UniversalRouter(routes, { baseUrl: basename || '' });
|
|
35
|
+
const launchParam = handler.getQuery(stacks.length);
|
|
36
|
+
(_a = app.onLaunch) === null || _a === void 0 ? void 0 : _a.call(app, launchParam);
|
|
37
|
+
app.onError && window.addEventListener('error', e => { var _a; return (_a = app.onError) === null || _a === void 0 ? void 0 : _a.call(app, e.message); });
|
|
38
|
+
const render = ({ location, action }) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
var _c, _d, _e, _f, _g;
|
|
40
|
+
handler.pathname = decodeURI(location.pathname);
|
|
41
|
+
let element, params;
|
|
42
|
+
try {
|
|
43
|
+
const result = yield router.resolve(handler.router.forcePath || handler.pathname);
|
|
44
|
+
[element, , params] = yield Promise.all(result);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error.status === 404) {
|
|
48
|
+
(_c = app.onPageNotFound) === null || _c === void 0 ? void 0 : _c.call(app, {
|
|
49
|
+
path: handler.pathname
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
throw new Error(error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!element)
|
|
57
|
+
return;
|
|
58
|
+
const pageConfig = handler.pageConfig;
|
|
59
|
+
let enablePullDownRefresh = ((_d = config === null || config === void 0 ? void 0 : config.window) === null || _d === void 0 ? void 0 : _d.enablePullDownRefresh) || false;
|
|
60
|
+
eventCenter.trigger('__taroRouterChange', {
|
|
61
|
+
toLocation: {
|
|
62
|
+
path: handler.pathname
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
if (pageConfig) {
|
|
66
|
+
document.title = (_e = pageConfig.navigationBarTitleText) !== null && _e !== void 0 ? _e : document.title;
|
|
67
|
+
setTitle((_f = pageConfig.navigationBarTitleText) !== null && _f !== void 0 ? _f : document.title);
|
|
68
|
+
if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
|
|
69
|
+
enablePullDownRefresh = pageConfig.enablePullDownRefresh;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const currentPage = Current.page;
|
|
73
|
+
const pathname = handler.pathname;
|
|
74
|
+
let shouldLoad = false;
|
|
75
|
+
if (action === 'POP') {
|
|
76
|
+
// NOTE: 浏览器事件退后多次时,该事件只会被触发一次
|
|
77
|
+
const prevIndex = stacks.getPrevIndex(pathname);
|
|
78
|
+
const delta = stacks.getDelta(pathname);
|
|
79
|
+
// NOTE: Safari 内核浏览器在非应用页面返回上一页时,会触发额外的 POP 事件,此处需避免当前页面被错误卸载
|
|
80
|
+
if (currentPage !== stacks.getItem(prevIndex)) {
|
|
81
|
+
handler.unload(currentPage, delta, prevIndex > -1);
|
|
82
|
+
if (prevIndex > -1) {
|
|
83
|
+
handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
shouldLoad = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
if (handler.isTabBar) {
|
|
92
|
+
if (handler.isSamePage(currentPage))
|
|
93
|
+
return;
|
|
94
|
+
const prevIndex = stacks.getPrevIndex(pathname, 0);
|
|
95
|
+
handler.hide(currentPage);
|
|
96
|
+
if (prevIndex > -1) {
|
|
97
|
+
// NOTE: tabbar 页且之前出现过,直接复用
|
|
98
|
+
return handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (action === 'REPLACE') {
|
|
102
|
+
const delta = stacks.getDelta(pathname);
|
|
103
|
+
// NOTE: 页面路由记录并不会清空,只是移除掉缓存的 stack 以及页面
|
|
104
|
+
handler.unload(currentPage, delta);
|
|
105
|
+
}
|
|
106
|
+
else if (action === 'PUSH') {
|
|
107
|
+
handler.hide(currentPage);
|
|
108
|
+
}
|
|
109
|
+
shouldLoad = true;
|
|
110
|
+
}
|
|
111
|
+
if (shouldLoad || stacks.length < 1) {
|
|
112
|
+
const el = (_g = element.default) !== null && _g !== void 0 ? _g : element;
|
|
113
|
+
const loadConfig = Object.assign({}, pageConfig);
|
|
114
|
+
const stacksIndex = stacks.length;
|
|
115
|
+
delete loadConfig['path'];
|
|
116
|
+
delete loadConfig['load'];
|
|
117
|
+
const page = createPageConfig(enablePullDownRefresh ? hooks.call('createPullDownComponent', el, location.pathname, framework, handler.PullDownRefresh) : el, pathname + stringify(handler.getQuery(stacksIndex)), {}, loadConfig);
|
|
118
|
+
if (params)
|
|
119
|
+
page.options = params;
|
|
120
|
+
return handler.load(page, pageConfig, stacksIndex);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
const routePath = stripBasename(history.location.pathname, handler.basename);
|
|
124
|
+
if (routePath === '/' || routePath === '') {
|
|
125
|
+
history.replace(prependBasename(handler.homePage + history.location.search));
|
|
126
|
+
}
|
|
127
|
+
render({ location: history.location, action: LocationAction.Push });
|
|
128
|
+
(_b = app.onShow) === null || _b === void 0 ? void 0 : _b.call(app, launchParam);
|
|
129
|
+
return history.listen(render);
|
|
130
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PageInstance } from '@tarojs/runtime';
|
|
2
|
+
declare class Stacks {
|
|
3
|
+
stacks: PageInstance[];
|
|
4
|
+
backDelta: number;
|
|
5
|
+
set delta(delta: number);
|
|
6
|
+
get delta(): number;
|
|
7
|
+
get length(): number;
|
|
8
|
+
get last(): PageInstance;
|
|
9
|
+
get(): PageInstance[];
|
|
10
|
+
getItem(index: number): PageInstance;
|
|
11
|
+
getLastIndex(pathname: string, stateWith?: number): number;
|
|
12
|
+
getDelta(pathname: string): number;
|
|
13
|
+
getPrevIndex(pathname: string, stateWith?: number): number;
|
|
14
|
+
pop(): PageInstance | undefined;
|
|
15
|
+
push(page: PageInstance): number;
|
|
16
|
+
}
|
|
17
|
+
declare const stacks: Stacks;
|
|
18
|
+
export default stacks;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
class Stacks {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.stacks = [];
|
|
4
|
+
this.backDelta = 0;
|
|
5
|
+
}
|
|
6
|
+
set delta(delta) {
|
|
7
|
+
if (delta > 0) {
|
|
8
|
+
this.backDelta = delta;
|
|
9
|
+
}
|
|
10
|
+
else if (this.backDelta > 0) {
|
|
11
|
+
--this.backDelta;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this.backDelta = 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
get delta() {
|
|
18
|
+
return this.backDelta;
|
|
19
|
+
}
|
|
20
|
+
get length() {
|
|
21
|
+
return this.stacks.length;
|
|
22
|
+
}
|
|
23
|
+
get last() {
|
|
24
|
+
return this.stacks[this.length - 1];
|
|
25
|
+
}
|
|
26
|
+
get() {
|
|
27
|
+
return this.stacks;
|
|
28
|
+
}
|
|
29
|
+
getItem(index) {
|
|
30
|
+
return this.stacks[index];
|
|
31
|
+
}
|
|
32
|
+
getLastIndex(pathname, stateWith = 1) {
|
|
33
|
+
const list = [...this.stacks].reverse();
|
|
34
|
+
return list.findIndex((page, i) => { var _a; return i >= stateWith && ((_a = page.path) === null || _a === void 0 ? void 0 : _a.replace(/\?.*/g, '')) === pathname; });
|
|
35
|
+
}
|
|
36
|
+
getDelta(pathname) {
|
|
37
|
+
if (this.backDelta >= 1) {
|
|
38
|
+
return this.backDelta;
|
|
39
|
+
}
|
|
40
|
+
const index = this.getLastIndex(pathname);
|
|
41
|
+
// NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
|
|
42
|
+
return index > 0 ? index : 1;
|
|
43
|
+
}
|
|
44
|
+
getPrevIndex(pathname, stateWith = 1) {
|
|
45
|
+
const lastIndex = this.getLastIndex(pathname, stateWith);
|
|
46
|
+
if (lastIndex < 0) {
|
|
47
|
+
return -1;
|
|
48
|
+
}
|
|
49
|
+
return this.length - 1 - lastIndex;
|
|
50
|
+
}
|
|
51
|
+
pop() {
|
|
52
|
+
return this.stacks.pop();
|
|
53
|
+
}
|
|
54
|
+
push(page) {
|
|
55
|
+
return this.stacks.push(page);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const stacks = new Stacks();
|
|
59
|
+
export default stacks;
|
package/dist/tabbar.d.ts
ADDED
package/dist/tabbar.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { initTabBarApis } from '@tarojs/taro';
|
|
3
|
+
import { history } from './history';
|
|
4
|
+
export function initTabbar(config) {
|
|
5
|
+
if (config.tabBar == null) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
// TODO: custom-tab-bar
|
|
9
|
+
const tabbar = document.createElement('taro-tabbar');
|
|
10
|
+
const homePage = config.entryPagePath || (config.pages ? config.pages[0] : '');
|
|
11
|
+
tabbar.conf = config.tabBar;
|
|
12
|
+
tabbar.conf.homePage = history.location.pathname === '/' ? homePage : history.location.pathname;
|
|
13
|
+
const routerConfig = config.router;
|
|
14
|
+
tabbar.conf.mode = routerConfig && routerConfig.mode ? routerConfig.mode : 'hash';
|
|
15
|
+
if (routerConfig.customRoutes) {
|
|
16
|
+
tabbar.conf.custom = true;
|
|
17
|
+
tabbar.conf.customRoutes = routerConfig.customRoutes;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
tabbar.conf.custom = false;
|
|
21
|
+
tabbar.conf.customRoutes = {};
|
|
22
|
+
}
|
|
23
|
+
if (typeof routerConfig.basename !== 'undefined') {
|
|
24
|
+
tabbar.conf.basename = routerConfig.basename;
|
|
25
|
+
}
|
|
26
|
+
const container = document.getElementById('container');
|
|
27
|
+
container === null || container === void 0 ? void 0 : container.appendChild(tabbar);
|
|
28
|
+
initTabBarApis(config);
|
|
29
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const addLeadingSlash: (url?: string) => string;
|
|
2
|
+
export declare const hasBasename: (path?: string, prefix?: string) => boolean;
|
|
3
|
+
export declare const stripBasename: (path?: string, prefix?: string) => string;
|
|
4
|
+
export declare const stripTrailing: (str?: string) => string;
|
|
5
|
+
export declare const stripSuffix: (path?: string, suffix?: string) => string;
|
|
6
|
+
declare class RoutesAlias {
|
|
7
|
+
conf: Array<string[]>;
|
|
8
|
+
set(customRoutes?: Record<string, string | string[]>): void;
|
|
9
|
+
getConfig: (url?: string) => string[];
|
|
10
|
+
getOrigin: (url?: string) => string;
|
|
11
|
+
getAlias: (url?: string) => string;
|
|
12
|
+
getAll: (url?: string) => string[];
|
|
13
|
+
}
|
|
14
|
+
export declare const routesAlias: RoutesAlias;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// export const removeLeadingSlash = (str = '') => str.replace(/^\.?\//, '')
|
|
2
|
+
// export const removeTrailingSearch = (str = '') => str.replace(/\?[\s\S]*$/, '')
|
|
3
|
+
export const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);
|
|
4
|
+
export const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\/|\\?|#|$)', 'i').test(path) || path === prefix;
|
|
5
|
+
export const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;
|
|
6
|
+
export const stripTrailing = (str = '') => str.replace(/[?#][\s\S]*$/, '');
|
|
7
|
+
export const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;
|
|
8
|
+
class RoutesAlias {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.conf = [];
|
|
11
|
+
this.getConfig = (url = '') => {
|
|
12
|
+
const customRoute = this.conf.filter((arr) => {
|
|
13
|
+
return arr.includes(url);
|
|
14
|
+
});
|
|
15
|
+
return customRoute[0];
|
|
16
|
+
};
|
|
17
|
+
this.getOrigin = (url = '') => {
|
|
18
|
+
var _a;
|
|
19
|
+
return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[0]) || url;
|
|
20
|
+
};
|
|
21
|
+
this.getAlias = (url = '') => {
|
|
22
|
+
var _a;
|
|
23
|
+
return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[1]) || url;
|
|
24
|
+
};
|
|
25
|
+
this.getAll = (url = '') => {
|
|
26
|
+
return this.conf
|
|
27
|
+
.filter((arr) => arr.includes(url))
|
|
28
|
+
.reduceRight((p, a) => {
|
|
29
|
+
p.unshift(a[1]);
|
|
30
|
+
return p;
|
|
31
|
+
}, []);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
set(customRoutes = {}) {
|
|
35
|
+
for (let key in customRoutes) {
|
|
36
|
+
const path = customRoutes[key];
|
|
37
|
+
key = addLeadingSlash(key);
|
|
38
|
+
if (typeof path === 'string') {
|
|
39
|
+
this.conf.push([key, addLeadingSlash(path)]);
|
|
40
|
+
}
|
|
41
|
+
else if ((path === null || path === void 0 ? void 0 : path.length) > 0) {
|
|
42
|
+
this.conf.push(...path.map(p => [key, addLeadingSlash(p)]));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const routesAlias = new RoutesAlias();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import MobileDetect from 'mobile-detect';
|
|
11
|
+
let md;
|
|
12
|
+
let preTitle = document.title;
|
|
13
|
+
let isLoadDdEntry = false;
|
|
14
|
+
export function getMobileDetect() {
|
|
15
|
+
if (!md) {
|
|
16
|
+
md = new MobileDetect(navigator.userAgent);
|
|
17
|
+
}
|
|
18
|
+
return md;
|
|
19
|
+
}
|
|
20
|
+
export function setTitle(title) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
if (preTitle === title)
|
|
23
|
+
return title;
|
|
24
|
+
document.title = title;
|
|
25
|
+
preTitle = title;
|
|
26
|
+
if (process.env.SUPPORT_DINGTALK_NAVIGATE !== 'disabled' && isDingTalk()) {
|
|
27
|
+
if (!isLoadDdEntry) {
|
|
28
|
+
isLoadDdEntry = true;
|
|
29
|
+
require('dingtalk-jsapi/platform');
|
|
30
|
+
}
|
|
31
|
+
const setDingTitle = require('dingtalk-jsapi/api/biz/navigation/setTitle').default;
|
|
32
|
+
setDingTitle({ title });
|
|
33
|
+
}
|
|
34
|
+
return title;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export function isWeixin() {
|
|
38
|
+
const md = getMobileDetect();
|
|
39
|
+
return md.match(/MicroMessenger/ig);
|
|
40
|
+
}
|
|
41
|
+
export function isDingTalk() {
|
|
42
|
+
const md = getMobileDetect();
|
|
43
|
+
return md.match(/DingTalk/ig);
|
|
44
|
+
}
|
package/package.json
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/router",
|
|
3
|
-
"version": "3.5.0
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Taro-router",
|
|
5
|
-
"
|
|
5
|
+
"browser": "dist/index.esm.js",
|
|
6
|
+
"main:h5": "dist/index.js",
|
|
6
7
|
"main": "dist/index.js",
|
|
7
|
-
"module": "dist/
|
|
8
|
-
"typings": "
|
|
8
|
+
"module": "dist/index.cjs.js",
|
|
9
|
+
"typings": "dist/index.d.ts",
|
|
9
10
|
"files": [
|
|
10
11
|
"dist",
|
|
11
12
|
"types",
|
|
12
13
|
"index.js"
|
|
13
14
|
],
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "rollup -c rollup.config.js",
|
|
16
|
-
"dev": "rollup -c rollup.config.js --watch",
|
|
17
|
-
"test": "jest",
|
|
18
|
-
"test:dev": "jest --watch"
|
|
19
|
-
},
|
|
20
15
|
"repository": {
|
|
21
16
|
"type": "git",
|
|
22
17
|
"url": "git+https://github.com/NervJS/taro.git"
|
|
@@ -27,12 +22,18 @@
|
|
|
27
22
|
"author": "O2Team",
|
|
28
23
|
"license": "MIT",
|
|
29
24
|
"dependencies": {
|
|
30
|
-
"@tarojs/runtime": "3.5.0
|
|
31
|
-
"@tarojs/taro": "3.5.0
|
|
25
|
+
"@tarojs/runtime": "3.5.0",
|
|
26
|
+
"@tarojs/taro": "3.5.0",
|
|
27
|
+
"dingtalk-jsapi": "~2.15.2",
|
|
32
28
|
"history": "^5.1.0",
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
29
|
+
"mobile-detect": "^1.4.2",
|
|
30
|
+
"query-string": "^7.1.1",
|
|
31
|
+
"universal-router": "^8.3.0"
|
|
36
32
|
},
|
|
37
|
-
"
|
|
38
|
-
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "rimraf ./dist && tsc && rollup -c",
|
|
35
|
+
"dev": "tsc -w",
|
|
36
|
+
"test": "jest",
|
|
37
|
+
"test:dev": "jest --watch"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/types/api.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface Base {
|
|
2
|
+
success?: (...args: any[]) => void
|
|
3
|
+
fail?: (...args: any[]) => void
|
|
4
|
+
complete?: (...args: any[]) => void
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface Option extends Base {
|
|
8
|
+
url: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface NavigateBackOption extends Base {
|
|
12
|
+
delta: number
|
|
13
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AppConfig, PageConfig } from '@tarojs/taro'
|
|
2
|
+
import type { IH5RouterConfig } from '@tarojs/taro/types/compile'
|
|
3
|
+
|
|
4
|
+
export interface Route extends PageConfig {
|
|
5
|
+
path?: string
|
|
6
|
+
load?: () => Promise<any>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface Router {
|
|
10
|
+
mode: IH5RouterConfig['mode']
|
|
11
|
+
basename: string
|
|
12
|
+
customRoutes?: Record<string, string | string[]>
|
|
13
|
+
pathname: string
|
|
14
|
+
forcePath?: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface SpaRouterConfig extends AppConfig {
|
|
18
|
+
routes: Route[]
|
|
19
|
+
router: Router
|
|
20
|
+
// 下拉刷新组件
|
|
21
|
+
PullDownRefresh?: any
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface MpaRouterConfig extends AppConfig {
|
|
25
|
+
route: Route,
|
|
26
|
+
pageName: string
|
|
27
|
+
router: Router
|
|
28
|
+
// 下拉刷新组件
|
|
29
|
+
PullDownRefresh?: any
|
|
30
|
+
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/universal-router/node_modules/path-to-regexp/index.js","../../../node_modules/universal-router/module.js","../../../node_modules/query-string/node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js"],"sourcesContent":["/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n","/*! Universal Router | MIT License | https://www.kriasoft.com/universal-router/ */\n\nimport pathToRegexp from 'path-to-regexp';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar cache = new Map();\n\nfunction decodeParam(val) {\n try {\n return decodeURIComponent(val);\n } catch (err) {\n return val;\n }\n}\n\nfunction matchPath(route, pathname, parentKeys, parentParams) {\n var end = !route.children;\n var cacheKey = (route.path || '') + \"|\" + end;\n var regexp = cache.get(cacheKey);\n\n if (!regexp) {\n var keys = [];\n regexp = {\n keys: keys,\n pattern: pathToRegexp(route.path || '', keys, {\n end: end\n })\n };\n cache.set(cacheKey, regexp);\n }\n\n var m = regexp.pattern.exec(pathname);\n\n if (!m) {\n return null;\n }\n\n var path = m[0];\n var params = Object.assign({}, parentParams);\n\n for (var i = 1; i < m.length; i++) {\n var key = regexp.keys[i - 1];\n var prop = key.name;\n var value = m[i];\n\n if (value !== undefined || !hasOwnProperty.call(params, prop)) {\n if (key.repeat) {\n params[prop] = value ? value.split(key.delimiter).map(decodeParam) : [];\n } else {\n params[prop] = value ? decodeParam(value) : value;\n }\n }\n }\n\n return {\n path: !end && path.charAt(path.length - 1) === '/' ? path.substr(1) : path,\n keys: parentKeys.concat(regexp.keys),\n params: params\n };\n}\n\nfunction matchRoute(route, baseUrl, pathname, parentKeys, parentParams) {\n var match;\n var childMatches;\n var childIndex = 0;\n return {\n next: function next(routeToSkip) {\n if (route === routeToSkip) {\n return {\n done: true\n };\n }\n\n if (!match) {\n match = matchPath(route, pathname, parentKeys, parentParams);\n\n if (match) {\n return {\n done: false,\n value: {\n route: route,\n baseUrl: baseUrl,\n path: match.path,\n keys: match.keys,\n params: match.params\n }\n };\n }\n }\n\n if (match && route.children) {\n while (childIndex < route.children.length) {\n if (!childMatches) {\n var childRoute = route.children[childIndex];\n childRoute.parent = route;\n childMatches = matchRoute(childRoute, baseUrl + match.path, pathname.substr(match.path.length), match.keys, match.params);\n }\n\n var childMatch = childMatches.next(routeToSkip);\n\n if (!childMatch.done) {\n return {\n done: false,\n value: childMatch.value\n };\n }\n\n childMatches = null;\n childIndex++;\n }\n }\n\n return {\n done: true\n };\n }\n };\n}\n\nfunction resolveRoute(context, params) {\n if (typeof context.route.action === 'function') {\n return context.route.action(context, params);\n }\n\n return undefined;\n}\n\nfunction isChildRoute(parentRoute, childRoute) {\n var route = childRoute;\n\n while (route) {\n route = route.parent;\n\n if (route === parentRoute) {\n return true;\n }\n }\n\n return false;\n}\n\nvar UniversalRouter = function () {\n function UniversalRouter(routes, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!routes || typeof routes !== 'object') {\n throw new TypeError('Invalid routes');\n }\n\n this.baseUrl = options.baseUrl || '';\n this.errorHandler = options.errorHandler;\n this.resolveRoute = options.resolveRoute || resolveRoute;\n this.context = Object.assign({\n router: this\n }, options.context);\n this.root = Array.isArray(routes) ? {\n path: '',\n children: routes,\n parent: null\n } : routes;\n this.root.parent = null;\n }\n\n var _proto = UniversalRouter.prototype;\n\n _proto.resolve = function resolve(pathnameOrContext) {\n var _this = this;\n\n var context = Object.assign({}, this.context, {}, typeof pathnameOrContext === 'string' ? {\n pathname: pathnameOrContext\n } : pathnameOrContext);\n var match = matchRoute(this.root, this.baseUrl, context.pathname.substr(this.baseUrl.length), [], null);\n var resolve = this.resolveRoute;\n var matches = null;\n var nextMatches = null;\n var currentContext = context;\n\n function next(resume, parent, prevResult) {\n if (parent === void 0) {\n parent = matches.value.route;\n }\n\n var routeToSkip = prevResult === null && !matches.done && matches.value.route;\n matches = nextMatches || match.next(routeToSkip);\n nextMatches = null;\n\n if (!resume) {\n if (matches.done || !isChildRoute(parent, matches.value.route)) {\n nextMatches = matches;\n return Promise.resolve(null);\n }\n }\n\n if (matches.done) {\n var error = new Error('Route not found');\n error.status = 404;\n return Promise.reject(error);\n }\n\n currentContext = Object.assign({}, context, {}, matches.value);\n return Promise.resolve(resolve(currentContext, matches.value.params)).then(function (result) {\n if (result !== null && result !== undefined) {\n return result;\n }\n\n return next(resume, parent, result);\n });\n }\n\n context.next = next;\n return Promise.resolve().then(function () {\n return next(true, _this.root);\n })[\"catch\"](function (error) {\n if (_this.errorHandler) {\n return _this.errorHandler(error, currentContext);\n }\n\n throw error;\n });\n };\n\n return UniversalRouter;\n}();\n\nUniversalRouter.pathToRegexp = pathToRegexp;\n\nexport default UniversalRouter;\n//# sourceMappingURL=module.js.map\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n"],"names":["pathToRegexpModule","pathToRegexp","match","regexpToFunction","parse","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","RegExp","join","str","options","tokens","key","index","path","defaultDelimiter","delimiter","whitelist","undefined","pathEscaped","res","exec","m","escaped","offset","slice","length","prev","name","capture","group","modifier","k","c","matches","indexOf","push","repeat","optional","pattern","prefix","escapeGroup","escapeString","substr","keys","re","pathname","params","decode","decodeURIComponent","i","split","map","value","Array","_typeof","flags","data","encode","encodeURIComponent","validate","token","segment","isArray","TypeError","j","test","String","replace","sensitive","regexpToRegexp","groups","source","arrayToRegexp","parts","stringToRegexp","strict","start","end","endsWith","concat","route","endToken","isEndDelimited","hasOwnProperty","Object","prototype","cache","cacheKey","regexp","prop","decodeParam","parentKeys","strictUriEncode","x","charCodeAt","toString","toUpperCase","singleMatcher","multiMatcher","decodeComponents","components","err","left","right","call","input","customDecodeURIComponent","replaceMap","result","entries","decodeUriComponent","encodedURI","splitOnFirst","string","separator","separatorIndex","filterObj","obj","predicate","ret","isArr","val","require$$0","decodeComponent","require$$1","require$$2","filterObject","require$$3","isNullOrUndefined","encoderForArrayFormat","arrayFormat","skipNull","skipEmptyString","arrayFormatSeparator","parserForArrayFormat","accumulator","includes","isEncodedArray","newValue","item","validateArrayFormatSeparator","keysSorter","sort","a","b","Number","removeHash","hashStart","getHash","url","hash","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","query","assign","formatter","create","param","reduce","Boolean","exports","object","shouldFilter","objectCopy","filter","url_","parseFragmentIdentifier","fragmentIdentifier","queryFromUrl","parsedQueryFromUrl","queryString","stringify","parseUrl","stringifyUrl","exclusionFilter","pick"],"mappings":"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"}
|