From 17679fa4325fd0cfd945301b0f9d017d890ef562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= <970899069@qq.com> Date: Wed, 21 Jul 2021 14:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=93=E8=B4=A7app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 23 +- node_modules/.package-lock.json | 12 + node_modules/uni-simple-router/.eslintignore | 6 + node_modules/uni-simple-router/.eslintrc.js | 256 +++++++++ .../.github/ISSUE_TEMPLATE/bug_report.md | 39 ++ .../.github/ISSUE_TEMPLATE/feature_request.md | 21 + .../uni-simple-router/CODE_OF_CONDUCT.md | 76 +++ node_modules/uni-simple-router/LICENSE | 21 + node_modules/uni-simple-router/README.md | 49 ++ node_modules/uni-simple-router/RFC.md | 38 ++ .../uni-simple-router/api-extractor.json | 50 ++ node_modules/uni-simple-router/dist/link.vue | 79 +++ .../dist/uni-simple-router.d.ts | 330 +++++++++++ .../dist/uni-simple-router.js | 1 + node_modules/uni-simple-router/github.sh | 107 ++++ node_modules/uni-simple-router/jest.config.js | 5 + node_modules/uni-simple-router/package.json | 33 ++ .../uni-simple-router/src/H5/buildRouter.ts | 76 +++ .../uni-simple-router/src/H5/proxyHook.ts | 71 +++ .../uni-simple-router/src/app/appPatch.ts | 40 ++ .../src/applets/appletPatch.ts | 18 + .../uni-simple-router/src/component/link.vue | 79 +++ .../uni-simple-router/src/global.d.ts | 6 + .../uni-simple-router/src/helpers/config.ts | 102 ++++ .../src/helpers/createRouteMap.ts | 47 ++ .../src/helpers/lifeCycle.ts | 36 ++ .../uni-simple-router/src/helpers/mixins.ts | 97 ++++ .../uni-simple-router/src/helpers/utils.ts | 523 ++++++++++++++++++ .../uni-simple-router/src/helpers/warn.ts | 37 ++ node_modules/uni-simple-router/src/index.ts | 11 + .../uni-simple-router/src/options/base.ts | 236 ++++++++ .../uni-simple-router/src/options/config.ts | 84 +++ .../uni-simple-router/src/public/hooks.ts | 171 ++++++ .../uni-simple-router/src/public/methods.ts | 255 +++++++++ .../uni-simple-router/src/public/page.ts | 41 ++ .../uni-simple-router/src/public/query.ts | 200 +++++++ .../uni-simple-router/src/public/rewrite.ts | 158 ++++++ .../uni-simple-router/src/public/router.ts | 122 ++++ .../uni-simple-router/src/public/uniOrigin.ts | 99 ++++ .../test/path-to-regexp.spec.ts | 61 ++ node_modules/uni-simple-router/tsconfig.json | 19 + .../webpack/webpack.common.js | 35 ++ .../uni-simple-router/webpack/webpack.dev.js | 22 + .../uni-simple-router/webpack/webpack.prod.js | 19 + package-lock.json | 24 + package.json | 5 + pages.json | 2 +- router/index.js | 44 ++ unpackage/dist/dev/app-plus/app-service.js | 410 ++++++++++++++ 49 files changed, 4289 insertions(+), 7 deletions(-) create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/uni-simple-router/.eslintignore create mode 100644 node_modules/uni-simple-router/.eslintrc.js create mode 100644 node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 node_modules/uni-simple-router/CODE_OF_CONDUCT.md create mode 100644 node_modules/uni-simple-router/LICENSE create mode 100644 node_modules/uni-simple-router/README.md create mode 100644 node_modules/uni-simple-router/RFC.md create mode 100644 node_modules/uni-simple-router/api-extractor.json create mode 100644 node_modules/uni-simple-router/dist/link.vue create mode 100644 node_modules/uni-simple-router/dist/uni-simple-router.d.ts create mode 100644 node_modules/uni-simple-router/dist/uni-simple-router.js create mode 100644 node_modules/uni-simple-router/github.sh create mode 100644 node_modules/uni-simple-router/jest.config.js create mode 100644 node_modules/uni-simple-router/package.json create mode 100644 node_modules/uni-simple-router/src/H5/buildRouter.ts create mode 100644 node_modules/uni-simple-router/src/H5/proxyHook.ts create mode 100644 node_modules/uni-simple-router/src/app/appPatch.ts create mode 100644 node_modules/uni-simple-router/src/applets/appletPatch.ts create mode 100644 node_modules/uni-simple-router/src/component/link.vue create mode 100644 node_modules/uni-simple-router/src/global.d.ts create mode 100644 node_modules/uni-simple-router/src/helpers/config.ts create mode 100644 node_modules/uni-simple-router/src/helpers/createRouteMap.ts create mode 100644 node_modules/uni-simple-router/src/helpers/lifeCycle.ts create mode 100644 node_modules/uni-simple-router/src/helpers/mixins.ts create mode 100644 node_modules/uni-simple-router/src/helpers/utils.ts create mode 100644 node_modules/uni-simple-router/src/helpers/warn.ts create mode 100644 node_modules/uni-simple-router/src/index.ts create mode 100644 node_modules/uni-simple-router/src/options/base.ts create mode 100644 node_modules/uni-simple-router/src/options/config.ts create mode 100644 node_modules/uni-simple-router/src/public/hooks.ts create mode 100644 node_modules/uni-simple-router/src/public/methods.ts create mode 100644 node_modules/uni-simple-router/src/public/page.ts create mode 100644 node_modules/uni-simple-router/src/public/query.ts create mode 100644 node_modules/uni-simple-router/src/public/rewrite.ts create mode 100644 node_modules/uni-simple-router/src/public/router.ts create mode 100644 node_modules/uni-simple-router/src/public/uniOrigin.ts create mode 100644 node_modules/uni-simple-router/test/path-to-regexp.spec.ts create mode 100644 node_modules/uni-simple-router/tsconfig.json create mode 100644 node_modules/uni-simple-router/webpack/webpack.common.js create mode 100644 node_modules/uni-simple-router/webpack/webpack.dev.js create mode 100644 node_modules/uni-simple-router/webpack/webpack.prod.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 router/index.js create mode 100644 unpackage/dist/dev/app-plus/app-service.js diff --git a/main.js b/main.js index 0656173..a68d5a4 100644 --- a/main.js +++ b/main.js @@ -1,11 +1,22 @@ import Vue from 'vue' -import App from './App' +import App from './App' +import { router, RouterMount } from './router' + +Vue.use(router) Vue.config.productionTip = false App.mpType = 'app' - -const app = new Vue({ - ...App -}) -app.$mount() + +const app = new Vue({ + ...App +}) + +//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式 +// #ifdef H5 + RouterMount(app,router,'#app') +// #endif + +// #ifndef H5 + app.$mount(); //为了兼容小程序及app端必须这样写才有效果 +// #endif diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..41b8ff4 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,12 @@ +{ + "name": "barter-app", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/uni-simple-router": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.6.tgz", + "integrity": "sha512-n5gepoT3QcBrvVLeTCY/DjUjC4m1hNzwFlOa1VlCsww/4/34MGfvegpN9OWR8jOxxtUPKGHLAG0yODL/ITCwbw==" + } + } +} diff --git a/node_modules/uni-simple-router/.eslintignore b/node_modules/uni-simple-router/.eslintignore new file mode 100644 index 0000000..3661113 --- /dev/null +++ b/node_modules/uni-simple-router/.eslintignore @@ -0,0 +1,6 @@ +dist +/node_modules +/webpack +/src/global.d.ts +/test +/jest.config.js \ No newline at end of file diff --git a/node_modules/uni-simple-router/.eslintrc.js b/node_modules/uni-simple-router/.eslintrc.js new file mode 100644 index 0000000..7829320 --- /dev/null +++ b/node_modules/uni-simple-router/.eslintrc.js @@ -0,0 +1,256 @@ +module.exports = { + root: true, + env: { + browser: true, + node: true, + es6: true + }, + globals: { + uni: true, + plus: true, + getCurrentPages: true, + getApp: true, + __uniConfig: true, + __uniRoutes: true + }, + parser: '@typescript-eslint/parser', + extends: ['eslint:recommended'], + plugins: ['@typescript-eslint'], + rules: { + '@typescript-eslint/consistent-type-definitions': [ + 'error', + 'interface' + ], + 'accessor-pairs': 2, + 'arrow-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'block-spacing': [2, 'always'], + 'brace-style': [ + 2, + '1tbs', + { + allowSingleLine: true + } + ], + camelcase: [ + 0, + { + properties: 'always' + } + ], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [ + 2, + { + before: false, + after: true + } + ], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + curly: [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + eqeqeq: ['error', 'always', {null: 'ignore'}], + 'generator-star-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'handle-callback-err': [2, '^(err|error)$'], + indent: ['error', 4], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [ + 2, + { + beforeColon: false, + afterColon: true + } + ], + 'keyword-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'new-cap': [ + 2, + { + newIsCap: true, + capIsNew: false + } + ], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [ + 2, + { + allowLoop: false, + allowSwitch: false + } + ], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [ + 2, + { + max: 1 + } + ], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [ + 2, + { + defaultAssignment: false + } + ], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [ + 2, + { + vars: 'all', + args: 'none' + } + ], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [ + 2, + { + initialized: 'never' + } + ], + 'operator-linebreak': [ + 2, + 'after', + { + overrides: { + '?': 'before', + ':': 'before' + } + } + ], + 'padded-blocks': [2, 'never'], + quotes: [ + 2, + 'single', + { + avoidEscape: true, + allowTemplateLiterals: true + } + ], + semi: 'off', + 'semi-spacing': [ + 2, + { + before: false, + after: true + } + ], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [ + 2, + { + words: true, + nonwords: false + } + ], + 'spaced-comment': [ + 2, + 'always', + { + markers: [ + 'global', + 'globals', + 'eslint', + 'eslint-disable', + '*package', + '!', + ',' + ] + } + ], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + yoda: [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': 'off', + 'array-bracket-spacing': [2, 'never'] + } +}; diff --git a/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/bug_report.md b/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..ac848ad --- /dev/null +++ b/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: 报告问题(Bug report) +about: 详细描述你遇到的问题并寻求社区帮助 +title: '' +labels: '' +assignees: '' + +--- + +**问题描述** +[问题描述:尽可能简洁清晰地把问题描述清楚] + +**复现步骤** +[复现问题的步骤] +1. 启动 '...' +2. 点击 '....' +3. 查看 + +[或者可以直接贴源代码] + +**预期结果** +[使用简洁清晰的语言描述你希望生效的预期结果] + +**实际结果** +[这里请贴上你的报错截图或文字] + + +**系统信息:** + - 发行平台: [如 微信小程序、H5平台、5+ App等] + - 操作系统 [如 iOS 12.1.2、Android 7.0] + - HBuilderX版本 [如使用HBuilderX,则需提供 HBuilderX 版本号] + - 项目创建方法 [如使用Vue-cli创建/HBuilderX] + - 设备信息 [如 iPhone8 Plus] + - uni-simple-router版本 [如 v1.5.4] + + +**补充信息** +[可选] +[根据你的分析,出现这个问题的原因可能在哪里?] diff --git a/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/feature_request.md b/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..6559ac3 --- /dev/null +++ b/node_modules/uni-simple-router/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: 建议新功能(Feature Request) +about: 对 uni-simple-router 提出改善建议 +title: '' +labels: '' +assignees: '' + +--- + +**新功能描述** +简洁描述你希望补充完善的增强功能 + +**现状及问题** +[当前现状及由此导致的不便] + +**尝试方案** +[如果你有尝试绕开或其它解决方案,在这里描述你的建议方案] + +**补充信息** +[其它你认为有参考价值的信息] + diff --git a/node_modules/uni-simple-router/CODE_OF_CONDUCT.md b/node_modules/uni-simple-router/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d8f066b --- /dev/null +++ b/node_modules/uni-simple-router/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at 1606726660@qq.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/node_modules/uni-simple-router/LICENSE b/node_modules/uni-simple-router/LICENSE new file mode 100644 index 0000000..7eddf4c --- /dev/null +++ b/node_modules/uni-simple-router/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 hhyang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/uni-simple-router/README.md b/node_modules/uni-simple-router/README.md new file mode 100644 index 0000000..1dbb5d8 --- /dev/null +++ b/node_modules/uni-simple-router/README.md @@ -0,0 +1,49 @@ +# uni-simple-router + +> 一个更为简洁的[Vue-router](https://router.vuejs.org/zh/),专为 [uni-app](https://uniapp.dcloud.io/) 量身打造 + +## 介绍 + +`uni-simple-router` 是专为 [uni-app](https://uniapp.dcloud.io/) 打造的路由器。它与 [uni-app](https://uniapp.dcloud.io/) 核心深度集成,使使用 [uni-app](https://uniapp.dcloud.io/) 轻松构建单页应用程序变得轻而易举。功能包括: + +* `H5端` 能完全使用 `vue-router` 进行开发。 + +* 模块化,基于组件的路由器配置。 + +* 路由参数,查询,通配符。 + +* `H5端` 查看由 `uni-simple-router` 过渡系统提供动力的过渡效果。 + +* 更细粒度的导航控制。 + +* `H端`自动控制活动的CSS类链接。 + +* 通配小程序端、APP端、H5端。 + + +开始使用 [查看文档](http://hhyang.cn),或 [使用示例](https://github.com/SilurianYang/uni-simple-router/tree/master/examples)(请参见下面的示例)。 + +## 问题 +在提交问题的之前,请确保阅读 [“问题报告清单”](https://github.com/SilurianYang/uni-simple-router/issues/new?assignees=&labels=&template=bug_report.md&title=) 。不符合准则的问题可能会立即被解决。 + +## 贡献 +提出拉取请求之前,请务必先阅读 [查看文档](http://hhyang.cn)(请参见下面的示例)。。 + +## 变更日志 +[发行说明](https://github.com/SilurianYang/uni-simple-router/releases) 中记录了每个发行版的详细信息更改。 + +## 特别感谢 + +特别感谢 [markrgba](https://github.com/markrgba) 一直以来对文档和相关测试的维护。 + +## 技术交流 + +uni-app  插件 + + +## 成品预览 + +
+

uni-simple-router@2.0+ts+uni-app

