@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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compose `middleware` returning
|
|
3
|
+
* a fully valid middleware comprised
|
|
4
|
+
* of all those which are passed.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} middleware
|
|
7
|
+
* @return {Function}
|
|
8
|
+
*/
|
|
9
|
+
export function compose(middleware: Function[]) {
|
|
10
|
+
if (!Array.isArray(middleware)) throw new TypeError('Middleware stack must be an array!');
|
|
11
|
+
for (const fn of middleware) {
|
|
12
|
+
if (typeof fn !== 'function') throw new TypeError('Middleware must be composed of functions!');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param {Object} context
|
|
17
|
+
* @return {Promise}
|
|
18
|
+
* @api public
|
|
19
|
+
*/
|
|
20
|
+
return function (context: any, next?: Function) {
|
|
21
|
+
// last called middleware #
|
|
22
|
+
let index = -1;
|
|
23
|
+
const dispatch = (i: number): Promise<any> => {
|
|
24
|
+
if (i <= index) return Promise.reject(new Error('next() called multiple times'));
|
|
25
|
+
index = i;
|
|
26
|
+
let fn: Function | undefined = middleware[i];
|
|
27
|
+
if (i === middleware.length) fn = next;
|
|
28
|
+
if (!fn) return Promise.resolve();
|
|
29
|
+
try {
|
|
30
|
+
return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));
|
|
31
|
+
} catch (err) {
|
|
32
|
+
return Promise.reject(err);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return dispatch(0);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type MergeResult<T extends any[]> = T extends [infer First, ...infer Rest] ? First & MergeResult<Rest> : {};
|
|
2
|
+
|
|
3
|
+
export function mergeProps<T extends object[]>(...items: [...T]): MergeResult<T> {
|
|
4
|
+
const result: any = {};
|
|
5
|
+
|
|
6
|
+
for (const item of items) {
|
|
7
|
+
for (const key in item) {
|
|
8
|
+
const value = (item as any)[key];
|
|
9
|
+
if (value !== undefined) {
|
|
10
|
+
result[key] = value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return result as MergeResult<T>;
|
|
16
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "CommonJS",
|
|
5
|
+
"removeComments": false,
|
|
6
|
+
"moduleResolution": "node",
|
|
7
|
+
"experimentalDecorators": false,
|
|
8
|
+
"noImplicitAny": false,
|
|
9
|
+
"allowSyntheticDefaultImports": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"noUnusedLocals": false,
|
|
12
|
+
"noUnusedParameters": false,
|
|
13
|
+
"strictNullChecks": true,
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"sourceMap": true,
|
|
16
|
+
"skipLibCheck": true,
|
|
17
|
+
"target": "es2015",
|
|
18
|
+
"outDir": "dist",
|
|
19
|
+
"rootDir": "./src",
|
|
20
|
+
"declaration": true,
|
|
21
|
+
"noEmit": false
|
|
22
|
+
},
|
|
23
|
+
"include": ["./**/*.ts", "./**/*.tsx", "src/index.ts"],
|
|
24
|
+
"exclude": ["node_modules", "dist"]
|
|
25
|
+
}
|