{{ post.title }}
{{ post.body }}
Repository: vuejs/vue-router Branch: dev Commit: 680ccc68c506 Files: 458 Total size: 1.4 MB Directory structure: gitextract_7kypz9ur/ ├── .babelrc ├── .circleci/ │ └── config.yml ├── .eslintignore ├── .eslintrc ├── .flowconfig ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── funding.yml │ └── workflows/ │ └── release-tag.yml ├── .gitignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── build/ │ ├── build.js │ ├── configs.js │ └── rollup.dev.config.js ├── composables.d.ts ├── composables.js ├── composables.mjs ├── dist/ │ ├── vue-router.common.js │ ├── vue-router.esm.browser.js │ ├── vue-router.esm.js │ ├── vue-router.js │ └── vue-router.mjs ├── docs/ │ ├── .vuepress/ │ │ ├── components/ │ │ │ ├── HomeSponsors.vue │ │ │ ├── HomeSponsorsGroup.vue │ │ │ └── sponsors.json │ │ ├── config.js │ │ ├── public/ │ │ │ └── _redirects │ │ ├── styles/ │ │ │ └── index.styl │ │ └── theme/ │ │ ├── Layout.vue │ │ ├── components/ │ │ │ ├── BuySellAds.vue │ │ │ ├── CarbonAds.vue │ │ │ └── VueSchool/ │ │ │ └── BannerTop.vue │ │ └── index.js │ ├── README.md │ ├── api/ │ │ └── README.md │ ├── fr/ │ │ ├── README.md │ │ ├── api/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── README.md │ │ │ ├── advanced/ │ │ │ │ ├── data-fetching.md │ │ │ │ ├── lazy-loading.md │ │ │ │ ├── meta.md │ │ │ │ ├── navigation-guards.md │ │ │ │ ├── scroll-behavior.md │ │ │ │ └── transitions.md │ │ │ └── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── guide/ │ │ ├── README.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-failures.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ └── essentials/ │ │ ├── dynamic-matching.md │ │ ├── history-mode.md │ │ ├── named-routes.md │ │ ├── named-views.md │ │ ├── navigation.md │ │ ├── nested-routes.md │ │ ├── passing-props.md │ │ └── redirect-and-alias.md │ ├── installation.md │ ├── ja/ │ │ ├── README.md │ │ ├── api/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── README.md │ │ │ ├── advanced/ │ │ │ │ ├── data-fetching.md │ │ │ │ ├── lazy-loading.md │ │ │ │ ├── meta.md │ │ │ │ ├── navigation-failures.md │ │ │ │ ├── navigation-guards.md │ │ │ │ ├── scroll-behavior.md │ │ │ │ └── transitions.md │ │ │ └── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── kr/ │ │ ├── README.md │ │ ├── api/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── README.md │ │ │ ├── advanced/ │ │ │ │ ├── data-fetching.md │ │ │ │ ├── lazy-loading.md │ │ │ │ ├── meta.md │ │ │ │ ├── navigation-guards.md │ │ │ │ ├── scroll-behavior.md │ │ │ │ └── transitions.md │ │ │ └── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── ru/ │ │ ├── README.md │ │ ├── api/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── README.md │ │ │ ├── advanced/ │ │ │ │ ├── data-fetching.md │ │ │ │ ├── lazy-loading.md │ │ │ │ ├── meta.md │ │ │ │ ├── navigation-failures.md │ │ │ │ ├── navigation-guards.md │ │ │ │ ├── scroll-behavior.md │ │ │ │ └── transitions.md │ │ │ └── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ └── zh/ │ ├── README.md │ ├── api/ │ │ └── README.md │ ├── guide/ │ │ ├── README.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-failures.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ └── essentials/ │ │ ├── dynamic-matching.md │ │ ├── history-mode.md │ │ ├── named-routes.md │ │ ├── named-views.md │ │ ├── navigation.md │ │ ├── nested-routes.md │ │ ├── passing-props.md │ │ └── redirect-and-alias.md │ └── installation.md ├── docs-gitbook/ │ ├── LANGS.md │ ├── assets/ │ │ ├── CNAME │ │ └── circle.yml │ ├── book.json │ ├── de/ │ │ ├── SUMMARY.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ ├── api/ │ │ │ ├── component-injections.md │ │ │ ├── options.md │ │ │ ├── route-object.md │ │ │ ├── router-instance.md │ │ │ ├── router-link.md │ │ │ └── router-view.md │ │ ├── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── es/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ ├── api/ │ │ │ ├── component-injections.md │ │ │ ├── options.md │ │ │ ├── route-object.md │ │ │ ├── router-instance.md │ │ │ ├── router-link.md │ │ │ └── router-view.md │ │ ├── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── fr/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ ├── api/ │ │ │ ├── component-injections.md │ │ │ ├── options.md │ │ │ ├── route-object.md │ │ │ ├── router-instance.md │ │ │ ├── router-link.md │ │ │ └── router-view.md │ │ ├── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── ja/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ ├── api/ │ │ │ ├── component-injections.md │ │ │ ├── options.md │ │ │ ├── route-object.md │ │ │ ├── router-instance.md │ │ │ ├── router-link.md │ │ │ └── router-view.md │ │ ├── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── kr/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ ├── advanced/ │ │ │ ├── data-fetching.md │ │ │ ├── lazy-loading.md │ │ │ ├── meta.md │ │ │ ├── navigation-guards.md │ │ │ ├── scroll-behavior.md │ │ │ └── transitions.md │ │ ├── api/ │ │ │ ├── component-injections.md │ │ │ ├── options.md │ │ │ ├── route-object.md │ │ │ ├── router-instance.md │ │ │ ├── router-link.md │ │ │ └── router-view.md │ │ ├── essentials/ │ │ │ ├── dynamic-matching.md │ │ │ ├── getting-started.md │ │ │ ├── history-mode.md │ │ │ ├── named-routes.md │ │ │ ├── named-views.md │ │ │ ├── navigation.md │ │ │ ├── nested-routes.md │ │ │ ├── passing-props.md │ │ │ └── redirect-and-alias.md │ │ └── installation.md │ ├── old/ │ │ ├── README.md │ │ └── SUMMARY.md │ └── ru/ │ ├── README.md │ ├── SUMMARY.md │ ├── advanced/ │ │ ├── data-fetching.md │ │ ├── lazy-loading.md │ │ ├── meta.md │ │ ├── navigation-guards.md │ │ ├── scroll-behavior.md │ │ └── transitions.md │ ├── api/ │ │ ├── component-injections.md │ │ ├── options.md │ │ ├── route-object.md │ │ ├── router-instance.md │ │ ├── router-link.md │ │ └── router-view.md │ ├── essentials/ │ │ ├── dynamic-matching.md │ │ ├── getting-started.md │ │ ├── history-mode.md │ │ ├── named-routes.md │ │ ├── named-views.md │ │ ├── navigation.md │ │ ├── nested-routes.md │ │ ├── passing-props.md │ │ └── redirect-and-alias.md │ └── installation.md ├── examples/ │ ├── active-links/ │ │ ├── app.js │ │ └── index.html │ ├── auth-flow/ │ │ ├── app.js │ │ ├── auth.js │ │ ├── components/ │ │ │ ├── About.vue │ │ │ ├── App.vue │ │ │ ├── Dashboard.vue │ │ │ └── Login.vue │ │ └── index.html │ ├── basic/ │ │ ├── app.js │ │ └── index.html │ ├── composables/ │ │ ├── app.js │ │ └── index.html │ ├── data-fetching/ │ │ ├── Post.vue │ │ ├── api.js │ │ ├── app.js │ │ └── index.html │ ├── discrete-components/ │ │ ├── app.js │ │ └── index.html │ ├── global.css │ ├── hash-mode/ │ │ ├── app.js │ │ └── index.html │ ├── hash-scroll-behavior/ │ │ ├── app.js │ │ └── index.html │ ├── index.html │ ├── keepalive-view/ │ │ ├── app.js │ │ └── index.html │ ├── lazy-loading/ │ │ ├── Bar.vue │ │ ├── Baz.vue │ │ ├── Foo.vue │ │ ├── app.js │ │ └── index.html │ ├── lazy-loading-before-mount/ │ │ ├── app.js │ │ └── index.html │ ├── multi-app/ │ │ ├── app.js │ │ └── index.html │ ├── named-routes/ │ │ ├── app.js │ │ └── index.html │ ├── named-views/ │ │ ├── app.js │ │ └── index.html │ ├── navigation-guards/ │ │ ├── app.js │ │ └── index.html │ ├── nested-router/ │ │ ├── app.js │ │ └── index.html │ ├── nested-routes/ │ │ ├── app.js │ │ └── index.html │ ├── redirect/ │ │ ├── app.js │ │ └── index.html │ ├── restart-app/ │ │ ├── app.js │ │ └── index.html │ ├── route-alias/ │ │ ├── app.js │ │ └── index.html │ ├── route-matching/ │ │ ├── app.js │ │ └── index.html │ ├── route-params/ │ │ ├── app.js │ │ └── index.html │ ├── route-props/ │ │ ├── Hello.vue │ │ ├── app.js │ │ └── index.html │ ├── router-errors/ │ │ ├── app.js │ │ └── index.html │ ├── scroll-behavior/ │ │ ├── app.js │ │ └── index.html │ ├── server.js │ ├── transitions/ │ │ ├── app.js │ │ └── index.html │ └── webpack.config.js ├── flow/ │ └── declarations.js ├── netlify.toml ├── package.json ├── scripts/ │ ├── release.sh │ └── verifyCommitMsg.js ├── src/ │ ├── components/ │ │ ├── link.js │ │ └── view.js │ ├── composables/ │ │ ├── globals.js │ │ ├── guards.js │ │ ├── index.js │ │ ├── useLink.js │ │ └── utils.js │ ├── create-matcher.js │ ├── create-route-map.js │ ├── entries/ │ │ ├── cjs.js │ │ └── esm.js │ ├── history/ │ │ ├── abstract.js │ │ ├── base.js │ │ ├── hash.js │ │ └── html5.js │ ├── index.js │ ├── install.js │ ├── router.js │ └── util/ │ ├── async.js │ ├── dom.js │ ├── errors.js │ ├── location.js │ ├── misc.js │ ├── params.js │ ├── path.js │ ├── push-state.js │ ├── query.js │ ├── resolve-components.js │ ├── route.js │ ├── scroll.js │ ├── state-key.js │ └── warn.js ├── test/ │ ├── .eslintrc │ ├── e2e/ │ │ ├── .eslintrc │ │ ├── browserstack-send-status.js │ │ ├── nightwatch.browserstack.js │ │ ├── nightwatch.config.js │ │ ├── runner.js │ │ └── specs/ │ │ ├── .prettierrc │ │ ├── active-links.js │ │ ├── auth-flow.js │ │ ├── basic.js │ │ ├── composables.js │ │ ├── data-fetching.js │ │ ├── hash-mode.js │ │ ├── hash-scroll-behavior.js │ │ ├── history-state.js │ │ ├── keepalive-view.js │ │ ├── lazy-loading-before-mount.js │ │ ├── lazy-loading.js │ │ ├── multi-app.js │ │ ├── named-routes.js │ │ ├── named-views.js │ │ ├── navigation-guards.js │ │ ├── nested-router.js │ │ ├── nested-routes.js │ │ ├── redirect.js │ │ ├── restart-app.js │ │ ├── route-alias.js │ │ ├── route-matching.js │ │ ├── route-params.js │ │ ├── route-props.js │ │ ├── scroll-behavior.js │ │ └── transitions.js │ └── unit/ │ ├── .eslintrc │ ├── jasmine.json │ └── specs/ │ ├── abstract-history.spec.js │ ├── api.spec.js │ ├── async.spec.js │ ├── create-map.spec.js │ ├── create-matcher.spec.js │ ├── custom-query.spec.js │ ├── discrete-components.spec.js │ ├── error-handling.spec.js │ ├── location.spec.js │ ├── node.spec.js │ ├── onReady.spec.js │ ├── path.spec.js │ ├── query.spec.js │ └── route.spec.js ├── types/ │ ├── composables.d.ts │ ├── index.d.ts │ ├── router.d.ts │ ├── test/ │ │ ├── index.ts │ │ ├── meta.ts │ │ └── tsconfig.json │ └── vue.d.ts └── vetur/ ├── attributes.json └── tags.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .babelrc ================================================ { "presets": ["env", "flow-vue"], "plugins": ["syntax-dynamic-import"] } ================================================ FILE: .circleci/config.yml ================================================ version: 2 defaults: &defaults working_directory: ~/project/vue-router docker: - image: circleci/node:lts-browsers jobs: install: <<: *defaults steps: - checkout - restore_cache: keys: - v1-vue-router-{{ .Branch }}-{{ checksum "yarn.lock" }} - v1-vue-router-{{ .Branch }}- - v1-vue-router- - run: yarn install - save_cache: key: v1-vue-router-{{ .Branch }}-{{ checksum "yarn.lock" }} paths: - node_modules/ - persist_to_workspace: root: ~/project paths: - vue-router lint-flow-types: <<: *defaults steps: - attach_workspace: at: ~/project - run: yarn run lint - run: yarn run flow - run: yarn run test:types test-unit: <<: *defaults steps: - attach_workspace: at: ~/project - run: yarn run test:unit # add codecov once it is actually ran # - run: # name: report coverage stats for non-PRs # command: | # if [[ -z $CI_PULL_REQUEST ]]; then # ./node_modules/.bin/codecov # fi test-e2e: <<: *defaults steps: - attach_workspace: at: ~/project - run: yarn run test:e2e test-e2e-bs-ie9: <<: *defaults steps: - attach_workspace: at: ~/project - run: yarn run test:e2e:ie9 workflows: version: 2 install-and-parallel-test: jobs: - install - test-unit: requires: - install - lint-flow-types: requires: - install - test-e2e: requires: - install - test-e2e-bs-ie9: requires: - install ================================================ FILE: .eslintignore ================================================ dist *.ts ================================================ FILE: .eslintrc ================================================ { "root": true, "plugins": [ "flowtype" ], "extends": [ "plugin:vue-libs/recommended", "plugin:flowtype/recommended" ] } ================================================ FILE: .flowconfig ================================================ [ignore] .*/node_modules/.* .*/test/.* .*/dist/.* .*/examples/.* .*/vue/.* [include] [libs] flow [options] #unsafe.enable_getters_and_setters=true suppress_comment= \\(.\\|\n\\)*\\$flow-disable-line ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ================================================ FILE: .github/funding.yml ================================================ github: [posva, yyx990803] open_collective: vuejs ================================================ FILE: .github/workflows/release-tag.yml ================================================ on: push: tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 name: Create Release jobs: build: name: Create Release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@master - name: Create Release for Tag id: release_tag uses: yyx990803/release-tag@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} body: | Please refer to [CHANGELOG.md](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md) for details. ================================================ FILE: .gitignore ================================================ .DS_Store node_modules TODOs.md test/e2e/reports test/e2e/screenshots selenium-debug.log dist/*.gz dist/*.map explorations docs/.vuepress/dist yarn-error.log .idea .vscode/settings.json .env selenium-server.log local.log browserstack.err ================================================ FILE: .prettierrc ================================================ { "semi": false, "singleQuote": true, "printWidth": 80 } ================================================ FILE: CHANGELOG.md ================================================ ## [3.6.5](https://github.com/vuejs/vue-router/compare/v3.6.4...v3.6.5) (2022-09-06) ### Bug Fixes - **types:** Component with 4 generics for Vue 2.6 ([d6064df](https://github.com/vuejs/vue-router/commit/d6064df1112497dac98e4302d81607efdb1a58c6)), closes [#3786](https://github.com/vuejs/vue-router/issues/3786) ## [3.6.4](https://github.com/vuejs/vue-router/compare/v3.6.3...v3.6.4) (2022-08-25) This release fixes some compatibility issues of the new `vue-router/composables` with webpack 4. ### Features - **types:** add composables.d.ts in root ([#3784](https://github.com/vuejs/vue-router/issues/3784)) ([0cf54de](https://github.com/vuejs/vue-router/commit/0cf54de782a0b05692bbe78a7181495b6a35b8d9)) ## [3.6.3](https://github.com/vuejs/vue-router/compare/v3.6.2...v3.6.3) (2022-08-23) ### Bug Fixes - **build:** export all named exports esm build ([a6647c8](https://github.com/vuejs/vue-router/commit/a6647c8c3d7022f1b702935461c7d234b052ca06)) - **types:** allow jsx components ([0cb86b3](https://github.com/vuejs/vue-router/commit/0cb86b3865b713201f9db49c7a8d23e9a2876f29)), closes [#3776](https://github.com/vuejs/vue-router/issues/3776) - **types:** missing NavigationFailureType and isNavigationFailure ([#3777](https://github.com/vuejs/vue-router/issues/3777)) ([9d001dd](https://github.com/vuejs/vue-router/commit/9d001dd0bebdea1e1a8ec2f0c77113b6a2e2b6a3)) ## [3.6.2](https://github.com/vuejs/vue-router/compare/v3.6.1...v3.6.2) (2022-08-23) ### Bug Fixes - **build:** add mjs build ([b4c3940](https://github.com/vuejs/vue-router/commit/b4c39404eff7ae2f657c405d7b0f939ce20cfdec)) - **types:** missing start location ([1356acb](https://github.com/vuejs/vue-router/commit/1356acb983c5eccb00c5c0ec3f406218ae49a8c1)) ## [3.6.1](https://github.com/vuejs/vue-router/compare/v3.6.0...v3.6.1) (2022-08-23) ### Bug Fixes - **build:** ensure install fn before Vue.use ([0126bcb](https://github.com/vuejs/vue-router/commit/0126bcbfb0e3cb824bfce05090ca018faf02ce5e)), closes [#3772](https://github.com/vuejs/vue-router/issues/3772) # [3.6.0](https://github.com/vuejs/vue-router/compare/v3.5.4...v3.6.0) (2022-08-22) This release of Vue Router introduces composables from Vue Router 4: ```js import { useRoute, useRouter, useLink, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router/composables' ``` Since these composables **require Vue 2.7**, they are only exposed under `vue-router/composables` submodule, so it shouldn't affect you if you stay on Vue 2.6 (Note there are no new features or fixes besides the composables in this release). Refer to [the Vue Router 4 API documentation](https://router.vuejs.org/api/#onbeforerouteleave) for details on the composables. ### Features - **types:** useLink() ([77bd0e3](https://github.com/vuejs/vue-router/commit/77bd0e317dd5a9aebfca515f0f28f3284c7d8260)) - useLink() ([50332e5](https://github.com/vuejs/vue-router/commit/50332e5e93e6aa1194a9e68a60937a6f9e8bcecd)) - **types:** expose RouterLink and RouterView in d.ts ([cad978a](https://github.com/vuejs/vue-router/commit/cad978a832174aac59cad86fe780f8a64a9754d7)) - add RouterLink and RouterView to esm ([4511f39](https://github.com/vuejs/vue-router/commit/4511f393334247c9702ed378220bf925cdc09add)) - add vue 2.7 types ([cba9650](https://github.com/vuejs/vue-router/commit/cba9650e5cbf958c1db9cd259a2e7bfbc28bddbe)) - onBeforeRouteUpdate onBeforeRouteLeave ([9861c55](https://github.com/vuejs/vue-router/commit/9861c553627f5f34a07ad3ac28e2ed02aab99d47)) - useRoute and useRouter ([ea35594](https://github.com/vuejs/vue-router/commit/ea355943e097914ae55fa54ccb7df929c901e80d)) ## [3.5.4](https://github.com/vuejs/vue-router/compare/v3.5.3...v3.5.4) (2022-05-16) ### Bug Fixes - remove whitespace between mulitple slashes ([86d7f1f](https://github.com/vuejs/vue-router/commit/86d7f1fdaa36432f6564309925690ec20bb2981e)), closes [#3743](https://github.com/vuejs/vue-router/issues/3743) ## [3.5.3](https://github.com/vuejs/vue-router/compare/v3.5.2...v3.5.3) (2021-10-26) ### Bug Fixes - clean more than two consecutive slashes ([#3652](https://github.com/vuejs/vue-router/issues/3652)) ([3e3a07e](https://github.com/vuejs/vue-router/commit/3e3a07ee6e7defd6cae75bddcede5a28b0092709)) - **scrollBehavior:** trigger scroll behavior if same route with hash ([#3592](https://github.com/vuejs/vue-router/issues/3592)) ([57d8042](https://github.com/vuejs/vue-router/commit/57d8042c8b99f92bfe35493b8ae9bba827864bf0)) ### Features - add constructor hint ([#3626](https://github.com/vuejs/vue-router/issues/3626)) ([28b769b](https://github.com/vuejs/vue-router/commit/28b769b2a07e3bf984c0ec20d6d797291a480e81)) ## [3.5.2](https://github.com/vuejs/vue-router/compare/v3.5.1...v3.5.2) (2021-06-21) ### Bug Fixes - **history:** stricter check of base in HTML5 ([#3556](https://github.com/vuejs/vue-router/issues/3556)) ([11dd184](https://github.com/vuejs/vue-router/commit/11dd184dc6a872c6399977fa4b7c259225ce4834)) - **types:** added missing router.match ([#3554](https://github.com/vuejs/vue-router/issues/3554)) ([394a3b6](https://github.com/vuejs/vue-router/commit/394a3b6cce5e395ae4ccf3e2efb0c115d492978c)) ## [3.5.1](https://github.com/vuejs/vue-router/compare/v3.5.0...v3.5.1) (2021-01-26) ### Bug Fixes - **warn:** only warn if "tag" or "event" is used ([#3458](https://github.com/vuejs/vue-router/issues/3458)) ([b7a31b9](https://github.com/vuejs/vue-router/commit/b7a31b9)), closes [#3457](https://github.com/vuejs/vue-router/issues/3457) # [3.5.0](https://github.com/vuejs/vue-router/compare/v3.4.9...v3.5.0) (2021-01-25) ### Features - **link:** exact-path prop ([825328e](https://github.com/vuejs/vue-router/commit/825328e)), closes [#2040](https://github.com/vuejs/vue-router/issues/2040) - **warn:** warn deprecated addRoutes ([2e41445](https://github.com/vuejs/vue-router/commit/2e41445)) - expose START_LOCATION ([53b68dd](https://github.com/vuejs/vue-router/commit/53b68dd)), closes [#2718](https://github.com/vuejs/vue-router/issues/2718) - **link:** deprecate v-slot without custom prop ([ceeda4c](https://github.com/vuejs/vue-router/commit/ceeda4c)) - **link:** warn deprecated props ([d2cb951](https://github.com/vuejs/vue-router/commit/d2cb951)) - **router:** add getRoutes ([6bc30aa](https://github.com/vuejs/vue-router/commit/6bc30aa)) - **types:** add types for getRoutes addRoute ([fb9bb60](https://github.com/vuejs/vue-router/commit/fb9bb60)) - addRoute as nested route ([ca80c44](https://github.com/vuejs/vue-router/commit/ca80c44)), closes [#1156](https://github.com/vuejs/vue-router/issues/1156) ## [3.4.9](https://github.com/vuejs/vue-router/compare/v3.4.8...v3.4.9) (2020-11-05) ### Bug Fixes - **encoding:** decode params ([#3350](https://github.com/vuejs/vue-router/issues/3350)) ([63c749c](https://github.com/vuejs/vue-router/commit/63c749c)) ## [3.4.8](https://github.com/vuejs/vue-router/compare/v3.4.7...v3.4.8) (2020-10-26) ### Features - **scroll:** add behavior support on scrollBehavior ([#3351](https://github.com/vuejs/vue-router/issues/3351)) ([4e0b3e0](https://github.com/vuejs/vue-router/commit/4e0b3e0)) ## [3.4.7](https://github.com/vuejs/vue-router/compare/v3.4.6...v3.4.7) (2020-10-16) ### Bug Fixes - **matcher:** should try catch decode only ([1f32f03](https://github.com/vuejs/vue-router/commit/1f32f03)) - **query:** check existing keys ([4b926e3](https://github.com/vuejs/vue-router/commit/4b926e3)), closes [#3341](https://github.com/vuejs/vue-router/issues/3341) ## [3.4.6](https://github.com/vuejs/vue-router/compare/v3.4.5...v3.4.6) (2020-10-07) ### Bug Fixes - **encoding:** try catch decodes ([607ce2d](https://github.com/vuejs/vue-router/commit/607ce2d)) - **ssr:** memory leak in poll method ([#2875](https://github.com/vuejs/vue-router/issues/2875)) ([7693eb5](https://github.com/vuejs/vue-router/commit/7693eb5)) - remove duplicated decodeURIComponent ([#3323](https://github.com/vuejs/vue-router/issues/3323)) ([560d11d](https://github.com/vuejs/vue-router/commit/560d11d)) ## [3.4.5](https://github.com/vuejs/vue-router/compare/v3.4.4...v3.4.5) (2020-09-26) ### Bug Fixes - **history:** do not call onReady on initial redirection ([a1a290e](https://github.com/vuejs/vue-router/commit/a1a290e)), closes [#3331](https://github.com/vuejs/vue-router/issues/3331) ## [3.4.4](https://github.com/vuejs/vue-router/compare/v3.4.3...v3.4.4) (2020-09-24) ### Bug Fixes - **abstract:** call afterHooks with go ([4da7021](https://github.com/vuejs/vue-router/commit/4da7021)), closes [#3250](https://github.com/vuejs/vue-router/issues/3250) - **history:** mark redundant navigation as pending ([893d86b](https://github.com/vuejs/vue-router/commit/893d86b)), closes [#3133](https://github.com/vuejs/vue-router/issues/3133) - **types:** add missing NavigationFailure types ([fda7067](https://github.com/vuejs/vue-router/commit/fda7067)), closes [#3293](https://github.com/vuejs/vue-router/issues/3293) - **types:** fix VueRouter.NavigationFailureType ([ecc8e27](https://github.com/vuejs/vue-router/commit/ecc8e27)) ### Features - **history:** Reset history.current when all apps are destroyed ([#3298](https://github.com/vuejs/vue-router/issues/3298)) ([c69ff7b](https://github.com/vuejs/vue-router/commit/c69ff7b)) ## [3.4.3](https://github.com/vuejs/vue-router/compare/v3.4.2...v3.4.3) (2020-08-11) - Revert 4fbaa9f7880276e661227442ef5923131a589210: "fix: keep repeated params in query/hash relative locations" Closes #3289 ## [3.4.2](https://github.com/vuejs/vue-router/compare/v3.4.1...v3.4.2) (2020-08-07) ### Bug Fixes - **query:** leave object as is ([7b3328d](https://github.com/vuejs/vue-router/commit/7b3328d)), closes [#3282](https://github.com/vuejs/vue-router/issues/3282) - keep repeated params in query/hash relative locations ([4fbaa9f](https://github.com/vuejs/vue-router/commit/4fbaa9f)) ## [3.4.1](https://github.com/vuejs/vue-router/compare/v3.4.0...v3.4.1) (2020-08-06) ### Bug Fixes - **query:** remove undefined values ([b952573](https://github.com/vuejs/vue-router/commit/b952573)), closes [#3276](https://github.com/vuejs/vue-router/issues/3276) - **router:** properly check null and undefined in isSameRoute ([d6546d9](https://github.com/vuejs/vue-router/commit/d6546d9)) # [3.4.0](https://github.com/vuejs/vue-router/compare/v3.3.4...v3.4.0) (2020-08-05) ### Bug Fixes - **query:** cast query values to strings (fix [#2131](https://github.com/vuejs/vue-router/issues/2131)) ([#3232](https://github.com/vuejs/vue-router/issues/3232)) ([f0d9c2d](https://github.com/vuejs/vue-router/commit/f0d9c2d)) - **scroll:** run scrollBehavior on initial load (fix [#3196](https://github.com/vuejs/vue-router/issues/3196)) ([#3199](https://github.com/vuejs/vue-router/issues/3199)) ([84398ae](https://github.com/vuejs/vue-router/commit/84398ae)) - **types:** add missing `options` property type ([#3248](https://github.com/vuejs/vue-router/issues/3248)) ([83920c9](https://github.com/vuejs/vue-router/commit/83920c9)) ### Features - add vetur tags and attributes ([bf1e1bd](https://github.com/vuejs/vue-router/commit/bf1e1bd)) - **errors:** capture errors thrown in redirect callback in onError ([#3251](https://github.com/vuejs/vue-router/issues/3251)) ([40e4df7](https://github.com/vuejs/vue-router/commit/40e4df7)), closes [#3201](https://github.com/vuejs/vue-router/issues/3201) [#3201](https://github.com/vuejs/vue-router/issues/3201) [#3201](https://github.com/vuejs/vue-router/issues/3201) - **errors:** expose `isNavigationFailure` ([8d92dc0](https://github.com/vuejs/vue-router/commit/8d92dc0)) - **errors:** NavigationDuplicated name for backwards compatibility ([b854a20](https://github.com/vuejs/vue-router/commit/b854a20)) ## [3.3.4](https://github.com/vuejs/vue-router/compare/v3.3.3...v3.3.4) (2020-06-13) ### Bug Fixes - **matcher:** navigate to same as current location ([62598b9](https://github.com/vuejs/vue-router/commit/62598b9)), closes [#3216](https://github.com/vuejs/vue-router/issues/3216) - **types:** missing children ([c1df447](https://github.com/vuejs/vue-router/commit/c1df447)), closes [#3230](https://github.com/vuejs/vue-router/issues/3230) ## [3.3.3](https://github.com/vuejs/vue-router/compare/v3.3.2...v3.3.3) (2020-06-12) ### Bug Fixes - **history:** initial redirect call onReady's onSuccess ([4d484bf](https://github.com/vuejs/vue-router/commit/4d484bf)), closes [#3225](https://github.com/vuejs/vue-router/issues/3225) - update ja docs ([#3214](https://github.com/vuejs/vue-router/issues/3214)) ([c05f741](https://github.com/vuejs/vue-router/commit/c05f741)) ### Features - better wording for navigation redirected failure ([1f3aea6](https://github.com/vuejs/vue-router/commit/1f3aea6)) - **types:** RouterConfig for multiple components ([#3217](https://github.com/vuejs/vue-router/issues/3217)) ([#3218](https://github.com/vuejs/vue-router/issues/3218)) ([dab86c5](https://github.com/vuejs/vue-router/commit/dab86c5)) ## [3.3.2](https://github.com/vuejs/vue-router/compare/v3.3.1...v3.3.2) (2020-05-29) ### Bug Fixes - **errors:** NavigationCanceled with async components ([#3211](https://github.com/vuejs/vue-router/issues/3211)) ([be39ca3](https://github.com/vuejs/vue-router/commit/be39ca3)) - remove error.stack modification ([#3212](https://github.com/vuejs/vue-router/issues/3212)) ([a0075ed](https://github.com/vuejs/vue-router/commit/a0075ed)) ## [3.3.1](https://github.com/vuejs/vue-router/compare/v3.3.0...v3.3.1) (2020-05-27) ### Bug Fixes - **errors:** avoid unnecessary log of errors ([2c77247](https://github.com/vuejs/vue-router/commit/2c77247)) # [3.3.0](https://github.com/vuejs/vue-router/compare/v3.2.0...v3.3.0) (2020-05-27) ### Features - **errors:** create router errors ([#3047](https://github.com/vuejs/vue-router/issues/3047)) ([4c727f9](https://github.com/vuejs/vue-router/commit/4c727f9)) - **history:** Remove event listeners when all apps are destroyed. ([#3172](https://github.com/vuejs/vue-router/issues/3172)) ([4c81be8](https://github.com/vuejs/vue-router/commit/4c81be8)), closes [#3152](https://github.com/vuejs/vue-router/issues/3152) [#2341](https://github.com/vuejs/vue-router/issues/2341) - **url:** call afterEach hooks after url is ensured ([#2292](https://github.com/vuejs/vue-router/issues/2292)) ([1575a18](https://github.com/vuejs/vue-router/commit/1575a18)), closes [#2079](https://github.com/vuejs/vue-router/issues/2079) # [3.2.0](https://github.com/vuejs/vue-router/compare/v3.1.6...v3.2.0) (2020-05-19) ### Bug Fixes - **html5:** make base case insensitive ([04a2143](https://github.com/vuejs/vue-router/commit/04a2143)), closes [#2154](https://github.com/vuejs/vue-router/issues/2154) - check for pushState being a function ([bc41f67](https://github.com/vuejs/vue-router/commit/bc41f67)), closes [#3154](https://github.com/vuejs/vue-router/issues/3154) ### Features - **link:** add aria-current to active links (close [#2116](https://github.com/vuejs/vue-router/issues/2116)) ([#3073](https://github.com/vuejs/vue-router/issues/3073)) ([6ec0ee5](https://github.com/vuejs/vue-router/commit/6ec0ee5)) - **scroll:** use manual scrollRestoration with scrollBehavior ([#1814](https://github.com/vuejs/vue-router/issues/1814)) ([1261363](https://github.com/vuejs/vue-router/commit/1261363)) - **types:** NavigationGuardNext ([#2497](https://github.com/vuejs/vue-router/issues/2497)) ([d18c497](https://github.com/vuejs/vue-router/commit/d18c497)) ## [3.1.6](https://github.com/vuejs/vue-router/compare/v3.1.5...v3.1.6) (2020-02-26) ### Bug Fixes - preserve history state when reloading ([a4ec3e2](https://github.com/vuejs/vue-router/commit/a4ec3e2)) - **ts:** add null to Route.name ([#3117](https://github.com/vuejs/vue-router/issues/3117)) ([8f831f2](https://github.com/vuejs/vue-router/commit/8f831f2)) - correctly calculate `path` when `pathMatch` is empty string ([#3111](https://github.com/vuejs/vue-router/issues/3111)) ([38e6ccd](https://github.com/vuejs/vue-router/commit/38e6ccd)), closes [#3106](https://github.com/vuejs/vue-router/issues/3106) ## [3.1.5](https://github.com/vuejs/vue-router/compare/v3.1.4...v3.1.5) (2020-01-15) ### Bug Fixes - **view:** add passing props to inactive component ([#2773](https://github.com/vuejs/vue-router/issues/2773)) ([0fb1343](https://github.com/vuejs/vue-router/commit/0fb1343)), closes [#2301](https://github.com/vuejs/vue-router/issues/2301) - **view:** fix deeply nested keep-alive router-views displaying ([#2930](https://github.com/vuejs/vue-router/issues/2930)) ([0c2b1aa](https://github.com/vuejs/vue-router/commit/0c2b1aa)), closes [#2923](https://github.com/vuejs/vue-router/issues/2923) ## [3.1.4](https://github.com/vuejs/vue-router/compare/v3.1.3...v3.1.4) (2020-01-14) ### Bug Fixes - suppress warning if `pathMatch` is empty ([#3081](https://github.com/vuejs/vue-router/issues/3081)) ([ddc6bc7](https://github.com/vuejs/vue-router/commit/ddc6bc7)), closes [#3072](https://github.com/vuejs/vue-router/issues/3072) - **link:** correctly warn wrong v-slot usage ([a150291](https://github.com/vuejs/vue-router/commit/a150291)), closes [#3091](https://github.com/vuejs/vue-router/issues/3091) - **location:** add a copy for params with named locations ([#2802](https://github.com/vuejs/vue-router/issues/2802)) ([2b39f5a](https://github.com/vuejs/vue-router/commit/2b39f5a)), closes [#2800](https://github.com/vuejs/vue-router/issues/2800) [#2938](https://github.com/vuejs/vue-router/issues/2938) [#2938](https://github.com/vuejs/vue-router/issues/2938) ### Features - **history:** preserve existing history.state ([c0d3376](https://github.com/vuejs/vue-router/commit/c0d3376)), closes [#3006](https://github.com/vuejs/vue-router/issues/3006) ## [3.1.3](https://github.com/vuejs/vue-router/compare/v3.1.2...v3.1.3) (2019-08-30) ### Bug Fixes - **link:** merge event listeners when provided in an anchor ([e0d4dc4](https://github.com/vuejs/vue-router/commit/e0d4dc4)), closes [#2890](https://github.com/vuejs/vue-router/issues/2890) ### Features - **errors:** add stack trace to NavigationDuplicated ([5ef5d73](https://github.com/vuejs/vue-router/commit/5ef5d73)), closes [#2881](https://github.com/vuejs/vue-router/issues/2881) - warn about root paths without a leading slash ([#2591](https://github.com/vuejs/vue-router/issues/2591)) ([7d7e048](https://github.com/vuejs/vue-router/commit/7d7e048)), closes [#2550](https://github.com/vuejs/vue-router/issues/2550) [#2550](https://github.com/vuejs/vue-router/issues/2550) ## [3.1.2](https://github.com/vuejs/vue-router/compare/v3.1.1...v3.1.2) (2019-08-08) ### Bug Fixes - **types:** prioritize promise based push/replace ([1243e8b](https://github.com/vuejs/vue-router/commit/1243e8b)) ### Reverts - "fix(hash): correctly place query if placed before hash ([#2851](https://github.com/vuejs/vue-router/issues/2851))" ([9b30e4c](https://github.com/vuejs/vue-router/commit/9b30e4c)), closes [#2876](https://github.com/vuejs/vue-router/issues/2876). See more information at https://github.com/vuejs/vue-router/issues/2125#issuecomment-519521424 ## [3.1.1](https://github.com/vuejs/vue-router/compare/v3.1.0...v3.1.1) (2019-08-06) ### Bug Fixes - **link:** silence back navigations errors ([59b6da3](https://github.com/vuejs/vue-router/commit/59b6da3)) # [3.1.0](https://github.com/vuejs/vue-router/compare/v3.0.7...v3.1.0) (2019-08-06) ### Bug Fixes - **abstract history:** allow router.back in abstract mode when 2 consecutive same routes appear in history stack ([#2771](https://github.com/vuejs/vue-router/issues/2771)) ([8910979](https://github.com/vuejs/vue-router/commit/8910979)), closes [#2607](https://github.com/vuejs/vue-router/issues/2607) - **hash:** correctly place query if placed before hash ([#2851](https://github.com/vuejs/vue-router/issues/2851)) ([b7715dc](https://github.com/vuejs/vue-router/commit/b7715dc)), closes [#2125](https://github.com/vuejs/vue-router/issues/2125) [#2262](https://github.com/vuejs/vue-router/issues/2262) - **link:** Fix active links when parent link redirects to child ([#2772](https://github.com/vuejs/vue-router/issues/2772)) ([64785a9](https://github.com/vuejs/vue-router/commit/64785a9)), closes [#2724](https://github.com/vuejs/vue-router/issues/2724) - adapt error to work on IE9 ([527d6d5](https://github.com/vuejs/vue-router/commit/527d6d5)) ### Features - **alias:** warn against redundant aliases ([04a02c0](https://github.com/vuejs/vue-router/commit/04a02c0)), closes [#2461](https://github.com/vuejs/vue-router/issues/2461) [#2462](https://github.com/vuejs/vue-router/issues/2462) - **scroll:** handle id selectors starting with a number ([799ceca](https://github.com/vuejs/vue-router/commit/799ceca)), closes [#2163](https://github.com/vuejs/vue-router/issues/2163) - return a promise with push and replace ([#2862](https://github.com/vuejs/vue-router/issues/2862)) ([d907a13](https://github.com/vuejs/vue-router/commit/d907a13)), closes [#1769](https://github.com/vuejs/vue-router/issues/1769) [#1769](https://github.com/vuejs/vue-router/issues/1769) - scoped slot for link ([e289dde](https://github.com/vuejs/vue-router/commit/e289dde)) - warn the user for invalid uses of v-slot with Link ([44c63a9](https://github.com/vuejs/vue-router/commit/44c63a9)) ## [3.0.7](https://github.com/vuejs/vue-router/compare/v3.0.6...v3.0.7) (2019-07-03) ### Bug Fixes - apps loaded from Windows file shares not mapped to network drives ([#2774](https://github.com/vuejs/vue-router/issues/2774)) ([c2c78a3](https://github.com/vuejs/vue-router/commit/c2c78a3)) - make callback of next in beforeRouterEnter more consistent ([#2738](https://github.com/vuejs/vue-router/issues/2738)) ([8ac478f](https://github.com/vuejs/vue-router/commit/8ac478f)), closes [#2761](https://github.com/vuejs/vue-router/issues/2761) [#2728](https://github.com/vuejs/vue-router/issues/2728) ## [3.0.6](https://github.com/vuejs/vue-router/compare/v3.0.5...v3.0.6) (2019-04-17) ### Bug Fixes - revert [#2713](https://github.com/vuejs/vue-router/issues/2713) ([#2723](https://github.com/vuejs/vue-router/issues/2723)) ([ec6eab7](https://github.com/vuejs/vue-router/commit/ec6eab7)), closes [#2719](https://github.com/vuejs/vue-router/issues/2719) ## [3.0.5](https://github.com/vuejs/vue-router/compare/v3.0.4...v3.0.5) (2019-04-15) ### Bug Fixes - push before creating Vue instance ([#2713](https://github.com/vuejs/vue-router/issues/2713)) ([6974a6f](https://github.com/vuejs/vue-router/commit/6974a6f)), closes [#2712](https://github.com/vuejs/vue-router/issues/2712) - **router-view:** add condition to see whether the tree is inactive (fix [#2552](https://github.com/vuejs/vue-router/issues/2552)) ([#2592](https://github.com/vuejs/vue-router/issues/2592)) ([e6d8fd2](https://github.com/vuejs/vue-router/commit/e6d8fd2)) - **router-view:** register instance in init hook ([c3abdf6](https://github.com/vuejs/vue-router/commit/c3abdf6)), closes [#2561](https://github.com/vuejs/vue-router/issues/2561) [#2689](https://github.com/vuejs/vue-router/issues/2689) [#2561](https://github.com/vuejs/vue-router/issues/2561) [#2561](https://github.com/vuejs/vue-router/issues/2561) ## [3.0.4](https://github.com/vuejs/vue-router/compare/v3.0.3...v3.0.4) (2019-04-12) ### Bug Fixes - prevent memory leaks by removing app references ([#2706](https://github.com/vuejs/vue-router/issues/2706)) ([8056105](https://github.com/vuejs/vue-router/commit/8056105)), closes [#2639](https://github.com/vuejs/vue-router/issues/2639) - **hash:** prevent double decoding ([#2711](https://github.com/vuejs/vue-router/issues/2711)) ([a775fb1](https://github.com/vuejs/vue-router/commit/a775fb1)), closes [#2708](https://github.com/vuejs/vue-router/issues/2708) ### Features - **esm build:** build ES modules for browser ([#2705](https://github.com/vuejs/vue-router/issues/2705)) ([627027f](https://github.com/vuejs/vue-router/commit/627027f)) ## [3.0.3](https://github.com/vuejs/vue-router/compare/v3.0.2...v3.0.3) (2019-04-08) ### Bug Fixes - removes warning resolving asterisk routes ([e224637](https://github.com/vuejs/vue-router/commit/e224637)), closes [#2505](https://github.com/vuejs/vue-router/issues/2505) [#2505](https://github.com/vuejs/vue-router/issues/2505) - **normalizeLocation:** create a copy with named locations ([#2286](https://github.com/vuejs/vue-router/issues/2286)) ([53cce99](https://github.com/vuejs/vue-router/commit/53cce99)), closes [#2121](https://github.com/vuejs/vue-router/issues/2121) - **resolve:** use current location if not provided ([#2390](https://github.com/vuejs/vue-router/issues/2390)) ([7ff4de4](https://github.com/vuejs/vue-router/commit/7ff4de4)), closes [#2385](https://github.com/vuejs/vue-router/issues/2385) - **types:** allow null/undefined in query params ([ca30a75](https://github.com/vuejs/vue-router/commit/ca30a75)), closes [#2605](https://github.com/vuejs/vue-router/issues/2605) ## [3.0.2](https://github.com/vuejs/vue-router/compare/v3.0.1...v3.0.2) (2018-11-23) ### Bug Fixes - **errors:** throws with invalid route objects ([#1893](https://github.com/vuejs/vue-router/issues/1893)) ([c837666](https://github.com/vuejs/vue-router/commit/c837666)) - fix the test in async.spec.js ([#1953](https://github.com/vuejs/vue-router/issues/1953)) ([4e9e66b](https://github.com/vuejs/vue-router/commit/4e9e66b)) - initial url path for non ascii urls ([#2375](https://github.com/vuejs/vue-router/issues/2375)) ([c3b0a33](https://github.com/vuejs/vue-router/commit/c3b0a33)) - only setupScroll when support pushState due to possible fallback: false ([#1835](https://github.com/vuejs/vue-router/issues/1835)) ([fac60f6](https://github.com/vuejs/vue-router/commit/fac60f6)), closes [#1834](https://github.com/vuejs/vue-router/issues/1834) - workaround replaceState bug in Safari ([#2295](https://github.com/vuejs/vue-router/issues/2295)) ([3c7d8ab](https://github.com/vuejs/vue-router/commit/3c7d8ab)), closes [#2195](https://github.com/vuejs/vue-router/issues/2195) - **hash:** support unicode in initial route ([8369c6b](https://github.com/vuejs/vue-router/commit/8369c6b)) - **history-mode:** correcting indentation in web.config example ([#1948](https://github.com/vuejs/vue-router/issues/1948)) ([4b071f9](https://github.com/vuejs/vue-router/commit/4b071f9)) - **match:** use pathMatch for the param of \* routes ([#1995](https://github.com/vuejs/vue-router/issues/1995)) ([ca1fccd](https://github.com/vuejs/vue-router/commit/ca1fccd)), closes [#1994](https://github.com/vuejs/vue-router/issues/1994) ### Features - call scrollBehavior with app context ([#1804](https://github.com/vuejs/vue-router/issues/1804)) ([c93a734](https://github.com/vuejs/vue-router/commit/c93a734)) ## [3.0.1](https://github.com/vuejs/vue-router/compare/v3.0.0...v3.0.1) (2017-10-13) ### Bug Fixes - fix props-passing regression ([02ff792](https://github.com/vuejs/vue-router/commit/02ff792)), closes [#1800](https://github.com/vuejs/vue-router/issues/1800) ## [3.0.0](https://github.com/vuejs/vue-router/compare/v2.8.0...v3.0.0) (2017-10-11) ### Features - **typings:** adapt to the new Vue typings ([#1685](https://github.com/vuejs/vue-router/issues/1685)) ([8855e36](https://github.com/vuejs/vue-router/commit/8855e36)) ### BREAKING CHANGES - **typings:** It is no longer compatible with the old Vue typings ## [2.8.0](https://github.com/vuejs/vue-router/compare/v2.7.0...v2.8.0) (2017-10-11) ### Bug Fixes - allow insllation on extended Vue copies ([f62c5d6](https://github.com/vuejs/vue-router/commit/f62c5d6)) - avoid first popstate event with async guard together (fix [#1508](https://github.com/vuejs/vue-router/issues/1508)) ([#1661](https://github.com/vuejs/vue-router/issues/1661)) ([3cbc0f3](https://github.com/vuejs/vue-router/commit/3cbc0f3)) - deep clone query when creating routes ([effb114](https://github.com/vuejs/vue-router/commit/effb114)), closes [#1690](https://github.com/vuejs/vue-router/issues/1690) - fix scroll when going back to initial route ([#1586](https://github.com/vuejs/vue-router/issues/1586)) ([c166822](https://github.com/vuejs/vue-router/commit/c166822)) - handle null values when comparing objects ([#1568](https://github.com/vuejs/vue-router/issues/1568)) ([4e95bd8](https://github.com/vuejs/vue-router/commit/4e95bd8)), closes [#1566](https://github.com/vuejs/vue-router/issues/1566) - resolve native ES modules ([8a28426](https://github.com/vuejs/vue-router/commit/8a28426)) - send props not defined on the route component in \$attrs. Fixes [#1695](https://github.com/vuejs/vue-router/issues/1695). ([#1702](https://github.com/vuejs/vue-router/issues/1702)) ([a722b6a](https://github.com/vuejs/vue-router/commit/a722b6a)) ### Features - enhance hashHistory to support scrollBehavior ([#1662](https://github.com/vuejs/vue-router/issues/1662)) ([1422eb5](https://github.com/vuejs/vue-router/commit/1422eb5)) - scrollBehavior accept returning a promise ([#1758](https://github.com/vuejs/vue-router/issues/1758)) ([ce13b55](https://github.com/vuejs/vue-router/commit/ce13b55)) # [2.7.0](https://github.com/vuejs/vue-router/compare/v2.6.0...v2.7.0) (2017-06-29) ### Features - auto resolve ES module default when resolving async components ([d539788](https://github.com/vuejs/vue-router/commit/d539788)) ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2013-present Evan You 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. ================================================ FILE: README.md ================================================ # vue-router [](https://circleci.com/gh/vuejs/vue-router) > This is vue-router 3.0 which works only with Vue 2.0. and both have reached end of life. > > - For the 1.x router see the [1.0 branch](https://github.com/vuejs/vue-router/tree/1.0). > - For Vue Router 4 (for Vue 3) see [vuejs/router](https://github.com/vuejs/router).
Special thanks to [BrowserStack](https://www.browserstack.com) for letting the maintainers use their service to debug browser specific issues.
================================================
FILE: build/build.js
================================================
const fs = require('fs')
const path = require('path')
const zlib = require('zlib')
const terser = require('terser')
const rollup = require('rollup')
const configs = require('./configs')
if (!fs.existsSync('dist')) {
fs.mkdirSync('dist')
}
build(configs)
function build (builds) {
let built = 0
const total = builds.length
const next = () => {
buildEntry(builds[built])
.then(() => {
built++
if (built < total) {
next()
}
})
.catch(logError)
}
next()
}
function buildEntry ({ input, output }) {
const { file, banner } = output
const isProd = /min\.js$/.test(file)
return rollup
.rollup(input)
.then(bundle => bundle.generate(output))
.then(bundle => {
// console.log(bundle)
const code = bundle.output[0].code
if (isProd) {
const minified =
(banner ? banner + '\n' : '') +
terser.minify(code, {
toplevel: true,
output: {
ascii_only: true
},
compress: {
pure_funcs: ['makeMap']
}
}).code
return write(file, minified, true)
} else {
return write(file, code)
}
})
}
function write (dest, code, zip) {
return new Promise((resolve, reject) => {
function report (extra) {
console.log(
blue(path.relative(process.cwd(), dest)) +
' ' +
getSize(code) +
(extra || '')
)
resolve()
}
fs.writeFile(dest, code, err => {
if (err) return reject(err)
if (zip) {
zlib.gzip(code, (err, zipped) => {
if (err) return reject(err)
report(' (gzipped: ' + getSize(zipped) + ')')
})
} else {
report()
}
})
})
}
function getSize (code) {
return (code.length / 1024).toFixed(2) + 'kb'
}
function logError (e) {
console.log(e)
}
function blue (str) {
return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'
}
================================================
FILE: build/configs.js
================================================
const path = require('path')
const buble = require('rollup-plugin-buble')
const flow = require('rollup-plugin-flow-no-whitespace')
const cjs = require('@rollup/plugin-commonjs')
const node = require('@rollup/plugin-node-resolve').nodeResolve
const replace = require('rollup-plugin-replace')
const version = process.env.VERSION || require('../package.json').version
const banner = `/*!
* vue-router v${version}
* (c) ${new Date().getFullYear()} Evan You
* @license MIT
*/`
const resolve = _path => path.resolve(__dirname, '../', _path)
module.exports = [
// browser dev
{
file: resolve('dist/vue-router.js'),
format: 'umd',
env: 'development'
},
{
file: resolve('dist/vue-router.min.js'),
format: 'umd',
env: 'production'
},
{
file: resolve('dist/vue-router.common.js'),
format: 'cjs'
},
{
input: resolve('src/entries/esm.js'),
file: resolve('dist/vue-router.esm.js'),
format: 'es'
},
{
input: resolve('src/entries/esm.js'),
file: resolve('dist/vue-router.mjs'),
format: 'es'
},
{
input: resolve('src/entries/esm.js'),
file: resolve('dist/vue-router.esm.browser.js'),
format: 'es',
env: 'development',
transpile: false
},
{
input: resolve('src/entries/esm.js'),
file: resolve('dist/vue-router.esm.browser.min.js'),
format: 'es',
env: 'production',
transpile: false
},
{
input: resolve('src/composables/index.js'),
file: resolve('./composables.mjs'),
format: 'es'
},
{
input: resolve('src/composables/index.js'),
file: resolve('./composables.js'),
format: 'cjs'
}
].map(genConfig)
function genConfig (opts) {
const config = {
input: {
input: opts.input || resolve('src/index.js'),
plugins: [
flow(),
node(),
cjs(),
replace({
__VERSION__: version
})
],
external: ['vue']
},
output: {
file: opts.file,
format: opts.format,
banner,
name: 'VueRouter'
}
}
if (opts.env) {
config.input.plugins.unshift(
replace({
'process.env.NODE_ENV': JSON.stringify(opts.env)
})
)
}
if (opts.transpile !== false) {
config.input.plugins.push(buble())
}
return config
}
================================================
FILE: build/rollup.dev.config.js
================================================
const { input, output } = require('./configs')[0]
module.exports = Object.assign({}, input, { output })
================================================
FILE: composables.d.ts
================================================
export * from './types/composables'
================================================
FILE: composables.js
================================================
/*!
* vue-router v3.6.5
* (c) 2022 Evan You
* @license MIT
*/
'use strict'
Object.defineProperty(exports, '__esModule', { value: true })
var vue = require('vue')
// dev only warn if no current instance
function throwNoCurrentInstance (method) {
if (!vue.getCurrentInstance()) {
throw new Error(
('[vue-router]: Missing current instance. ' + method + '() must be called inside
================================================
FILE: docs/.vuepress/components/HomeSponsorsGroup.vue
================================================
================================================
FILE: docs/.vuepress/components/sponsors.json
================================================
{
"platinum": [],
"gold": [],
"silver": [
{
"href": "https://www.vuemastery.com/",
"alt": "VueMastery",
"imgSrcLight": "https://posva-sponsors.pages.dev/logos/vuemastery-light.svg",
"imgSrcDark": "https://posva-sponsors.pages.dev/logos/vuemastery-dark.png"
},
{
"href": "https://www.prefect.io/",
"imgSrcLight": "https://posva-sponsors.pages.dev/logos/prefectlogo-light.svg",
"imgSrcDark": "https://posva-sponsors.pages.dev/logos/prefectlogo-dark.svg",
"alt": "Prefect"
}
],
"bronze": [
{
"alt": "Stanislas Ormières",
"href": "https://stormier.ninja",
"imgSrcDark": "https://avatars.githubusercontent.com/u/2486424?u=7b0c73ae5d090ce53bf59473094e9606fe082c59&v=4",
"imgSrcLight": "https://avatars.githubusercontent.com/u/2486424?u=7b0c73ae5d090ce53bf59473094e9606fe082c59&v=4"
},
{
"alt": "Antony Konstantinidis",
"href": "https://www.vuejs.de",
"imgSrcDark": "https://avatars.githubusercontent.com/u/4183726?u=6b50a8ea16de29d2982f43c5640b1db9299ebcd1&v=4",
"imgSrcLight": "https://avatars.githubusercontent.com/u/4183726?u=6b50a8ea16de29d2982f43c5640b1db9299ebcd1&v=4"
},
{
"href": "https://storyblok.com",
"imgSrcLight": "https://posva-sponsors.pages.dev/logos/storyblok.png",
"imgSrcDark": "https://posva-sponsors.pages.dev/logos/storyblok.png",
"alt": "Storyblok"
},
{
"href": "https://nuxtjs.org",
"imgSrcLight": "https://posva-sponsors.pages.dev/logos/nuxt-light.svg",
"imgSrcDark": "https://posva-sponsors.pages.dev/logos/nuxt-dark.svg",
"alt": "Nuxt Labs"
}
]
}
================================================
FILE: docs/.vuepress/config.js
================================================
module.exports = ctx => ({
locales: {
'/': {
lang: 'en-US',
title: 'Vue Router',
description: 'The official router for Vue.js.'
},
'/zh/': {
lang: 'zh-CN',
title: 'Vue Router',
description: 'Vue.js 官方的路由管理器。'
},
'/ja/': {
lang: 'ja',
title: 'Vue Router',
description: 'Vue.js の公式ルータ'
},
'/ru/': {
lang: 'ru',
title: 'Vue Router',
description: 'Официальный маршрутизатор для Vue.js.'
},
'/kr/': {
lang: 'kr',
title: 'Vue Router',
description: 'Vue.js 공식 라우터'
},
'/fr/': {
lang: 'fr',
title: 'Vue Router',
description: 'Routeur officiel pour Vue.Js'
}
},
head: [
['link', { rel: 'icon', href: `/logo.png` }],
[
'meta',
{ name: 'wwads-cn-verify', content: '7e7757b1e12abcb736ab9a754ffb617a' }
],
[
'link',
{ rel: 'apple-touch-icon', href: `/icons/apple-touch-icon-152x152.png` }
],
[
'link',
{
rel: 'mask-icon',
href: '/icons/safari-pinned-tab.svg',
color: '#3eaf7c'
}
],
[
'meta',
{
name: 'msapplication-TileImage',
content: '/icons/msapplication-icon-144x144.png'
}
]
],
// theme: '@vuepress/vue',
plugins: [
[
'@vuepress/pwa',
{
serviceWorker: true,
updatePopup: true
}
]
],
themeConfig: {
algolia: ctx.isProd
? {
appId: 'LI3RW4C4QI',
apiKey: '08e7ef7cd3969442874f0dee9dec34be',
indexName: 'vue-router'
}
: null,
carbonAds: {
carbon: 'CEBICK3I',
custom: 'CEBICK3M',
placement: 'routervuejsorg'
},
repo: 'vuejs/vue-router',
docsDir: 'docs',
smoothScroll: true,
locales: {
'/': {
label: 'English',
selectText: 'Languages',
editLinkText: 'Edit this page on GitHub',
nav: [
{
text: 'Guide',
link: '/guide/'
},
{
text: 'API Reference',
link: '/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org' }]
},
{
text: 'Release Notes',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/installation.md',
{
title: 'Essentials',
collapsable: false,
children: [
'/guide/',
'/guide/essentials/dynamic-matching.md',
'/guide/essentials/nested-routes.md',
'/guide/essentials/navigation.md',
'/guide/essentials/named-routes.md',
'/guide/essentials/named-views.md',
'/guide/essentials/redirect-and-alias.md',
'/guide/essentials/passing-props.md',
'/guide/essentials/history-mode.md'
]
},
{
title: 'Advanced',
collapsable: false,
children: [
'/guide/advanced/navigation-guards.md',
'/guide/advanced/meta.md',
'/guide/advanced/transitions.md',
'/guide/advanced/data-fetching.md',
'/guide/advanced/scroll-behavior.md',
'/guide/advanced/lazy-loading.md',
'/guide/advanced/navigation-failures.md'
]
}
]
},
'/zh/': {
label: '简体中文',
selectText: '选择语言',
editLinkText: '在 GitHub 上编辑此页',
nav: [
{
text: '指南',
link: '/zh/guide/'
},
{
text: 'API 参考',
link: '/zh/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org/zh/' }]
},
{
text: '更新记录',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/zh/installation.md',
{
title: '基础',
collapsable: false,
children: [
'/zh/guide/',
'/zh/guide/essentials/dynamic-matching.md',
'/zh/guide/essentials/nested-routes.md',
'/zh/guide/essentials/navigation.md',
'/zh/guide/essentials/named-routes.md',
'/zh/guide/essentials/named-views.md',
'/zh/guide/essentials/redirect-and-alias.md',
'/zh/guide/essentials/passing-props.md',
'/zh/guide/essentials/history-mode.md'
]
},
{
title: '进阶',
collapsable: false,
children: [
'/zh/guide/advanced/navigation-guards.md',
'/zh/guide/advanced/meta.md',
'/zh/guide/advanced/transitions.md',
'/zh/guide/advanced/data-fetching.md',
'/zh/guide/advanced/scroll-behavior.md',
'/zh/guide/advanced/lazy-loading.md',
'/zh/guide/advanced/navigation-failures.md'
]
}
]
},
'/ja/': {
label: '日本語',
selectText: '言語',
editLinkText: 'GitHub 上でこのページを編集する',
nav: [
{
text: 'ガイド',
link: '/ja/guide/'
},
{
text: 'API リファレンス',
link: '/ja/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org' }]
},
{
text: 'リリースノート',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/ja/installation.md',
{
title: '基本的な使い方',
collapsable: false,
children: [
'/ja/guide/',
'/ja/guide/essentials/dynamic-matching.md',
'/ja/guide/essentials/nested-routes.md',
'/ja/guide/essentials/navigation.md',
'/ja/guide/essentials/named-routes.md',
'/ja/guide/essentials/named-views.md',
'/ja/guide/essentials/redirect-and-alias.md',
'/ja/guide/essentials/passing-props.md',
'/ja/guide/essentials/history-mode.md'
]
},
{
title: '高度な使い方',
collapsable: false,
children: [
'/ja/guide/advanced/navigation-guards.md',
'/ja/guide/advanced/meta.md',
'/ja/guide/advanced/transitions.md',
'/ja/guide/advanced/data-fetching.md',
'/ja/guide/advanced/scroll-behavior.md',
'/ja/guide/advanced/lazy-loading.md',
'/ja/guide/advanced/navigation-failures.md'
]
}
]
},
'/ru/': {
label: 'Русский',
selectText: 'Переводы',
editLinkText: 'Изменить эту страницу на GitHub',
nav: [
{
text: 'Руководство',
link: '/ru/guide/'
},
{
text: 'Справочник API',
link: '/ru/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org' }]
},
{
text: 'История изменений',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/ru/installation.md',
{
title: 'Основы',
collapsable: false,
children: [
'/ru/guide/',
'/ru/guide/essentials/dynamic-matching.md',
'/ru/guide/essentials/nested-routes.md',
'/ru/guide/essentials/navigation.md',
'/ru/guide/essentials/named-routes.md',
'/ru/guide/essentials/named-views.md',
'/ru/guide/essentials/redirect-and-alias.md',
'/ru/guide/essentials/passing-props.md',
'/ru/guide/essentials/history-mode.md'
]
},
{
title: 'Продвинутые темы',
collapsable: false,
children: [
'/ru/guide/advanced/navigation-guards.md',
'/ru/guide/advanced/meta.md',
'/ru/guide/advanced/transitions.md',
'/ru/guide/advanced/data-fetching.md',
'/ru/guide/advanced/scroll-behavior.md',
'/ru/guide/advanced/lazy-loading.md',
'/ru/guide/advanced/navigation-failures.md'
]
}
]
},
'/kr/': {
label: '한국어',
selectText: '언어',
editLinkText: 'GitHub에서 이 문서를 수정하세요',
nav: [
{
text: '가이드',
link: '/kr/guide/'
},
{
text: 'API 레퍼런스',
link: '/kr/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org' }]
},
{
text: '릴리즈 노트',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/kr/installation.md',
{
title: '기본 사용법',
collapsable: false,
children: [
'/kr/guide/',
'/kr/guide/essentials/dynamic-matching.md',
'/kr/guide/essentials/nested-routes.md',
'/kr/guide/essentials/navigation.md',
'/kr/guide/essentials/named-routes.md',
'/kr/guide/essentials/named-views.md',
'/kr/guide/essentials/redirect-and-alias.md',
'/kr/guide/essentials/passing-props.md',
'/kr/guide/essentials/history-mode.md'
]
},
{
title: '고급 사용법',
collapsable: false,
children: [
'/kr/guide/advanced/navigation-guards.md',
'/kr/guide/advanced/meta.md',
'/kr/guide/advanced/transitions.md',
'/kr/guide/advanced/data-fetching.md',
'/kr/guide/advanced/scroll-behavior.md',
'/kr/guide/advanced/lazy-loading.md'
]
}
]
},
'/fr/': {
label: 'Français',
selectText: 'Langues',
editLinkText: 'Editer cette page sur Github',
nav: [
{
text: 'Guide',
link: '/fr/guide/'
},
{
text: 'API',
link: '/fr/api/'
},
{
text: 'v3.x',
items: [{ text: 'v4.x', link: 'https://next.router.vuejs.org' }]
},
{
text: 'Notes de version',
link: 'https://github.com/vuejs/vue-router/releases'
}
],
sidebar: [
'/fr/installation.md',
{
title: 'Essentiels',
collapsable: false,
children: [
'/fr/guide/',
'/fr/guide/essentials/dynamic-matching.md',
'/fr/guide/essentials/nested-routes.md',
'/fr/guide/essentials/navigation.md',
'/fr/guide/essentials/named-routes.md',
'/fr/guide/essentials/named-views.md',
'/fr/guide/essentials/redirect-and-alias.md',
'/fr/guide/essentials/passing-props.md',
'/fr/guide/essentials/history-mode.md'
]
},
{
title: 'Avancés',
collapsable: false,
children: [
'/fr/guide/advanced/navigation-guards.md',
'/fr/guide/advanced/meta.md',
'/fr/guide/advanced/transitions.md',
'/fr/guide/advanced/data-fetching.md',
'/fr/guide/advanced/scroll-behavior.md',
'/fr/guide/advanced/lazy-loading.md'
]
}
]
}
}
}
})
================================================
FILE: docs/.vuepress/public/_redirects
================================================
# redirect old urls to root
/en/essentials/getting-started.html /guide/
/en/essentials/* /guide/essentials/:splat
/en/advanced/* /guide/advanced/:splat
/en/api/* /api/
/en/* /:splat
/zh-cn/essentials/getting-started.html /zh/guide/
/zh-cn/essentials/* /zh/guide/essentials/:splat
/zh-cn/advanced/* /zh/guide/advanced/:splat
/zh-cn/api/* /zh/api/
/zh-cn/* /zh/:splat
/ru/essentials/getting-started.html /ru/guide/
/ru/essentials/* /ru/guide/essentials/:splat
/ru/advanced/* /ru/guide/advanced/:splat
/ru/api/* /ru/api/
/ru/* /ru/:splat
/ja/essentials/getting-started.html /ja/guide/
/ja/essentials/* /ja/guide/essentials/:splat
/ja/advanced/* /ja/guide/advanced/:splat
/ja/api/* /ja/api/
/ja/* /ja/:splat
/kr/essentials/getting-started.html /kr/guide/
/kr/essentials/* /kr/guide/essentials/:splat
/kr/advanced/* /kr/guide/advanced/:splat
/kr/api/* /kr/api/
/kr/* /kr/:splat
================================================
FILE: docs/.vuepress/styles/index.styl
================================================
.bit-sponsor
font-weight 600
background-color #f3f6f8
padding 0.6em 1.2em
border-radius 8px
display inline-block
margin 1em 0 !important
a
color #999
img
height 40px
margin-left 15px
img, span
vertical-align middle
.vueschool
background-color #e7ecf3
padding 1em 1.25em
border-radius 2px
color #486491
position relative
display flex
a
color #486491 !important
position relative
padding-left 36px
&:before
content ''
position absolute
display block
width 30px
height 30px
top calc(50% - 15px);
left -4px
border-radius 50%
background-color #73abfe
&:after
content ''
position absolute
display block
width 0
height 0
top calc(50% - 5px)
left 8px
border-top 5px solid transparent
border-bottom 5px solid transparent
border-left 8px solid #fff
@media (max-width: 719px) {
.vueschool {
display: inline-flex;
}
}
================================================
FILE: docs/.vuepress/theme/Layout.vue
================================================
{{ post.body }}
{{ post.body }}
{{ post.body }}
{{ post.body }}
{{ post.body }}
{{ post.body }}