@heathenjs/taro-router 1.1.5
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/README.md +46 -0
- package/dist/back-listener/index.d.ts +7 -0
- package/dist/back-listener/index.js +21 -0
- package/dist/back-listener/index.js.map +1 -0
- package/dist/back-listener/type.d.ts +2 -0
- package/dist/back-listener/type.js +3 -0
- package/dist/back-listener/type.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/index.d.ts +41 -0
- package/dist/core/index.js +213 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/type.d.ts +28 -0
- package/dist/core/type.js +15 -0
- package/dist/core/type.js.map +1 -0
- package/dist/exception/index.d.ts +1 -0
- package/dist/exception/index.js +6 -0
- package/dist/exception/index.js.map +1 -0
- package/dist/exception/no-page.d.ts +3 -0
- package/dist/exception/no-page.js +10 -0
- package/dist/exception/no-page.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/index.d.ts +10 -0
- package/dist/middleware/index.js +50 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/type.d.ts +13 -0
- package/dist/middleware/type.js +3 -0
- package/dist/middleware/type.js.map +1 -0
- package/dist/page-data/index.d.ts +15 -0
- package/dist/page-data/index.js +52 -0
- package/dist/page-data/index.js.map +1 -0
- package/dist/utils/compose.d.ts +9 -0
- package/dist/utils/compose.js +46 -0
- package/dist/utils/compose.js.map +1 -0
- package/dist/utils/get-current-route-key.d.ts +1 -0
- package/dist/utils/get-current-route-key.js +16 -0
- package/dist/utils/get-current-route-key.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/is-nil.d.ts +1 -0
- package/dist/utils/is-nil.js +7 -0
- package/dist/utils/is-nil.js.map +1 -0
- package/dist/utils/merge-props.d.ts +3 -0
- package/dist/utils/merge-props.js +16 -0
- package/dist/utils/merge-props.js.map +1 -0
- package/package.json +37 -0
- package/src/back-listener/index.ts +21 -0
- package/src/back-listener/type.ts +3 -0
- package/src/constants.ts +1 -0
- package/src/core/index.ts +189 -0
- package/src/core/type.ts +30 -0
- package/src/exception/index.ts +1 -0
- package/src/exception/no-page.ts +5 -0
- package/src/index.ts +12 -0
- package/src/middleware/index.ts +40 -0
- package/src/middleware/type.ts +16 -0
- package/src/page-data/index.ts +67 -0
- package/src/utils/compose.ts +37 -0
- package/src/utils/get-current-route-key.ts +10 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/is-nil.ts +3 -0
- package/src/utils/merge-props.ts +16 -0
- package/tsconfig.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @heathenjs/taro-router
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@heathenjs/taro-router)
|
|
4
|
+
[](https://www.npmjs.com/package/@heathenjs/taro-router)
|
|
5
|
+
|
|
6
|
+
Taro小程序路由库
|
|
7
|
+
|
|
8
|
+
## 特性
|
|
9
|
+
<ol>
|
|
10
|
+
<li>Promise 跳转,便于管理多页面的业务流程</li>
|
|
11
|
+
<li>支持任意类型、任意大小的跳转参数</li>
|
|
12
|
+
<li>路由中间件能力</li>
|
|
13
|
+
</ol>
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
强烈建议与配套的 [@heathenjs/taro-router-plugin](https://www.npmjs.com/package/@heathenjs/taro-router-plugin) 一同安装,享受路由自动生成、跳转参数类型校验等能力带来的开发体验
|
|
17
|
+
#### pnpm
|
|
18
|
+
```bash
|
|
19
|
+
pnpm add @heathenjs/taro-router-plugin --save-dev
|
|
20
|
+
pnpm add @heathenjs/taro-router
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
#### yarn
|
|
24
|
+
```bash
|
|
25
|
+
yarn add @heathenjs/taro-router-plugin --dev
|
|
26
|
+
yarn add @heathenjs/taro-router
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
#### npm
|
|
30
|
+
```bash
|
|
31
|
+
npm install @heathenjs/taro-router-plugin --save-dev
|
|
32
|
+
npm install @heathenjs/taro-router --save
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 解决了什么问题?
|
|
36
|
+
#### 小程序进行路由跳转时,手写的 url 无法确认链接正确性,且对于必须带参数的页面(如详情页)不能很好的进行跳转前约束;
|
|
37
|
+
- 通过约定的目录结构生产路由跳转方法,通过指定的 API 跳转而不是手写 url;
|
|
38
|
+
- 给特定的页面添加 route.config.ts 描述进入该页面时所需参数类型;
|
|
39
|
+
#### 页面跳转希望传递自定义对象时无法操作;
|
|
40
|
+
- 跳转 API 支持传入任意类型的参数,在跳转到的页面中通过 useParams 获取该参数;
|
|
41
|
+
#### 无法描述“从页面返回时”的场景,例如进入某个页面进行操作并返回后,刷新当前页面这种场景难以实现;
|
|
42
|
+
- 将跳转行为封装为一个 Promise,当从跳转到的页面返回时,这个 Promise 被 resolve;
|
|
43
|
+
- 支持设定当前页面的 BackData,作为上述 Promise 的参数;
|
|
44
|
+
#### 路由鉴权写起来相当啰嗦,而且难以和业务代码解耦;
|
|
45
|
+
- 页面的 route.config.ts 支持配置页面的 Ext 参数(例如所需的权限码),生成路由时自动写入到跳转 API 中;
|
|
46
|
+
- 增加路由中间件功能,在跳转时按顺序进入中间件,则可以添加中间件对上述 Ext 参数结合当前用户身份进行权限校验;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Route } from '../core';
|
|
2
|
+
import { RouterBackListener } from './type';
|
|
3
|
+
export type { RouterBackListener };
|
|
4
|
+
export declare const routerBackListenerCollection: RouterBackListener[];
|
|
5
|
+
/** 注册全局路由返回监听 */
|
|
6
|
+
export declare function registerRouterBackListener(listener: RouterBackListener): void;
|
|
7
|
+
export declare function execRouterBackListener(from: Route): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routerBackListenerCollection = void 0;
|
|
4
|
+
exports.registerRouterBackListener = registerRouterBackListener;
|
|
5
|
+
exports.execRouterBackListener = execRouterBackListener;
|
|
6
|
+
const taro_1 = require("@tarojs/taro");
|
|
7
|
+
exports.routerBackListenerCollection = [];
|
|
8
|
+
/** 注册全局路由返回监听 */
|
|
9
|
+
function registerRouterBackListener(listener) {
|
|
10
|
+
exports.routerBackListenerCollection.push(listener);
|
|
11
|
+
}
|
|
12
|
+
function execRouterBackListener(from) {
|
|
13
|
+
var _a;
|
|
14
|
+
const to = {
|
|
15
|
+
url: ((_a = taro_1.Current.router) === null || _a === void 0 ? void 0 : _a.path) || '',
|
|
16
|
+
};
|
|
17
|
+
for (const listener of exports.routerBackListenerCollection) {
|
|
18
|
+
listener(to, from);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/back-listener/index.ts"],"names":[],"mappings":";;;AASA,gEAEC;AAED,wDAOC;AApBD,uCAAuC;AAM1B,QAAA,4BAA4B,GAAyB,EAAE,CAAC;AAErE,iBAAiB;AACjB,SAAgB,0BAA0B,CAAC,QAA4B;IACrE,oCAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAW;;IAChD,MAAM,EAAE,GAAG;QACT,GAAG,EAAE,CAAA,MAAA,cAAO,CAAC,MAAM,0CAAE,IAAI,KAAI,EAAE;KAChC,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,oCAA4B,EAAE,CAAC;QACpD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/back-listener/type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ROUTE_KEY = "route_key";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { NavigateOptions, Route } from './type';
|
|
2
|
+
export { NavigateType } from './type';
|
|
3
|
+
export type { NavigateOptions, Route } from './type';
|
|
4
|
+
type RouterInitConfig = {
|
|
5
|
+
defaultExt: Record<any, any>;
|
|
6
|
+
};
|
|
7
|
+
export declare class Router {
|
|
8
|
+
private static defaultExt;
|
|
9
|
+
static init(initConfig: RouterInitConfig): void;
|
|
10
|
+
/**
|
|
11
|
+
* 页面跳转
|
|
12
|
+
* @param route 目标路由对象
|
|
13
|
+
* @param options 跳转选项
|
|
14
|
+
*/
|
|
15
|
+
static navigate<T = any>(route: Route, options?: NavigateOptions): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* 返回上一个页面
|
|
18
|
+
* @param result 返回给上一个页面的数据,如果 result 是 Error 的实例,则是抛出异常给上一个页面
|
|
19
|
+
* @param options 其他选项
|
|
20
|
+
*/
|
|
21
|
+
static back(result?: unknown, options?: {
|
|
22
|
+
/** 返回的页面数,如果 delta 大于现有页面数,则返回到首页。 */
|
|
23
|
+
delta?: number;
|
|
24
|
+
}): Promise<TaroGeneral.CallbackResult>;
|
|
25
|
+
/**
|
|
26
|
+
* 设置页面返回的数据
|
|
27
|
+
* 当物理键返回和左上角返回也需要带数据时会使用到
|
|
28
|
+
*/
|
|
29
|
+
static setBackResult(result: any): void;
|
|
30
|
+
/**
|
|
31
|
+
* 获取页面携带过来的数据,混合顺序为 路由参数 > URL参数
|
|
32
|
+
* @param default_value 默认参数
|
|
33
|
+
*/
|
|
34
|
+
static getParams<T extends Record<string, any> = {}>(): T;
|
|
35
|
+
/**
|
|
36
|
+
* 获取页面携带过来的数据,混合顺序为 路由参数 > URL参数
|
|
37
|
+
* @param default_value 默认参数
|
|
38
|
+
*/
|
|
39
|
+
static useParams<T extends Record<string, any> = {}>(): T;
|
|
40
|
+
static setParams<T extends Record<string, any> = {}>(value: T): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.Router = exports.NavigateType = void 0;
|
|
46
|
+
const taro_1 = __importStar(require("@tarojs/taro"));
|
|
47
|
+
const react_1 = require("react");
|
|
48
|
+
const constants_1 = require("../constants");
|
|
49
|
+
const no_page_1 = require("../exception/no-page");
|
|
50
|
+
const middleware_1 = require("../middleware");
|
|
51
|
+
const page_data_1 = require("../page-data");
|
|
52
|
+
const back_listener_1 = require("../back-listener");
|
|
53
|
+
const utils_1 = require("../utils");
|
|
54
|
+
const type_1 = require("./type");
|
|
55
|
+
var type_2 = require("./type");
|
|
56
|
+
Object.defineProperty(exports, "NavigateType", { enumerable: true, get: function () { return type_2.NavigateType; } });
|
|
57
|
+
class Router {
|
|
58
|
+
static init(initConfig) {
|
|
59
|
+
this.defaultExt = initConfig.defaultExt;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 页面跳转
|
|
63
|
+
* @param route 目标路由对象
|
|
64
|
+
* @param options 跳转选项
|
|
65
|
+
*/
|
|
66
|
+
static navigate(route, options) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
var _a;
|
|
69
|
+
options = Object.assign({ type: type_1.NavigateType.navigateTo, params: {} }, options);
|
|
70
|
+
options.params = Object.assign({}, options.params);
|
|
71
|
+
const route_key = Date.now() + '';
|
|
72
|
+
// TODO: taro官方缺少类型定义,as any过渡一下
|
|
73
|
+
taro_1.Current['_page'] = taro_1.Current.page;
|
|
74
|
+
Object.defineProperties(taro_1.Current, {
|
|
75
|
+
page: {
|
|
76
|
+
set: function (page) {
|
|
77
|
+
if (page === undefined || page === null) {
|
|
78
|
+
this._page = page;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (!page[constants_1.ROUTE_KEY]) {
|
|
82
|
+
const originOnUnload = page.onUnload;
|
|
83
|
+
page.onUnload = function () {
|
|
84
|
+
originOnUnload && originOnUnload.apply(this);
|
|
85
|
+
page_data_1.PageData.emitBack(route_key);
|
|
86
|
+
setTimeout(() => (0, back_listener_1.execRouterBackListener)(route));
|
|
87
|
+
};
|
|
88
|
+
page[constants_1.ROUTE_KEY] = route_key;
|
|
89
|
+
}
|
|
90
|
+
this._page = page;
|
|
91
|
+
},
|
|
92
|
+
get: function () {
|
|
93
|
+
return this._page;
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
if (options.params) {
|
|
98
|
+
page_data_1.PageData.setPageData(route_key, options.params);
|
|
99
|
+
}
|
|
100
|
+
const pathToPagePackageName = ((_a = Router === null || Router === void 0 ? void 0 : Router['_pathToPagePackageNameObj']) !== null && _a !== void 0 ? _a : []);
|
|
101
|
+
const context = {
|
|
102
|
+
route: {
|
|
103
|
+
url: route.url,
|
|
104
|
+
ext: (0, utils_1.mergeProps)(this.defaultExt, route.ext),
|
|
105
|
+
},
|
|
106
|
+
type: options.type,
|
|
107
|
+
params: options.params,
|
|
108
|
+
packageName: pathToPagePackageName[route.url],
|
|
109
|
+
};
|
|
110
|
+
const middlewares = (0, middleware_1.getMiddlewares)(context);
|
|
111
|
+
middlewares.push((_, next) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
switch (options.type) {
|
|
113
|
+
case type_1.NavigateType.reLaunch:
|
|
114
|
+
yield taro_1.default.reLaunch({
|
|
115
|
+
url: route.url,
|
|
116
|
+
complete: options === null || options === void 0 ? void 0 : options.complete,
|
|
117
|
+
fail: options === null || options === void 0 ? void 0 : options.fail,
|
|
118
|
+
success: options === null || options === void 0 ? void 0 : options.success,
|
|
119
|
+
});
|
|
120
|
+
break;
|
|
121
|
+
case type_1.NavigateType.redirectTo:
|
|
122
|
+
yield taro_1.default.redirectTo({
|
|
123
|
+
url: route.url,
|
|
124
|
+
complete: options === null || options === void 0 ? void 0 : options.complete,
|
|
125
|
+
fail: options === null || options === void 0 ? void 0 : options.fail,
|
|
126
|
+
success: options === null || options === void 0 ? void 0 : options.success,
|
|
127
|
+
});
|
|
128
|
+
break;
|
|
129
|
+
case type_1.NavigateType.switchTab:
|
|
130
|
+
yield taro_1.default.switchTab({
|
|
131
|
+
url: route.url,
|
|
132
|
+
complete: options === null || options === void 0 ? void 0 : options.complete,
|
|
133
|
+
fail: options === null || options === void 0 ? void 0 : options.fail,
|
|
134
|
+
success: options === null || options === void 0 ? void 0 : options.success,
|
|
135
|
+
});
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
yield taro_1.default.navigateTo({
|
|
139
|
+
url: route.url,
|
|
140
|
+
complete: options === null || options === void 0 ? void 0 : options.complete,
|
|
141
|
+
fail: options === null || options === void 0 ? void 0 : options.fail,
|
|
142
|
+
success: options === null || options === void 0 ? void 0 : options.success,
|
|
143
|
+
});
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
next();
|
|
147
|
+
}));
|
|
148
|
+
return new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
try {
|
|
150
|
+
page_data_1.PageData.setPagePromise(route_key, { res, rej });
|
|
151
|
+
yield (0, middleware_1.execMiddlewares)(middlewares, context);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
rej(err);
|
|
155
|
+
}
|
|
156
|
+
}));
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 返回上一个页面
|
|
161
|
+
* @param result 返回给上一个页面的数据,如果 result 是 Error 的实例,则是抛出异常给上一个页面
|
|
162
|
+
* @param options 其他选项
|
|
163
|
+
*/
|
|
164
|
+
static back(result, options) {
|
|
165
|
+
if (!(0, utils_1.isNil)(result)) {
|
|
166
|
+
page_data_1.PageData.setBackResult(result);
|
|
167
|
+
}
|
|
168
|
+
const currentPages = taro_1.default.getCurrentPages();
|
|
169
|
+
if (currentPages.length > 1) {
|
|
170
|
+
return taro_1.default.navigateBack(options);
|
|
171
|
+
}
|
|
172
|
+
throw new no_page_1.NoPageException();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 设置页面返回的数据
|
|
176
|
+
* 当物理键返回和左上角返回也需要带数据时会使用到
|
|
177
|
+
*/
|
|
178
|
+
static setBackResult(result) {
|
|
179
|
+
page_data_1.PageData.setBackResult(result);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 获取页面携带过来的数据,混合顺序为 路由参数 > URL参数
|
|
183
|
+
* @param default_value 默认参数
|
|
184
|
+
*/
|
|
185
|
+
static getParams() {
|
|
186
|
+
var _a;
|
|
187
|
+
const urlParams = Object.assign({}, (_a = (0, taro_1.getCurrentInstance)().router) === null || _a === void 0 ? void 0 : _a.params);
|
|
188
|
+
const routerParams = page_data_1.PageData.getPageData();
|
|
189
|
+
return (0, utils_1.mergeProps)(urlParams, routerParams);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 获取页面携带过来的数据,混合顺序为 路由参数 > URL参数
|
|
193
|
+
* @param default_value 默认参数
|
|
194
|
+
*/
|
|
195
|
+
static useParams() {
|
|
196
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
197
|
+
const { current } = (0, react_1.useRef)({
|
|
198
|
+
obj: {},
|
|
199
|
+
initialized: false,
|
|
200
|
+
});
|
|
201
|
+
if (current.initialized === false) {
|
|
202
|
+
current.obj = this.getParams();
|
|
203
|
+
current.initialized = true;
|
|
204
|
+
}
|
|
205
|
+
return current.obj;
|
|
206
|
+
}
|
|
207
|
+
static setParams(value) {
|
|
208
|
+
const route_key = (0, utils_1.getCurrentRouteKey)();
|
|
209
|
+
page_data_1.PageData.setPageData(route_key, value);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.Router = Router;
|
|
213
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface Route<E = any> {
|
|
2
|
+
/** 页面 url,与配置在 app.config.ts 中的一致 */
|
|
3
|
+
url: string;
|
|
4
|
+
/** 附加数据 */
|
|
5
|
+
ext?: E;
|
|
6
|
+
}
|
|
7
|
+
export declare enum NavigateType {
|
|
8
|
+
/** 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 Router.back 可以返回到原页面。小程序中页面栈最多十层。 */
|
|
9
|
+
navigateTo = "navigateTo",
|
|
10
|
+
/** 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 */
|
|
11
|
+
redirectTo = "redirectTo",
|
|
12
|
+
/** 关闭所有页面,打开到应用内的某个页面 */
|
|
13
|
+
reLaunch = "reLaunch",
|
|
14
|
+
/** 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 */
|
|
15
|
+
switchTab = "switchTab"
|
|
16
|
+
}
|
|
17
|
+
export interface NavigateOptions {
|
|
18
|
+
/** 跳转类型 */
|
|
19
|
+
type?: NavigateType;
|
|
20
|
+
/** 路由参数 */
|
|
21
|
+
params?: unknown;
|
|
22
|
+
/** 跳转完成的回调方法 */
|
|
23
|
+
complete?: (res: TaroGeneral.CallbackResult) => void;
|
|
24
|
+
/** 跳转失败的回调方法 */
|
|
25
|
+
fail?: (res: TaroGeneral.CallbackResult) => void;
|
|
26
|
+
/** 跳转成功的回调方法 */
|
|
27
|
+
success?: (res: TaroGeneral.CallbackResult) => void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NavigateType = void 0;
|
|
4
|
+
var NavigateType;
|
|
5
|
+
(function (NavigateType) {
|
|
6
|
+
/** 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 Router.back 可以返回到原页面。小程序中页面栈最多十层。 */
|
|
7
|
+
NavigateType["navigateTo"] = "navigateTo";
|
|
8
|
+
/** 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 */
|
|
9
|
+
NavigateType["redirectTo"] = "redirectTo";
|
|
10
|
+
/** 关闭所有页面,打开到应用内的某个页面 */
|
|
11
|
+
NavigateType["reLaunch"] = "reLaunch";
|
|
12
|
+
/** 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 */
|
|
13
|
+
NavigateType["switchTab"] = "switchTab";
|
|
14
|
+
})(NavigateType || (exports.NavigateType = NavigateType = {}));
|
|
15
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/core/type.ts"],"names":[],"mappings":";;;AAOA,IAAY,YASX;AATD,WAAY,YAAY;IACtB,+EAA+E;IAC/E,yCAAyB,CAAA;IACzB,6CAA6C;IAC7C,yCAAyB,CAAA;IACzB,yBAAyB;IACzB,qCAAqB,CAAA;IACrB,uCAAuC;IACvC,uCAAuB,CAAA;AACzB,CAAC,EATW,YAAY,4BAAZ,YAAY,QASvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NoPageException } from './no-page';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoPageException = void 0;
|
|
4
|
+
var no_page_1 = require("./no-page");
|
|
5
|
+
Object.defineProperty(exports, "NoPageException", { enumerable: true, get: function () { return no_page_1.NoPageException; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exception/index.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAAnC,0GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoPageException = void 0;
|
|
4
|
+
class NoPageException extends Error {
|
|
5
|
+
constructor() {
|
|
6
|
+
super('没有页面可以返回');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.NoPageException = NoPageException;
|
|
10
|
+
//# sourceMappingURL=no-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-page.js","sourceRoot":"","sources":["../../src/exception/no-page.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IACxC;QACE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF;AAJD,0CAIC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Router } from './core';
|
|
2
|
+
export { NoPageException } from './exception';
|
|
3
|
+
export { execMiddlewares, getMiddlewares, registerMiddleware, registerMiddlewares } from './middleware';
|
|
4
|
+
export { NavigateType, Router } from './core';
|
|
5
|
+
export { registerRouterBackListener } from './back-listener';
|
|
6
|
+
export type { Middleware, MiddlewareCondition, RouteContext } from './middleware';
|
|
7
|
+
export type { NavigateOptions, Route } from './core';
|
|
8
|
+
export type { RouterBackListener } from './back-listener';
|
|
9
|
+
export default Router;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerRouterBackListener = exports.Router = exports.NavigateType = exports.registerMiddlewares = exports.registerMiddleware = exports.getMiddlewares = exports.execMiddlewares = exports.NoPageException = void 0;
|
|
4
|
+
const core_1 = require("./core");
|
|
5
|
+
var exception_1 = require("./exception");
|
|
6
|
+
Object.defineProperty(exports, "NoPageException", { enumerable: true, get: function () { return exception_1.NoPageException; } });
|
|
7
|
+
var middleware_1 = require("./middleware");
|
|
8
|
+
Object.defineProperty(exports, "execMiddlewares", { enumerable: true, get: function () { return middleware_1.execMiddlewares; } });
|
|
9
|
+
Object.defineProperty(exports, "getMiddlewares", { enumerable: true, get: function () { return middleware_1.getMiddlewares; } });
|
|
10
|
+
Object.defineProperty(exports, "registerMiddleware", { enumerable: true, get: function () { return middleware_1.registerMiddleware; } });
|
|
11
|
+
Object.defineProperty(exports, "registerMiddlewares", { enumerable: true, get: function () { return middleware_1.registerMiddlewares; } });
|
|
12
|
+
var core_2 = require("./core");
|
|
13
|
+
Object.defineProperty(exports, "NavigateType", { enumerable: true, get: function () { return core_2.NavigateType; } });
|
|
14
|
+
Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return core_2.Router; } });
|
|
15
|
+
var back_listener_1 = require("./back-listener");
|
|
16
|
+
Object.defineProperty(exports, "registerRouterBackListener", { enumerable: true, get: function () { return back_listener_1.registerRouterBackListener; } });
|
|
17
|
+
exports.default = core_1.Router;
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AACxB,2CAAwG;AAA/F,6GAAA,eAAe,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AACjF,+BAA8C;AAArC,oGAAA,YAAY,OAAA;AAAE,8FAAA,MAAM,OAAA;AAC7B,iDAA6D;AAApD,2HAAA,0BAA0B,OAAA;AAMnC,kBAAe,aAAM,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Middleware, MiddlewareCondition, RouteContext } from './type';
|
|
2
|
+
export type { Middleware, MiddlewareCondition, RouteContext };
|
|
3
|
+
export declare const middlewareCollection: {
|
|
4
|
+
middlewares: Middleware[];
|
|
5
|
+
condition?: MiddlewareCondition;
|
|
6
|
+
}[];
|
|
7
|
+
export declare function registerMiddleware(middleware: Middleware, condition?: MiddlewareCondition): void;
|
|
8
|
+
export declare function registerMiddlewares(middlewares: Middleware[], condition?: MiddlewareCondition): void;
|
|
9
|
+
export declare function getMiddlewares(ctx: RouteContext): Middleware[];
|
|
10
|
+
export declare function execMiddlewares(middlewares: Middleware[], ctx: RouteContext): Promise<any>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.middlewareCollection = void 0;
|
|
13
|
+
exports.registerMiddleware = registerMiddleware;
|
|
14
|
+
exports.registerMiddlewares = registerMiddlewares;
|
|
15
|
+
exports.getMiddlewares = getMiddlewares;
|
|
16
|
+
exports.execMiddlewares = execMiddlewares;
|
|
17
|
+
const compose_1 = require("../utils/compose");
|
|
18
|
+
exports.middlewareCollection = [];
|
|
19
|
+
function registerMiddleware(middleware, condition) {
|
|
20
|
+
exports.middlewareCollection.push({
|
|
21
|
+
middlewares: [middleware],
|
|
22
|
+
condition,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function registerMiddlewares(middlewares, condition) {
|
|
26
|
+
exports.middlewareCollection.push({
|
|
27
|
+
middlewares,
|
|
28
|
+
condition,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function getMiddlewares(ctx) {
|
|
32
|
+
return exports.middlewareCollection
|
|
33
|
+
.filter((mc) => {
|
|
34
|
+
if (!mc.condition)
|
|
35
|
+
return true;
|
|
36
|
+
else
|
|
37
|
+
return mc.condition(ctx);
|
|
38
|
+
})
|
|
39
|
+
.map((mc) => mc.middlewares)
|
|
40
|
+
.reduce((pre, cur) => {
|
|
41
|
+
return [...pre, ...cur];
|
|
42
|
+
}, []);
|
|
43
|
+
}
|
|
44
|
+
function execMiddlewares(middlewares, ctx) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const fn = (0, compose_1.compose)(middlewares);
|
|
47
|
+
return yield fn(ctx);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAUA,gDAKC;AAED,kDAKC;AAED,wCAUC;AAED,0CAGC;AAvCD,8CAA2C;AAK9B,QAAA,oBAAoB,GAG3B,EAAE,CAAC;AAET,SAAgB,kBAAkB,CAAC,UAAsB,EAAE,SAA+B;IACxF,4BAAoB,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,WAAyB,EAAE,SAA+B;IAC5F,4BAAoB,CAAC,IAAI,CAAC;QACxB,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,GAAiB;IAC9C,OAAO,4BAAoB;SACxB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACb,IAAI,CAAC,EAAE,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;;YAC1B,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC;SAC3B,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED,SAAsB,eAAe,CAAC,WAAyB,EAAE,GAAiB;;QAChF,MAAM,EAAE,GAAG,IAAA,iBAAO,EAAC,WAAW,CAAC,CAAC;QAChC,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NavigateType, Route } from '../core/type';
|
|
2
|
+
export interface RouteContext<E = any> {
|
|
3
|
+
/** 目标路由 */
|
|
4
|
+
route: Route<E>;
|
|
5
|
+
/** 路由参数 */
|
|
6
|
+
params: any;
|
|
7
|
+
/** 跳转类型 */
|
|
8
|
+
type: NavigateType;
|
|
9
|
+
/** 路由所在包 */
|
|
10
|
+
packageName?: string;
|
|
11
|
+
}
|
|
12
|
+
export type Middleware<E = any> = (ctx: RouteContext<E>, next: () => Promise<any>) => Promise<void>;
|
|
13
|
+
export type MiddlewareCondition = (ctx: RouteContext) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/middleware/type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class PageData {
|
|
2
|
+
private static pageData;
|
|
3
|
+
private static pagePromise;
|
|
4
|
+
private static backResult;
|
|
5
|
+
static getPageData<T = any>(default_value?: T): T;
|
|
6
|
+
private static delPageData;
|
|
7
|
+
private static delPagePromise;
|
|
8
|
+
static setPageData(route_key: string, data: any): void;
|
|
9
|
+
static setPagePromise(route_key: string, options: {
|
|
10
|
+
res: (val: any) => void;
|
|
11
|
+
rej: (err: any) => void;
|
|
12
|
+
}): void;
|
|
13
|
+
static emitBack(route_key: string): void;
|
|
14
|
+
static setBackResult(result: any): void;
|
|
15
|
+
}
|