@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.
Files changed (67) hide show
  1. package/README.md +46 -0
  2. package/dist/back-listener/index.d.ts +7 -0
  3. package/dist/back-listener/index.js +21 -0
  4. package/dist/back-listener/index.js.map +1 -0
  5. package/dist/back-listener/type.d.ts +2 -0
  6. package/dist/back-listener/type.js +3 -0
  7. package/dist/back-listener/type.js.map +1 -0
  8. package/dist/constants.d.ts +1 -0
  9. package/dist/constants.js +5 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/core/index.d.ts +41 -0
  12. package/dist/core/index.js +213 -0
  13. package/dist/core/index.js.map +1 -0
  14. package/dist/core/type.d.ts +28 -0
  15. package/dist/core/type.js +15 -0
  16. package/dist/core/type.js.map +1 -0
  17. package/dist/exception/index.d.ts +1 -0
  18. package/dist/exception/index.js +6 -0
  19. package/dist/exception/index.js.map +1 -0
  20. package/dist/exception/no-page.d.ts +3 -0
  21. package/dist/exception/no-page.js +10 -0
  22. package/dist/exception/no-page.js.map +1 -0
  23. package/dist/index.d.ts +9 -0
  24. package/dist/index.js +18 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/middleware/index.d.ts +10 -0
  27. package/dist/middleware/index.js +50 -0
  28. package/dist/middleware/index.js.map +1 -0
  29. package/dist/middleware/type.d.ts +13 -0
  30. package/dist/middleware/type.js +3 -0
  31. package/dist/middleware/type.js.map +1 -0
  32. package/dist/page-data/index.d.ts +15 -0
  33. package/dist/page-data/index.js +52 -0
  34. package/dist/page-data/index.js.map +1 -0
  35. package/dist/utils/compose.d.ts +9 -0
  36. package/dist/utils/compose.js +46 -0
  37. package/dist/utils/compose.js.map +1 -0
  38. package/dist/utils/get-current-route-key.d.ts +1 -0
  39. package/dist/utils/get-current-route-key.js +16 -0
  40. package/dist/utils/get-current-route-key.js.map +1 -0
  41. package/dist/utils/index.d.ts +3 -0
  42. package/dist/utils/index.js +20 -0
  43. package/dist/utils/index.js.map +1 -0
  44. package/dist/utils/is-nil.d.ts +1 -0
  45. package/dist/utils/is-nil.js +7 -0
  46. package/dist/utils/is-nil.js.map +1 -0
  47. package/dist/utils/merge-props.d.ts +3 -0
  48. package/dist/utils/merge-props.js +16 -0
  49. package/dist/utils/merge-props.js.map +1 -0
  50. package/package.json +37 -0
  51. package/src/back-listener/index.ts +21 -0
  52. package/src/back-listener/type.ts +3 -0
  53. package/src/constants.ts +1 -0
  54. package/src/core/index.ts +189 -0
  55. package/src/core/type.ts +30 -0
  56. package/src/exception/index.ts +1 -0
  57. package/src/exception/no-page.ts +5 -0
  58. package/src/index.ts +12 -0
  59. package/src/middleware/index.ts +40 -0
  60. package/src/middleware/type.ts +16 -0
  61. package/src/page-data/index.ts +67 -0
  62. package/src/utils/compose.ts +37 -0
  63. package/src/utils/get-current-route-key.ts +10 -0
  64. package/src/utils/index.ts +3 -0
  65. package/src/utils/is-nil.ts +3 -0
  66. package/src/utils/merge-props.ts +16 -0
  67. 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,10 @@
1
+ import Taro from '@tarojs/taro';
2
+ import { ROUTE_KEY } from '../constants';
3
+
4
+ export function getCurrentRouteKey(): string {
5
+ if (!Taro.Current.page) {
6
+ return '';
7
+ }
8
+ // TODO: taro官方缺少类型定义,as any过渡一下
9
+ return (Taro.Current.page as any)[ROUTE_KEY];
10
+ }
@@ -0,0 +1,3 @@
1
+ export * from './get-current-route-key';
2
+ export * from './is-nil';
3
+ export * from './merge-props';
@@ -0,0 +1,3 @@
1
+ export function isNil(val: any) {
2
+ return val === undefined || val === null;
3
+ }
@@ -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
+ }