+ +
\ No newline at end of file diff --git a/node_modules/uni-simple-router/RFC.md b/node_modules/uni-simple-router/RFC.md new file mode 100644 index 0000000..d96f6e8 --- /dev/null +++ b/node_modules/uni-simple-router/RFC.md @@ -0,0 +1,38 @@ +```flow + +st=>start: 开始跳转 +e=>end: 跳转结束 +platform=>operation: 平台选择 +H5=>condition: H5 +APP=>condition: APP +applets=>condition: 小程序 +routerBeforeEach=>operation: routerBeforeEach +lock=>condition: 跳转加锁 + +runH5=>operation: H5 +runAPP=>parallel: APP +runapplets=>parallel: 小程序 + +beforeRouteLeave=>condition: beforeRouteLeave +beforeEach=>condition: beforeEach +beforeEnter=>condition: beforeEnter +afterEach=>operation: afterEach +runJump=>condition: 执行跳转成功或者失败 +stopJump=>operation: next(false) 停止跳转 +errorJump=>operation: 跳转失败 +routerErrorEach=>operation: routerErrorEach +routerAfterEach=>operation: routerAfterEach + +st->platform(right)->applets(yes)->routerBeforeEach +applets(no)->APP(yes)->routerBeforeEach +APP(no)->H5(yes)->routerBeforeEach +routerBeforeEach->lock(yes)->runAPP(path1)->runapplets(path1)->beforeRouteLeave +lock(no)->runH5->beforeRouteLeave(no)->stopJump->routerErrorEach +beforeRouteLeave(yes)->beforeEach(no)->stopJump->routerErrorEach +beforeEach(yes)->beforeEnter(no)->stopJump->routerErrorEach +beforeEnter(yes)->runJump(no)->errorJump->routerErrorEach +runJump(yes)->afterEach->routerAfterEach +routerAfterEach->e +routerErrorEach->e + +``` \ No newline at end of file diff --git a/node_modules/uni-simple-router/api-extractor.json b/node_modules/uni-simple-router/api-extractor.json new file mode 100644 index 0000000..5458aab --- /dev/null +++ b/node_modules/uni-simple-router/api-extractor.json @@ -0,0 +1,50 @@ +// this the shared base config for all packages. +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + "mainEntryPointFilePath": "./dist/src/index.d.ts", + + "apiReport": { + "enabled": true, + "reportFolder": "./temp/" + }, + + "docModel": { + "enabled": true + }, + + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "./dist/.d.ts" + }, + + "tsdocMetadata": { + "enabled": false + }, + + "messages": { + "compilerMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + + "extractorMessageReporting": { + "default": { + "logLevel": "warning", + "addToApiReportFile": true + }, + + "ae-missing-release-tag": { + "logLevel": "none" + } + }, + + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + } + } + } + } + \ No newline at end of file diff --git a/node_modules/uni-simple-router/dist/link.vue b/node_modules/uni-simple-router/dist/link.vue new file mode 100644 index 0000000..873f412 --- /dev/null +++ b/node_modules/uni-simple-router/dist/link.vue @@ -0,0 +1,79 @@ + + + diff --git a/node_modules/uni-simple-router/dist/uni-simple-router.d.ts b/node_modules/uni-simple-router/dist/uni-simple-router.d.ts new file mode 100644 index 0000000..5a15585 --- /dev/null +++ b/node_modules/uni-simple-router/dist/uni-simple-router.d.ts @@ -0,0 +1,330 @@ + +export declare interface AppConfig { + registerLoadingPage?: boolean; + loadingPageStyle?: () => object; + loadingPageHook?: (view: any) => void; + launchedHook?: () => void; + animation?: startAnimationRule; +} + +export declare interface appletConfig { + animationDuration?: number; +} + +export declare interface appletsVueHookConfig { + app: appVueHookConfig; + page: pageVueHookConfig; + component: baseAppHookConfig[]; +} + +export declare interface appVueHookConfig extends baseAppHookConfig { + onLaunch: Array; + onShow: Array; + onHide: Array; +} + +export declare type appVueSortHookRule = 'beforeCreate' | 'created' | 'beforeMount' | 'mounted' | 'onLaunch' | 'onShow' | 'onHide' | 'beforeDestroy' | 'destroyed'; + +export declare type backTypeRule = 'backbutton' | 'navigateBack'; + +export declare interface baseAppHookConfig { + [key: string]: Array; + created: Array; + beforeMount: Array; + mounted: Array; + beforeDestroy: Array; + destroyed: Array; +} + +export declare type comVueSortHookRule = 'beforeCreate' | 'created' | 'beforeMount' | 'mounted' | 'beforeDestroy' | 'destroyed'; + +export declare function createRouter(params: InstantiateConfig): Router; + +export declare interface debuggerArrayConfig { + error?: boolean; + warn?: boolean; + log?: boolean; +} + +export declare type debuggerConfig = boolean | debuggerArrayConfig; + +export declare interface endAnimationRule { + animationType?: endAnimationType; + animationDuration?: number; +} + +export declare type endAnimationType = 'slide-out-right' | 'slide-out-left' | 'slide-out-top' | 'slide-out-bottom' | 'pop-out' | 'fade-out' | 'zoom-in' | 'zoom-fade-in' | 'none'; + +export declare type guardHookRule = (to: totalNextRoute, from: totalNextRoute, next: (rule?: navtoRule | false) => void) => void; + +export declare interface H5Config { + paramsToQuery?: boolean; + vueRouterDev?: boolean; + vueNext?: boolean; + mode?: string; + base?: string; + linkActiveClass?: string; + linkExactActiveClass?: string; + scrollBehavior?: Function; + fallback?: boolean; +} + +export declare interface h5NextRule { + fullPath?: string | undefined; + hash?: string | undefined; + matched?: Array; + meta?: object; + name?: undefined | string; + type?: undefined | string; +} + +export declare type hookListRule = Array<(router: Router, to: totalNextRoute, from: totalNextRoute, toRoute: RoutesRule, next: Function) => void>; + +export declare interface hookObjectRule { + options: Array; + hook: Function; +} + +export declare enum hookToggle { + 'beforeHooks' = "beforeEach", + 'afterHooks' = "afterEach", + 'enterHooks' = "beforeEnter" +} + +export declare interface InstantiateConfig { + [key: string]: any; + keepUniOriginNav?: boolean; + platform: 'h5' | 'app-plus' | 'app-lets' | 'mp-weixin' | 'mp-baidu' | 'mp-alipay' | 'mp-toutiao' | 'mp-qq' | 'mp-360'; + h5?: H5Config; + APP?: AppConfig; + applet?: appletConfig; + debugger?: debuggerConfig; + routerBeforeEach?: (to: navtoRule, from: navtoRule, next: (rule?: navtoRule | false) => void) => void; + routerAfterEach?: (to: navtoRule, from: navtoRule, next?: Function) => void; + routerErrorEach?: (error: navErrorRule, router: Router) => void; + resolveQuery?: (jsonQuery: objectAny) => objectAny; + parseQuery?: (jsonQuery: objectAny) => objectAny; + detectBeforeLock?: (router: Router, to: string | number | totalNextRoute | navRoute, navType: NAVTYPE) => void; + routes: RoutesRule[]; +} + +export declare interface LifeCycleConfig { + beforeHooks: hookListRule; + afterHooks: hookListRule; + routerBeforeHooks: hookListRule; + routerAfterHooks: hookListRule; + routerErrorHooks: Array<(error: navErrorRule, router: Router) => void>; +} + +export declare interface navErrorRule { + type: navRuleStatus; + msg: string; + to?: totalNextRoute; + from?: totalNextRoute; + nextTo?: any; + [propName: string]: any; +} + +export declare type navMethodRule = Promise; + +export declare interface navRoute extends h5NextRule, navtoRule { +} + +export declare type navRuleStatus = 0 | 1 | 2 | 3; + +export declare interface navtoRule { + NAVTYPE?: NAVTYPE; + path?: string; + name?: string | undefined; + query?: objectAny; + params?: objectAny; + animationType?: startAnimationType | endAnimationType; + animationDuration?: number; + events?: objectAny; + success?: Function; + fail?: Function; + complete?: Function; +} + +export declare type NAVTYPE = 'push' | 'replace' | 'replaceAll' | 'pushTab' | 'back'; + +export declare enum navtypeToggle { + 'push' = "navigateTo", + 'replace' = "redirectTo", + 'replaceAll' = "reLaunch", + 'pushTab' = "switchTab", + 'back' = "navigateBack" +} + +export declare type notCallProxyHookRule = 'onHide' | 'beforeDestroy' | 'destroyed' | 'onUnload' | 'onResize'; + +export declare type objectAny = { + [propName: string]: any; +}; + +export declare interface originMixins extends uniNavApiRule { + BACKTYPE: '' | backTypeRule; +} + +export declare type pageTypeRule = 'app' | 'page' | 'component'; + +export declare interface pageVueHookConfig extends baseAppHookConfig { + onShow: Array; + onHide: Array; + onLoad: Array; + onReady: Array; + onUnload: Array; + onResize: Array; +} + +export declare type pageVueSortHookRule = 'beforeCreate' | 'created' | 'beforeMount' | 'mounted' | 'onLoad' | 'onReady' | 'onShow' | 'onResize' | 'onHide' | 'beforeDestroy' | 'destroyed' | 'onUnload'; + +export declare type PromiseResolve = (value?: void | PromiseLike | undefined) => void; + +export declare type proxyHookName = 'beforeHooks' | 'afterHooks'; + +export declare type reloadNavRule = totalNextRoute | false | undefined | string; + +export declare type reNavMethodRule = 'navigateTo' | 'redirectTo' | 'reLaunch' | 'switchTab'; + +export declare type reNotNavMethodRule = 'navigateBack'; + +export declare enum rewriteMethodToggle { + 'navigateTo' = "push", + 'navigate' = "push", + 'redirectTo' = "replace", + 'reLaunch' = "replaceAll", + 'switchTab' = "pushTab", + 'navigateBack' = "back" +} + +export declare interface Router { + [key: string]: any; + readonly lifeCycle: LifeCycleConfig; + readonly options: InstantiateConfig; + $lockStatus: boolean; + $route: object | null; + enterPath: string; + Vue: any; + appProxyHook: { + app: appVueHookConfig; + }; + appMain: { + NAVTYPE: reNavMethodRule | reNotNavMethodRule; + path: string; + } | {}; + appletsProxyHook: appletsVueHookConfig; + routesMap: routesMapRule | {}; + mount: Array<{ + app: any; + el: string; + }>; + install(Vue: any): void; + push(to: totalNextRoute | navRoute | string, from?: totalNextRoute): void; + replace(to: totalNextRoute | navRoute | string, from?: totalNextRoute): void; + replaceAll(to: totalNextRoute | navRoute | string, from?: totalNextRoute): void; + pushTab(to: totalNextRoute | navRoute | string, from?: totalNextRoute): void; + back(level: number | undefined, origin?: uniBackRule | uniBackApiRule): void; + forceGuardEach(navType: NAVTYPE | undefined, forceNav: boolean): void; + beforeEach(userGuard: guardHookRule): void; + afterEach(userGuard: (to: totalNextRoute, from: totalNextRoute) => void): void; +} + +export declare function RouterMount(Vim: any, router: Router, el?: string | undefined): void | never; + +export declare interface routeRule { + name: string | undefined; + meta: objectAny; + path: string; + query: objectAny; + params: objectAny; + fullPath: string; + NAVTYPE: NAVTYPE | ''; + BACKTYPE?: backTypeRule | ''; + [propName: string]: any; +} + +export declare type routesMapKeysRule = 'finallyPathList' | 'finallyPathMap' | 'aliasPathMap' | 'pathMap' | 'nameMap' | 'vueRouteMap'; + +export declare interface routesMapRule { + [key: string]: any; + finallyPathList: Array; + finallyPathMap: RoutesRule; + aliasPathMap: RoutesRule; + pathMap: RoutesRule; + nameMap: RoutesRule; + vueRouteMap: objectAny; +} + +export declare interface RoutesRule { + path: string; + component?: object; + name?: string; + components?: object; + redirect?: string | Function; + props?: boolean | object | Function; + aliasPath?: string; + alias?: string | Array; + children?: Array; + beforeEnter?: guardHookRule; + meta?: any; + [propName: string]: any; +} + +export declare function runtimeQuit(title?: string | undefined): void; + +export declare interface startAnimationRule { + animationType?: startAnimationType; + animationDuration?: number; +} + +export declare type startAnimationType = 'slide-in-right' | 'slide-in-left' | 'slide-in-top' | 'slide-in-bottom' | 'pop-in' | 'fade-in' | 'zoom-out' | 'zoom-fade-out' | 'none'; + +export declare interface totalNextRoute extends h5NextRule, navtoRule { + path: string; + delta?: number; + [propName: string]: any; +} + +export declare interface uniBackApiRule { + delta?: number; + animationDuration?: number; + animationType?: endAnimationType; +} + +export declare interface uniBackRule { + from: backTypeRule; +} + +export declare interface uniNavApiRule { + url: string; + openType?: 'appLaunch'; + query?: objectAny; + path?: string; + delta?: number; + detail?: { + [propName: string]: any; + }; + animationType?: startAnimationType; + animationDuration?: number; + events?: { + [propName: string]: any; + }; + success?: Function; + fail?: Function; + complete?: Function; + animation?: { + animationType?: startAnimationType; + animationDuration?: number; + }; +} + +export { } + +// @ts-ignore +declare module 'vue/types/vue' { + interface Vue { + $Router: Router; + $Route: routeRule; + } +} \ No newline at end of file diff --git a/node_modules/uni-simple-router/dist/uni-simple-router.js b/node_modules/uni-simple-router/dist/uni-simple-router.js new file mode 100644 index 0000000..fcecc58 --- /dev/null +++ b/node_modules/uni-simple-router/dist/uni-simple-router.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Router=t():e.Router=t()}(self,(function(){return e={779:(e,t,r)=>{var o=r(173);e.exports=function e(t,r,n){return o(r)||(n=r||n,r=[]),n=n||{},t instanceof RegExp?function(e,t){var r=e.source.match(/\((?!\?)/g);if(r)for(var o=0;o{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},844:function(e,t,r){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r0?t.vueEachArray[r](e,o,(function(){n&&n()})):t.myEachHook(e,o,(function(a){!1===a?n(!1):t.vueEachArray[r](e,o,(function(e){n(a)}))}),t.router,!0)}},t}(Array);t.MyArray=n,t.proxyEachHook=function(e,t){for(var r=["beforeHooks","afterHooks"],o=0;o0)return!1;window.location.reload()}),0)}else e.mount[0].app.$mount(),e.mount=[]}},814:function(e,t){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,r=1,o=arguments.length;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getEnterPath=void 0,t.getEnterPath=function(e,t){switch(t.options.platform){case"mp-alipay":case"mp-weixin":case"mp-toutiao":case"mp-qq":return e.$options.mpInstance.route;case"mp-baidu":return e.$options.mpInstance.is||e.$options.mpInstance.pageinstance.route}return e.$options.mpInstance.route}},282:function(e,t,r){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createRouteMap=void 0;var o=r(883),n=r(789);t.createRouteMap=function(e,t){var r={finallyPathList:[],finallyPathMap:Object.create(null),aliasPathMap:Object.create(null),pathMap:Object.create(null),vueRouteMap:Object.create(null),nameMap:Object.create(null)};return t.forEach((function(t){var a=n.getRoutePath(t,e),i=a.finallyPath,u=a.aliasPath,l=a.path;if(null==l)throw new Error("请提供一个完整的路由对象,包括以绝对路径开始的 ‘path’ 字符串 "+JSON.stringify(t));if(i instanceof Array&&!e.options.h5.vueRouterDev&&"h5"===e.options.platform)throw new Error("非 vueRouterDev 模式下,route.alias 目前无法提供数组类型! "+JSON.stringify(t));var p=i,c=u;"h5"!==e.options.platform&&0!==p.indexOf("/")&&"*"!==l&&o.warn("当前路由对象下,route:"+JSON.stringify(t)+" 是否缺少了前缀 ‘/’",e,!0),r.finallyPathMap[p]||(r.finallyPathMap[p]=t,r.aliasPathMap[c]=t,r.pathMap[l]=t,r.finallyPathList.push(p),null!=t.name&&(r.nameMap[t.name]=t))})),r}},662:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.registerEachHooks=t.registerRouterHooks=t.registerHook=void 0;var o=r(366),n=r(169);function a(e,t){e[0]=t}t.registerHook=a,t.registerRouterHooks=function(e,t){return a(e.routerBeforeHooks,(function(e,r,o){t.routerBeforeEach(e,r,o)})),a(e.routerAfterHooks,(function(e,r){t.routerAfterEach(e,r)})),a(e.routerErrorHooks,(function(e,r){t.routerErrorEach(e,r)})),e},t.registerEachHooks=function(e,t,r){a(e.lifeCycle[t],(function(e,a,i,u,l){l?n.onTriggerEachHook(e,a,u,o.hookToggle[t],i):r(e,a,i)}))}},460:function(e,t,r){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r3},t.baseClone=g,t.deepClone=d,t.lockDetectWarn=function(e,t,r,o,n){if("afterHooks"===n)o();else{var a=e.options.detectBeforeLock;a&&a(e,t,r),e.$lockStatus?e.options.routerErrorEach({type:2,msg:"当前页面正在处于跳转状态,请稍后再进行跳转...."},e):o()}},t.replaceHook=function(e,t,r,o){var n=t.$options,a=e[r][o],u={};if("[object Array]"===v(a)&&(u={beforeCreate:[],created:[],beforeMount:[],mounted:[],beforeDestroy:[],destroyed:[]}),null!=a){for(var l=i.proxyVueSortHookName[o],p=function(r){var p=l[r],c=n[p];if("[object Array]"===v(c)){var s={options:[],hook:Function},f=c.splice(c.length-1,1,(function(){for(var e=[],t=0;t0?u[p]=[s]:a[p]=[s]}},c=0;c0&&a.push(u)}},t.callHook=m,t.resetPageHook=function(e,t){var r=t.trim().match(/^(\/?[^\?\s]+)(\?[\s\S]*$)?$/);if(null==r)throw new Error("还原hook失败。请检查 【"+t+"】 路径是否正确。");t=r[1];var o="appletsProxyHook";"app-plus"===e.options.platform&&(o="appProxyHook");for(var n=[],a=0,i=Object.entries(e[o]);a{"use strict";function r(e,t,r,o){if(void 0===o&&(o=!1),!o){var n="[object Object]"===t.toString();if(!1===t)return!1;if(n&&!1===t[e])return!1}return console[e](r),!0}Object.defineProperty(t,"__esModule",{value:!0}),t.warnLock=t.log=t.warn=t.err=t.isLog=void 0,t.isLog=r,t.err=function(e,t,o){r("error",t.options.debugger,e,o)},t.warn=function(e,t,o){r("warn",t.options.debugger,e,o)},t.log=function(e,t,o){r("log",t.options.debugger,e,o)},t.warnLock=function(e){console.warn(e)}},607:function(e,t,r){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.createRouter=t.RouterMount=t.runtimeQuit=void 0,n(r(366),t),n(r(309),t);var a=r(814);Object.defineProperty(t,"runtimeQuit",{enumerable:!0,get:function(){return a.runtimeQuit}});var i=r(963);Object.defineProperty(t,"RouterMount",{enumerable:!0,get:function(){return i.RouterMount}}),Object.defineProperty(t,"createRouter",{enumerable:!0,get:function(){return i.createRouter}})},366:(e,t)=>{"use strict";var r,o,n;Object.defineProperty(t,"__esModule",{value:!0}),t.rewriteMethodToggle=t.navtypeToggle=t.hookToggle=void 0,(n=t.hookToggle||(t.hookToggle={})).beforeHooks="beforeEach",n.afterHooks="afterEach",n.enterHooks="beforeEnter",(o=t.navtypeToggle||(t.navtypeToggle={})).push="navigateTo",o.replace="redirectTo",o.replaceAll="reLaunch",o.pushTab="switchTab",o.back="navigateBack",(r=t.rewriteMethodToggle||(t.rewriteMethodToggle={})).navigateTo="push",r.navigate="push",r.redirectTo="replace",r.reLaunch="replaceAll",r.switchTab="pushTab",r.navigateBack="back"},309:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},169:function(e,t,r){"use strict";var o=this&&this.__rest||function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n0){var u=void 0;switch("h5"===e.options.platform?u=i.$options.beforeRouteLeave:null!=i.$vm&&(u=i.$vm.$options.beforeRouteLeave),n.getDataType(u)){case"[object Array]":a=(a=u[0]).bind(i);break;case"[object Function]":a=u.bind(i.$vm)}}return l(a,t,r,e,o)}function l(e,t,r,o,n,a){void 0===a&&(a=!0),null!=e&&e instanceof Function?!0===a?e(t,r,n,o,!1):(e(t,r,(function(){}),o,!1),n()):n()}function p(e,t,r,o,a,i){var u=n.forMatNextToFrom(e,t,r),l=u.matTo,p=u.matFrom;"h5"===e.options.platform?c(a,0,i,e,l,p,o):c(a.slice(0,4),0,(function(){i((function(){c(a.slice(4),0,n.voidFun,e,l,p,o)}))}),e,l,p,o)}function c(e,r,i,u,l,p,s){var f=n.routesForMapRoute(u,l.path,["finallyPathMap","pathMap"]);if(e.length-1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.proxyPageHook=t.createFullPath=t.createToFrom=void 0;var o=r(789),n=r(890),a=r(99);t.createToFrom=function(e,t){var r=o.getUniCachePage(0);return"[object Array]"===o.getDataType(r)?o.deepClone(e):n.createRoute(t)},t.createFullPath=function(e,t){if(null==e.fullPath){var r=a.stringifyQuery(e.query);e.fullPath=e.path+r}null==t.fullPath&&(r=a.stringifyQuery(t.query),t.fullPath=t.path+r)},t.proxyPageHook=function(e,t,r,n){o.replaceHook(t,e,r,n)}},99:function(e,t,r){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r{[propName: string]: any;}",t):e[r]=u}else{if(!n.assertDeepObject(o))return e;var l=JSON.stringify(o);e[r]={query:l}}return e},t.parseQuery=function(e,t){var r=t.options.parseQuery;if(r)e=r(n.copyData(e)),"[object Object]"!==n.getDataType(e)&&i.warn("请按格式返回参数: parseQuery?:(jsonQuery:{[propName: string]: any;})=>{[propName: string]: any;}",t);else if(Reflect.get(e,"query")){var o=Reflect.get(e,"query"),a={query:decodeURIComponent(o)};try{if("object"==typeof(a=JSON.parse(a.query)))return a}catch(e){i.warn("尝试解析深度对象失败,按原样输出。"+e,t)}}return e},t.stringifyQuery=function(e){var t=e?Object.keys(e).map((function(t){var r=e[t];if(void 0===r)return"";if(null===r)return c(t);if(Array.isArray(r)){var o=[];return r.forEach((function(e){void 0!==e&&(null===e?o.push(c(t)):o.push(c(t)+"="+c(e)))})),o.join("&")}return c(t)+"="+c(r)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}},314:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.rewriteMethod=void 0;var o=r(366),n=r(789),a=r(883),i=r(809),u=["navigateTo","redirectTo","reLaunch","switchTab","navigateBack"];t.rewriteMethod=function(e){!1===e.options.keepUniOriginNav&&u.forEach((function(t){var r=uni[t];uni[t]=function(u,l,p,c){void 0===l&&(l=!1),l?i.uniOriginJump(e,r,t,u,p,c):("app-plus"===e.options.platform&&0===Object.keys(e.appMain).length&&(e.appMain={NAVTYPE:t,path:u.url}),function(e,t,r){if("app-plus"===r.options.platform){var i=null;e&&(i=e.openType),null!=i&&"appLaunch"===i&&(t="reLaunch")}if("reLaunch"===t&&'{"url":"/"}'===JSON.stringify(e)&&(a.warn("uni-app 原生方法:reLaunch({url:'/'}) 默认被重写啦!你可以使用 this.$Router.replaceAll() 或者 uni.reLaunch({url:'/?xxx=xxx'})",r,!0),t="navigateBack",e={from:"backbutton"}),"navigateBack"===t){var u=1;null==e&&(e={delta:1}),"[object Number]"===n.getDataType(e.delta)&&(u=e.delta),r.back(u,e)}else{var l=o.rewriteMethodToggle[t],p=e.url;if(!p.startsWith("/")){var c=n.resolveAbsolutePath(p,r);p=c,e.url=c}if("switchTab"===t){var s=n.routesForMapRoute(r,p,["pathMap","finallyPathList"]),f=n.getRoutePath(s,r).finallyPath;if("[object Array]"===n.getDataType(f)&&a.warn("uni-app 原生方法跳转路径为:"+p+"。此路为是tab页面时,不允许设置 alias 为数组的情况,并且不能为动态路由!当然你可以通过通配符*解决!",r,!0),"*"===f&&a.warn("uni-app 原生方法跳转路径为:"+p+"。在路由表中找不到相关路由表!当然你可以通过通配符*解决!",r,!0),"h5"===r.options.platform){var h=e.success;e.success=function(){for(var t=[],r=0;r0&&Reflect.has(t,"index")){var r=n.getUniCachePage(0);if(0===Object.keys(r).length)return!1;var o=r,a=o.$options.onTabItemTap;if(a)for(var i=0;i0&&n[n.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1] 提交信息不能为空! \n \n" + fi + done + ;; + + # 推送到服务端 + "push") + read -p "请输入提交的分支(不输入默认主分支 [master] ):" branch + printf "\n\n -------------- 正在推送github,请稍后.... --------------- \n\n" + if [[ "$branch" == "" ]]; then + git push + else + eval "git push origin ${branch}" + fi + printf "\n -------------- 推送github完成 --------------- \n\n" + ;; + + # 拉取最新代码 + "pull") + printf "\n\n -------------- 正在拉取,请稍后.... --------------- \n\n" + git pull + printf "\n -------------- 正在拉取完成 --------------- \n\n" + ;; + + # 切换分支操作 + "branch") + read -p "请输入添加更多指令 【分支】 :" branchs + if [[ "$branchs" == "" ]]; then + printf "\n分支列表如下:\n\n" + git branch + else + eval "git branch ${branchs}" + fi + printf "\n -------------- 分支操作完毕 --------------- \n\n" + ;; + # + "checkout") + read -p "请输入添加更多指令 【默认切换到master】 :" out + if [[ "$out" == "" ]]; then + git checkout master + else + eval "git checkout ${out}" + fi + printf "\n -------------- 执行完毕 --------------- \n\n" + ;; + # 自定义指令 + *) + while read -p "请输入自定义命令 【输入:q退出】:" code; do + if [[ "$code" == ":q" ]];then + printf "\n" + break + fi + printf "\n\n -------------- 正在执行,请稍后.... --------------- \n\n" + eval "$code" + printf "\n -------------- 执行完毕 --------------- \n\n" + done + esac +done diff --git a/node_modules/uni-simple-router/jest.config.js b/node_modules/uni-simple-router/jest.config.js new file mode 100644 index 0000000..6bad1fa --- /dev/null +++ b/node_modules/uni-simple-router/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleDirectories:['node_modules','src'] +}; \ No newline at end of file diff --git a/node_modules/uni-simple-router/package.json b/node_modules/uni-simple-router/package.json new file mode 100644 index 0000000..bc0f873 --- /dev/null +++ b/node_modules/uni-simple-router/package.json @@ -0,0 +1,33 @@ +{ + "name": "uni-simple-router", + "version": "2.0.6", + "description": "> 一个更为简洁的[Vue-router](https://router.vuejs.org/zh/),专为 [uni-app](https://uniapp.dcloud.io/) 量身打造", + "main": "dist/uni-simple-router.js", + "types": "dist/uni-simple-router.d.ts", + "scripts": { + "dev": "webpack --watch --progress --config webpack/webpack.dev.js", + "build": "webpack --progress --config webpack/webpack.prod.js", + "build:dts": "api-extractor run --local --verbose", + "lint": "eslint --ext .js,.ts src", + "lintFix": "eslint --ext .js,.ts src --fix", + "test": "jest test/path-to-regexp.spec.ts", + "publish": "node ./publish/index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/SilurianYang/uni-simple-router.git" + }, + "keywords": [ + "router", + "uni-app-router", + "interceptor", + "uni-app", + "uniapp" + ], + "author": "hhyang", + "license": "MIT", + "bugs": { + "url": "https://github.com/SilurianYang/uni-simple-router/issues" + }, + "homepage": "https://github.com/SilurianYang/uni-simple-router#readme" +} diff --git a/node_modules/uni-simple-router/src/H5/buildRouter.ts b/node_modules/uni-simple-router/src/H5/buildRouter.ts new file mode 100644 index 0000000..b733a2f --- /dev/null +++ b/node_modules/uni-simple-router/src/H5/buildRouter.ts @@ -0,0 +1,76 @@ +import {RoutesRule, Router, routesMapRule, totalNextRoute, hookToggle, navtoRule} from '../options/base'; +import {H5Config} from '../options/config'; +import {warn} from '../helpers/warn' +import {getDataType, getRoutePath} from '../helpers/utils' +import { onTriggerEachHook } from '../public/hooks'; + +export function buildVueRoutes(router: Router, vueRouteMap:RoutesRule):RoutesRule { + const {pathMap, finallyPathList} = (router.routesMap as routesMapRule); + const vueRoutePathList:Array = Object.keys(vueRouteMap); + for (let i = 0; i < vueRoutePathList.length; i++) { + const path = vueRoutePathList[i]; + const myRoute:RoutesRule = pathMap[path]; + const vueRoute:RoutesRule = vueRouteMap[path]; + if (!myRoute) { + warn(`${path} 路由地址在路由表中未找到,确定是否传递漏啦`, router, true); + } else { + const {finallyPath} = getRoutePath(myRoute, router); + if (finallyPath instanceof Array) { + throw new Error(`非 vueRouterDev 模式下,alias、aliasPath、path 无法提供数组类型! ${JSON.stringify(myRoute)}`); + } + if (myRoute.name != null) { + vueRoute.name = myRoute.name; + } + const vuePath = vueRoute['path']; + const vueAlias = vueRoute['alias']; + delete vueRoute['alias']; + vueRoute['path'] = (finallyPath as string); + if (vuePath === '/' && vueAlias != null) { + vueRoute['alias'] = vueAlias; + vueRoute['path'] = vuePath; + } + const beforeEnter = myRoute.beforeEnter; + if (beforeEnter) { + vueRoute['beforeEnter'] = function( + to:totalNextRoute, + from: totalNextRoute, + next:(rule?: navtoRule|false)=>void, + ):void{ + onTriggerEachHook(to, from, router, hookToggle['enterHooks'], next) + }; + } + } + } + if (finallyPathList.includes('*')) { + vueRouteMap['*'] = pathMap['*'] + } + return vueRouteMap +} + +export function buildVueRouter(router:Router, vueRouter:any, vueRouteMap:RoutesRule|RoutesRule[]) :void |never { + let routes:RoutesRule[] = []; + if (getDataType(vueRouteMap) === '[object Array]') { + routes = (vueRouteMap as RoutesRule[]); + } else { + routes = Object.values(vueRouteMap); + } + const {scrollBehavior, fallback} = router.options.h5 as H5Config; + const oldScrollBehavior = vueRouter.options.scrollBehavior; + vueRouter.options.scrollBehavior = function proxyScrollBehavior( + to:totalNextRoute, + from:totalNextRoute, + savedPosition:any + ) { + oldScrollBehavior && oldScrollBehavior(to, from, savedPosition); + return (scrollBehavior as Function)(to, from, savedPosition) + } + vueRouter.fallback = fallback; + // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 + const newVueRouter:any = new vueRouter.constructor({ + ...router.options.h5, + base: vueRouter.options.base, + mode: vueRouter.options.mode, + routes + }); + vueRouter.matcher = newVueRouter.matcher; +} diff --git a/node_modules/uni-simple-router/src/H5/proxyHook.ts b/node_modules/uni-simple-router/src/H5/proxyHook.ts new file mode 100644 index 0000000..a1d6c29 --- /dev/null +++ b/node_modules/uni-simple-router/src/H5/proxyHook.ts @@ -0,0 +1,71 @@ +import {Router, proxyHookName, totalNextRoute, navtoRule} from '../options/base'; + +export class MyArray extends Array { + constructor( + private router:Router, + private vueEachArray:Array, + private myEachHook:Function, + private hookName:'beforeHooks'| 'afterHooks', + ) { + super(); + Object.setPrototypeOf(this, MyArray.prototype) + } + push(v:any):any { + this.vueEachArray.push(v); + const index = this.length; + this[this.length] = (to: totalNextRoute, from: totalNextRoute, next:(rule?: navtoRule|false)=>void) => { + if (index > 0) { + this.vueEachArray[index](to, from, () => { + next && next() + }); + } else { + this.myEachHook(to, from, (nextTo?:navtoRule|false) => { + // Fixe https://github.com/SilurianYang/uni-simple-router/issues/241 2021年3月6日22:15:27 + // 目前不调用uni-app的守卫函数,因为会丢失页面栈信息 + if (nextTo === false) { + next(false); + } else { + this.vueEachArray[index](to, from, (uniNextTo?:navtoRule|false) => { + next(nextTo); + }) + } + }, this.router, true); + } + }; + } +} + +export function proxyEachHook(router:Router, vueRouter:any):void { + const hookList:Array<'beforeHooks'| 'afterHooks'> = ['beforeHooks', 'afterHooks']; + for (let i = 0; i < hookList.length; i++) { + const hookName = hookList[i]; + const myEachHook = router.lifeCycle[(hookName as proxyHookName)][0]; + if (myEachHook) { + const vueEachArray:Array = vueRouter[hookName]; + vueRouter[hookName] = new MyArray(router, vueEachArray, myEachHook, hookName); + } + } +} +export function proxyH5Mount(router:Router):void { + if (router.mount.length === 0) { + if (router.options.h5?.vueRouterDev) { + return + } + const uAgent = navigator.userAgent; + const isIos = !!uAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) + if (isIos) { + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/109 + setTimeout(() => { + const element = document.getElementsByTagName('uni-page'); + if (element.length > 0) { + return false + } + window.location.reload(); + }, 0); + } + } else { + const [{app}] = router.mount; + app.$mount(); + router.mount = []; + } +} diff --git a/node_modules/uni-simple-router/src/app/appPatch.ts b/node_modules/uni-simple-router/src/app/appPatch.ts new file mode 100644 index 0000000..e18acc3 --- /dev/null +++ b/node_modules/uni-simple-router/src/app/appPatch.ts @@ -0,0 +1,40 @@ +import { Router } from '../options/base'; +import { AppConfig } from '../options/config'; + +let quitBefore:number|null = null; + +export function registerLoddingPage( + router:Router, +):void{ + if (router.options.registerLoadingPage) { + const { loadingPageHook, loadingPageStyle } = router.options.APP as AppConfig; // 获取app所有配置 + const view = new plus.nativeObj.View('router-loadding', { + top: '0px', + left: '0px', + height: '100%', + width: '100%', + ...(loadingPageStyle as Function)() + }); + (loadingPageHook as Function)(view); // 触发等待页面生命周期 + } +} + +export function runtimeQuit( + title:string|undefined = '再按一次退出应用' +):void{ + const nowTime = +new Date(); + if (!quitBefore) { + quitBefore = nowTime; + uni.showToast({ + title, + icon: 'none', + position: 'bottom', + duration: 1000 + }); + setTimeout(() => { quitBefore = null }, 1000); + } else { + if (nowTime - quitBefore < 1000) { + plus.runtime.quit(); + } + } +} diff --git a/node_modules/uni-simple-router/src/applets/appletPatch.ts b/node_modules/uni-simple-router/src/applets/appletPatch.ts new file mode 100644 index 0000000..4f4f9ac --- /dev/null +++ b/node_modules/uni-simple-router/src/applets/appletPatch.ts @@ -0,0 +1,18 @@ +import { Router} from '../options/base'; + +export function getEnterPath( + vueVim:any, + router:Router, +) :string { + switch (router.options.platform) { + case 'mp-alipay': + case 'mp-weixin': + case 'mp-toutiao': + case 'mp-qq': + return vueVim.$options.mpInstance.route; + case 'mp-baidu': + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/251 + return vueVim.$options.mpInstance.is || vueVim.$options.mpInstance.pageinstance.route; + } + return vueVim.$options.mpInstance.route; // 这是暂时的 因为除了以上的小程序 其他没测试 先这样写 +} diff --git a/node_modules/uni-simple-router/src/component/link.vue b/node_modules/uni-simple-router/src/component/link.vue new file mode 100644 index 0000000..873f412 --- /dev/null +++ b/node_modules/uni-simple-router/src/component/link.vue @@ -0,0 +1,79 @@ + + + diff --git a/node_modules/uni-simple-router/src/global.d.ts b/node_modules/uni-simple-router/src/global.d.ts new file mode 100644 index 0000000..dace9b6 --- /dev/null +++ b/node_modules/uni-simple-router/src/global.d.ts @@ -0,0 +1,6 @@ +declare var uni:any; +declare var plus:any; +declare var __uniConfig:any; +declare var __uniRoutes:any; +declare function getCurrentPages(isAll:boolean|undefined=false):any; +declare function getApp(args?:{allowDefault: true}):any; \ No newline at end of file diff --git a/node_modules/uni-simple-router/src/helpers/config.ts b/node_modules/uni-simple-router/src/helpers/config.ts new file mode 100644 index 0000000..49f8804 --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/config.ts @@ -0,0 +1,102 @@ +import {err} from './warn' +import {appletsVueHookConfig, appVueHookConfig, pageVueHookConfig, InstantiateConfig, LifeCycleConfig} from '../options/config' +import { copyData} from './utils'; +import { appVueSortHookRule, pageVueSortHookRule, notCallProxyHookRule, comVueSortHookRule } from '../options/base'; + +export const keyword = ['query']; +export const mpPlatformReg = '(^mp-weixin$)|(^mp-baidu$)|(^mp-alipay$)|(^mp-toutiao$)|(^mp-qq$)|(^mp-360$)' // 小程序下不能直接导出正则 需要重新组装成正则 不然bug一推 诡异 + +export const baseConfig:InstantiateConfig = { + h5: { + paramsToQuery: false, + vueRouterDev: false, + vueNext: false, + mode: 'hash', + base: '/', + linkActiveClass: 'router-link-active', + linkExactActiveClass: 'router-link-exact-active', + scrollBehavior: (to:any, from:any, savedPostion:Function) => ({ x: 0, y: 0 }), + fallback: true + }, + APP: { + registerLoadingPage: true, + loadingPageStyle: () => JSON.parse('{"backgroundColor":"#FFF"}'), + loadingPageHook: (view:any) => { view.show(); }, + launchedHook: () => { plus.navigator.closeSplashscreen(); }, + animation: {} + }, + applet: { + animationDuration: 300 + }, + platform: 'h5', + keepUniOriginNav: false, + debugger: false, + routerBeforeEach: (to, from, next) => { next() }, + routerAfterEach: (to, from) => {}, + routerErrorEach: (error, router) => { router.$lockStatus = false; err(error, router, true); }, + detectBeforeLock: (router, to, navType) => {}, + routes: [ + { + path: '/choose-location' + }, + { + path: '/open-location' + }, + { + path: '/preview-image' + } + ] +} + +export const lifeCycle:LifeCycleConfig = { + beforeHooks: [], + afterHooks: [], + routerBeforeHooks: [], + routerAfterHooks: [], + routerErrorHooks: [] +}; + +export const appProxyHook:{ + app:appVueHookConfig +} = { + app: { + created: [], + beforeMount: [], + mounted: [], + onLaunch: [], + onShow: [], + onHide: [], + beforeDestroy: [], + destroyed: [] + } +} +export const indexProxyHook:appletsVueHookConfig = { + app: appProxyHook.app, + page: (function( + appHooks:appVueHookConfig + ) :pageVueHookConfig { + // eslint-disable-next-line no-unused-vars + const {onLaunch, ...otherHooks} = appHooks; + return { + ...otherHooks, + onLoad: [], + onReady: [], + onUnload: [], + onResize: [] + }; + })(copyData(appProxyHook.app)), + component: [] +} + +export const proxyVueSortHookName:{ + app:Array, + page:Array, + component:Array +} = { + app: ['created', 'beforeMount', 'mounted', 'onLaunch', 'onShow', 'onHide', 'beforeDestroy', 'destroyed'], + page: ['created', 'beforeMount', 'mounted', 'onLoad', 'onReady', 'onShow', 'onResize', 'onHide', 'beforeDestroy', 'destroyed', 'onUnload'], + component: ['created', 'beforeMount', 'mounted', 'beforeDestroy', 'destroyed'] +} +export const notCallProxyHook:Array = [ + 'onHide', 'beforeDestroy', 'destroyed', 'destroyed', 'onUnload', 'onResize' +]; diff --git a/node_modules/uni-simple-router/src/helpers/createRouteMap.ts b/node_modules/uni-simple-router/src/helpers/createRouteMap.ts new file mode 100644 index 0000000..288cc37 --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/createRouteMap.ts @@ -0,0 +1,47 @@ +import {RoutesRule, Router, routesMapRule} from '../options/base'; +import {H5Config} from '../options/config'; +import {warn} from './warn' +import {getRoutePath} from './utils' + +export function createRouteMap( + router: Router, + routes: RoutesRule[], +): routesMapRule|never { + const routesMap:routesMapRule = { + finallyPathList: [], + finallyPathMap: Object.create(null), + aliasPathMap: Object.create(null), + pathMap: Object.create(null), + vueRouteMap: Object.create(null), + nameMap: Object.create(null) + } + routes.forEach(route => { + const { finallyPath, aliasPath, path} = getRoutePath(route, router); + if (path == null) { + throw new Error(`请提供一个完整的路由对象,包括以绝对路径开始的 ‘path’ 字符串 ${JSON.stringify(route)}`); + } + if (finallyPath instanceof Array) { + if (!(router.options.h5 as H5Config).vueRouterDev && router.options.platform === 'h5') { + throw new Error(`非 vueRouterDev 模式下,route.alias 目前无法提供数组类型! ${JSON.stringify(route)}`); + } + } + const strFinallyPath = (finallyPath as string); + const strAliasPath = (aliasPath as string); + if (router.options.platform !== 'h5') { + if (strFinallyPath.indexOf('/') !== 0 && path !== '*') { + warn(`当前路由对象下,route:${JSON.stringify(route)} 是否缺少了前缀 ‘/’`, router, true); + } + } + if (!routesMap.finallyPathMap[strFinallyPath]) { + routesMap.finallyPathMap[strFinallyPath] = route; + routesMap.aliasPathMap[strAliasPath] = route; + routesMap.pathMap[path] = route; + routesMap.finallyPathList.push(strFinallyPath); + if (route.name != null) { + routesMap.nameMap[route.name] = route; + } + } + }) + + return routesMap; +} diff --git a/node_modules/uni-simple-router/src/helpers/lifeCycle.ts b/node_modules/uni-simple-router/src/helpers/lifeCycle.ts new file mode 100644 index 0000000..a2ab776 --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/lifeCycle.ts @@ -0,0 +1,36 @@ +import { navtoRule, navErrorRule, Router, proxyHookName, guardHookRule, totalNextRoute, hookToggle} from '../options/base'; +import { LifeCycleConfig, InstantiateConfig} from '../options/config'; +import {onTriggerEachHook} from '../public/hooks' + +export function registerHook(list:Array, fn:Function):void { + list[0] = fn; +} + +export function registerRouterHooks(cycleHooks:T, options:InstantiateConfig):T { + registerHook(cycleHooks.routerBeforeHooks, function(to:totalNextRoute, from: totalNextRoute, next:(rule?: navtoRule|false)=>void):void { + (options.routerBeforeEach as Function)(to, from, next); + }) + registerHook(cycleHooks.routerAfterHooks, function(to:totalNextRoute, from: totalNextRoute):void { + (options.routerAfterEach as Function)(to, from); + }) + registerHook(cycleHooks.routerErrorHooks, function(error:navErrorRule, router:Router):void { + (options.routerErrorEach as Function)(error, router); + }) + return cycleHooks; +} + +export function registerEachHooks(router:Router, hookType:proxyHookName, userGuard:guardHookRule) { + registerHook(router.lifeCycle[hookType], function( + to:totalNextRoute, + from: totalNextRoute, + next:(rule?: navtoRule|false)=>void, + router:Router, + auto:boolean, + ):void { + if (auto) { // h5端 vue-router自动触发 非自己调用触发 + onTriggerEachHook(to, from, router, hookToggle[hookType], next) + } else { + userGuard(to, from, next) + } + }) +} diff --git a/node_modules/uni-simple-router/src/helpers/mixins.ts b/node_modules/uni-simple-router/src/helpers/mixins.ts new file mode 100644 index 0000000..9cfd4ed --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/mixins.ts @@ -0,0 +1,97 @@ +import { Router, routesMapRule, RoutesRule, pageTypeRule} from '../options/base'; +import {createRouteMap} from '../helpers/createRouteMap' +import {buildVueRoutes, buildVueRouter} from '../H5/buildRouter' +import {proxyEachHook} from '../H5/proxyHook' +import {registerLoddingPage} from '../app/appPatch'; +import { proxyPageHook } from '../public/page'; +import { forceGuardEach } from '../public/methods'; +import { assertParentChild } from './utils'; +import { getEnterPath } from '../applets/appletPatch'; +import { mpPlatformReg } from './config'; + +let registerRouter:boolean = false; +let onloadProxyOk:boolean = false; +const appletProxy:{ + app:boolean; + page:string; +} = { + app: false, + page: '' +} + +export function getMixins(Vue:any, router: Router):{ + beforeCreate(this: any): void; +} | { + beforeCreate(): void; +} | { + onLaunch(): void; +} { + let platform = router.options.platform; + if (new RegExp(mpPlatformReg, 'g').test(platform)) { + platform = 'app-lets'; + } + const toggleHooks = { + h5: { + beforeCreate(this: any): void { + if (this.$options.router) { + router.$route = this.$options.router; // 挂载vue-router到路由对象下 + let vueRouteMap:RoutesRule[]|RoutesRule = []; + if (router.options.h5?.vueRouterDev) { + vueRouteMap = router.options.routes; + } else { + vueRouteMap = createRouteMap(router, this.$options.router.options.routes).finallyPathMap; + (router.routesMap as routesMapRule).vueRouteMap = vueRouteMap; + buildVueRoutes(router, vueRouteMap); + } + buildVueRouter(router, this.$options.router, vueRouteMap); + proxyEachHook(router, this.$options.router); + } + } + }, + 'app-plus': { + beforeCreate(this: any): void { + if (!registerRouter) { + registerRouter = true; + proxyPageHook(this, router, 'appProxyHook', 'app'); + registerLoddingPage(router); + } + } + }, + 'app-lets': { + beforeCreate(this: any): void { + const pageType:pageTypeRule = this.$options.mpType; + if (pageType === 'component' && !onloadProxyOk) { + const isProxy = assertParentChild(appletProxy['page'], this); + if (isProxy) { + proxyPageHook(this, router, 'appletsProxyHook', pageType) + } + } else if (pageType !== 'component') { + if (!appletProxy[pageType]) { // 没有处理 + if (pageType === 'page') { + appletProxy[pageType] = getEnterPath(this, router); + router.enterPath = appletProxy[pageType]; // 我不确定在不同端是否都是同样的变现?可能有的为非绝对路径? + } else { + appletProxy[pageType] = true; + } + proxyPageHook(this, router, 'appletsProxyHook', pageType) + } + } + }, + onLoad(this: any):void{ + if (!onloadProxyOk && assertParentChild(appletProxy['page'], this)) { + onloadProxyOk = true; + forceGuardEach(router); + } + } + } + }; + return toggleHooks[(platform as 'h5'|'app-plus'|'app-lets')]; +} +export function initMixins(Vue: any, router: Router) { + const routesMap = createRouteMap(router, router.options.routes); + router.routesMap = routesMap; // 挂载自身路由表到路由对象下 + // Vue.util.defineReactive(router, '_Route', createRoute(router, 19970806)) + Vue.mixin({ + ...getMixins(Vue, router) + }); +} diff --git a/node_modules/uni-simple-router/src/helpers/utils.ts b/node_modules/uni-simple-router/src/helpers/utils.ts new file mode 100644 index 0000000..f84dba8 --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/utils.ts @@ -0,0 +1,523 @@ +import {appVueHookConfig, H5Config, pageVueHookConfig, InstantiateConfig, appletsVueHookConfig, baseAppHookConfig} from '../options/config'; +import {RoutesRule, routesMapRule, routesMapKeysRule, Router, totalNextRoute, objectAny, navErrorRule, hookObjectRule, notCallProxyHookRule, NAVTYPE, navRoute, pageTypeRule} from '../options/base'; +import {baseConfig, notCallProxyHook, proxyVueSortHookName, keyword} from '../helpers/config'; +import {ERRORHOOK} from '../public/hooks' +import {warnLock} from '../helpers/warn' +import { createRoute, navjump } from '../public/methods'; +const Regexp = require('path-to-regexp'); + +export function voidFun():void{} + +export function def( + defObject:objectAny, + key:string, + getValue:Function +) { + Object.defineProperty(defObject, key, { + get() { + return getValue(); + } + }) +} + +export function timeOut(time:number):Promise { + return new Promise(resolve => { + setTimeout(() => { + resolve(); + }, time) + }) +} + +export function mergeConfig(baseConfig: T, userConfig: T): T { + const config: {[key: string]: any} = Object.create(null); + const baseConfigKeys: Array = Object.keys(baseConfig).concat(['resolveQuery', 'parseQuery']); + for (let i = 0; i < baseConfigKeys.length; i += 1) { + const key = baseConfigKeys[i]; + if (userConfig[key] != null) { + if (userConfig[key].constructor === Object) { + config[key] = { + ...baseConfig[key], + ...userConfig[key] + }; + } else if (key === 'routes') { + config[key] = [ + ...baseConfig[key], + ...userConfig[key] + ]; + } else { + config[key] = userConfig[key]; + } + } else { + config[key] = baseConfig[key]; + } + } + return config as T; +} + +export function notDeepClearNull(object:T):T { + for (const key in object) { + if (object[key] == null) { + delete object[key]; + } + } + return object; +} + +export function getRoutePath(route: RoutesRule, router:Router): { + finallyPath: string | string[]; + aliasPath: string; + path: string; + alias: string | string[] | undefined; +} { + let finallyPath = route.aliasPath || route.alias || route.path; + if (router.options.platform !== 'h5') { + finallyPath = route.path + } + return { + finallyPath, + aliasPath: route.aliasPath || route.path, + path: route.path, + alias: route.alias + } +} + +export function assertNewOptions( + options: T +): T | never { + const {platform, routes} = options; + if (platform == null) { + throw new Error(`你在实例化路由时必须传递 'platform'`); + } + if (routes == null || routes.length === 0) { + throw new Error(`你在实例化路由时必须传递 routes 为空,这是无意义的。`); + } + if (options.platform === 'h5') { + if (options.h5?.vueRouterDev) { + baseConfig.routes = []; + } + } + const mergeOptions = mergeConfig(baseConfig as T, options); + return mergeOptions; +} + +export function getWildcardRule( + router:Router, + msg?:navErrorRule +):RoutesRule|never { + const routesMap = (router.routesMap as routesMapRule); + const route = routesMap.finallyPathMap['*']; + if (route) { // 有写通配符 + return route + } + if (msg) { + ERRORHOOK[0](msg, router); + } + throw new Error(`当前路由表匹配规则已全部匹配完成,未找到满足的匹配规则。你可以使用 '*' 通配符捕捉最后的异常`); +} + +export function notRouteTo404( + router:Router, + toRoute:RoutesRule|{ + redirect:any; + path:string + }, + parseToRule:totalNextRoute, + navType:NAVTYPE +):RoutesRule|totalNextRoute|never { + if (toRoute.path !== '*') { // 不是通配符 正常匹配成功 + return (toRoute as RoutesRule); + } + + const redirect = toRoute.redirect; + + if (typeof redirect === 'undefined') { + throw new Error(` * 通配符必须配合 redirect 使用。redirect: string | Location | Function`); + } + + let newRoute = redirect; + if (typeof newRoute === 'function') { + newRoute = newRoute(parseToRule) as totalNextRoute; + } + const redirectRule = navjump(newRoute as totalNextRoute, router, navType, undefined, undefined, undefined, false); + return (redirectRule as totalNextRoute); +} + +export function routesForMapRoute( + router: Router, + path: string, + mapArrayKey:Array +):RoutesRule|never { + if (router.options.h5?.vueRouterDev) { + return {path} + } + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/252 + const startPath = path.split('?')[0]; + let wildcard = ''; + const routesMap = (router.routesMap as routesMapRule); + for (let i = 0; i < mapArrayKey.length; i++) { + const mapKey = mapArrayKey[i]; + const mapList = routesMap[mapKey]; + for (const [key, value] of Object.entries(mapList)) { + if (key === '*') { + if (wildcard === '') { + wildcard = '*' + } + continue; + } + const route:string|RoutesRule = value; + let rule:string = key; + if (getDataType|objectAny>(mapList) === '[object Array]') { + rule = (route as string); + } + const pathRule:RegExp = Regexp(rule); + const result = pathRule.exec(startPath); + if (result != null) { + if (getDataType(route) === '[object String]') { + return routesMap.finallyPathMap[(route as string)]; + } + return (route as RoutesRule); + } + } + } + if (wildcard !== '') { + return getWildcardRule(router); + } + throw new Error(`${path} 路径无法在路由表中找到!检查跳转路径及路由表`); +} + +export function getDataType(data:T):string { + return Object.prototype.toString.call(data) +} + +export function copyData(object:T): T { + return JSON.parse(JSON.stringify(object)) +} + +export function getUniCachePage(pageIndex?:number):T|[] { + const pages:T = getCurrentPages(); + if (pageIndex == null) { + return pages + } + if (pages.length === 0) { + return pages; + } + const page = pages.reverse()[pageIndex]; + if (page == null) { + return [] + } + return page; +} + +export function urlToJson(url :string):{ + path:string; + query:objectAny +} { + const query:objectAny = {}; + const [path, params] = url.split('?'); + if (params != null) { + const parr = params.split('&'); + for (const i of parr) { + const arr = i.split('='); + query[arr[0]] = arr[1]; + } + } + return { + path, + query + } +} + +export function forMatNextToFrom( + router:Router, + to:T, + from:T +):{ + matTo:T; + matFrom: T; +} { + let [matTo, matFrom] = [to, from]; + if (router.options.platform === 'h5') { + const {vueNext, vueRouterDev} = (router.options.h5 as H5Config); + if (!vueNext && !vueRouterDev) { + matTo = createRoute(router, undefined, matTo) as T; + matFrom = createRoute(router, undefined, matFrom) as T; + } + } else { + matTo = createRoute(router, undefined, deepClone(matTo)) as T; + matFrom = createRoute(router, undefined, deepClone(matFrom)) as T; + } + return { + matTo: matTo, + matFrom: matFrom + } +} + +export function paramsToQuery( + router:Router, + toRule:totalNextRoute|string +):totalNextRoute|string { + if (router.options.platform === 'h5' && !router.options.h5?.paramsToQuery) { + return toRule; + } + if (getDataType(toRule) === '[object Object]') { + const {name, params, ...moreToRule} = (toRule as totalNextRoute); + let paramsQuery = params; + if (router.options.platform !== 'h5' && paramsQuery == null) { + paramsQuery = {}; + } + if (name != null && paramsQuery != null) { + let route = (router.routesMap as routesMapRule).nameMap[name]; + if (route == null) { + route = getWildcardRule(router, { type: 2, msg: `命名路由为:${name} 的路由,无法在路由表中找到!`, toRule}); + } + const {finallyPath} = getRoutePath(route, router); + if (finallyPath.includes(':')) { // 动态路由无法使用 paramsToQuery + ERRORHOOK[0]({ type: 2, msg: `动态路由:${finallyPath} 无法使用 paramsToQuery!`, toRule}, router); + } else { + return { + ...moreToRule, + path: finallyPath as string, + query: paramsQuery + } + } + } + } + return toRule +} + +export function assertDeepObject(object:objectAny):boolean { + let arrMark = null; + try { + arrMark = JSON.stringify(object).match(/\{|\[|\}|\]/g); + } catch (error) { + warnLock(`传递的参数解析对象失败。` + error) + } + if (arrMark == null) { + return false + } + if (arrMark.length > 3) { + return true; + } + return false +} + +export function baseClone< +T extends { + [key:string]:any +}, K extends keyof T +>( + source:T, + target:Array|objectAny +):void { + for (const key of Object.keys(source)) { + const dyKey = key as T[K]; + if (source[key] === source) continue + if (typeof source[key] === 'object') { + target[dyKey] = getDataType(source[key]) === '[object Array]' ? ([] as Array) : ({} as objectAny) + baseClone(source[key], target[dyKey]) + } else { + target[dyKey] = source[key] + } + } +} + +export function deepClone(source:T):T { + const __ob__ = getDataType(source) === '[object Array]' ? ([] as Array) : ({} as objectAny); + baseClone(source, __ob__) + return __ob__ as T +} + +export function lockDetectWarn( + router:Router, + to:string|number|totalNextRoute|navRoute, + navType:NAVTYPE, + next:Function, + passiveType?:'beforeHooks'| 'afterHooks' +):void{ + if (passiveType === 'afterHooks') { + next(); + } else { + const {detectBeforeLock} = router.options; + detectBeforeLock && detectBeforeLock(router, to, navType); + if (router.$lockStatus) { + (router.options.routerErrorEach as (error: navErrorRule, router:Router) => void)({ + type: 2, + msg: '当前页面正在处于跳转状态,请稍后再进行跳转....' + }, router); + } else { + next(); + } + } +} + +export function replaceHook( + router:Router, + vueVim:any, + proxyHookKey:'appProxyHook'|'appletsProxyHook', + pageType:pageTypeRule, +):void{ + const vueOptions:appVueHookConfig|pageVueHookConfig = vueVim.$options; + const proxyHook = router[proxyHookKey][(pageType as 'app')]; + let proxyHookChild:baseAppHookConfig|objectAny = {}; + if (getDataType(proxyHook) === '[object Array]') { + proxyHookChild = { + beforeCreate: [], + created: [], + beforeMount: [], + mounted: [], + beforeDestroy: [], + destroyed: [] + } + } + if (proxyHook != null) { + const proxyName = proxyVueSortHookName[pageType]; + for (let i = 0; i < proxyName.length; i++) { + const keyName = proxyName[i]; + const originHook = vueOptions[keyName] as Array|undefined; + if (getDataType|undefined>(originHook) === '[object Array]') { + const proxyInfo:hookObjectRule = { + options: [], + hook: Function + }; + const hook = (originHook as Array).splice((originHook as Array).length - 1, 1, (...options:Array) => (proxyInfo.options = options))[0] + proxyInfo.hook = function resetHook(enterPath:string):Function { + if (router.enterPath.replace(/^\//, '') !== enterPath.replace(/^\//, '') && pageType !== 'app') { + return () => {}; + } + if (!notCallProxyHook.includes(keyName as notCallProxyHookRule)) { + hook.apply(vueVim, proxyInfo.options) + } + return () => { + (originHook as Array).splice((originHook as Array).length - 1, 1, hook); + }; + } + if (Object.keys(proxyHookChild).length > 0) { + proxyHookChild[(keyName as string)] = [proxyInfo]; + } else { + proxyHook[keyName] = [proxyInfo] + } + } + } + if (Object.keys(proxyHookChild).length > 0) { + // @ts-ignore + (proxyHook as appletsVueHookConfig['component']).push(proxyHookChild); + } + } +} +export function callHook( + value:objectAny, + enterPath:string +):Array { + const resetHookFun:Array = []; + for (const [, [origin]] of Object.entries(value as objectAny)) { + if (origin && origin.hook) { + resetHookFun.push(origin.hook(enterPath)) + } + } + return resetHookFun; +} +export function resetPageHook( + router:Router, + enterPath:string +):void{ + // Fixe: https://github.com/SilurianYang/uni-simple-router/issues/206 + const pathInfo = enterPath.trim().match(/^(\/?[^\?\s]+)(\?[\s\S]*$)?$/); + if (pathInfo == null) { + throw new Error(`还原hook失败。请检查 【${enterPath}】 路径是否正确。`); + } + enterPath = pathInfo[1]; + let proxyHookKey:'appProxyHook'|'appletsProxyHook' = 'appletsProxyHook'; + if (router.options.platform === 'app-plus') { + proxyHookKey = 'appProxyHook'; + } + let resetHookFun:Array = []; + for (const [, value] of Object.entries(router[proxyHookKey])) { + if (getDataType(value) === '[object Array]') { + for (let i = 0; i < value.length; i++) { + resetHookFun = resetHookFun.concat(callHook(value[i], enterPath)); + } + } else { + resetHookFun = resetHookFun.concat(callHook(value, enterPath)); + } + } + setTimeout(() => { + for (let i = 0; i < resetHookFun.length; i++) { + resetHookFun[i](); + } + }, 500) +} + +export function reservedWord( + params:string|totalNextRoute +):string|totalNextRoute { + if (typeof params === 'string') { + return params + } + + const query = { + ...(copyData(params.params || {}) as object), + ...(copyData(params.query || {}) as object) + }; + for (let i = 0; i < keyword.length; i++) { + const hasKey = keyword[i]; + if (Reflect.has(query, hasKey)) { + if (getDataType(params.query) === '[object Object]') { + delete (params.query as objectAny)[hasKey]; + } + if (getDataType(params.params) === '[object Object]') { + delete (params.params as objectAny)[hasKey]; + } + warnLock(`${JSON.stringify(keyword)} 作为插件的保留字,在参数传递中不允许使用。已自动被过滤掉!换个参数名试试吧! `) + } + } + + return params +} + +export function assertParentChild( + parentPath:string, + vueVim:any, +):boolean { + while (vueVim.$parent != null) { + const mpPage = vueVim.$parent.$mp; + if (mpPage.page && mpPage.page.is === parentPath) { + return true; + } + vueVim = vueVim.$parent; + } + try { + if (vueVim.$mp.page.is === parentPath || vueVim.$mp.page.route === parentPath) { + return true + } + } catch (error) { + return false + } + return false +} + +export function resolveAbsolutePath( + path:string, + router:Router +):string|never { + const reg = /^\/?([^\?\s]+)(\?.+)?$/; + const trimPath = path.trim(); + if (!reg.test(trimPath)) { + throw new Error(`【${path}】 路径错误,请提供完整的路径(10001)。`); + } + const paramsArray = trimPath.match(reg); + if (paramsArray == null) { + throw new Error(`【${path}】 路径错误,请提供完整的路径(10002)。`); + } + const query:string = paramsArray[2] || ''; + if (/^\.\/[^\.]+/.test(trimPath)) { // 当前路径下 + const navPath:string = router.currentRoute.path + path; + return navPath.replace(/[^\/]+\.\//, ''); + } + const relative = paramsArray[1].replace(/\//g, `\\/`).replace(/\.\./g, `[^\\/]+`).replace(/\./g, '\\.'); + const relativeReg = new RegExp(`^\\/${relative}$`); + const route = router.options.routes.filter(it => relativeReg.test(it.path)); + if (route.length !== 1) { + throw new Error(`【${path}】 路径错误,尝试转成绝对路径失败,请手动转成绝对路径(10003)。`); + } + return route[0].path + query; +} diff --git a/node_modules/uni-simple-router/src/helpers/warn.ts b/node_modules/uni-simple-router/src/helpers/warn.ts new file mode 100644 index 0000000..817ffb7 --- /dev/null +++ b/node_modules/uni-simple-router/src/helpers/warn.ts @@ -0,0 +1,37 @@ + +import {debuggerConfig, debuggerArrayConfig} from '../options/config' +import {Router} from '../options/base' + +type callType='error'|'warn'|'log'; + +export function isLog(type:callType, dev:debuggerConfig, errText:any, enforce:boolean = false):boolean { + if (!enforce) { + const isObject = dev.toString() === '[object Object]'; + if (dev === false) { + return false + } else if (isObject) { + if ((dev as debuggerArrayConfig)[type] === false) { + return false; + } + } + } + console[type](errText); + return true; +} +export function err(errText:any, router:Router, enforce?:boolean):void { + const dev = (router.options.debugger as debuggerConfig); + isLog('error', dev, errText, enforce); +} + +export function warn(errText:any, router:Router, enforce?:boolean):void { + const dev = (router.options.debugger as debuggerConfig); + isLog('warn', dev, errText, enforce); +} + +export function log(errText:any, router:Router, enforce?:boolean):void { + const dev = (router.options.debugger as debuggerConfig); + isLog('log', dev, errText, enforce); +} +export function warnLock(errText:any):void { + console.warn(errText); +} diff --git a/node_modules/uni-simple-router/src/index.ts b/node_modules/uni-simple-router/src/index.ts new file mode 100644 index 0000000..3d5812f --- /dev/null +++ b/node_modules/uni-simple-router/src/index.ts @@ -0,0 +1,11 @@ +export * from './options/base' +export * from './options/config' + +export { + runtimeQuit +} from './app/appPatch' + +export { + RouterMount, + createRouter +} from './public/router' diff --git a/node_modules/uni-simple-router/src/options/base.ts b/node_modules/uni-simple-router/src/options/base.ts new file mode 100644 index 0000000..7508e9b --- /dev/null +++ b/node_modules/uni-simple-router/src/options/base.ts @@ -0,0 +1,236 @@ +import {appletsVueHookConfig, appVueHookConfig, InstantiateConfig, LifeCycleConfig} from '../options/config'; + +export enum hookToggle{ + 'beforeHooks'='beforeEach', + 'afterHooks'='afterEach', + 'enterHooks'='beforeEnter' +} +export enum navtypeToggle{ + 'push'='navigateTo', + 'replace'='redirectTo', + 'replaceAll'='reLaunch', + 'pushTab'='switchTab', + 'back'='navigateBack' +} +export enum rewriteMethodToggle{ + 'navigateTo'='push', + 'navigate'='push', + 'redirectTo'='replace', + 'reLaunch'='replaceAll', + 'switchTab'='pushTab', + 'navigateBack'='back', +} +export type backTypeRule='backbutton'|'navigateBack' +export type pageTypeRule='app'|'page'|'component'; +export type notCallProxyHookRule='onHide'|'beforeDestroy'|'destroyed'|'onUnload'|'onResize'; +export type appVueSortHookRule='beforeCreate'|'created'|'beforeMount'|'mounted'|'onLaunch'|'onShow'|'onHide'|'beforeDestroy'|'destroyed'; +export type pageVueSortHookRule='beforeCreate'|'created'|'beforeMount'|'mounted'|'onLoad'|'onReady'|'onShow'|'onResize'|'onHide'|'beforeDestroy'|'destroyed'|'onUnload'; +export type comVueSortHookRule= 'beforeCreate'|'created'| 'beforeMount'| 'mounted'|'beforeDestroy'| 'destroyed'; +export type reNavMethodRule='navigateTo'|'redirectTo'|'reLaunch'|'switchTab'; +export type reNotNavMethodRule='navigateBack'; +export type reloadNavRule=totalNextRoute | false | undefined|string; +export type hookListRule=Array<(router:Router, to:totalNextRoute, from: totalNextRoute, toRoute:RoutesRule,next:Function)=>void> +export type guardHookRule=(to: totalNextRoute, from: totalNextRoute, next:(rule?: navtoRule|false)=>void)=>void; +export type navRuleStatus= 0|1|2|3; //0: next(false) 1:next(unknownType) 2:加锁状态,禁止跳转 3:在获取页面栈的时候,页面栈不够level获取 +export type proxyHookName='beforeHooks'|'afterHooks'; +export type navMethodRule = Promise; +export type objectAny={[propName: string]: any;}; +export type NAVTYPE = 'push' | 'replace' | 'replaceAll' | 'pushTab'|'back'; +export type startAnimationType = + | 'slide-in-right' + | 'slide-in-left' + | 'slide-in-top' + | 'slide-in-bottom' + | 'pop-in' + | 'fade-in' + | 'zoom-out' + | 'zoom-fade-out' + | 'none'; +export type endAnimationType = + | 'slide-out-right' + | 'slide-out-left' + | 'slide-out-top' + | 'slide-out-bottom' + | 'pop-out' + | 'fade-out' + | 'zoom-in' + | 'zoom-fade-in' + | 'none'; + +// 跳转api时,传递的跳转规则 +export interface navtoRule { + NAVTYPE?: NAVTYPE; // 跳转类型 v1.1.0+ + path?: string; // 跳转路径 绝对路径 + name?: string | undefined; // 跳转路径名称 + query?: objectAny; // 跳转使用path时 query包含需要传递的参数 + params?: objectAny; // 跳转使用name时 params包含需要传递的参数 + animationType?: startAnimationType|endAnimationType; + animationDuration?: number; + events?: objectAny; + success?: Function; + fail?: Function; + complete?: Function; +} +// h5 next管道函数中传递的from及to对象 +export interface h5NextRule { + fullPath?: string | undefined; + hash?: string | undefined; + matched?: Array; + meta?: object; + name?: undefined | string; + type?: undefined | string; +} + +export interface totalNextRoute extends h5NextRule, navtoRule { + path:string; + delta?:number; + [propName: string]: any; +} +export interface navRoute extends h5NextRule, navtoRule { + +} + +// 开始切换窗口动画 app端可用 +export interface startAnimationRule { + animationType?: startAnimationType; // 窗口关闭的动画效果 + animationDuration?: number; // 窗口关闭动画的持续时间 +} +// 关闭窗口时的动画 app端可用 +export interface endAnimationRule { + animationType?: endAnimationType; // 窗口关闭的动画效果 + animationDuration?: number; // 窗口关闭动画的持续时间 +} +export interface hookObjectRule { + options:Array; + hook:Function; +} + +// 执行路由跳转失败或者 next(false) 时走的规则 +export interface navErrorRule { + type: navRuleStatus; + msg: string; + to?:totalNextRoute; + from?:totalNextRoute; + nextTo?:any; + [propName:string]:any; +} +// uni原生api跳转时的规则 +export interface uniNavApiRule { + url: string; + openType?:'appLaunch', + query?:objectAny; + path?:string; + delta?:number; + detail?:{[propName:string]:any}; + animationType?:startAnimationType; + animationDuration?:number; + events?:{[propName:string]:any}; + success?:Function; + fail?:Function; + complete?:Function; + animation?:{ + animationType?:startAnimationType; + animationDuration?:number; + } +} + +export interface originMixins extends uniNavApiRule{ + BACKTYPE:''|backTypeRule +} + +// uni-app 原始返回api 回调参数 +export interface uniBackRule{ + from:backTypeRule; +} + +export interface uniBackApiRule{ + delta?: number; + animationDuration?: number; + animationType?:endAnimationType; +} + +export type routesMapKeysRule= + 'finallyPathList'| + 'finallyPathMap'| + 'aliasPathMap'| + 'pathMap'| + 'nameMap'| + 'vueRouteMap'; + +export interface routesMapRule{ + [key:string]:any; + finallyPathList: Array; + finallyPathMap:RoutesRule; + aliasPathMap: RoutesRule; + pathMap: RoutesRule; + nameMap:RoutesRule, + vueRouteMap:objectAny +} + +export interface routeRule{ + name:string|undefined; + meta:objectAny; + path:string; + query:objectAny; + params:objectAny; + fullPath:string; + NAVTYPE:NAVTYPE|''; + BACKTYPE?:backTypeRule|''; // v2.0.5 + + [propName: string]: any; +} + + +export interface RoutesRule { + path: string; // pages.json中的path 必须加上 '/' 开头 + component?: object; // H5端可用 + name?: string; // 命名路由 + components?: object; // 命名视图组件,H5端可用 + redirect?: string | Function; // H5端可用 + props?: boolean | object | Function; // H5端可用 + aliasPath?: string; // h5端 设置一个别名路径来替换 uni-app的默认路径 + alias?: string | Array; // H5端可用 + children?: Array; // 嵌套路由,H5端可用 + beforeEnter?:guardHookRule; // 路由元守卫 + meta?: any; // 其他格外参数 + [propName: string]: any; +} + +export interface Router { + [key:string]:any; + readonly lifeCycle: LifeCycleConfig; + readonly options: InstantiateConfig; + $lockStatus:boolean; + $route: object | null; + enterPath:string; + Vue:any; + appProxyHook:{ + app:appVueHookConfig + }; + appMain:{ + NAVTYPE:reNavMethodRule|reNotNavMethodRule, + path:string + }|{}; + appletsProxyHook:appletsVueHookConfig; + routesMap: routesMapRule|{}; + mount: Array<{app: any; el: string}>; + install(Vue: any): void; + push(to: totalNextRoute|navRoute | string,from?:totalNextRoute): void; // 动态的导航到一个新 URL 保留浏览历史 + replace(to: totalNextRoute|navRoute | string,from?:totalNextRoute): void; // 动态的导航到一个新 URL 关闭当前页面,跳转到的某个页面。 + replaceAll(to: totalNextRoute|navRoute | string,from?:totalNextRoute): void; // 动态的导航到一个新 URL 关闭所有页面,打开到应用内的某个页面 + pushTab(to: totalNextRoute|navRoute | string,from?:totalNextRoute): void; // 动态的导航到一个新 url 关闭所有页面,打开到应用内的某个tab + back(level:number|undefined,origin?:uniBackRule|uniBackApiRule):void; + forceGuardEach(navType:NAVTYPE|undefined,forceNav:boolean):void; //强制触发当前守卫 + beforeEach(userGuard:guardHookRule): void; // 添加全局前置路由守卫 + afterEach(userGuard:(to: totalNextRoute, from: totalNextRoute)=>void): void; // 添加全局后置路由守卫 +} + + +export type PromiseResolve=(value?: void | PromiseLike | undefined) => void; + +// @ts-ignore +declare module 'vue/types/vue' { + interface Vue { + $Router: Router; + $Route: routeRule; + } +} \ No newline at end of file diff --git a/node_modules/uni-simple-router/src/options/config.ts b/node_modules/uni-simple-router/src/options/config.ts new file mode 100644 index 0000000..65b437c --- /dev/null +++ b/node_modules/uni-simple-router/src/options/config.ts @@ -0,0 +1,84 @@ +import {startAnimationRule, hookListRule, RoutesRule, navtoRule, navErrorRule, Router, objectAny, hookObjectRule, NAVTYPE, totalNextRoute, navRoute} from './base'; + +export type debuggerConfig=boolean|debuggerArrayConfig; + +export interface H5Config { + paramsToQuery?: boolean; // h5端上通过params传参时规则是vue-router 刷新会丢失 开启此开关将变成?连接的方式 + vueRouterDev?: boolean; // 完全使用采用vue-router的开发模式 + vueNext?: boolean; // 在next管道函数中是否获取vueRouter next的原本参数 + mode?: string; + base?: string; + linkActiveClass?: string; + linkExactActiveClass?: string; + scrollBehavior?: Function; + fallback?: boolean; +} +export interface AppConfig { + registerLoadingPage?:boolean; // 是否注册过渡加载页 +v2.0.6 + loadingPageStyle?: () => object; // 当前等待页面的样式 必须返回一个json + loadingPageHook?: (view:any)=>void; // 刚刚打开页面处于等待状态,会触发此函数 + launchedHook?:()=>void; // 首次启动app完成 + animation?: startAnimationRule; // 页面切换动画 +} +export interface appletConfig { + animationDuration?:number; // 页面切换时间,有助于路由锁精准解锁 +} + +export interface debuggerArrayConfig{ + error?:boolean; + warn?:boolean; + log?:boolean; +} + +export interface InstantiateConfig { + [key:string]:any; + keepUniOriginNav?:boolean; // 重写uni-app的跳转方法;关闭后使用uni-app的原始方法跳转和插件api跳转等同 + platform:'h5'|'app-plus'|'app-lets'|'mp-weixin'|'mp-baidu'|'mp-alipay'|'mp-toutiao'|'mp-qq'|'mp-360'; // 当前运行平台 + h5?: H5Config; + APP?: AppConfig; + applet?:appletConfig; + debugger?: debuggerConfig; // 是否处于开发阶段 设置为true则打印日志 + routerBeforeEach?: (to:navtoRule, from:navtoRule, next:(rule?: navtoRule|false)=>void) => void; // router 前置路由函数 每次触发跳转前先会触发此函数 + routerAfterEach?: (to:navtoRule, from:navtoRule, next?: Function) => void; // router 后置路由函数 每次触发跳转后会触发此函数 + routerErrorEach?: (error: navErrorRule, router:Router) => void; + resolveQuery?:(jsonQuery:objectAny)=>objectAny; // 跳转之前把参数传递给此函数、返回最终的数据!有此函数不走默认方法 + parseQuery?:(jsonQuery:objectAny)=>objectAny; // 读取值之前把参数传递给此函数,返回最终的数据!有此函数不走默认方法 + detectBeforeLock?:(router:Router, to:string|number|totalNextRoute|navRoute, navType:NAVTYPE)=>void; // 在检测路由锁之前触发的函数 + routes: RoutesRule[]; +} +export interface LifeCycleConfig{ + beforeHooks: hookListRule; + afterHooks: hookListRule; + routerBeforeHooks: hookListRule; + routerAfterHooks: hookListRule; + routerErrorHooks: Array<(error:navErrorRule, router:Router)=>void>; +} + +export interface baseAppHookConfig{ + [key:string]:Array; + created:Array; + beforeMount:Array; + mounted:Array; + beforeDestroy:Array; + destroyed:Array; +} + +export interface appVueHookConfig extends baseAppHookConfig{ + onLaunch:Array; + onShow:Array; + onHide:Array; +} +export interface pageVueHookConfig extends baseAppHookConfig{ + onShow:Array; + onHide:Array; + onLoad:Array; + onReady:Array; + onUnload:Array; + onResize:Array; +} + +export interface appletsVueHookConfig{ + app:appVueHookConfig; + page:pageVueHookConfig, + component:baseAppHookConfig[] +} diff --git a/node_modules/uni-simple-router/src/public/hooks.ts b/node_modules/uni-simple-router/src/public/hooks.ts new file mode 100644 index 0000000..af5ebe5 --- /dev/null +++ b/node_modules/uni-simple-router/src/public/hooks.ts @@ -0,0 +1,171 @@ +import { + Router, + hookListRule, + navtoRule, + reloadNavRule, + totalNextRoute, + hookToggle, + NAVTYPE, + navErrorRule, + objectAny +} from '../options/base'; +import { + routesForMapRoute, + getDataType, + forMatNextToFrom, + getUniCachePage, + voidFun +} from '../helpers/utils' +import { navjump } from './methods'; +import { proxyH5Mount } from '../H5/proxyHook'; + +export const ERRORHOOK:Array<(error:navErrorRule, router:Router)=>void> = [ + (error, router) => router.lifeCycle.routerErrorHooks[0](error, router) +] +export const HOOKLIST: hookListRule = [ + (router, to, from, toRoute, next) => callHook(router.lifeCycle.routerBeforeHooks[0], to, from, router, next), + (router, to, from, toRoute, next) => callBeforeRouteLeave(router, to, from, next), + (router, to, from, toRoute, next) => callHook(router.lifeCycle.beforeHooks[0], to, from, router, next), + (router, to, from, toRoute, next) => callHook(toRoute.beforeEnter, to, from, router, next), + (router, to, from, toRoute, next) => callHook(router.lifeCycle.afterHooks[0], to, from, router, next, false), + (router, to, from, toRoute, next) => { + router.$lockStatus = false; + if (router.options.platform === 'h5') { + proxyH5Mount(router); + } + return callHook(router.lifeCycle.routerAfterHooks[0], to, from, router, next, false) + } +]; + +export function callBeforeRouteLeave( + router:Router, + to:totalNextRoute, + from:totalNextRoute, + resolve:Function +):void { + const page = getUniCachePage(0); + let beforeRouteLeave; + if (Object.keys(page).length > 0) { + let leaveHooks:Array|undefined|Function; + if (router.options.platform === 'h5') { + leaveHooks = (page as objectAny).$options.beforeRouteLeave; + } else { + if ((page as objectAny).$vm != null) { + leaveHooks = (page as objectAny).$vm.$options.beforeRouteLeave; + } + } + switch (getDataType>((leaveHooks as Array))) { + case '[object Array]': // h5端表现 + beforeRouteLeave = (leaveHooks as Array)[0]; + beforeRouteLeave = beforeRouteLeave.bind(page) + break; + case '[object Function]': // 目前app端表现 + beforeRouteLeave = (leaveHooks as Function).bind((page as objectAny).$vm); + break + } + } + return callHook(beforeRouteLeave, to, from, router, resolve); +} + +export function callHook( + hook:Function|undefined, + to:totalNextRoute, + from: totalNextRoute, + router:Router, + resolve:Function, + hookAwait:boolean|undefined = true +):void { + if (hook != null && hook instanceof Function) { + if (hookAwait === true) { + hook(to, from, resolve, router, false); + } else { + hook(to, from, () => {}, router, false); + resolve(); + } + } else { + resolve(); + } +} + +export function onTriggerEachHook( + to:totalNextRoute, + from: totalNextRoute, + router:Router, + hookType:hookToggle, + next:(rule?: navtoRule|false)=>void, +):void { + let callHookList:hookListRule = []; + switch (hookType) { + case 'beforeEach': + callHookList = HOOKLIST.slice(0, 3); + break; + case 'afterEach': + callHookList = HOOKLIST.slice(4); + break + case 'beforeEnter': + callHookList = HOOKLIST.slice(3, 4); + break; + } + transitionTo(router, to, from, 'push', callHookList, next); +} + +export function transitionTo( + router:Router, + to:totalNextRoute, + from: totalNextRoute, + navType:NAVTYPE, + callHookList:hookListRule, + hookCB:Function +) :void{ + const {matTo, matFrom} = forMatNextToFrom(router, to, from); + if (router.options.platform === 'h5') { + loopCallHook(callHookList, 0, hookCB, router, matTo, matFrom, navType); + } else { + loopCallHook(callHookList.slice(0, 4), 0, () => { + hookCB(() => { // 非H5端等他跳转完才触发最后两个生命周期 + loopCallHook(callHookList.slice(4), 0, voidFun, router, matTo, matFrom, navType); + }); + }, router, matTo, matFrom, navType); + } +} + +export function loopCallHook( + hooks:hookListRule, + index:number, + next:Function, + router:Router, + matTo:totalNextRoute, + matFrom: totalNextRoute, + navType:NAVTYPE, +): void|Function { + const toRoute = routesForMapRoute(router, matTo.path, ['finallyPathMap', 'pathMap']); + if (hooks.length - 1 < index) { + return next(); + } + const hook = hooks[index]; + const errHook = ERRORHOOK[0]; + hook(router, matTo, matFrom, toRoute, (nextTo:reloadNavRule) => { + if (nextTo === false) { + if (router.options.platform === 'h5') { + next(false); + } + errHook({ type: 0, msg: '管道函数传递 false 导航被终止!', matTo, matFrom, nextTo }, router) + } else if (typeof nextTo === 'string' || typeof nextTo === 'object') { + let newNavType = navType; + let newNextTo = nextTo; + if (typeof nextTo === 'object') { + const {NAVTYPE: type, ...moreTo} = nextTo; + newNextTo = moreTo; + if (type != null) { + newNavType = type; + } + } + navjump(newNextTo, router, newNavType, {from: matFrom, next}) + } else if (nextTo == null) { + index++; + loopCallHook(hooks, index, next, router, matTo, matFrom, navType) + } else { + errHook({ type: 1, msg: '管道函数传递未知类型,无法被识别。导航被终止!', matTo, matFrom, nextTo }, router) + } + }); +} diff --git a/node_modules/uni-simple-router/src/public/methods.ts b/node_modules/uni-simple-router/src/public/methods.ts new file mode 100644 index 0000000..5c3368e --- /dev/null +++ b/node_modules/uni-simple-router/src/public/methods.ts @@ -0,0 +1,255 @@ +import { + NAVTYPE, + Router, + totalNextRoute, + objectAny, + routeRule, + reNavMethodRule, + rewriteMethodToggle, + navtypeToggle, + navErrorRule, + uniBackApiRule, + uniBackRule, + navRoute +} from '../options/base' +import { + queryPageToMap, + resolveQuery, + parseQuery +} from './query' +import { + voidFun, + paramsToQuery, + getUniCachePage, + routesForMapRoute, + copyData, + lockDetectWarn, + getDataType, + reservedWord, + notRouteTo404 +} from '../helpers/utils' +import { transitionTo } from './hooks'; +import {createFullPath, createToFrom} from '../public/page' +import {HOOKLIST} from './hooks' + +export function lockNavjump( + to:string|totalNextRoute|navRoute, + router:Router, + navType:NAVTYPE, + forceNav?:boolean, + animation?:uniBackApiRule|uniBackRule +):void{ + lockDetectWarn(router, to, navType, () => { + if (router.options.platform !== 'h5') { + router.$lockStatus = true; + } + navjump(to as totalNextRoute, router, navType, undefined, forceNav, animation); + }); +} +export function navjump( + to:string|totalNextRoute, + router:Router, + navType:NAVTYPE, + nextCall?:{ + from:totalNextRoute; + next:Function; + }, + forceNav?:boolean, + animation?:uniBackApiRule|uniBackRule, + callHook:boolean|undefined = true +) :void|never|totalNextRoute { + if (navType === 'back') { + let level:number = 1; + if (typeof to === 'string') { + level = +to; + } else { + level = to.delta || 1; + } + if (router.options.platform === 'h5') { + (router.$route as any).go(-level); + + // Fixe https://github.com/SilurianYang/uni-simple-router/issues/266 2021年6月3日11:14:38 + // @ts-ignore + const success = (animation || {success: voidFun}).success || voidFun; + // @ts-ignore + const complete = (animation || {complete: voidFun}).complete || voidFun; + success({errMsg: 'navigateBack:ok'}); + complete({errMsg: 'navigateBack:ok'}); + return; + } else { + to = backOptionsBuild(router, level, animation); + } + } + to = reservedWord(to); + const {rule} = queryPageToMap(to, router); + rule.type = navtypeToggle[navType]; + const toRule = paramsToQuery(router, rule); + let parseToRule = resolveQuery(toRule as totalNextRoute, router); + if (router.options.platform === 'h5') { + if (navType !== 'push') { + navType = 'replace'; + } + if (nextCall != null) { // next 管道函数拦截时 直接next即可 + nextCall.next({ + replace: navType !== 'push', + ...parseToRule + }) + } else { + // Fixe https://github.com/SilurianYang/uni-simple-router/issues/240 2021年3月7日14:45:36 + if (navType === 'push' && Reflect.has(parseToRule, 'events')) { + if (Reflect.has(parseToRule, 'name')) { + throw new Error(`在h5端上使用 'push'、'navigateTo' 跳转时,如果包含 events 不允许使用 name 跳转,因为 name 实现了动态路由。请更换为 path 或者 url 跳转!`); + } else { + uni['navigateTo'](parseToRule, true, voidFun, forceNav); + } + } else { + (router.$route as any)[navType](parseToRule, (parseToRule as totalNextRoute).success || voidFun, (parseToRule as totalNextRoute).fail || voidFun) + } + } + } else { + let from:totalNextRoute = {path: ''}; + if (nextCall == null) { + let toRoute = routesForMapRoute(router, parseToRule.path, ['finallyPathMap', 'pathMap']); + toRoute = notRouteTo404(router, toRoute, parseToRule, navType); + parseToRule = { ...toRoute, ...{params: {}}, ...parseToRule, ...{path: toRoute.path} } + from = createToFrom(parseToRule, router); + } else { + from = nextCall.from; + } + createFullPath(parseToRule, from); + if (callHook === false) { + return parseToRule; + } + transitionTo(router, parseToRule, from, navType, HOOKLIST, function( + callOkCb:Function + ):void { + uni[navtypeToggle[navType]](parseToRule, true, callOkCb, forceNav); + }) + } +} + +export function backOptionsBuild( + router:Router, + level:number, + animation?:uniBackApiRule|uniBackRule, +):totalNextRoute { + const toRule = createRoute(router, level); + const navjumpRule:totalNextRoute = { + ...animation || {}, + path: toRule.path, + query: toRule.query, + delta: level + } + if (getDataType(animation) === '[object Object]') { + const {animationDuration, animationType} = (animation as uniBackApiRule) + if (animationDuration != null) { + navjumpRule.animationDuration = animationDuration; + } + if (animationType != null) { + navjumpRule.animationType = animationType; + } + + const {from} = (animation as uniBackRule) + if (from != null) { + navjumpRule.BACKTYPE = from; + } + } + return navjumpRule; +} + +export function forceGuardEach( + router:Router, + navType:NAVTYPE|undefined = 'replaceAll', + forceNav:undefined|boolean = false +):void|never { + if (router.options.platform === 'h5') { + throw new Error(`在h5端上使用:forceGuardEach 是无意义的,目前 forceGuardEach 仅支持在非h5端上使用`); + } + const page = getUniCachePage(0); + if (Object.keys(page).length === 0) { + (router.options.routerErrorEach as (error: navErrorRule, router:Router) => void)({ + type: 3, + msg: `不存在的页面栈,请确保有足够的页面可用,当前 level:0` + }, router); + } + const {route, options} = page as objectAny; + lockNavjump({ + path: `/${route}`, + query: options + }, router, navType, forceNav); +} + +export function createRoute( + router:Router, + level:number|undefined = 0, + orignRule?:totalNextRoute, +):routeRule|never { + const route:routeRule = { + name: '', + meta: {}, + path: '', + fullPath: '', + NAVTYPE: '', + query: {}, + params: {}, + BACKTYPE: (orignRule || {BACKTYPE: ''}).BACKTYPE || '' // v2.0.5 + + }; + + if (level === 19970806) { // 首次构建响应式 页面不存在 直接返回 + return route + } + if (router.options.platform === 'h5') { + let vueRoute:totalNextRoute = {path: ''}; + if (orignRule != null) { + vueRoute = orignRule; + } else { + vueRoute = (router.$route as objectAny).currentRoute; + } + const matRouteParams = copyData(vueRoute.params as objectAny); + delete matRouteParams.__id__; + const toQuery = parseQuery({...matRouteParams, ...copyData(vueRoute.query as objectAny)}, router); + vueRoute = {...vueRoute, query: toQuery} + route.path = vueRoute.path; + route.fullPath = vueRoute.fullPath || ''; + route.query = vueRoute.query || {}; + route.NAVTYPE = rewriteMethodToggle[vueRoute.type as reNavMethodRule || 'reLaunch']; + } else { + let appPage:objectAny = {}; + if (orignRule != null) { + appPage = {...orignRule, openType: orignRule.type}; + } else { + const page = getUniCachePage(level); + if (Object.keys(page).length === 0) { + (router.options.routerErrorEach as (error: navErrorRule, router:Router) => void)({ + type: 3, + msg: `不存在的页面栈,请确保有足够的页面可用,当前 level:${level}` + }, router); + throw new Error(`不存在的页面栈,请确保有足够的页面可用,当前 level:${level}`) + } + // Fixes: https://github.com/SilurianYang/uni-simple-router/issues/196 + let pageOptions = (page as objectAny).options || {}; + const originQuery = pageOptions.query; + if (originQuery != null && Object.keys(pageOptions).length === 1) { + pageOptions = JSON.parse(decodeURIComponent(originQuery)) + } + const pageQuery = JSON.parse(decodeURIComponent(JSON.stringify(pageOptions))) + appPage = { + ...(page as objectAny).$page || {}, + query: pageQuery, + fullPath: decodeURIComponent(((page as objectAny).$page || {}).fullPath || '/' + (page as objectAny).route) + } + if (router.options.platform !== 'app-plus') { + appPage.path = `/${(page as objectAny).route}` + } + } + const openType:reNavMethodRule|'navigateBack' = appPage.openType; + route.query = appPage.query; + route.path = appPage.path; + route.fullPath = appPage.fullPath; + route.NAVTYPE = rewriteMethodToggle[openType || 'reLaunch']; + } + const tableRoute = routesForMapRoute(router, route.path, ['finallyPathMap', 'pathMap']) + const perfectRoute = { ...route, ...tableRoute}; + perfectRoute.query = parseQuery(perfectRoute.query, router); + return perfectRoute; +} diff --git a/node_modules/uni-simple-router/src/public/page.ts b/node_modules/uni-simple-router/src/public/page.ts new file mode 100644 index 0000000..7db1dfd --- /dev/null +++ b/node_modules/uni-simple-router/src/public/page.ts @@ -0,0 +1,41 @@ +import { getDataType, getUniCachePage, deepClone, replaceHook} from '../helpers/utils'; +import { objectAny, pageTypeRule, Router, totalNextRoute } from '../options/base'; +import {createRoute} from './methods' +import { stringifyQuery } from './query'; + +export function createToFrom( + to:totalNextRoute, + router:Router, +):totalNextRoute { + let fromRoute:totalNextRoute = {path: ''}; + const page = getUniCachePage|objectAny>(0); + if (getDataType|objectAny>(page) === '[object Array]') { + fromRoute = deepClone(to) + } else { + fromRoute = createRoute(router) as totalNextRoute; + } + return fromRoute; +} + +export function createFullPath( + to:totalNextRoute, + from:totalNextRoute +):void{ + if (to.fullPath == null) { + const strQuery = stringifyQuery(to.query as objectAny); + to.fullPath = to.path + strQuery; + } + if (from.fullPath == null) { + const strQuery = stringifyQuery(from.query as objectAny); + from.fullPath = from.path + strQuery; + } +} + +export function proxyPageHook( + vueVim:any, + router:Router, + proxyHookKey:'appProxyHook'|'appletsProxyHook', + pageType:pageTypeRule, +):void { + replaceHook(router, vueVim, proxyHookKey, pageType); +} diff --git a/node_modules/uni-simple-router/src/public/query.ts b/node_modules/uni-simple-router/src/public/query.ts new file mode 100644 index 0000000..0f2cec3 --- /dev/null +++ b/node_modules/uni-simple-router/src/public/query.ts @@ -0,0 +1,200 @@ +import { + objectAny, + Router, + routesMapRule, + RoutesRule, + totalNextRoute +} from '../options/base'; +import { + getDataType, + urlToJson, + routesForMapRoute, + getRoutePath, + assertDeepObject, + copyData, + getWildcardRule +} from '../helpers/utils' +import {ERRORHOOK} from './hooks' +import {warn} from '../helpers/warn' + +const encodeReserveRE = /[!'()*]/g +const encodeReserveReplacer = (c:string) => '%' + c.charCodeAt(0).toString(16) +const commaRE = /%2C/g + +const encode = (str:string) => + encodeURIComponent(str) + .replace(encodeReserveRE, encodeReserveReplacer) + .replace(commaRE, ',') + +export function queryPageToMap( + toRule:string|totalNextRoute, + router:Router +) :{ + rule:totalNextRoute; + route:RoutesRule, + query:objectAny +} { + let query:objectAny = {}; + let route:RoutesRule|string = ''; + let successCb = (toRule as totalNextRoute).success; + let failCb = (toRule as totalNextRoute).fail; + if (getDataType(toRule) === '[object Object]') { + const objNavRule = (toRule as totalNextRoute); + if (objNavRule.path != null) { + const {path, query: newQuery} = urlToJson(objNavRule.path); + route = routesForMapRoute(router, path, ['finallyPathList', 'pathMap']); + query = {...newQuery, ...((toRule as totalNextRoute).query || {})}; + objNavRule.path = path; + objNavRule.query = query; + delete (toRule as totalNextRoute).params; + } else if (objNavRule.name != null) { + route = (router.routesMap as routesMapRule).nameMap[objNavRule.name]; + if (route == null) { + route = getWildcardRule(router, { type: 2, msg: `命名路由为:${objNavRule.name} 的路由,无法在路由表中找到!`, toRule}); + } else { + query = (toRule as totalNextRoute).params || {}; + delete (toRule as totalNextRoute).query; + } + } else { + route = getWildcardRule(router, { type: 2, msg: `${toRule} 解析失败,请检测当前路由表下是否有包含。`, toRule}); + } + } else { + toRule = urlToJson((toRule as string)) as totalNextRoute; + route = routesForMapRoute(router, toRule.path, ['finallyPathList', 'pathMap']) + query = toRule.query as objectAny; + } + if (router.options.platform === 'h5') { + const {finallyPath} = getRoutePath(route as RoutesRule, router); + if (finallyPath.includes(':') && (toRule as totalNextRoute).name == null) { + ERRORHOOK[0]({ type: 2, msg: `当有设置 alias或者aliasPath 为动态路由时,不允许使用 path 跳转。请使用 name 跳转!`, route}, router) + } + const completeCb = (toRule as totalNextRoute).complete; + const cacheSuccess = (toRule as totalNextRoute).success; + const cacheFail = (toRule as totalNextRoute).fail; + if (getDataType(completeCb) === '[object Function]') { + const publicCb = function(this:any, args:Array, callHook:Function|undefined):void { + if (getDataType(callHook) === '[object Function]') { + (callHook as Function).apply(this, args); + } + (completeCb as Function).apply(this, args); + } + successCb = function(this:any, ...args:any):void{ + publicCb.call(this, args, cacheSuccess); + }; + failCb = function(this:any, ...args:any):void{ + publicCb.call(this, args, cacheFail); + }; + } + } + const rule = (toRule as totalNextRoute); + if (getDataType(rule.success) === '[object Function]') { + rule.success = successCb; + } + if (getDataType(rule.fail) === '[object Function]') { + rule.fail = failCb; + } + return { + rule, + route: (route as RoutesRule), + query + } +} + +export function resolveQuery( + toRule:totalNextRoute, + router:Router +):totalNextRoute { + let queryKey:'params'|'query' = 'query'; + if (toRule.params as objectAny != null) { + queryKey = 'params'; + } + if (toRule.query as objectAny != null) { + queryKey = 'query'; + } + const query = copyData(toRule[queryKey] || {}); + const {resolveQuery: userResolveQuery} = router.options; + if (userResolveQuery) { + const jsonQuery = userResolveQuery(query); + if (getDataType(jsonQuery) !== '[object Object]') { + warn('请按格式返回参数: resolveQuery?:(jsonQuery:{[propName: string]: any;})=>{[propName: string]: any;}', router) + } else { + toRule[queryKey] = jsonQuery; + } + } else { + const deepObj = assertDeepObject(query as objectAny); + if (!deepObj) { + return toRule; + } + const encode = JSON.stringify(query); + toRule[queryKey] = { + query: encode + } + } + return toRule +} + +export function parseQuery( + query:objectAny, + router:Router, +):objectAny { + const {parseQuery: userParseQuery} = router.options; + if (userParseQuery) { + query = userParseQuery(copyData(query)); + if (getDataType(query) !== '[object Object]') { + warn('请按格式返回参数: parseQuery?:(jsonQuery:{[propName: string]: any;})=>{[propName: string]: any;}', router) + } + } else { + if (Reflect.get(query, 'query')) { // 验证一下是不是深度对象 + const deepQuery = Reflect.get(query, 'query'); + let jsonQuery:objectAny = { + query: decodeURIComponent(deepQuery) + }; + try { + jsonQuery = JSON.parse(jsonQuery.query); + if (typeof jsonQuery === 'object') { + return jsonQuery; + } + } catch (error) { + warn('尝试解析深度对象失败,按原样输出。' + error, router) + } + } + } + return query +} + +export function stringifyQuery(obj:objectAny): string { + const res = obj + ? Object.keys(obj) + .map(key => { + const val = obj[key] + + if (val === undefined) { + return '' + } + + if (val === null) { + return encode(key) + } + + if (Array.isArray(val)) { + const result:Array = [] + val.forEach(val2 => { + if (val2 === undefined) { + return + } + if (val2 === null) { + result.push(encode(key)) + } else { + result.push(encode(key) + '=' + encode(val2)) + } + }) + return result.join('&') + } + + return encode(key) + '=' + encode(val) + }) + .filter(x => x.length > 0) + .join('&') + : null + return res ? `?${res}` : '' +} diff --git a/node_modules/uni-simple-router/src/public/rewrite.ts b/node_modules/uni-simple-router/src/public/rewrite.ts new file mode 100644 index 0000000..5ab8bb2 --- /dev/null +++ b/node_modules/uni-simple-router/src/public/rewrite.ts @@ -0,0 +1,158 @@ +import { + uniNavApiRule, + reNavMethodRule, + reNotNavMethodRule, + Router, + rewriteMethodToggle, + uniBackRule, + uniBackApiRule, + navtoRule, + totalNextRoute, + originMixins, + objectAny +} from '../options/base' + +import { + routesForMapRoute, + getRoutePath, + getDataType, + notDeepClearNull, + resolveAbsolutePath, + getUniCachePage, + timeOut +} from '../helpers/utils' + +import { + warn +} from '../helpers/warn' + +import {uniOriginJump} from './uniOrigin' + +const rewrite: Array = [ + 'navigateTo', + 'redirectTo', + 'reLaunch', + 'switchTab', + 'navigateBack' +]; + +export function rewriteMethod( + router:Router +): void { + if (router.options.keepUniOriginNav === false) { + rewrite.forEach(name => { + const oldMethod: Function = uni[name]; + uni[name] = function( + params:originMixins|{from:string}|navtoRule, + originCall:boolean = false, + callOkCb?:Function, + forceNav?:boolean + ):void { + if (originCall) { + uniOriginJump(router, oldMethod, name, params as originMixins, callOkCb, forceNav) + } else { + if (router.options.platform === 'app-plus') { + if (Object.keys(router.appMain).length === 0) { + router.appMain = { + NAVTYPE: name, + path: (params as uniNavApiRule).url + } + } + } + callRouterMethod(params as uniNavApiRule, name, router); + } + }; + }) + } +} +function callRouterMethod( + option: uniNavApiRule|uniBackRule|uniBackApiRule, + funName:reNavMethodRule|reNotNavMethodRule, + router:Router +): void { + if (router.options.platform === 'app-plus') { + let openType = null; + if (option) { + openType = (option as uniNavApiRule).openType; + } + if (openType != null && openType === 'appLaunch') { + funName = 'reLaunch' + } + } + if (funName === 'reLaunch' && JSON.stringify(option) === '{"url":"/"}') { + warn( + `uni-app 原生方法:reLaunch({url:'/'}) 默认被重写啦!你可以使用 this.$Router.replaceAll() 或者 uni.reLaunch({url:'/?xxx=xxx'})`, + router, + true + ); + funName = 'navigateBack'; + option = { + from: 'backbutton' + } + } + if (funName === 'navigateBack') { + let level:number = 1; + if (option == null) { + option = {delta: 1}; + } + if (getDataType((option as uniBackApiRule).delta) === '[object Number]') { + level = ((option as uniBackApiRule).delta as number); + } + router.back(level, (option as uniBackRule|uniBackApiRule)); + } else { + const routerMethodName = rewriteMethodToggle[(funName as reNavMethodRule)] + let path = (option as uniNavApiRule).url; + if (!path.startsWith('/')) { + const absolutePath = resolveAbsolutePath(path, router); + path = absolutePath; + (option as uniNavApiRule).url = absolutePath; + } + if (funName === 'switchTab') { + const route = routesForMapRoute(router, path, ['pathMap', 'finallyPathList']) + const {finallyPath} = getRoutePath(route, router); + if (getDataType(finallyPath) === '[object Array]') { + warn( + `uni-app 原生方法跳转路径为:${path}。此路为是tab页面时,不允许设置 alias 为数组的情况,并且不能为动态路由!当然你可以通过通配符*解决!`, + router, + true + ); + } + if ((finallyPath as string) === '*') { + warn( + `uni-app 原生方法跳转路径为:${path}。在路由表中找不到相关路由表!当然你可以通过通配符*解决!`, + router, + true + ); + } + // Fixe h5 端无法触发 onTabItemTap hook 2021年6月3日17:26:47 + if (router.options.platform === 'h5') { + const {success: userSuccess} = option as uniNavApiRule; + (option as uniNavApiRule).success = (...args:Array) => { + userSuccess?.apply(null, args); + timeOut(150).then(() => { + const cbArgs = (option as uniNavApiRule).detail || {}; + if (Object.keys(cbArgs).length > 0 && Reflect.has(cbArgs, 'index')) { + const cachePage = getUniCachePage(0); + if (Object.keys(cachePage).length === 0) { + return false + } + const page = cachePage as objectAny; + const hooks = page.$options.onTabItemTap; + if (hooks) { + for (let j = 0; j < hooks.length; j++) { + hooks[j].call(page, cbArgs) + } + } + } + }); + } + } + path = (finallyPath as string); + } + const {events, success, fail, complete, animationType, animationDuration} = option as uniNavApiRule; + const jumpOptions:totalNextRoute = {path, events, success, fail, complete, animationDuration, animationType}; + router[routerMethodName]( + notDeepClearNull(jumpOptions) + ) + } +} diff --git a/node_modules/uni-simple-router/src/public/router.ts b/node_modules/uni-simple-router/src/public/router.ts new file mode 100644 index 0000000..b9a17c3 --- /dev/null +++ b/node_modules/uni-simple-router/src/public/router.ts @@ -0,0 +1,122 @@ +import {PromiseResolve, Router, uniBackApiRule, uniBackRule} from '../options/base'; +import {InstantiateConfig, LifeCycleConfig} from '../options/config'; +import {appProxyHook, indexProxyHook, lifeCycle, keyword} from '../helpers/config'; +import {assertNewOptions, def, getDataType} from '../helpers/utils'; +import {registerRouterHooks, registerEachHooks} from '../helpers/lifeCycle'; +import {initMixins} from '../helpers/mixins' +import {lockNavjump, forceGuardEach, createRoute} from '../public/methods' +import {rewriteMethod} from '../public/rewrite' + +let AppReadyResolve:PromiseResolve = () => {}; +const AppReady:Promise = new Promise(resolve => (AppReadyResolve = resolve)); + +function createRouter(params: InstantiateConfig):Router { + const options = assertNewOptions(params); + const router:Router = { + options, + mount: [], + Vue: null, + appProxyHook: appProxyHook, + appletsProxyHook: indexProxyHook, + appMain: {}, + enterPath: '', + $route: null, + $lockStatus: false, + routesMap: {}, + lifeCycle: registerRouterHooks(lifeCycle, options), + push(to) { + lockNavjump(to, router, 'push'); + }, + replace(to) { + lockNavjump(to, router, 'replace'); + }, + replaceAll(to) { + lockNavjump(to, router, 'replaceAll'); + }, + pushTab(to) { + lockNavjump(to, router, 'pushTab'); + }, + back(level = 1, animation) { + if (getDataType(animation) !== '[object Object]') { + const backRule:uniBackRule = { + from: 'navigateBack' + } + animation = backRule; + } else { + if (!Reflect.has((animation as uniBackRule | uniBackApiRule), 'from')) { + animation = { + ...animation, + from: 'navigateBack' + }; + } + } + lockNavjump(level + '', router, 'back', undefined, animation) + }, + forceGuardEach(navType, forceNav) { + forceGuardEach(router, navType, forceNav) + }, + beforeEach(userGuard):void { + registerEachHooks(router, 'beforeHooks', userGuard); + }, + afterEach(userGuard):void { + registerEachHooks(router, 'afterHooks', userGuard); + }, + install(Vue:any):void{ + router.Vue = Vue; + rewriteMethod(this); + initMixins(Vue, this); + Object.defineProperty(Vue.prototype, '$Router', { + get() { + return router; + } + }); + Object.defineProperty(Vue.prototype, '$Route', { + get() { + return createRoute(router); + } + }); + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/254 + Object.defineProperty(Vue.prototype, '$AppReady', { + get() { + if (router.options.platform === 'h5') { + return Promise.resolve(); + } + return AppReady; + }, + set(value:boolean) { + if (value === true) { + AppReadyResolve(); + } + } + }); + } + } + def(router, 'keyword', () => keyword); + def(router, 'currentRoute', () => createRoute(router)); + + router.beforeEach((to, from, next) => next()); + router.afterEach(() => {}); + return router; +} + +function RouterMount(Vim:any, router:Router, el:string | undefined = '#app') :void|never { + if (getDataType>(router.mount) === '[object Array]') { + router.mount.push({ + app: Vim, + el + }) + } else { + throw new Error(`挂载路由失败,router.app 应该为数组类型。当前类型:${typeof router.mount}`); + } + if (router.options.platform === 'h5') { + const vueRouter = (router.$route as any); + vueRouter.replace({ + path: vueRouter.currentRoute.fullPath + }); + } // 其他端目前不需要做啥 +} + +export { + RouterMount, + createRouter +} diff --git a/node_modules/uni-simple-router/src/public/uniOrigin.ts b/node_modules/uni-simple-router/src/public/uniOrigin.ts new file mode 100644 index 0000000..303d328 --- /dev/null +++ b/node_modules/uni-simple-router/src/public/uniOrigin.ts @@ -0,0 +1,99 @@ +import { originMixins, reNavMethodRule, reNotNavMethodRule, Router, startAnimationRule, uniNavApiRule } from '../options/base'; +import { stringifyQuery } from './query'; +import {notDeepClearNull, resetPageHook, timeOut} from '../helpers/utils' +import { mpPlatformReg } from '../helpers/config'; + +let routerNavCount:number = 0; +let lastNavType:reNavMethodRule|reNotNavMethodRule = 'reLaunch' + +export function uniOriginJump( + router:Router, + originMethod:Function, + funName:reNavMethodRule|reNotNavMethodRule, + options: originMixins, + callOkCb?:Function, + forceNav?:boolean +):void { + const {complete, ...originRule} = formatOriginURLQuery(router, options, funName); + const platform = router.options.platform.trim(); + if (routerNavCount === 0 && platform !== 'h5') { // 还原app.vue下已经重写后的生命周期 + resetPageHook(router, originRule.url) + } + if (forceNav != null && forceNav === false) { + if (routerNavCount === 0) { + routerNavCount++ + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/254 + // 在小程序端 next 直接放行会执行这个 + if (platform !== 'h5') { + router.Vue.prototype.$AppReady = true; + } + } + complete && complete.apply(null, {msg: 'forceGuardEach强制触发并且不执行跳转'}); + callOkCb && callOkCb.apply(null, {msg: 'forceGuardEach强制触发并且不执行跳转'}) + } else { + originMethod({ + ...originRule, + from: options.BACKTYPE, + complete: async function(...args:Array) { + if (routerNavCount === 0) { + routerNavCount++ + + // 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/254 + // 在小程序端 第一次 next 做跳转 会触发这个 、在app端首次必定会触发这个 + if (platform !== 'h5') { + router.Vue.prototype.$AppReady = true; + } + + if (platform === 'app-plus') { + const waitPage = plus.nativeObj.View.getViewById('router-loadding'); + waitPage && waitPage.close(); + const launchedHook = router.options.APP?.launchedHook; + launchedHook && launchedHook(); + } + } + let time:number = 0; + if (new RegExp(mpPlatformReg, 'g').test(platform)) { + time = (router.options.applet?.animationDuration) as number + } else if (platform === 'app-plus') { + if (funName === 'navigateBack' && lastNavType === 'navigateTo') { + time = (router.options.APP?.animation?.animationDuration) as number + } + } + if (funName === 'navigateTo' || funName === 'navigateBack') { + if (time !== 0) { + await timeOut(time); + } + } + lastNavType = funName; + complete && complete.apply(null, args); + callOkCb && callOkCb.apply(null, args) + } + }); + } +} +export function formatOriginURLQuery( + router:Router, + options:uniNavApiRule, + funName:reNavMethodRule|reNotNavMethodRule +):uniNavApiRule { + const {url, path, query, animationType, animationDuration, events, success, fail, complete, delta, animation} = options; + const strQuery = stringifyQuery(query || {}); + const queryURL = strQuery === '' ? (path || url) : (path || url) + strQuery; + let animationRule:startAnimationRule = {}; + if (router.options.platform === 'app-plus') { + if (funName !== 'navigateBack') { + animationRule = router.options.APP?.animation || {}; + animationRule = {...animationRule, ...animation || {}}; + } + } + return notDeepClearNull({ + delta, + url: queryURL, + animationType: animationType || animationRule.animationType, + animationDuration: animationDuration || animationRule.animationDuration, + events, + success, + fail, + complete + }) +} diff --git a/node_modules/uni-simple-router/test/path-to-regexp.spec.ts b/node_modules/uni-simple-router/test/path-to-regexp.spec.ts new file mode 100644 index 0000000..f332ecd --- /dev/null +++ b/node_modules/uni-simple-router/test/path-to-regexp.spec.ts @@ -0,0 +1,61 @@ +import {createRouter, routesMapKeysRule} from '../src/index'; + +import {routesForMapRoute} from '../src/helpers/utils'; + +const routes = [ + {path: '/pages/login/login', name: 'login', aliasPath: '/'}, + {path: '/pages/page2/page2', name: 'page2', aliasPath: '/page2/:id'}, + {path: '/pages/page3/page3', aliasPath: '/:name/page3/:id'}, + {path: '/pages/animation/animation', aliasPath: '/an-(\\d+)-on'}, + {path: '/static/1/1', aliasPath: '/static/(.*)'}, + {path: '/dynamic/1/1', aliasPath: '/dynamic-*'}, + {path: '*'} +]; + +const router = createRouter({ + platform: 'h5', + keepUniOriginNav: true, + routes, +}); + +const Vue = function () {}; +Vue.mixin = () => {}; + +router.install(Vue); + +const rules: routesMapKeysRule[] = ['finallyPathMap', 'pathMap']; + +it('匹配路由', () => { + const toRoute1 = routesForMapRoute(router, '/pages/login/login', rules); + expect(toRoute1).toEqual(routes[0]); + + const toRoute2 = routesForMapRoute(router,'/pages/login/login?id=666',rules); + expect(toRoute2).toEqual(routes[0]); + + const toRoute3 = routesForMapRoute(router, '/page2/6666', rules); + expect(toRoute3).toEqual(routes[1]); + + const toRoute4 = routesForMapRoute(router, '/page2/6666?id=555', rules); + expect(toRoute4).toEqual(routes[1]); + + const toRoute5 = routesForMapRoute(router, '/pages/page3/page3', rules); + expect(toRoute5).toEqual(routes[2]); + + const toRoute6 = routesForMapRoute(router, '/test/page3/123', rules); + expect(toRoute6).toEqual(routes[2]); + + const toRoute7 = routesForMapRoute(router, '/an-123-on', rules); + expect(toRoute7).toEqual(routes[3]); + + const toRoute8 = routesForMapRoute(router, '/static/aaa/bbb?id=1444&name=999', rules); + expect(toRoute8).toEqual(routes[4]); + + const toRoute9 = routesForMapRoute(router, '/dynamic-6666-5555', rules); + expect(toRoute9).toEqual(routes[5]); + + const toRoute10 = routesForMapRoute(router, '/aaaaaa', rules); + expect(toRoute10).toEqual(routes[6]); + + const toRoute11 = routesForMapRoute(router, '---48848--14545', rules); + expect(toRoute11).toEqual(routes[6]); +}); diff --git a/node_modules/uni-simple-router/tsconfig.json b/node_modules/uni-simple-router/tsconfig.json new file mode 100644 index 0000000..0a076f1 --- /dev/null +++ b/node_modules/uni-simple-router/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "CommonJS", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "lib": ["ES2015", "DOM"], + "outDir": "dist/src", + "declaration": true, + "declarationMap": false, + "rootDir": "./src", + "baseUrl": ".", + "paths": {} + }, + "include": ["./src/global.d.ts", "./src/*"], + "exclude": ["node_modules", "**/*.spec.ts"] +} diff --git a/node_modules/uni-simple-router/webpack/webpack.common.js b/node_modules/uni-simple-router/webpack/webpack.common.js new file mode 100644 index 0000000..4359324 --- /dev/null +++ b/node_modules/uni-simple-router/webpack/webpack.common.js @@ -0,0 +1,35 @@ +const {resolve} = require('path'); +const CopyPlugin = require('copy-webpack-plugin'); + +module.exports = { + entry: './src/index.ts', + output: { + library: 'Router', + libraryTarget: 'umd', + }, + resolve: { + extensions: ['.tsx', '.ts', 'd.ts', '.js', '.json'], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + }, + ], + exclude: /node_modules/, + }, + ], + }, + plugins: [ + new CopyPlugin([ + { + force: true, + from: resolve(__dirname, '../src/component'), + to: resolve(__dirname, '../dist'), + }, + ]), + ], +}; diff --git a/node_modules/uni-simple-router/webpack/webpack.dev.js b/node_modules/uni-simple-router/webpack/webpack.dev.js new file mode 100644 index 0000000..79b1374 --- /dev/null +++ b/node_modules/uni-simple-router/webpack/webpack.dev.js @@ -0,0 +1,22 @@ +const {merge} = require("webpack-merge"); +const {resolve} = require('path'); +const common = require("./webpack.common.js"); +const CopyPlugin = require('copy-webpack-plugin'); + +const output=resolve(__dirname, '../examples/uni-simple-router2.0/dist'); + +module.exports = merge(common, { + mode: 'development', + devtool: 'source-map', + output: { + path:output , + filename: 'uni-simple-router.js', + }, + plugins: [ + new CopyPlugin([{ + force: true, + from: resolve(__dirname, '../src/component'), + to: output, + }]), + ] +}); \ No newline at end of file diff --git a/node_modules/uni-simple-router/webpack/webpack.prod.js b/node_modules/uni-simple-router/webpack/webpack.prod.js new file mode 100644 index 0000000..4d65e8f --- /dev/null +++ b/node_modules/uni-simple-router/webpack/webpack.prod.js @@ -0,0 +1,19 @@ +const {resolve} = require('path'); +const {merge} = require("webpack-merge"); +const common = require("./webpack.common.js"); +const rimraf = require('rimraf'); + + +function resolvePath(dir) { + return resolve(__dirname, '../', dir) +} + +rimraf('dist', () => {}); + +module.exports = merge(common, { + mode: "production", + output: { + path: resolvePath('dist'), + filename: 'uni-simple-router.js', + }, +}) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6c43ba5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "barter-app", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "uni-simple-router": "^2.0.6" + } + }, + "node_modules/uni-simple-router": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.6.tgz", + "integrity": "sha512-n5gepoT3QcBrvVLeTCY/DjUjC4m1hNzwFlOa1VlCsww/4/34MGfvegpN9OWR8jOxxtUPKGHLAG0yODL/ITCwbw==" + } + }, + "dependencies": { + "uni-simple-router": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.6.tgz", + "integrity": "sha512-n5gepoT3QcBrvVLeTCY/DjUjC4m1hNzwFlOa1VlCsww/4/34MGfvegpN9OWR8jOxxtUPKGHLAG0yODL/ITCwbw==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7f6843e --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "uni-simple-router": "^2.0.6" + } +} diff --git a/pages.json b/pages.json index 7cdfcd6..725b3da 100644 --- a/pages.json +++ b/pages.json @@ -3,7 +3,7 @@ { "path": "pages/index/index", "style": { - "navigationBarTitleText": "易货" + "navigationBarTitleText": "首页" } } ], diff --git a/router/index.js b/router/index.js new file mode 100644 index 0000000..f557893 --- /dev/null +++ b/router/index.js @@ -0,0 +1,44 @@ +/** + * Web唐明明 + * 匆匆数载恍如梦,岁月迢迢华发增。 + * 碌碌无为枉半生,一朝惊醒万事空。 + * moduleName: router + */ + +import { RouterMount, createRouter } from 'uni-simple-router'; +import store from '../store/index' + +const router = createRouter({ + platform: process.env.VUE_APP_PLATFORM, + routes: [...ROUTES] +}) + +// 全局路由前置守卫 +router.beforeEach((to, from, next) => { + const token = store.getters.getToken || uni.getStorageSync('token') + if(to.meta.auth && token === ''){ + next({ + name: 'Login', + NAVTYPE: 'replaceAll' + }) + return + } + if(to.name === 'Welcome'){ + next({ + name: 'ChainIndex', + NAVTYPE: 'replaceAll' + }) + return + } + next(); +}) + +// 全局路由后置守卫 +router.afterEach((to, from) => { + // console.log('跳转结束--暂无应用场景') +}) + +export { + router, + RouterMount +} diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js new file mode 100644 index 0000000..bd0a9e6 --- /dev/null +++ b/unpackage/dist/dev/app-plus/app-service.js @@ -0,0 +1,410 @@ +(this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[ +/* 0 */ +/*!************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/main.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("__webpack_require__(/*! uni-pages */ 1);var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 8));\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 9));\nvar _router = __webpack_require__(/*! ./router */ 13);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}\n\n_vue.default.use(_router.router);\n\n_vue.default.config.productionTip = false;\n\n_App.default.mpType = 'app';\n\nvar app = new _vue.default(_objectSpread({},\n_App.default));\n\n\n//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式\n\n\n\n\n\napp.$mount(); //为了兼容小程序及app端必须这样写才有效果//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJ1c2UiLCJyb3V0ZXIiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwiQXBwIiwibXBUeXBlIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBbUI7QUFDbkI7QUFDQSxzRDs7QUFFQUEsYUFBSUMsR0FBSixDQUFRQyxjQUFSOztBQUVBRixhQUFJRyxNQUFKLENBQVdDLGFBQVgsR0FBMkIsS0FBM0I7O0FBRUFDLGFBQUlDLE1BQUosR0FBYSxLQUFiOztBQUVBLElBQU1DLEdBQUcsR0FBRyxJQUFJUCxZQUFKO0FBQ0xLLFlBREssRUFBWjs7O0FBSUE7Ozs7OztBQU1DRSxHQUFHLENBQUNDLE1BQUosRyxDQUFjIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3VuaS1wYWdlcyc7aW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgQXBwIGZyb20gJy4vQXBwJ1xuaW1wb3J0IHsgcm91dGVyLCBSb3V0ZXJNb3VudCB9IGZyb20gJy4vcm91dGVyJ1xuXG5WdWUudXNlKHJvdXRlcilcblxuVnVlLmNvbmZpZy5wcm9kdWN0aW9uVGlwID0gZmFsc2VcblxuQXBwLm1wVHlwZSA9ICdhcHAnXG5cbmNvbnN0IGFwcCA9IG5ldyBWdWUoe1xuICAgIC4uLkFwcFxufSlcblxuLy92MS4zLjXotbcgSDXnq68g5L2g5bqU6K+l5Y676Zmk5Y6f5pyJ55qEYXBwLiRtb3VudCgpO+S9v+eUqOi3r+eUseiHquW4pueahOa4suafk+aWueW8j1xuXG5cblxuXG5cblx0YXBwLiRtb3VudCgpOyAvL+S4uuS6huWFvOWuueWwj+eoi+W6j+WPimFwcOerr+W/hemhu+i/meagt+WGmeaJjeacieaViOaenFxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n"); + +/***/ }), +/* 1 */ +/*!***************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/pages.json ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + + +if (typeof Promise !== 'undefined' && !Promise.prototype.finally) { + Promise.prototype.finally = function (callback) { + var promise = this.constructor; + return this.then( + function (value) {return promise.resolve(callback()).then(function () {return value;});}, + function (reason) {return promise.resolve(callback()).then(function () { + throw reason; + });}); + + }; +} + +if (uni.restoreGlobal) { + uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval); +} +__definePage('pages/index/index', function () {return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 2).default);}); + +/***/ }), +/* 2 */ +/*!**************************************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/pages/index/index.vue?mpType=page ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 3);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 5);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 7);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQzZNO0FBQzdNLGdCQUFnQixpTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJiZTg0YTNjJm1wVHlwZT1wYWdlXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaW5kZXgvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n"); + +/***/ }), +/* 3 */ +/*!********************************************************************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***! + \********************************************************************************************************/ +/*! exports provided: render, staticRenderFns, recyclableRender, components */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 4); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); + + + +/***/ }), +/* 4 */ +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/uztech/Desktop/barter-app/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns, recyclableRender, components */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); +var components +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("view", { + staticClass: _vm._$s(0, "sc", "content"), + attrs: { _i: 0 } + }) +} +var recyclableRender = false +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }), +/* 5 */ +/*!**************************************************************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***! + \**************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 6);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW90QixDQUFnQixzdEJBQUcsRUFBQyIsImZpbGUiOiI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LTEhLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n"); + +/***/ }), +/* 6 */ +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/uztech/Desktop/barter-app/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\nvar _default =\n{\n data: function data() {\n return {};\n\n\n },\n onLoad: function onLoad() {\n\n },\n methods: {} };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFPQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTs7O0FBR0EsR0FMQTtBQU1BLFFBTkEsb0JBTUE7O0FBRUEsR0FSQTtBQVNBLGFBVEEsRSIsImZpbGUiOiI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx05piT6LSnXHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZCgpIHtcclxuXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdFxyXG48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n"); + +/***/ }), +/* 7 */ +/*!**********************************************************************************************************!*\ + !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***! + \**********************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent ( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier, /* server only */ + shadowMode, /* vue-cli only */ + components, // fixed by xxxxxx auto components + renderjs // fixed by xxxxxx renderjs +) { + // Vue.extend constructor export interop + var options = typeof scriptExports === 'function' + ? scriptExports.options + : scriptExports + + // fixed by xxxxxx auto components + if (components) { + if (!options.components) { + options.components = {} + } + var hasOwn = Object.prototype.hasOwnProperty + for (var name in components) { + if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) { + options.components[name] = components[name] + } + } + } + // fixed by xxxxxx renderjs + if (renderjs) { + (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() { + this[renderjs.__module] = this + }); + (options.mixins || (options.mixins = [])).push(renderjs) + } + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functioal component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection (h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing + ? [].concat(existing, hook) + : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), +/* 8 */ +/*!**********************!*\ + !*** external "Vue" ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = Vue; + +/***/ }), +/* 9 */ +/*!************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/App.vue ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 10);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 7);\nvar render, staticRenderFns, recyclableRender, components\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMOzs7QUFHbEQ7QUFDdU07QUFDdk0sZ0JBQWdCLGlOQUFVO0FBQzFCLEVBQUUseUVBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNlLGdGIiwiZmlsZSI6IjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHNcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIkFwcC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n"); + +/***/ }), +/* 10 */ +/*!*************************************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/App.vue?vue&type=script&lang=js& ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ 11);\n/* harmony import */ var _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Applications_HBuilderX_app_Contents_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStxQixDQUFnQix5c0JBQUcsRUFBQyIsImZpbGUiOiIxMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vQXBwbGljYXRpb25zL0hCdWlsZGVyWC5hcHAvQ29udGVudHMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9BcHBsaWNhdGlvbnMvSEJ1aWxkZXJYLmFwcC9Db250ZW50cy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uL0FwcGxpY2F0aW9ucy9IQnVpbGRlclguYXBwL0NvbnRlbnRzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///10\n"); + +/***/ }), +/* 11 */ +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!/Users/uztech/Desktop/barter-app/App.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _default =\n{\n onLaunch: function onLaunch() {\n __f__(\"log\", 'App Launch', \" at App.vue:4\");\n },\n onShow: function onShow() {\n __f__(\"log\", 'App Show', \" at App.vue:7\");\n },\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:10\");\n } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 12)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6IjtBQUNlO0FBQ2RBLFVBRGMsc0JBQ0Y7QUFDWCxpQkFBWSxZQUFaO0FBQ0EsR0FIYTtBQUlkQyxRQUpjLG9CQUlKO0FBQ1QsaUJBQVksVUFBWjtBQUNBLEdBTmE7QUFPZEMsUUFQYyxvQkFPSjtBQUNULGlCQUFZLFVBQVo7QUFDQSxHQVRhLEUiLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBkZWZhdWx0IHtcblx0b25MYXVuY2ggKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgTGF1bmNoJylcblx0fSxcblx0b25TaG93ICgpIHtcblx0XHRjb25zb2xlLmxvZygnQXBwIFNob3cnKVxuXHR9LFxuXHRvbkhpZGUgKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgSGlkZScpXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n"); + +/***/ }), +/* 12 */ +/*!*********************************************************************!*\ + !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***! + \*********************************************************************/ +/*! exports provided: log, default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; }); +function typof (v) { + var s = Object.prototype.toString.call(v) + return s.substring(8, s.length - 1) +} + +function isDebugMode () { + /* eslint-disable no-undef */ + return typeof __channelId__ === 'string' && __channelId__ +} + +function jsonStringifyReplacer (k, p) { + switch (typof(p)) { + case 'Function': + return 'function() { [native code] }' + default : + return p + } +} + +function log (type) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key] + } + console[type].apply(console, args) +} + +function formatLog () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key] + } + var type = args.shift() + if (isDebugMode()) { + args.push(args.pop().replace('at ', 'uni-app:///')) + return console[type].apply(console, args) + } + + var msgs = args.map(function (v) { + var type = Object.prototype.toString.call(v).toLowerCase() + + if (type === '[object object]' || type === '[object array]') { + try { + v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---' + } catch (e) { + v = type + } + } else { + if (v === null) { + v = '---NULL---' + } else if (v === undefined) { + v = '---UNDEFINED---' + } else { + var vType = typof(v).toUpperCase() + + if (vType === 'NUMBER' || vType === 'BOOLEAN') { + v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---' + } else { + v = String(v) + } + } + } + + return v + }) + var msg = '' + + if (msgs.length > 1) { + var lastMsg = msgs.pop() + msg = msgs.join('---COMMA---') + + if (lastMsg.indexOf(' at ') === 0) { + msg += lastMsg + } else { + msg += '---COMMA---' + lastMsg + } + } else { + msg = msgs[0] + } + + console[type](msg) +} + + +/***/ }), +/* 13 */ +/*!********************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/router/index.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("Object.defineProperty(exports, \"__esModule\", { value: true });Object.defineProperty(exports, \"RouterMount\", { enumerable: true, get: function get() {return _uniSimpleRouter.RouterMount;} });exports.router = void 0;\n\n\n\n\n\n\nvar _uniSimpleRouter = __webpack_require__(/*! uni-simple-router */ 14);\nvar _index = _interopRequireDefault(__webpack_require__(!(function webpackMissingModule() { var e = new Error(\"Cannot find module '../store/index'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _toConsumableArray(arr) {return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === \"Object\" && o.constructor) n = o.constructor.name;if (n === \"Map\" || n === \"Set\") return Array.from(o);if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _iterableToArray(iter) {if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);}function _arrayWithoutHoles(arr) {if (Array.isArray(arr)) return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}\n\nvar router = (0, _uniSimpleRouter.createRouter)({\n platform: \"app-plus\",\n routes: _toConsumableArray(ROUTES) });\n\n\n// 全局路由前置守卫\nexports.router = router;router.beforeEach(function (to, from, next) {\n var token = _index.default.getters.getToken || uni.getStorageSync('token');\n if (to.meta.auth && token === '') {\n next({\n name: 'Login',\n NAVTYPE: 'replaceAll' });\n\n return;\n }\n if (to.name === 'Welcome') {\n next({\n name: 'ChainIndex',\n NAVTYPE: 'replaceAll' });\n\n return;\n }\n next();\n});\n\n// 全局路由后置守卫\nrouter.afterEach(function (to, from) {\n // console.log('跳转结束--暂无应用场景')\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcm91dGVyL2luZGV4LmpzIl0sIm5hbWVzIjpbInJvdXRlciIsInBsYXRmb3JtIiwicHJvY2VzcyIsInJvdXRlcyIsIlJPVVRFUyIsImJlZm9yZUVhY2giLCJ0byIsImZyb20iLCJuZXh0IiwidG9rZW4iLCJzdG9yZSIsImdldHRlcnMiLCJnZXRUb2tlbiIsInVuaSIsImdldFN0b3JhZ2VTeW5jIiwibWV0YSIsImF1dGgiLCJuYW1lIiwiTkFWVFlQRSIsImFmdGVyRWFjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BO0FBQ0EsbU07O0FBRUEsSUFBTUEsTUFBTSxHQUFHLG1DQUFhO0FBQzNCQyxVQUFRLEVBQUVDLFVBRGlCO0FBRTNCQyxRQUFNLHFCQUFNQyxNQUFOLENBRnFCLEVBQWIsQ0FBZjs7O0FBS0E7d0JBQ0FKLE1BQU0sQ0FBQ0ssVUFBUCxDQUFrQixVQUFDQyxFQUFELEVBQUtDLElBQUwsRUFBV0MsSUFBWCxFQUFvQjtBQUNyQyxNQUFNQyxLQUFLLEdBQUdDLGVBQU1DLE9BQU4sQ0FBY0MsUUFBZCxJQUEwQkMsR0FBRyxDQUFDQyxjQUFKLENBQW1CLE9BQW5CLENBQXhDO0FBQ0EsTUFBR1IsRUFBRSxDQUFDUyxJQUFILENBQVFDLElBQVIsSUFBZ0JQLEtBQUssS0FBSyxFQUE3QixFQUFnQztBQUMvQkQsUUFBSSxDQUFDO0FBQ0pTLFVBQUksRUFBRSxPQURGO0FBRUpDLGFBQU8sRUFBRSxZQUZMLEVBQUQsQ0FBSjs7QUFJQTtBQUNBO0FBQ0QsTUFBR1osRUFBRSxDQUFDVyxJQUFILEtBQVksU0FBZixFQUF5QjtBQUN4QlQsUUFBSSxDQUFDO0FBQ0pTLFVBQUksRUFBRSxZQURGO0FBRUpDLGFBQU8sRUFBRSxZQUZMLEVBQUQsQ0FBSjs7QUFJQTtBQUNBO0FBQ0RWLE1BQUk7QUFDSixDQWpCRDs7QUFtQkE7QUFDQVIsTUFBTSxDQUFDbUIsU0FBUCxDQUFpQixVQUFDYixFQUFELEVBQUtDLElBQUwsRUFBYztBQUMzQjtBQUNILENBRkQiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYuWUkOaYjuaYjlxuICog5YyG5YyG5pWw6L295oGN5aaC5qKm77yM5bKB5pyI6L+i6L+i5Y2O5Y+R5aKe44CCXG4gKiDnooznoozml6DkuLrmnonljYrnlJ/vvIzkuIDmnJ3mg4rphpLkuIfkuovnqbrjgIJcbiAqIG1vZHVsZU5hbWU6IHJvdXRlclxuICovXG5cbmltcG9ydCB7IFJvdXRlck1vdW50LCBjcmVhdGVSb3V0ZXIgfSBmcm9tICd1bmktc2ltcGxlLXJvdXRlcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnLi4vc3RvcmUvaW5kZXgnXG5cbmNvbnN0IHJvdXRlciA9IGNyZWF0ZVJvdXRlcih7XG5cdHBsYXRmb3JtOiBwcm9jZXNzLmVudi5WVUVfQVBQX1BMQVRGT1JNLFxuXHRyb3V0ZXM6IFsuLi5ST1VURVNdXG59KVxuXG4vLyDlhajlsYDot6/nlLHliY3nva7lrojljatcbnJvdXRlci5iZWZvcmVFYWNoKCh0bywgZnJvbSwgbmV4dCkgPT4ge1xuXHRjb25zdCB0b2tlbiA9IHN0b3JlLmdldHRlcnMuZ2V0VG9rZW4gfHwgdW5pLmdldFN0b3JhZ2VTeW5jKCd0b2tlbicpXG5cdGlmKHRvLm1ldGEuYXV0aCAmJiB0b2tlbiA9PT0gJycpe1xuXHRcdG5leHQoe1xuXHRcdFx0bmFtZTogJ0xvZ2luJyxcblx0XHRcdE5BVlRZUEU6ICdyZXBsYWNlQWxsJ1xuXHRcdH0pXG5cdFx0cmV0dXJuXG5cdH1cblx0aWYodG8ubmFtZSA9PT0gJ1dlbGNvbWUnKXtcblx0XHRuZXh0KHtcblx0XHRcdG5hbWU6ICdDaGFpbkluZGV4Jyxcblx0XHRcdE5BVlRZUEU6ICdyZXBsYWNlQWxsJ1xuXHRcdH0pXG5cdFx0cmV0dXJuXG5cdH1cblx0bmV4dCgpO1xufSlcblxuLy8g5YWo5bGA6Lev55Sx5ZCO572u5a6I5Y2rXG5yb3V0ZXIuYWZ0ZXJFYWNoKCh0bywgZnJvbSkgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCfot7Povaznu5PmnZ8tLeaaguaXoOW6lOeUqOWcuuaZrycpXG59KVxuXG5leHBvcnQge1xuXHRyb3V0ZXIsXG5cdFJvdXRlck1vdW50XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n"); + +/***/ }), +/* 14 */ +/*!*************************************************************************************************!*\ + !*** /Users/uztech/Desktop/barter-app/node_modules/uni-simple-router/dist/uni-simple-router.js ***! + \*************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(__f__) {!function (e, t) { true ? module.exports = t() : undefined;}(self, function () {return e = { 779: function _(e, t, r) {var o = r(173);e.exports = function e(t, r, n) {return o(r) || (n = r || n, r = []), n = n || {}, t instanceof RegExp ? function (e, t) {var r = e.source.match(/\((?!\?)/g);if (r) for (var o = 0; o < r.length; o++) {t.push({ name: o, prefix: null, delimiter: null, optional: !1, repeat: !1, partial: !1, asterisk: !1, pattern: null });}return c(e, t);}(t, r) : o(t) ? function (t, r, o) {for (var n = [], a = 0; a < t.length; a++) {n.push(e(t[a], r, o).source);}return c(new RegExp("(?:" + n.join("|") + ")", s(o)), r);}(t, r, n) : function (e, t, r) {return f(a(e, r), t, r);}(t, r, n);}, e.exports.parse = a, e.exports.compile = function (e, t) {return u(a(e, t), t);}, e.exports.tokensToFunction = u, e.exports.tokensToRegExp = f;var n = new RegExp(["(\\\\.)", "([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"), "g");function a(e, t) {for (var r, o = [], a = 0, i = 0, u = "", c = t && t.delimiter || "/"; null != (r = n.exec(e));) {var s = r[0],f = r[1],h = r.index;if (u += e.slice(i, h), i = h + s.length, f) u += f[1];else {var v = e[i],y = r[2],g = r[3],d = r[4],m = r[5],b = r[6],O = r[7];u && (o.push(u), u = "");var P = null != y && null != v && v !== y,k = "+" === b || "*" === b,j = "?" === b || "*" === b,w = r[2] || c,R = d || m;o.push({ name: g || a++, prefix: y || "", delimiter: w, optional: j, repeat: k, partial: P, asterisk: !!O, pattern: R ? p(R) : O ? ".*" : "[^" + l(w) + "]+?" });}}return i < e.length && (u += e.substr(i)), u && o.push(u), o;}function i(e) {return encodeURI(e).replace(/[\/?#]/g, function (e) {return "%" + e.charCodeAt(0).toString(16).toUpperCase();});}function u(e, t) {for (var r = new Array(e.length), n = 0; n < e.length; n++) {"object" == typeof e[n] && (r[n] = new RegExp("^(?:" + e[n].pattern + ")$", s(t)));}return function (t, n) {for (var a = "", u = t || {}, l = (n || {}).pretty ? i : encodeURIComponent, p = 0; p < e.length; p++) {var c = e[p];if ("string" != typeof c) {var s,f = u[c.name];if (null == f) {if (c.optional) {c.partial && (a += c.prefix);continue;}throw new TypeError('Expected "' + c.name + '" to be defined');}if (o(f)) {if (!c.repeat) throw new TypeError('Expected "' + c.name + '" to not repeat, but received `' + JSON.stringify(f) + "`");if (0 === f.length) {if (c.optional) continue;throw new TypeError('Expected "' + c.name + '" to not be empty');}for (var h = 0; h < f.length; h++) {if (s = l(f[h]), !r[p].test(s)) throw new TypeError('Expected all "' + c.name + '" to match "' + c.pattern + '", but received `' + JSON.stringify(s) + "`");a += (0 === h ? c.prefix : c.delimiter) + s;}} else {if (s = c.asterisk ? encodeURI(f).replace(/[?#]/g, function (e) {return "%" + e.charCodeAt(0).toString(16).toUpperCase();}) : l(f), !r[p].test(s)) throw new TypeError('Expected "' + c.name + '" to match "' + c.pattern + '", but received "' + s + '"');a += c.prefix + s;}} else a += c;}return a;};}function l(e) {return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g, "\\$1");}function p(e) {return e.replace(/([=!:$\/()])/g, "\\$1");}function c(e, t) {return e.keys = t, e;}function s(e) {return e && e.sensitive ? "" : "i";}function f(e, t, r) {o(t) || (r = t || r, t = []);for (var n = (r = r || {}).strict, a = !1 !== r.end, i = "", u = 0; u < e.length; u++) {var p = e[u];if ("string" == typeof p) i += l(p);else {var f = l(p.prefix),h = "(?:" + p.pattern + ")";t.push(p), p.repeat && (h += "(?:" + f + h + ")*"), i += h = p.optional ? p.partial ? f + "(" + h + ")?" : "(?:" + f + "(" + h + "))?" : f + "(" + h + ")";}}var v = l(r.delimiter || "/"),y = i.slice(-v.length) === v;return n || (i = (y ? i.slice(0, -v.length) : i) + "(?:" + v + "(?=$))?"), i += a ? "$" : n && y ? "" : "(?=" + v + "|$)", c(new RegExp("^" + i, s(r)), t);}}, 173: function _(e) {e.exports = Array.isArray || function (e) {return "[object Array]" == Object.prototype.toString.call(e);};}, 844: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.buildVueRouter = t.buildVueRoutes = void 0;var n = r(366),a = r(883),i = r(789),u = r(169);t.buildVueRoutes = function (e, t) {for (var r = e.routesMap, o = r.pathMap, l = r.finallyPathList, p = Object.keys(t), c = 0; c < p.length; c++) {var s = p[c],f = o[s],h = t[s];if (f) {var v = i.getRoutePath(f, e).finallyPath;if (v instanceof Array) throw new Error("非 vueRouterDev 模式下,alias、aliasPath、path 无法提供数组类型! " + JSON.stringify(f));null != f.name && (h.name = f.name);var y = h.path,g = h.alias;delete h.alias, h.path = v, "/" === y && null != g && (h.alias = g, h.path = y), f.beforeEnter && (h.beforeEnter = function (t, r, o) {u.onTriggerEachHook(t, r, e, n.hookToggle.enterHooks, o);});} else a.warn(s + " 路由地址在路由表中未找到,确定是否传递漏啦", e, !0);}return l.includes("*") && (t["*"] = o["*"]), t;}, t.buildVueRouter = function (e, t, r) {var n;n = "[object Array]" === i.getDataType(r) ? r : Object.values(r);var a = e.options.h5,u = a.scrollBehavior,l = a.fallback,p = t.options.scrollBehavior;t.options.scrollBehavior = function (e, t, r) {return p && p(e, t, r), u(e, t, r);}, t.fallback = l;var c = new t.constructor(o(o({}, e.options.h5), { base: t.options.base, mode: t.options.mode, routes: n }));t.matcher = c.matcher;};}, 147: function _(e, t) {"use strict";var _r,o = this && this.__extends || (_r = function r(e, t) {return (_r = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) {e.__proto__ = t;} || function (e, t) {for (var r in t) {Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]);}})(e, t);}, function (e, t) {function o() {this.constructor = e;}_r(e, t), e.prototype = null === t ? Object.create(t) : (o.prototype = t.prototype, new o());});Object.defineProperty(t, "__esModule", { value: !0 }), t.proxyH5Mount = t.proxyEachHook = t.MyArray = void 0;var n = function (e) {function t(r, o, n, a) {var i = e.call(this) || this;return i.router = r, i.vueEachArray = o, i.myEachHook = n, i.hookName = a, Object.setPrototypeOf(i, t.prototype), i;}return o(t, e), t.prototype.push = function (e) {var t = this;this.vueEachArray.push(e);var r = this.length;this[this.length] = function (e, o, n) {r > 0 ? t.vueEachArray[r](e, o, function () {n && n();}) : t.myEachHook(e, o, function (a) {!1 === a ? n(!1) : t.vueEachArray[r](e, o, function (e) {n(a);});}, t.router, !0);};}, t;}(Array);t.MyArray = n, t.proxyEachHook = function (e, t) {for (var r = ["beforeHooks", "afterHooks"], o = 0; o < r.length; o++) {var a = r[o],i = e.lifeCycle[a][0];if (i) {var u = t[a];t[a] = new n(e, u, i, a);}}}, t.proxyH5Mount = function (e) {var t;if (0 === e.mount.length) {if (null === (t = e.options.h5) || void 0 === t ? void 0 : t.vueRouterDev) return;navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) && setTimeout(function () {if (document.getElementsByTagName("uni-page").length > 0) return !1;window.location.reload();}, 0);} else e.mount[0].app.$mount(), e.mount = [];};}, 814: function _(e, t) {"use strict";var r = this && this.__assign || function () {return (r = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.runtimeQuit = t.registerLoddingPage = void 0;var o = null;t.registerLoddingPage = function (e) {if (e.options.registerLoadingPage) {var t = e.options.APP,o = t.loadingPageHook,n = t.loadingPageStyle;o(new plus.nativeObj.View("router-loadding", r({ top: "0px", left: "0px", height: "100%", width: "100%" }, n())));}}, t.runtimeQuit = function (e) {void 0 === e && (e = "再按一次退出应用");var t = +new Date();o ? t - o < 1e3 && plus.runtime.quit() : (o = t, uni.showToast({ title: e, icon: "none", position: "bottom", duration: 1e3 }), setTimeout(function () {o = null;}, 1e3));};}, 334: function _(e, t) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 }), t.getEnterPath = void 0, t.getEnterPath = function (e, t) {switch (t.options.platform) {case "mp-alipay":case "mp-weixin":case "mp-toutiao":case "mp-qq":return e.$options.mpInstance.route;case "mp-baidu":return e.$options.mpInstance.is || e.$options.mpInstance.pageinstance.route;}return e.$options.mpInstance.route;};}, 282: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);},n = this && this.__rest || function (e, t) {var r = {};for (var o in e) {Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (r[o] = e[o]);}if (null != e && "function" == typeof Object.getOwnPropertySymbols) {var n = 0;for (o = Object.getOwnPropertySymbols(e); n < o.length; n++) {t.indexOf(o[n]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[n]) && (r[o[n]] = e[o[n]]);}}return r;};Object.defineProperty(t, "__esModule", { value: !0 }), t.notCallProxyHook = t.proxyVueSortHookName = t.indexProxyHook = t.appProxyHook = t.lifeCycle = t.baseConfig = t.mpPlatformReg = t.keyword = void 0;var a = r(883),i = r(789);t.keyword = ["query"], t.mpPlatformReg = "(^mp-weixin$)|(^mp-baidu$)|(^mp-alipay$)|(^mp-toutiao$)|(^mp-qq$)|(^mp-360$)", t.baseConfig = { h5: { paramsToQuery: !1, vueRouterDev: !1, vueNext: !1, mode: "hash", base: "/", linkActiveClass: "router-link-active", linkExactActiveClass: "router-link-exact-active", scrollBehavior: function scrollBehavior(e, t, r) {return { x: 0, y: 0 };}, fallback: !0 }, APP: { registerLoadingPage: !0, loadingPageStyle: function loadingPageStyle() {return JSON.parse('{"backgroundColor":"#FFF"}');}, loadingPageHook: function loadingPageHook(e) {e.show();}, launchedHook: function launchedHook() {plus.navigator.closeSplashscreen();}, animation: {} }, applet: { animationDuration: 300 }, platform: "h5", keepUniOriginNav: !1, debugger: !1, routerBeforeEach: function routerBeforeEach(e, t, r) {r();}, routerAfterEach: function routerAfterEach(e, t) {}, routerErrorEach: function routerErrorEach(e, t) {t.$lockStatus = !1, a.err(e, t, !0);}, detectBeforeLock: function detectBeforeLock(e, t, r) {}, routes: [{ path: "/choose-location" }, { path: "/open-location" }, { path: "/preview-image" }] }, t.lifeCycle = { beforeHooks: [], afterHooks: [], routerBeforeHooks: [], routerAfterHooks: [], routerErrorHooks: [] }, t.appProxyHook = { app: { created: [], beforeMount: [], mounted: [], onLaunch: [], onShow: [], onHide: [], beforeDestroy: [], destroyed: [] } }, t.indexProxyHook = { app: t.appProxyHook.app, page: function (e) {e.onLaunch;var t = n(e, ["onLaunch"]);return o(o({}, t), { onLoad: [], onReady: [], onUnload: [], onResize: [] });}(i.copyData(t.appProxyHook.app)), component: [] }, t.proxyVueSortHookName = { app: ["created", "beforeMount", "mounted", "onLaunch", "onShow", "onHide", "beforeDestroy", "destroyed"], page: ["created", "beforeMount", "mounted", "onLoad", "onReady", "onShow", "onResize", "onHide", "beforeDestroy", "destroyed", "onUnload"], component: ["created", "beforeMount", "mounted", "beforeDestroy", "destroyed"] }, t.notCallProxyHook = ["onHide", "beforeDestroy", "destroyed", "destroyed", "onUnload", "onResize"];}, 801: function _(e, t, r) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 }), t.createRouteMap = void 0;var o = r(883),n = r(789);t.createRouteMap = function (e, t) {var r = { finallyPathList: [], finallyPathMap: Object.create(null), aliasPathMap: Object.create(null), pathMap: Object.create(null), vueRouteMap: Object.create(null), nameMap: Object.create(null) };return t.forEach(function (t) {var a = n.getRoutePath(t, e),i = a.finallyPath,u = a.aliasPath,l = a.path;if (null == l) throw new Error("请提供一个完整的路由对象,包括以绝对路径开始的 ‘path’ 字符串 " + JSON.stringify(t));if (i instanceof Array && !e.options.h5.vueRouterDev && "h5" === e.options.platform) throw new Error("非 vueRouterDev 模式下,route.alias 目前无法提供数组类型! " + JSON.stringify(t));var p = i,c = u;"h5" !== e.options.platform && 0 !== p.indexOf("/") && "*" !== l && o.warn("当前路由对象下,route:" + JSON.stringify(t) + " 是否缺少了前缀 ‘/’", e, !0), r.finallyPathMap[p] || (r.finallyPathMap[p] = t, r.aliasPathMap[c] = t, r.pathMap[l] = t, r.finallyPathList.push(p), null != t.name && (r.nameMap[t.name] = t));}), r;};}, 662: function _(e, t, r) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 }), t.registerEachHooks = t.registerRouterHooks = t.registerHook = void 0;var o = r(366),n = r(169);function a(e, t) {e[0] = t;}t.registerHook = a, t.registerRouterHooks = function (e, t) {return a(e.routerBeforeHooks, function (e, r, o) {t.routerBeforeEach(e, r, o);}), a(e.routerAfterHooks, function (e, r) {t.routerAfterEach(e, r);}), a(e.routerErrorHooks, function (e, r) {t.routerErrorEach(e, r);}), e;}, t.registerEachHooks = function (e, t, r) {a(e.lifeCycle[t], function (e, a, i, u, l) {l ? n.onTriggerEachHook(e, a, u, o.hookToggle[t], i) : r(e, a, i);});};}, 460: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.initMixins = t.getMixins = void 0;var n = r(801),a = r(844),i = r(147),u = r(814),l = r(845),p = r(890),c = r(789),s = r(334),f = r(282),h = !1,v = !1,y = { app: !1, page: "" };function g(e, t) {var r = t.options.platform;return new RegExp(f.mpPlatformReg, "g").test(r) && (r = "app-lets"), { h5: { beforeCreate: function beforeCreate() {var e;if (this.$options.router) {t.$route = this.$options.router;var r = [];(null === (e = t.options.h5) || void 0 === e ? void 0 : e.vueRouterDev) ? r = t.options.routes : (r = n.createRouteMap(t, this.$options.router.options.routes).finallyPathMap, t.routesMap.vueRouteMap = r, a.buildVueRoutes(t, r)), a.buildVueRouter(t, this.$options.router, r), i.proxyEachHook(t, this.$options.router);}} }, "app-plus": { beforeCreate: function beforeCreate() {h || (h = !0, l.proxyPageHook(this, t, "appProxyHook", "app"), u.registerLoddingPage(t));} }, "app-lets": { beforeCreate: function beforeCreate() {var e = this.$options.mpType;"component" !== e || v ? "component" !== e && (y[e] || ("page" === e ? (y[e] = s.getEnterPath(this, t), t.enterPath = y[e]) : y[e] = !0, l.proxyPageHook(this, t, "appletsProxyHook", e))) : c.assertParentChild(y.page, this) && l.proxyPageHook(this, t, "appletsProxyHook", e);}, onLoad: function onLoad() {!v && c.assertParentChild(y.page, this) && (v = !0, p.forceGuardEach(t));} } }[r];}t.getMixins = g, t.initMixins = function (e, t) {var r = n.createRouteMap(t, t.options.routes);t.routesMap = r, e.mixin(o({}, g(0, t)));};}, 789: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);},n = this && this.__rest || function (e, t) {var r = {};for (var o in e) {Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (r[o] = e[o]);}if (null != e && "function" == typeof Object.getOwnPropertySymbols) {var n = 0;for (o = Object.getOwnPropertySymbols(e); n < o.length; n++) {t.indexOf(o[n]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[n]) && (r[o[n]] = e[o[n]]);}}return r;},a = this && this.__spreadArrays || function () {for (var e = 0, t = 0, r = arguments.length; t < r; t++) {e += arguments[t].length;}var o = Array(e),n = 0;for (t = 0; t < r; t++) {for (var a = arguments[t], i = 0, u = a.length; i < u; i++, n++) {o[n] = a[i];}}return o;};Object.defineProperty(t, "__esModule", { value: !0 }), t.resolveAbsolutePath = t.assertParentChild = t.reservedWord = t.resetPageHook = t.callHook = t.replaceHook = t.lockDetectWarn = t.deepClone = t.baseClone = t.assertDeepObject = t.paramsToQuery = t.forMatNextToFrom = t.urlToJson = t.getUniCachePage = t.copyData = t.getDataType = t.routesForMapRoute = t.notRouteTo404 = t.getWildcardRule = t.assertNewOptions = t.getRoutePath = t.notDeepClearNull = t.mergeConfig = t.timeOut = t.def = t.voidFun = void 0;var i = r(282),u = r(169),l = r(883),p = r(890),c = r(779);function s(e, t) {for (var r = Object.create(null), n = Object.keys(e).concat(["resolveQuery", "parseQuery"]), i = 0; i < n.length; i += 1) {var u = n[i];null != t[u] ? t[u].constructor === Object ? r[u] = o(o({}, e[u]), t[u]) : r[u] = "routes" === u ? a(e[u], t[u]) : t[u] : r[u] = e[u];}return r;}function f(e, t) {var r = e.aliasPath || e.alias || e.path;return "h5" !== t.options.platform && (r = e.path), { finallyPath: r, aliasPath: e.aliasPath || e.path, path: e.path, alias: e.alias };}function h(e, t) {var r = e.routesMap.finallyPathMap["*"];if (r) return r;throw t && u.ERRORHOOK[0](t, e), new Error("当前路由表匹配规则已全部匹配完成,未找到满足的匹配规则。你可以使用 '*' 通配符捕捉最后的异常");}function v(e) {return Object.prototype.toString.call(e);}function y(e) {return JSON.parse(JSON.stringify(e));}function g(e, t) {for (var r = 0, o = Object.keys(e); r < o.length; r++) {var n = o[r],a = n;e[n] !== e && ("object" == typeof e[n] ? (t[a] = "[object Array]" === v(e[n]) ? [] : {}, g(e[n], t[a])) : t[a] = e[n]);}}function d(e) {var t = "[object Array]" === v(e) ? [] : {};return g(e, t), t;}function m(e, t) {for (var r = [], o = 0, n = Object.entries(e); o < n.length; o++) {var a = n[o][1][0];a && a.hook && r.push(a.hook(t));}return r;}t.voidFun = function () {}, t.def = function (e, t, r) {Object.defineProperty(e, t, { get: function get() {return r();} });}, t.timeOut = function (e) {return new Promise(function (t) {setTimeout(function () {t();}, e);});}, t.mergeConfig = s, t.notDeepClearNull = function (e) {for (var t in e) {null == e[t] && delete e[t];}return e;}, t.getRoutePath = f, t.assertNewOptions = function (e) {var t,r = e.platform,o = e.routes;if (null == r) throw new Error("你在实例化路由时必须传递 'platform'");if (null == o || 0 === o.length) throw new Error("你在实例化路由时必须传递 routes 为空,这是无意义的。");return "h5" === e.platform && (null === (t = e.h5) || void 0 === t ? void 0 : t.vueRouterDev) && (i.baseConfig.routes = []), s(i.baseConfig, e);}, t.getWildcardRule = h, t.notRouteTo404 = function (e, t, r, o) {if ("*" !== t.path) return t;var n = t.redirect;if (void 0 === n) throw new Error(" * 通配符必须配合 redirect 使用。redirect: string | Location | Function");var a = n;return "function" == typeof a && (a = a(r)), p.navjump(a, e, o, void 0, void 0, void 0, !1);}, t.routesForMapRoute = function (e, t, r) {var o;if (null === (o = e.options.h5) || void 0 === o ? void 0 : o.vueRouterDev) return { path: t };for (var n = t.split("?")[0], a = "", i = e.routesMap, u = 0; u < r.length; u++) {for (var l = i[r[u]], p = 0, s = Object.entries(l); p < s.length; p++) {var f = s[p],y = f[0],g = f[1];if ("*" !== y) {var d = g,m = y;if ("[object Array]" === v(l) && (m = d), null != c(m).exec(n)) return "[object String]" === v(d) ? i.finallyPathMap[d] : d;} else "" === a && (a = "*");}}if ("" !== a) return h(e);throw new Error(t + " 路径无法在路由表中找到!检查跳转路径及路由表");}, t.getDataType = v, t.copyData = y, t.getUniCachePage = function (e) {var t = getCurrentPages();if (null == e) return t;if (0 === t.length) return t;var r = t.reverse()[e];return null == r ? [] : r;}, t.urlToJson = function (e) {var t = {},r = e.split("?"),o = r[0],n = r[1];if (null != n) for (var a = 0, i = n.split("&"); a < i.length; a++) {var u = i[a].split("=");t[u[0]] = u[1];}return { path: o, query: t };}, t.forMatNextToFrom = function (e, t, r) {var o = [t, r],n = o[0],a = o[1];if ("h5" === e.options.platform) {var i = e.options.h5,u = i.vueNext,l = i.vueRouterDev;u || l || (n = p.createRoute(e, void 0, n), a = p.createRoute(e, void 0, a));} else n = p.createRoute(e, void 0, d(n)), a = p.createRoute(e, void 0, d(a));return { matTo: n, matFrom: a };}, t.paramsToQuery = function (e, t) {var r;if ("h5" === e.options.platform && !(null === (r = e.options.h5) || void 0 === r ? void 0 : r.paramsToQuery)) return t;if ("[object Object]" === v(t)) {var a = t,i = a.name,l = a.params,p = n(a, ["name", "params"]),c = l;if ("h5" !== e.options.platform && null == c && (c = {}), null != i && null != c) {var s = e.routesMap.nameMap[i];null == s && (s = h(e, { type: 2, msg: "命名路由为:" + i + " 的路由,无法在路由表中找到!", toRule: t }));var y = f(s, e).finallyPath;if (!y.includes(":")) return o(o({}, p), { path: y, query: c });u.ERRORHOOK[0]({ type: 2, msg: "动态路由:" + y + " 无法使用 paramsToQuery!", toRule: t }, e);}}return t;}, t.assertDeepObject = function (e) {var t = null;try {t = JSON.stringify(e).match(/\{|\[|\}|\]/g);} catch (e) {l.warnLock("传递的参数解析对象失败。" + e);}return null != t && t.length > 3;}, t.baseClone = g, t.deepClone = d, t.lockDetectWarn = function (e, t, r, o, n) {if ("afterHooks" === n) o();else {var a = e.options.detectBeforeLock;a && a(e, t, r), e.$lockStatus ? e.options.routerErrorEach({ type: 2, msg: "当前页面正在处于跳转状态,请稍后再进行跳转...." }, e) : o();}}, t.replaceHook = function (e, t, r, o) {var n = t.$options,a = e[r][o],u = {};if ("[object Array]" === v(a) && (u = { beforeCreate: [], created: [], beforeMount: [], mounted: [], beforeDestroy: [], destroyed: [] }), null != a) {for (var l = i.proxyVueSortHookName[o], p = function p(r) {var p = l[r],c = n[p];if ("[object Array]" === v(c)) {var s = { options: [], hook: Function },f = c.splice(c.length - 1, 1, function () {for (var e = [], t = 0; t < arguments.length; t++) {e[t] = arguments[t];}return s.options = e;})[0];s.hook = function (r) {return e.enterPath.replace(/^\//, "") !== r.replace(/^\//, "") && "app" !== o ? function () {} : (i.notCallProxyHook.includes(p) || f.apply(t, s.options), function () {c.splice(c.length - 1, 1, f);});}, Object.keys(u).length > 0 ? u[p] = [s] : a[p] = [s];}}, c = 0; c < l.length; c++) {p(c);}Object.keys(u).length > 0 && a.push(u);}}, t.callHook = m, t.resetPageHook = function (e, t) {var r = t.trim().match(/^(\/?[^\?\s]+)(\?[\s\S]*$)?$/);if (null == r) throw new Error("还原hook失败。请检查 【" + t + "】 路径是否正确。");t = r[1];var o = "appletsProxyHook";"app-plus" === e.options.platform && (o = "appProxyHook");for (var n = [], a = 0, i = Object.entries(e[o]); a < i.length; a++) {var u = i[a][1];if ("[object Array]" === v(u)) for (var l = 0; l < u.length; l++) {n = n.concat(m(u[l], t));} else n = n.concat(m(u, t));}setTimeout(function () {for (var e = 0; e < n.length; e++) {n[e]();}}, 500);}, t.reservedWord = function (e) {if ("string" == typeof e) return e;for (var t = o(o({}, y(e.params || {})), y(e.query || {})), r = 0; r < i.keyword.length; r++) {var n = i.keyword[r];Reflect.has(t, n) && ("[object Object]" === v(e.query) && delete e.query[n], "[object Object]" === v(e.params) && delete e.params[n], l.warnLock(JSON.stringify(i.keyword) + " 作为插件的保留字,在参数传递中不允许使用。已自动被过滤掉!换个参数名试试吧! "));}return e;}, t.assertParentChild = function (e, t) {for (; null != t.$parent;) {var r = t.$parent.$mp;if (r.page && r.page.is === e) return !0;t = t.$parent;}try {if (t.$mp.page.is === e || t.$mp.page.route === e) return !0;} catch (e) {return !1;}return !1;}, t.resolveAbsolutePath = function (e, t) {var r = /^\/?([^\?\s]+)(\?.+)?$/,o = e.trim();if (!r.test(o)) throw new Error("【" + e + "】 路径错误,请提供完整的路径(10001)。");var n = o.match(r);if (null == n) throw new Error("【" + e + "】 路径错误,请提供完整的路径(10002)。");var a = n[2] || "";if (/^\.\/[^\.]+/.test(o)) return (t.currentRoute.path + e).replace(/[^\/]+\.\//, "");var i = n[1].replace(/\//g, "\\/").replace(/\.\./g, "[^\\/]+").replace(/\./g, "\\."),u = new RegExp("^\\/" + i + "$"),l = t.options.routes.filter(function (e) {return u.test(e.path);});if (1 !== l.length) throw new Error("【" + e + "】 路径错误,尝试转成绝对路径失败,请手动转成绝对路径(10003)。");return l[0].path + a;};}, 883: function _(e, t) {"use strict";function r(e, t, r, o) {if (void 0 === o && (o = !1), !o) {var n = "[object Object]" === t.toString();if (!1 === t) return !1;if (n && !1 === t[e]) return !1;}return console[e](r), !0;}Object.defineProperty(t, "__esModule", { value: !0 }), t.warnLock = t.log = t.warn = t.err = t.isLog = void 0, t.isLog = r, t.err = function (e, t, o) {r("error", t.options.debugger, e, o);}, t.warn = function (e, t, o) {r("warn", t.options.debugger, e, o);}, t.log = function (e, t, o) {r("log", t.options.debugger, e, o);}, t.warnLock = function (e) {__f__("warn", e, " at node_modules/uni-simple-router/dist/uni-simple-router.js:1");};}, 607: function _(e, t, r) {"use strict";var o = this && this.__createBinding || (Object.create ? function (e, t, r, o) {void 0 === o && (o = r), Object.defineProperty(e, o, { enumerable: !0, get: function get() {return t[r];} });} : function (e, t, r, o) {void 0 === o && (o = r), e[o] = t[r];}),n = this && this.__exportStar || function (e, t) {for (var r in e) {"default" === r || Object.prototype.hasOwnProperty.call(t, r) || o(t, e, r);}};Object.defineProperty(t, "__esModule", { value: !0 }), t.createRouter = t.RouterMount = t.runtimeQuit = void 0, n(r(366), t), n(r(309), t);var a = r(814);Object.defineProperty(t, "runtimeQuit", { enumerable: !0, get: function get() {return a.runtimeQuit;} });var i = r(963);Object.defineProperty(t, "RouterMount", { enumerable: !0, get: function get() {return i.RouterMount;} }), Object.defineProperty(t, "createRouter", { enumerable: !0, get: function get() {return i.createRouter;} });}, 366: function _(e, t) {"use strict";var r, o, n;Object.defineProperty(t, "__esModule", { value: !0 }), t.rewriteMethodToggle = t.navtypeToggle = t.hookToggle = void 0, (n = t.hookToggle || (t.hookToggle = {})).beforeHooks = "beforeEach", n.afterHooks = "afterEach", n.enterHooks = "beforeEnter", (o = t.navtypeToggle || (t.navtypeToggle = {})).push = "navigateTo", o.replace = "redirectTo", o.replaceAll = "reLaunch", o.pushTab = "switchTab", o.back = "navigateBack", (r = t.rewriteMethodToggle || (t.rewriteMethodToggle = {})).navigateTo = "push", r.navigate = "push", r.redirectTo = "replace", r.reLaunch = "replaceAll", r.switchTab = "pushTab", r.navigateBack = "back";}, 309: function _(e, t) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 });}, 169: function _(e, t, r) {"use strict";var o = this && this.__rest || function (e, t) {var r = {};for (var o in e) {Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (r[o] = e[o]);}if (null != e && "function" == typeof Object.getOwnPropertySymbols) {var n = 0;for (o = Object.getOwnPropertySymbols(e); n < o.length; n++) {t.indexOf(o[n]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[n]) && (r[o[n]] = e[o[n]]);}}return r;};Object.defineProperty(t, "__esModule", { value: !0 }), t.loopCallHook = t.transitionTo = t.onTriggerEachHook = t.callHook = t.callBeforeRouteLeave = t.HOOKLIST = t.ERRORHOOK = void 0;var n = r(789),a = r(890),i = r(147);function u(e, t, r, o) {var a,i = n.getUniCachePage(0);if (Object.keys(i).length > 0) {var u = void 0;switch ("h5" === e.options.platform ? u = i.$options.beforeRouteLeave : null != i.$vm && (u = i.$vm.$options.beforeRouteLeave), n.getDataType(u)) {case "[object Array]":a = (a = u[0]).bind(i);break;case "[object Function]":a = u.bind(i.$vm);}}return l(a, t, r, e, o);}function l(e, t, r, o, n, a) {void 0 === a && (a = !0), null != e && e instanceof Function ? !0 === a ? e(t, r, n, o, !1) : (e(t, r, function () {}, o, !1), n()) : n();}function p(e, t, r, o, a, i) {var u = n.forMatNextToFrom(e, t, r),l = u.matTo,p = u.matFrom;"h5" === e.options.platform ? c(a, 0, i, e, l, p, o) : c(a.slice(0, 4), 0, function () {i(function () {c(a.slice(4), 0, n.voidFun, e, l, p, o);});}, e, l, p, o);}function c(e, r, i, u, l, p, s) {var f = n.routesForMapRoute(u, l.path, ["finallyPathMap", "pathMap"]);if (e.length - 1 < r) return i();var h = e[r],v = t.ERRORHOOK[0];h(u, l, p, f, function (t) {if (!1 === t) "h5" === u.options.platform && i(!1), v({ type: 0, msg: "管道函数传递 false 导航被终止!", matTo: l, matFrom: p, nextTo: t }, u);else if ("string" == typeof t || "object" == typeof t) {var n = s,f = t;if ("object" == typeof t) {var h = t.NAVTYPE;f = o(t, ["NAVTYPE"]), null != h && (n = h);}a.navjump(f, u, n, { from: p, next: i });} else null == t ? (r++, c(e, r, i, u, l, p, s)) : v({ type: 1, msg: "管道函数传递未知类型,无法被识别。导航被终止!", matTo: l, matFrom: p, nextTo: t }, u);});}t.ERRORHOOK = [function (e, t) {return t.lifeCycle.routerErrorHooks[0](e, t);}], t.HOOKLIST = [function (e, t, r, o, n) {return l(e.lifeCycle.routerBeforeHooks[0], t, r, e, n);}, function (e, t, r, o, n) {return u(e, t, r, n);}, function (e, t, r, o, n) {return l(e.lifeCycle.beforeHooks[0], t, r, e, n);}, function (e, t, r, o, n) {return l(o.beforeEnter, t, r, e, n);}, function (e, t, r, o, n) {return l(e.lifeCycle.afterHooks[0], t, r, e, n, !1);}, function (e, t, r, o, n) {return e.$lockStatus = !1, "h5" === e.options.platform && i.proxyH5Mount(e), l(e.lifeCycle.routerAfterHooks[0], t, r, e, n, !1);}], t.callBeforeRouteLeave = u, t.callHook = l, t.onTriggerEachHook = function (e, r, o, n, a) {var i = [];switch (n) {case "beforeEach":i = t.HOOKLIST.slice(0, 3);break;case "afterEach":i = t.HOOKLIST.slice(4);break;case "beforeEnter":i = t.HOOKLIST.slice(3, 4);}p(o, e, r, "push", i, a);}, t.transitionTo = p, t.loopCallHook = c;}, 890: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.createRoute = t.forceGuardEach = t.backOptionsBuild = t.navjump = t.lockNavjump = void 0;var n = r(366),a = r(99),i = r(789),u = r(169),l = r(845),p = r(169);function c(e, t, r, o, n) {i.lockDetectWarn(t, e, r, function () {"h5" !== t.options.platform && (t.$lockStatus = !0), s(e, t, r, void 0, o, n);});}function s(e, t, r, c, s, h, v) {if (void 0 === v && (v = !0), "back" === r) {var y;if (y = "string" == typeof e ? +e : e.delta || 1, "h5" === t.options.platform) {t.$route.go(-y);var g = (h || { success: i.voidFun }).success || i.voidFun,d = (h || { complete: i.voidFun }).complete || i.voidFun;return g({ errMsg: "navigateBack:ok" }), void d({ errMsg: "navigateBack:ok" });}e = f(t, y, h);}e = i.reservedWord(e);var m = a.queryPageToMap(e, t).rule;m.type = n.navtypeToggle[r];var b = i.paramsToQuery(t, m),O = a.resolveQuery(b, t);if ("h5" === t.options.platform) {if ("push" !== r && (r = "replace"), null != c) c.next(o({ replace: "push" !== r }, O));else if ("push" === r && Reflect.has(O, "events")) {if (Reflect.has(O, "name")) throw new Error("在h5端上使用 'push'、'navigateTo' 跳转时,如果包含 events 不允许使用 name 跳转,因为 name 实现了动态路由。请更换为 path 或者 url 跳转!");uni.navigateTo(O, !0, i.voidFun, s);} else t.$route[r](O, O.success || i.voidFun, O.fail || i.voidFun);} else {var P = { path: "" };if (null == c) {var k = i.routesForMapRoute(t, O.path, ["finallyPathMap", "pathMap"]);k = i.notRouteTo404(t, k, O, r), O = o(o(o(o({}, k), { params: {} }), O), { path: k.path }), P = l.createToFrom(O, t);} else P = c.from;if (l.createFullPath(O, P), !1 === v) return O;u.transitionTo(t, O, P, r, p.HOOKLIST, function (e) {uni[n.navtypeToggle[r]](O, !0, e, s);});}}function f(e, t, r) {var n = h(e, t),a = o(o({}, r || {}), { path: n.path, query: n.query, delta: t });if ("[object Object]" === i.getDataType(r)) {var u = r,l = u.animationDuration,p = u.animationType;null != l && (a.animationDuration = l), null != p && (a.animationType = p);var c = r.from;null != c && (a.BACKTYPE = c);}return a;}function h(e, t, r) {void 0 === t && (t = 0);var u = { name: "", meta: {}, path: "", fullPath: "", NAVTYPE: "", query: {}, params: {}, BACKTYPE: (r || { BACKTYPE: "" }).BACKTYPE || "" };if (19970806 === t) return u;if ("h5" === e.options.platform) {var l = { path: "" };l = null != r ? r : e.$route.currentRoute;var p = i.copyData(l.params);delete p.__id__;var c = a.parseQuery(o(o({}, p), i.copyData(l.query)), e);l = o(o({}, l), { query: c }), u.path = l.path, u.fullPath = l.fullPath || "", u.query = l.query || {}, u.NAVTYPE = n.rewriteMethodToggle[l.type || "reLaunch"];} else {var s = {};if (null != r) s = o(o({}, r), { openType: r.type });else {var f = i.getUniCachePage(t);if (0 === Object.keys(f).length) throw e.options.routerErrorEach({ type: 3, msg: "不存在的页面栈,请确保有足够的页面可用,当前 level:" + t }, e), new Error("不存在的页面栈,请确保有足够的页面可用,当前 level:" + t);var h = f.options || {},v = h.query;null != v && 1 === Object.keys(h).length && (h = JSON.parse(decodeURIComponent(v)));var y = JSON.parse(decodeURIComponent(JSON.stringify(h)));s = o(o({}, f.$page || {}), { query: y, fullPath: decodeURIComponent((f.$page || {}).fullPath || "/" + f.route) }), "app-plus" !== e.options.platform && (s.path = "/" + f.route);}var g = s.openType;u.query = s.query, u.path = s.path, u.fullPath = s.fullPath, u.NAVTYPE = n.rewriteMethodToggle[g || "reLaunch"];}var d = i.routesForMapRoute(e, u.path, ["finallyPathMap", "pathMap"]),m = o(o({}, u), d);return m.query = a.parseQuery(m.query, e), m;}t.lockNavjump = c, t.navjump = s, t.backOptionsBuild = f, t.forceGuardEach = function (e, t, r) {if (void 0 === t && (t = "replaceAll"), void 0 === r && (r = !1), "h5" === e.options.platform) throw new Error("在h5端上使用:forceGuardEach 是无意义的,目前 forceGuardEach 仅支持在非h5端上使用");var o = i.getUniCachePage(0);0 === Object.keys(o).length && e.options.routerErrorEach({ type: 3, msg: "不存在的页面栈,请确保有足够的页面可用,当前 level:0" }, e);var n = o;c({ path: "/" + n.route, query: n.options }, e, t, r);}, t.createRoute = h;}, 845: function _(e, t, r) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 }), t.proxyPageHook = t.createFullPath = t.createToFrom = void 0;var o = r(789),n = r(890),a = r(99);t.createToFrom = function (e, t) {var r = o.getUniCachePage(0);return "[object Array]" === o.getDataType(r) ? o.deepClone(e) : n.createRoute(t);}, t.createFullPath = function (e, t) {if (null == e.fullPath) {var r = a.stringifyQuery(e.query);e.fullPath = e.path + r;}null == t.fullPath && (r = a.stringifyQuery(t.query), t.fullPath = t.path + r);}, t.proxyPageHook = function (e, t, r, n) {o.replaceHook(t, e, r, n);};}, 99: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.stringifyQuery = t.parseQuery = t.resolveQuery = t.queryPageToMap = void 0;var n = r(789),a = r(169),i = r(883),u = /[!'()*]/g,l = function l(e) {return "%" + e.charCodeAt(0).toString(16);},p = /%2C/g,c = function c(e) {return encodeURIComponent(e).replace(u, l).replace(p, ",");};t.queryPageToMap = function (e, t) {var r = {},i = "",u = e.success,l = e.fail;if ("[object Object]" === n.getDataType(e)) {var p = e;if (null != p.path) {var c = n.urlToJson(p.path),s = c.path,f = c.query;i = n.routesForMapRoute(t, s, ["finallyPathList", "pathMap"]), r = o(o({}, f), e.query || {}), p.path = s, p.query = r, delete e.params;} else null != p.name ? null == (i = t.routesMap.nameMap[p.name]) ? i = n.getWildcardRule(t, { type: 2, msg: "命名路由为:" + p.name + " 的路由,无法在路由表中找到!", toRule: e }) : (r = e.params || {}, delete e.query) : i = n.getWildcardRule(t, { type: 2, msg: e + " 解析失败,请检测当前路由表下是否有包含。", toRule: e });} else e = n.urlToJson(e), i = n.routesForMapRoute(t, e.path, ["finallyPathList", "pathMap"]), r = e.query;if ("h5" === t.options.platform) {n.getRoutePath(i, t).finallyPath.includes(":") && null == e.name && a.ERRORHOOK[0]({ type: 2, msg: "当有设置 alias或者aliasPath 为动态路由时,不允许使用 path 跳转。请使用 name 跳转!", route: i }, t);var h = e.complete,v = e.success,y = e.fail;if ("[object Function]" === n.getDataType(h)) {var g = function g(e, t) {"[object Function]" === n.getDataType(t) && t.apply(this, e), h.apply(this, e);};u = function u() {for (var e = [], t = 0; t < arguments.length; t++) {e[t] = arguments[t];}g.call(this, e, v);}, l = function l() {for (var e = [], t = 0; t < arguments.length; t++) {e[t] = arguments[t];}g.call(this, e, y);};}}var d = e;return "[object Function]" === n.getDataType(d.success) && (d.success = u), "[object Function]" === n.getDataType(d.fail) && (d.fail = l), { rule: d, route: i, query: r };}, t.resolveQuery = function (e, t) {var r = "query";null != e.params && (r = "params"), null != e.query && (r = "query");var o = n.copyData(e[r] || {}),a = t.options.resolveQuery;if (a) {var u = a(o);"[object Object]" !== n.getDataType(u) ? i.warn("请按格式返回参数: resolveQuery?:(jsonQuery:{[propName: string]: any;})=>{[propName: string]: any;}", t) : e[r] = u;} else {if (!n.assertDeepObject(o)) return e;var l = JSON.stringify(o);e[r] = { query: l };}return e;}, t.parseQuery = function (e, t) {var r = t.options.parseQuery;if (r) e = r(n.copyData(e)), "[object Object]" !== n.getDataType(e) && i.warn("请按格式返回参数: parseQuery?:(jsonQuery:{[propName: string]: any;})=>{[propName: string]: any;}", t);else if (Reflect.get(e, "query")) {var o = Reflect.get(e, "query"),a = { query: decodeURIComponent(o) };try {if ("object" == typeof (a = JSON.parse(a.query))) return a;} catch (e) {i.warn("尝试解析深度对象失败,按原样输出。" + e, t);}}return e;}, t.stringifyQuery = function (e) {var t = e ? Object.keys(e).map(function (t) {var r = e[t];if (void 0 === r) return "";if (null === r) return c(t);if (Array.isArray(r)) {var o = [];return r.forEach(function (e) {void 0 !== e && (null === e ? o.push(c(t)) : o.push(c(t) + "=" + c(e)));}), o.join("&");}return c(t) + "=" + c(r);}).filter(function (e) {return e.length > 0;}).join("&") : null;return t ? "?" + t : "";};}, 314: function _(e, t, r) {"use strict";Object.defineProperty(t, "__esModule", { value: !0 }), t.rewriteMethod = void 0;var o = r(366),n = r(789),a = r(883),i = r(809),u = ["navigateTo", "redirectTo", "reLaunch", "switchTab", "navigateBack"];t.rewriteMethod = function (e) {!1 === e.options.keepUniOriginNav && u.forEach(function (t) {var r = uni[t];uni[t] = function (u, l, p, c) {void 0 === l && (l = !1), l ? i.uniOriginJump(e, r, t, u, p, c) : ("app-plus" === e.options.platform && 0 === Object.keys(e.appMain).length && (e.appMain = { NAVTYPE: t, path: u.url }), function (e, t, r) {if ("app-plus" === r.options.platform) {var i = null;e && (i = e.openType), null != i && "appLaunch" === i && (t = "reLaunch");}if ("reLaunch" === t && '{"url":"/"}' === JSON.stringify(e) && (a.warn("uni-app 原生方法:reLaunch({url:'/'}) 默认被重写啦!你可以使用 this.$Router.replaceAll() 或者 uni.reLaunch({url:'/?xxx=xxx'})", r, !0), t = "navigateBack", e = { from: "backbutton" }), "navigateBack" === t) {var u = 1;null == e && (e = { delta: 1 }), "[object Number]" === n.getDataType(e.delta) && (u = e.delta), r.back(u, e);} else {var l = o.rewriteMethodToggle[t],p = e.url;if (!p.startsWith("/")) {var c = n.resolveAbsolutePath(p, r);p = c, e.url = c;}if ("switchTab" === t) {var s = n.routesForMapRoute(r, p, ["pathMap", "finallyPathList"]),f = n.getRoutePath(s, r).finallyPath;if ("[object Array]" === n.getDataType(f) && a.warn("uni-app 原生方法跳转路径为:" + p + "。此路为是tab页面时,不允许设置 alias 为数组的情况,并且不能为动态路由!当然你可以通过通配符*解决!", r, !0), "*" === f && a.warn("uni-app 原生方法跳转路径为:" + p + "。在路由表中找不到相关路由表!当然你可以通过通配符*解决!", r, !0), "h5" === r.options.platform) {var h = e.success;e.success = function () {for (var t = [], r = 0; r < arguments.length; r++) {t[r] = arguments[r];}null == h || h.apply(null, t), n.timeOut(150).then(function () {var t = e.detail || {};if (Object.keys(t).length > 0 && Reflect.has(t, "index")) {var r = n.getUniCachePage(0);if (0 === Object.keys(r).length) return !1;var o = r,a = o.$options.onTabItemTap;if (a) for (var i = 0; i < a.length; i++) {a[i].call(o, t);}}});};}p = f;}var v = e,y = v.events,g = v.success,d = v.fail,m = v.complete,b = v.animationType,O = { path: p, events: y, success: g, fail: d, complete: m, animationDuration: v.animationDuration, animationType: b };r[l](n.notDeepClearNull(O));}}(u, t, e));};});};}, 963: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);};Object.defineProperty(t, "__esModule", { value: !0 }), t.createRouter = t.RouterMount = void 0;var n = r(282),a = r(789),i = r(662),u = r(460),l = r(890),p = r(314),c = function c() {},s = new Promise(function (e) {return c = e;});t.createRouter = function (e) {var t = a.assertNewOptions(e),r = { options: t, mount: [], Vue: null, appProxyHook: n.appProxyHook, appletsProxyHook: n.indexProxyHook, appMain: {}, enterPath: "", $route: null, $lockStatus: !1, routesMap: {}, lifeCycle: i.registerRouterHooks(n.lifeCycle, t), push: function push(e) {l.lockNavjump(e, r, "push");}, replace: function replace(e) {l.lockNavjump(e, r, "replace");}, replaceAll: function replaceAll(e) {l.lockNavjump(e, r, "replaceAll");}, pushTab: function pushTab(e) {l.lockNavjump(e, r, "pushTab");}, back: function back(e, t) {void 0 === e && (e = 1), "[object Object]" !== a.getDataType(t) ? t = { from: "navigateBack" } : Reflect.has(t, "from") || (t = o(o({}, t), { from: "navigateBack" })), l.lockNavjump(e + "", r, "back", void 0, t);}, forceGuardEach: function forceGuardEach(e, t) {l.forceGuardEach(r, e, t);}, beforeEach: function beforeEach(e) {i.registerEachHooks(r, "beforeHooks", e);}, afterEach: function afterEach(e) {i.registerEachHooks(r, "afterHooks", e);}, install: function install(e) {r.Vue = e, p.rewriteMethod(this), u.initMixins(e, this), Object.defineProperty(e.prototype, "$Router", { get: function get() {return r;} }), Object.defineProperty(e.prototype, "$Route", { get: function get() {return l.createRoute(r);} }), Object.defineProperty(e.prototype, "$AppReady", { get: function get() {return "h5" === r.options.platform ? Promise.resolve() : s;}, set: function set(e) {!0 === e && c();} });} };return a.def(r, "keyword", function () {return n.keyword;}), a.def(r, "currentRoute", function () {return l.createRoute(r);}), r.beforeEach(function (e, t, r) {return r();}), r.afterEach(function () {}), r;}, t.RouterMount = function (e, t, r) {if (void 0 === r && (r = "#app"), "[object Array]" !== a.getDataType(t.mount)) throw new Error("挂载路由失败,router.app 应该为数组类型。当前类型:" + typeof t.mount);if (t.mount.push({ app: e, el: r }), "h5" === t.options.platform) {var o = t.$route;o.replace({ path: o.currentRoute.fullPath });}};}, 809: function _(e, t, r) {"use strict";var o = this && this.__assign || function () {return (o = Object.assign || function (e) {for (var t, r = 1, o = arguments.length; r < o; r++) {for (var n in t = arguments[r]) {Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);}}return e;}).apply(this, arguments);},n = this && this.__awaiter || function (e, t, r, o) {return new (r || (r = Promise))(function (n, a) {function i(e) {try {l(o.next(e));} catch (e) {a(e);}}function u(e) {try {l(o.throw(e));} catch (e) {a(e);}}function l(e) {var t;e.done ? n(e.value) : (t = e.value, t instanceof r ? t : new r(function (e) {e(t);})).then(i, u);}l((o = o.apply(e, t || [])).next());});},a = this && this.__generator || function (e, t) {var r,o,n,a,i = { label: 0, sent: function sent() {if (1 & n[0]) throw n[1];return n[1];}, trys: [], ops: [] };return a = { next: u(0), throw: u(1), return: u(2) }, "function" == typeof Symbol && (a[Symbol.iterator] = function () {return this;}), a;function u(a) {return function (u) {return function (a) {if (r) throw new TypeError("Generator is already executing.");for (; i;) {try {if (r = 1, o && (n = 2 & a[0] ? o.return : a[0] ? o.throw || ((n = o.return) && n.call(o), 0) : o.next) && !(n = n.call(o, a[1])).done) return n;switch (o = 0, n && (a = [2 & a[0], n.value]), a[0]) {case 0:case 1:n = a;break;case 4:return i.label++, { value: a[1], done: !1 };case 5:i.label++, o = a[1], a = [0];continue;case 7:a = i.ops.pop(), i.trys.pop();continue;default:if (!((n = (n = i.trys).length > 0 && n[n.length - 1]) || 6 !== a[0] && 2 !== a[0])) {i = 0;continue;}if (3 === a[0] && (!n || a[1] > n[0] && a[1] < n[3])) {i.label = a[1];break;}if (6 === a[0] && i.label < n[1]) {i.label = n[1], n = a;break;}if (n && i.label < n[2]) {i.label = n[2], i.ops.push(a);break;}n[2] && i.ops.pop(), i.trys.pop();continue;}a = t.call(e, i);} catch (e) {a = [6, e], o = 0;} finally {r = n = 0;}}if (5 & a[0]) throw a[1];return { value: a[0] ? a[1] : void 0, done: !0 };}([a, u]);};}},i = this && this.__rest || function (e, t) {var r = {};for (var o in e) {Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (r[o] = e[o]);}if (null != e && "function" == typeof Object.getOwnPropertySymbols) {var n = 0;for (o = Object.getOwnPropertySymbols(e); n < o.length; n++) {t.indexOf(o[n]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[n]) && (r[o[n]] = e[o[n]]);}}return r;};Object.defineProperty(t, "__esModule", { value: !0 }), t.formatOriginURLQuery = t.uniOriginJump = void 0;var u = r(99),l = r(789),p = r(282),c = 0,s = "reLaunch";function f(e, t, r) {var n,a = t.url,i = t.path,p = t.query,c = t.animationType,s = t.animationDuration,f = t.events,h = t.success,v = t.fail,y = t.complete,g = t.delta,d = t.animation,m = u.stringifyQuery(p || {}),b = "" === m ? i || a : (i || a) + m,O = {};return "app-plus" === e.options.platform && "navigateBack" !== r && (O = (null === (n = e.options.APP) || void 0 === n ? void 0 : n.animation) || {}, O = o(o({}, O), d || {})), l.notDeepClearNull({ delta: g, url: b, animationType: c || O.animationType, animationDuration: s || O.animationDuration, events: f, success: h, fail: v, complete: y });}t.uniOriginJump = function (e, t, r, u, h, v) {var y = f(e, u, r),g = y.complete,d = i(y, ["complete"]),m = e.options.platform.trim();0 === c && "h5" !== m && l.resetPageHook(e, d.url), null != v && !1 === v ? (0 === c && (c++, "h5" !== m && (e.Vue.prototype.$AppReady = !0)), g && g.apply(null, { msg: "forceGuardEach强制触发并且不执行跳转" }), h && h.apply(null, { msg: "forceGuardEach强制触发并且不执行跳转" })) : t(o(o({}, d), { from: u.BACKTYPE, complete: function complete() {for (var t, o, i, u, f = [], v = 0; v < arguments.length; v++) {f[v] = arguments[v];}return n(this, void 0, void 0, function () {var n, v, y;return a(this, function (a) {switch (a.label) {case 0:return 0 === c && (c++, "h5" !== m && (e.Vue.prototype.$AppReady = !0), "app-plus" === m && ((n = plus.nativeObj.View.getViewById("router-loadding")) && n.close(), (v = null === (t = e.options.APP) || void 0 === t ? void 0 : t.launchedHook) && v())), y = 0, new RegExp(p.mpPlatformReg, "g").test(m) ? y = null === (o = e.options.applet) || void 0 === o ? void 0 : o.animationDuration : "app-plus" === m && "navigateBack" === r && "navigateTo" === s && (y = null === (u = null === (i = e.options.APP) || void 0 === i ? void 0 : i.animation) || void 0 === u ? void 0 : u.animationDuration), "navigateTo" !== r && "navigateBack" !== r || 0 === y ? [3, 2] : [4, l.timeOut(y)];case 1:a.sent(), a.label = 2;case 2:return s = r, g && g.apply(null, f), h && h.apply(null, f), [2];}});});} }));}, t.formatOriginURLQuery = f;} }, t = {}, function r(o) {if (t[o]) return t[o].exports;var n = t[o] = { exports: {} };return e[o].call(n.exports, n, n.exports, r), n.exports;}(607);var e, t;}); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 12)["default"])) + +/***/ }) +],[[0,"app-config"]]]); \ No newline at end of file