├── .gitignore
├── README.md
├── examples
├── active-links
│ ├── Home.vue
│ ├── About.vue
│ ├── User.vue
│ ├── Users.vue
│ ├── index.js
│ └── App.vue
├── auth-flow
│ ├── components
│ │ ├── About.vue
│ │ ├── Dashboard.vue
│ │ ├── App.vue
│ │ └── Login.vue
│ ├── index.js
│ └── auth.js
├── lazy-loading
│ ├── Baz.vue
│ ├── Foo.vue
│ ├── Bar.vue
│ └── index.js
├── sfc
│ ├── pages
│ │ ├── About.vue
│ │ ├── Home.vue
│ │ ├── topics
│ │ │ └── Topic.vue
│ │ └── Topics.vue
│ ├── App.vue
│ └── index.js
├── route-props
│ ├── Hello.vue
│ └── index.js
├── data-fetching
│ ├── api.js
│ ├── index.js
│ └── Post.vue
├── named-routes
│ └── index.js
├── named-views
│ └── index.js
├── basic
│ └── index.js
├── nested-router
│ └── index.js
├── transitions
│ └── index.js
├── route-matching
│ └── index.js
├── scroll-behavior
│ └── index.js
├── route-alias
│ └── index.js
├── index.js
├── simple
│ └── index.js
├── nested-routes
│ └── index.js
├── redirect
│ └── index.js
└── navigation-guards
│ └── index.js
├── src
├── Browser
│ ├── index.js
│ ├── LoadingPage.vue
│ ├── history.js
│ ├── Window.vue
│ └── AddressBar.vue
├── app.js
├── App.vue
└── Example.vue
├── .babelrc
├── vue.config.js
├── package.json
├── generate.js
├── shrinkwrap.yaml
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /dist
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-router-trials
2 |
3 | ```
4 | # To run:
5 | yarn start
6 | ````
7 |
--------------------------------------------------------------------------------
/examples/active-links/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
Home
3 |
4 |
--------------------------------------------------------------------------------
/src/Browser/index.js:
--------------------------------------------------------------------------------
1 | import Browser from './Window.vue'
2 |
3 | export default Browser
4 |
--------------------------------------------------------------------------------
/examples/active-links/About.vue:
--------------------------------------------------------------------------------
1 |
2 |
About
3 |
4 |
--------------------------------------------------------------------------------
/examples/active-links/User.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ $route.params.username }}
3 |
4 |
--------------------------------------------------------------------------------
/examples/auth-flow/components/About.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
About
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "vue-app"
4 | ],
5 | "plugins": [
6 | "transform-flow-strip-types"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/examples/active-links/Users.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Users
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/examples/auth-flow/components/Dashboard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Dashboard
4 |
Yay you made it!
5 |
6 |
7 |
--------------------------------------------------------------------------------
/examples/lazy-loading/Baz.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Baz
4 |
I'm loaded in the same chunk with Bar.
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Browser/LoadingPage.vue:
--------------------------------------------------------------------------------
1 |
2 | Loading...
3 |
4 |
5 |
--------------------------------------------------------------------------------
/examples/sfc/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | About Page
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/examples/sfc/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 | Home Page
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/examples/lazy-loading/Foo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
This is Foo!
4 |
I am lazy-loaded. (check out the Networks tab in Chrome devtools)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/examples/route-props/Hello.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Hello {{name}}
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/examples/sfc/pages/topics/Topic.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ id }}
3 |
4 |
5 |
17 |
--------------------------------------------------------------------------------
/examples/lazy-loading/Bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
I am lazy-loaded. (check out the Networks tab in Chrome devtools)
5 |
6 |
7 |
8 |
9 |
16 |
--------------------------------------------------------------------------------
/src/Browser/history.js:
--------------------------------------------------------------------------------
1 | import { AbstractHistory } from 'vue-router/src/history/abstract'
2 |
3 | export class MemoryHistory extends AbstractHistory {
4 | constructor(context, router, base) {
5 | super(router, base)
6 | this.context = context
7 | }
8 |
9 | transitionTo(route, onComplete, onAbort) {
10 | super.transitionTo(route, () => {
11 | this.context.onComplete(this)
12 | onComplete && onComplete()
13 | }, () => {
14 | this.context.onAbort(this)
15 | onAbort && onAbort()
16 | })
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const express = require('express')
2 |
3 | module.exports = {
4 | webpack(config) {
5 | config.module.rules.push({
6 | test: /\.js$/,
7 | use: 'babel-loader',
8 | include: [/node_modules\/vue-router/]
9 | })
10 | config.devtool = 'source-map'
11 | config.resolve = config.resolve || {}
12 | config.resolve.alias = config.resolve.alias || {}
13 | config.resolve.alias['vue$'] = 'vue/dist/vue.esm.js'
14 |
15 | return config
16 | },
17 | setup (app) {
18 | app.use('/examples', express.static('examples'))
19 | }
20 | }
--------------------------------------------------------------------------------
/examples/sfc/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
SFC
4 |
5 |
6 | Home
7 |
8 |
9 | About
10 |
11 |
12 | Topics
13 |
14 |
15 |
16 |
17 |
18 |
19 | WHy?
20 |
21 |
22 |
23 |
24 |
29 |
--------------------------------------------------------------------------------
/examples/active-links/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | import Home from './Home.vue'
7 | import About from './About.vue'
8 | import Users from './Users.vue'
9 | import User from './User.vue'
10 | import App from './App.vue'
11 |
12 | const router = new VueRouter({
13 | mode: 'history',
14 | routes: [
15 | { path: '/', component: Home },
16 | { path: '/about', component: About },
17 | { path: '/users', component: Users,
18 | children: [
19 | { path: ':username', name: 'user', component: User }
20 | ]
21 | }
22 | ]
23 | })
24 |
25 | export default {
26 | router,
27 | render: (h) => h(App)
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/examples/sfc/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 | import HomePage from './pages/Home.vue'
4 | import AboutPage from './pages/About.vue'
5 | import TopicsPage from './pages/Topics.vue'
6 | import TopicPage from './pages/topics/Topic.vue'
7 | import App from './App.vue'
8 |
9 | Vue.use(VueRouter)
10 |
11 |
12 | const router = new VueRouter({
13 | routes: [
14 | { path: '/', component: HomePage },
15 | { path: '/about', component: AboutPage },
16 | { path: '/topics', component: TopicsPage, children: [
17 | { name: 'topic', path: ':id', component: TopicPage, props: true }
18 | ] }
19 | ]
20 | })
21 |
22 | export default {
23 | router,
24 | render: (h) => h(App)
25 | }
26 |
--------------------------------------------------------------------------------
/examples/data-fetching/api.js:
--------------------------------------------------------------------------------
1 | const posts = {
2 | '1': {
3 | id: 1,
4 | title: 'sunt aut facere',
5 | body: 'quia et suscipit suscipit recusandae consequuntur expedita et cum reprehenderit molestiae ut ut quas totam nostrum rerum est autem sunt rem eveniet architecto'
6 | },
7 | '2': {
8 | id: 2,
9 | title: 'qui est esse',
10 | body: 'est rerum tempore vitae sequi sint nihil reprehenderit dolor beatae ea dolores neque fugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis qui aperiam non debitis possimus qui neque nisi nulla'
11 | }
12 | }
13 |
14 | export function getPost (id, cb) {
15 | // fake an API request
16 | setTimeout(() => {
17 | if (posts[id]) {
18 | cb(null, posts[id])
19 | } else {
20 | cb(new Error('Post not found.'))
21 | }
22 | }, 100)
23 | }
24 |
--------------------------------------------------------------------------------
/examples/data-fetching/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 | import Post from './Post.vue'
4 |
5 | Vue.use(VueRouter)
6 |
7 | const Home = { template: 'home
' }
8 |
9 | const router = new VueRouter({
10 | mode: 'history',
11 | routes: [
12 | { path: '/', component: Home },
13 | { path: '/post/:id', component: Post }
14 | ]
15 | })
16 |
17 | export default {
18 | router,
19 | template: `
20 |
21 |
Data Fetching
22 |
23 | /
24 | /post/1
25 | /post/2
26 | /post/3
27 |
28 |
29 |
30 | `
31 | }
32 |
--------------------------------------------------------------------------------
/examples/sfc/pages/Topics.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Topics Page
4 |
5 |
6 |
7 | Rendering with Vue
8 |
9 |
10 |
11 |
12 | Components
13 |
14 |
15 |
16 |
17 | Props vs State
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
31 |
--------------------------------------------------------------------------------
/src/app.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import Example from './Example.vue'
4 | import examples from '../examples'
5 | import App from './App.vue'
6 |
7 | Vue.config.devtools = true
8 |
9 | Vue.use(Router)
10 |
11 | new Vue({
12 | router: new Router({
13 | routes: [
14 | {
15 | name: 'example',
16 | path: '/examples/:example',
17 | component: Example,
18 | props: (route) => examples.find(example => example.name === route.params.example),
19 | beforeEnter (to, from, next) {
20 | examples.find(example => example.name === to.params.example) ? next() : next(false)
21 | }
22 | },
23 | {
24 | path: '*',
25 | component: {
26 | render (h) { return h('div', '404. Not Found.') }
27 | }
28 | }
29 | ]
30 | }),
31 |
32 | ...App
33 | }).$mount('#app')
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-router-trials",
3 | "version": "0.1.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "babel-plugin-transform-flow-strip-types": "^6.22.0",
8 | "bulma": "^0.5.2",
9 | "express": "^4.15.3",
10 | "glob": "^7.1.2",
11 | "prism-themes": "^1.0.0",
12 | "prismjs": "^1.6.0",
13 | "vue": "^2.3.4",
14 | "vue-router": "^2.7.0"
15 | },
16 | "devDependencies": {
17 | "babel-preset-vue-app": "^1.2.0",
18 | "node-sass": "^4.5.3",
19 | "prettier": "^1.5.2",
20 | "sass-loader": "^6.0.6"
21 | },
22 | "scripts": {
23 | "start": "vue build --config vue.config.js -o src/app.js",
24 | "build:examples": "node generate.js",
25 | "build:app": "vue build --config vue.config.js --prod src/app.js",
26 | "build:copy": "cp -r examples dist",
27 | "build": "npm run build:examples && npm run build:app && npm run build:copy",
28 | "deploy": "surge -p dist -d vue-router-demos.surge.sh"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/examples/auth-flow/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | import auth from './auth'
7 | import App from './components/App.vue'
8 | import About from './components/About.vue'
9 | import Dashboard from './components/Dashboard.vue'
10 | import Login from './components/Login.vue'
11 |
12 | function requireAuth (to, from, next) {
13 | if (!auth.loggedIn()) {
14 | next({
15 | path: '/login',
16 | query: { redirect: to.fullPath }
17 | })
18 | } else {
19 | next()
20 | }
21 | }
22 |
23 | const router = new VueRouter({
24 | mode: 'history',
25 | routes: [
26 | { path: '/about', component: About },
27 | { path: '/dashboard', component: Dashboard, beforeEnter: requireAuth },
28 | { path: '/login', component: Login },
29 | { path: '/logout',
30 | beforeEnter (to, from, next) {
31 | auth.logout()
32 | next('/')
33 | }
34 | }
35 | ]
36 | })
37 |
38 | export default {
39 | router,
40 | render: h => h(App)
41 | }
42 |
--------------------------------------------------------------------------------
/examples/auth-flow/components/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Auth Flow
4 |
5 |
6 | Log out
7 | Log in
8 |
9 |
10 | About
11 |
12 |
13 | Dashboard
14 | (authenticated)
15 |
16 |
17 |
18 |
19 |
20 |
21 | You are logged {{ loggedIn ? 'in' : 'out' }}
22 |
23 |
24 |
25 |
26 |
42 |
--------------------------------------------------------------------------------
/examples/named-routes/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = { template: 'This is Home
' }
7 | const Foo = { template: 'This is Foo
' }
8 | const Bar = { template: 'This is Bar {{ $route.params.id }}
' }
9 |
10 | const router = new VueRouter({
11 | mode: 'history',
12 | base: __dirname,
13 | routes: [
14 | { path: '/', name: 'home', component: Home },
15 | { path: '/foo', name: 'foo', component: Foo },
16 | { path: '/bar/:id', name: 'bar', component: Bar }
17 | ]
18 | })
19 |
20 | export default {
21 | router,
22 | template: `
23 |
24 |
Named Routes
25 |
Current route name: {{ $route.name }}
26 |
27 | home
28 | foo
29 | bar
30 |
31 |
32 |
33 | `
34 | }
35 |
--------------------------------------------------------------------------------
/examples/auth-flow/components/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Login
4 |
5 | You need to login first.
6 |
7 |
13 |
14 |
15 |
16 |
40 |
41 |
46 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
29 |
30 |
39 |
40 |
56 |
--------------------------------------------------------------------------------
/generate.js:
--------------------------------------------------------------------------------
1 | #!/bin/bash node
2 | const glob = require('glob')
3 | const path = require('path')
4 | const fs = require('fs')
5 | const prettier = require("prettier");
6 |
7 | Promise.resolve(glob.sync(`${__dirname}/examples/*`))
8 | .then(
9 | files => files.filter(dir => fs.lstatSync(dir).isDirectory())
10 | )
11 | .then(
12 | dirs => dirs.map(dir => ({path: dir, name: dir.replace(`${__dirname}/examples/`, '')}))
13 | )
14 | .then(
15 | dirs => dirs.map(dir => (
16 | `{
17 | name: ${JSON.stringify(dir.name)},
18 | files: ${JSON.stringify(
19 | glob.sync(`${dir.path}/**/*`)
20 | .filter(filename => /\.(vue|js|jsx)$/.test(filename))
21 | .map(filename => filename.replace(`${dir.path}/`, '')),
22 | null, 2)},
23 | bundle: () => import('./${dir.name}')
24 | }`))
25 | )
26 | .then(
27 | examples => fs.writeFile(
28 | path.join(__dirname, 'examples/index.js'),
29 | prettier.format('// NOTE: THIS IS AN AUTOGENERATED FILE.\nexport default [\n' + examples.join(',\n') + '\n]\n', {semi: false}),
30 | (error) => {
31 | if (error) console.log(error)
32 | })
33 | )
--------------------------------------------------------------------------------
/examples/auth-flow/auth.js:
--------------------------------------------------------------------------------
1 | /* globals localStorage */
2 |
3 | export default {
4 | login (email, pass, cb) {
5 | cb = arguments[arguments.length - 1]
6 | if (localStorage.token) {
7 | if (cb) cb(true)
8 | this.onChange(true)
9 | return
10 | }
11 | pretendRequest(email, pass, (res) => {
12 | if (res.authenticated) {
13 | localStorage.token = res.token
14 | if (cb) cb(true)
15 | this.onChange(true)
16 | } else {
17 | if (cb) cb(false)
18 | this.onChange(false)
19 | }
20 | })
21 | },
22 |
23 | getToken () {
24 | return localStorage.token
25 | },
26 |
27 | logout (cb) {
28 | delete localStorage.token
29 | if (cb) cb()
30 | this.onChange(false)
31 | },
32 |
33 | loggedIn () {
34 | return !!localStorage.token
35 | },
36 |
37 | onChange () {}
38 | }
39 |
40 | function pretendRequest (email, pass, cb) {
41 | setTimeout(() => {
42 | if (email === 'joe@example.com' && pass === 'password1') {
43 | cb({
44 | authenticated: true,
45 | token: Math.random().toString(36).substring(7)
46 | })
47 | } else {
48 | cb({ authenticated: false })
49 | }
50 | }, 0)
51 | }
52 |
--------------------------------------------------------------------------------
/examples/named-views/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Foo = { template: 'foo
' }
7 | const Bar = { template: 'bar
' }
8 | const Baz = { template: 'baz
' }
9 |
10 | const router = new VueRouter({
11 | mode: 'history',
12 | base: __dirname,
13 | routes: [
14 | { path: '/',
15 | // a single route can define multiple named components
16 | // which will be rendered into s with corresponding names.
17 | components: {
18 | default: Foo,
19 | a: Bar,
20 | b: Baz
21 | }
22 | },
23 | {
24 | path: '/other',
25 | components: {
26 | default: Baz,
27 | a: Bar,
28 | b: Foo
29 | }
30 | }
31 | ]
32 | })
33 |
34 | export default {
35 | router,
36 | template: `
37 |
38 |
Named Views
39 |
43 |
44 |
45 |
46 |
47 | `
48 | }
49 |
--------------------------------------------------------------------------------
/examples/route-props/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 | import Hello from './Hello.vue'
4 |
5 | Vue.use(VueRouter)
6 |
7 | function dynamicPropsFn (route) {
8 | const now = new Date()
9 | return {
10 | name: (now.getFullYear() + parseInt(route.params.years)) + '!'
11 | }
12 | }
13 |
14 | const router = new VueRouter({
15 | mode: 'history',
16 | base: __dirname,
17 | routes: [
18 | { path: '/', component: Hello }, // No props, no nothing
19 | { path: '/hello/:name', component: Hello, props: true }, // Pass route.params to props
20 | { path: '/static', component: Hello, props: { name: 'world' }}, // static values
21 | { path: '/dynamic/:years', component: Hello, props: dynamicPropsFn } // custom logic for mapping between route and props
22 | ]
23 | })
24 |
25 | export default {
26 | router,
27 | template: `
28 |
29 |
Route props
30 |
31 | /
32 | /hello/you
33 | /static
34 | /dynamic/1
35 |
36 |
37 |
38 | `
39 | }
40 |
--------------------------------------------------------------------------------
/examples/basic/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | // 1. Use plugin.
5 | // This installs and ,
6 | // and injects $router and $route to all router-enabled child components
7 | Vue.use(VueRouter)
8 |
9 | // 2. Define route components
10 | const Home = { template: 'home
' }
11 | const Foo = { template: 'foo
' }
12 | const Bar = { template: 'bar
' }
13 |
14 | // 3. Create the router
15 | const router = new VueRouter({
16 | mode: 'history',
17 | base: __dirname,
18 | routes: [
19 | { path: '/', component: Home },
20 | { path: '/foo', component: Foo },
21 | { path: '/bar', component: Bar }
22 | ]
23 | })
24 |
25 | // 4. Create and mount root instance.
26 | // Make sure to inject the router.
27 | // Route components will be rendered inside .
28 | export default {
29 | router,
30 | template: `
31 |
32 |
Basic
33 |
34 | /
35 | /foo
36 | /bar
37 |
38 | /bar
39 |
40 |
41 |
42 |
43 | `
44 | }
45 |
--------------------------------------------------------------------------------
/examples/nested-router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Foo = { template: `
foo ` }
7 | const Bar = { template: `
bar ` }
8 |
9 | const childRouter = new VueRouter({
10 | mode: 'abstract',
11 | routes: [
12 | { path: '/foo', component: Foo },
13 | { path: '/bar', component: Bar }
14 | ]
15 | })
16 |
17 | const Nested = {
18 | router: childRouter,
19 | template: `
20 |
Child router path: {{ $route.fullPath }}
21 |
25 |
26 |
`
27 | }
28 |
29 | const router = new VueRouter({
30 | mode: 'history',
31 | base: __dirname,
32 | routes: [
33 | { path: '/nested-router', component: Nested },
34 | { path: '/foo', component: Foo },
35 | { path: '/bar', component: Bar }
36 | ]
37 | })
38 |
39 | export default {
40 | router,
41 | template: `
42 |
43 |
Root router path: {{ $route.fullPath }}
44 |
45 | /nested-router
46 | /foo
47 | /bar
48 |
49 |
50 |
51 | `
52 | }
53 |
--------------------------------------------------------------------------------
/examples/active-links/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Active Links
4 |
5 | /
6 | / (exact match)
7 |
8 | /users
9 | /users (exact match)
10 |
11 | /users/evan
12 | /users/evan#foo
13 |
14 |
15 | /users/evan?foo=bar
16 |
17 |
18 |
19 |
20 | /users/evan?foo=bar (named view + exact match)
21 |
22 |
23 |
24 |
25 | /users/evan?foo=bar&baz=qux
26 |
27 |
28 |
29 | /about
30 |
31 |
32 | /about (active class on outer element)
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/examples/data-fetching/Post.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Loading...
4 |
5 | {{ error }}
6 |
7 |
8 |
12 |
13 |
{{ post.title }}
14 |
{{ post.body }}
15 |
16 |
17 |
18 |
19 |
20 |
53 |
54 |
76 |
--------------------------------------------------------------------------------
/examples/transitions/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = {
7 | template: `
8 |
12 | `
13 | }
14 |
15 | const Parent = {
16 | data () {
17 | return {
18 | transitionName: 'slide-left'
19 | }
20 | },
21 | beforeRouteUpdate (to, from, next) {
22 | const toDepth = to.path.split('/').length
23 | const fromDepth = from.path.split('/').length
24 | this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
25 | next()
26 | },
27 | template: `
28 |
29 |
Parent
30 |
31 |
32 |
33 |
34 | `
35 | }
36 |
37 | const Default = { template: 'default
' }
38 | const Foo = { template: 'foo
' }
39 | const Bar = { template: 'bar
' }
40 |
41 | const router = new VueRouter({
42 | mode: 'history',
43 | base: __dirname,
44 | routes: [
45 | { path: '/', component: Home },
46 | { path: '/parent', component: Parent,
47 | children: [
48 | { path: '', component: Default },
49 | { path: 'foo', component: Foo },
50 | { path: 'bar', component: Bar }
51 | ]
52 | }
53 | ]
54 | })
55 |
56 | export default {
57 | router,
58 | template: `
59 |
60 |
Transitions
61 |
62 | /
63 | /parent
64 | /parent/foo
65 | /parent/bar
66 |
67 |
68 |
69 |
70 |
71 | `
72 | }
73 |
--------------------------------------------------------------------------------
/examples/route-matching/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | // The matching uses path-to-regexp, which is the matching engine used
7 | // by express as well, so the same matching rules apply.
8 | // For detailed rules, see https://github.com/pillarjs/path-to-regexp
9 | const router = new VueRouter({
10 | mode: 'history',
11 | base: __dirname,
12 | routes: [
13 | { path: '/' },
14 | // params are denoted with a colon ":"
15 | { path: '/params/:foo/:bar' },
16 | // a param can be made optional by adding "?"
17 | { path: '/optional-params/:foo?' },
18 | // a param can be followed by a regex pattern in parens
19 | // this route will only be matched if :id is all numbers
20 | { path: '/params-with-regex/:id(\\d+)' },
21 | // asterisk can match anything
22 | { path: '/asterisk/*' },
23 | // make part of the path optional by wrapping with parens and add "?"
24 | { path: '/optional-group/(foo/)?bar' }
25 | ]
26 | })
27 |
28 | export default {
29 | router,
30 | template: `
31 |
32 |
Route Matching
33 |
34 | /
35 | /params/foo/bar
36 | /optional-params
37 | /optional-params/foo
38 | /params-with-regex/123
39 | /params-with-regex/abc
40 | /asterisk/foo
41 | /asterisk/foo/bar
42 | /optional-group/bar
43 | /optional-group/foo/bar
44 |
45 |
Route context
46 |
{{ JSON.stringify($route, null, 2) }}
47 |
48 | `
49 | }
50 |
--------------------------------------------------------------------------------
/examples/scroll-behavior/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = { template: 'home
' }
7 | const Foo = { template: 'foo
' }
8 | const Bar = {
9 | template: `
10 |
11 | bar
12 |
13 |
Anchor
14 |
Anchor2
15 |
16 | `
17 | }
18 |
19 | // scrollBehavior:
20 | // - only available in html5 history mode
21 | // - defaults to no scroll behavior
22 | // - return false to prevent scroll
23 | const scrollBehavior = (to, from, savedPosition) => {
24 | if (savedPosition) {
25 | // savedPosition is only available for popstate navigations.
26 | return savedPosition
27 | } else {
28 | const position = {}
29 | // new navigation.
30 | // scroll to anchor by returning the selector
31 | if (to.hash) {
32 | position.selector = to.hash
33 |
34 | // specify offset of the element
35 | if (to.hash === '#anchor2') {
36 | position.offset = { y: 100 }
37 | }
38 | }
39 | // check if any matched route config has meta that requires scrolling to top
40 | if (to.matched.some(m => m.meta.scrollToTop)) {
41 | // cords will be used if no selector is provided,
42 | // or if the selector didn't match any element.
43 | position.x = 0
44 | position.y = 0
45 | }
46 | // if the returned position is falsy or an empty object,
47 | // will retain current scroll position.
48 | return position
49 | }
50 | }
51 |
52 | const router = new VueRouter({
53 | mode: 'history',
54 | base: __dirname,
55 | scrollBehavior,
56 | routes: [
57 | { path: '/', component: Home, meta: { scrollToTop: true }},
58 | { path: '/foo', component: Foo },
59 | { path: '/bar', component: Bar, meta: { scrollToTop: true }}
60 | ]
61 | })
62 |
63 | export default {
64 | router,
65 | template: `
66 |
67 |
Scroll Behavior
68 |
69 | /
70 | /foo
71 | /bar
72 | /bar#anchor
73 | /bar#anchor2
74 |
75 |
76 |
77 | `
78 | }
79 |
--------------------------------------------------------------------------------
/examples/lazy-loading/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = { template: 'home
' }
7 |
8 | // In Webpack we can use special require syntax to signify a "split point"
9 | // Webpack will automatically split and lazy-load the split modules.
10 | // - https://webpack.js.org/guides/code-splitting-require/
11 |
12 | // Combine that with Vue's async components, we can easily make our route
13 | // components lazy-loaded only when the given route is matched.
14 |
15 | // async components are defined as:
16 | // - resolve => resolve(Component)
17 | // or
18 | // - () => Promise
19 |
20 | // For single component, we can simply use dynamic import which returns
21 | // a Promise.
22 | const Foo = () => import('./Foo.vue')
23 |
24 | // The import() syntax is a replacement for the deprecated System.import() and
25 | // is specified at https://github.com/tc39/proposal-dynamic-import. Webpack 2
26 | // supports using it to indicate a code-splitting point.
27 | // Note: if using Babel you will need `babel-plugin-syntax-dynamic-import`.
28 |
29 | // If using Webpack 1, you will have to use AMD syntax or require.ensure:
30 | // const Foo = resolve => require(['./Foo.vue'], resolve)
31 |
32 | // If you want to group a number of components that belong to the same
33 | // nested route in the same async chunk, you can use a special comment
34 | // to indicate a chunk name for the imported module. (note this requires
35 | // webpack 2.4.0+)
36 | const Bar = () => import(/* webpackChunkName: "/bar" */ './Bar.vue')
37 | const Baz = () => import(/* webpackChunkName: "/bar" */ './Baz.vue')
38 |
39 | const router = new VueRouter({
40 | mode: 'history',
41 | base: __dirname,
42 | routes: [
43 | { path: '/', component: Home },
44 | // Just use them normally in the route config
45 | { path: '/foo', component: Foo },
46 | // Bar and Baz belong to the same root route
47 | // and grouped in the same async chunk.
48 | { path: '/bar', component: Bar,
49 | children: [
50 | { path: 'baz', component: Baz }
51 | ]
52 | }
53 | ]
54 | })
55 |
56 | export default {
57 | router,
58 | template: `
59 |
60 |
Basic
61 |
62 | /
63 | /foo
64 | /bar
65 | /bar/baz
66 |
67 |
68 |
69 | `
70 | }
71 |
--------------------------------------------------------------------------------
/examples/route-alias/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Root = { template: 'root
' }
7 | const Home = { template: '
Home ' }
8 | const Foo = { template: 'foo
' }
9 | const Bar = { template: 'bar
' }
10 | const Baz = { template: 'baz
' }
11 | const Default = { template: 'default
' }
12 | const Nested = { template: ' ' }
13 | const NestedFoo = { template: 'nested foo
' }
14 |
15 | const router = new VueRouter({
16 | mode: 'history',
17 | base: __dirname,
18 | routes: [
19 | { path: '/root', component: Root, alias: '/root-alias' },
20 | { path: '/home', component: Home,
21 | children: [
22 | // absolute alias
23 | { path: 'foo', component: Foo, alias: '/foo' },
24 | // relative alias (alias to /home/bar-alias)
25 | { path: 'bar', component: Bar, alias: 'bar-alias' },
26 | // multiple aliases
27 | { path: 'baz', component: Baz, alias: ['/baz', 'baz-alias'] },
28 | // default child route with empty string as alias.
29 | { path: 'default', component: Default, alias: '' },
30 | // nested alias
31 | { path: 'nested', component: Nested, alias: 'nested-alias',
32 | children: [
33 | { path: 'foo', component: NestedFoo }
34 | ]
35 | }
36 | ]
37 | }
38 | ]
39 | })
40 |
41 | export default {
42 | router,
43 | template: `
44 |
45 |
Route Alias
46 |
47 |
48 | /root-alias (renders /root)
49 |
50 |
51 |
52 | /foo (renders /home/foo)
53 |
54 |
55 |
56 | /home/bar-alias (renders /home/bar)
57 |
58 |
59 |
60 | /baz (renders /home/baz)
61 |
62 |
63 |
64 | /home/baz-alias (renders /home/baz)
65 |
66 |
67 |
68 | /home (renders /home/default)
69 |
70 |
71 |
72 | /home/nested-alias/foo (renders /home/nested/foo)
73 |
74 |
75 |
76 |
77 | `
78 | }
79 |
--------------------------------------------------------------------------------
/examples/index.js:
--------------------------------------------------------------------------------
1 | // NOTE: THIS IS AN AUTOGENERATED FILE.
2 | export default [
3 | {
4 | name: "active-links",
5 | files: [
6 | "About.vue",
7 | "App.vue",
8 | "Home.vue",
9 | "index.js",
10 | "User.vue",
11 | "Users.vue"
12 | ],
13 | bundle: () => import("./active-links")
14 | },
15 | {
16 | name: "auth-flow",
17 | files: [
18 | "auth.js",
19 | "components/About.vue",
20 | "components/App.vue",
21 | "components/Dashboard.vue",
22 | "components/Login.vue",
23 | "index.js"
24 | ],
25 | bundle: () => import("./auth-flow")
26 | },
27 | {
28 | name: "basic",
29 | files: ["index.js"],
30 | bundle: () => import("./basic")
31 | },
32 | {
33 | name: "data-fetching",
34 | files: ["api.js", "index.js", "Post.vue"],
35 | bundle: () => import("./data-fetching")
36 | },
37 | {
38 | name: "lazy-loading",
39 | files: ["Bar.vue", "Baz.vue", "Foo.vue", "index.js"],
40 | bundle: () => import("./lazy-loading")
41 | },
42 | {
43 | name: "named-routes",
44 | files: ["index.js"],
45 | bundle: () => import("./named-routes")
46 | },
47 | {
48 | name: "named-views",
49 | files: ["index.js"],
50 | bundle: () => import("./named-views")
51 | },
52 | {
53 | name: "navigation-guards",
54 | files: ["index.js"],
55 | bundle: () => import("./navigation-guards")
56 | },
57 | {
58 | name: "nested-router",
59 | files: ["index.js"],
60 | bundle: () => import("./nested-router")
61 | },
62 | {
63 | name: "nested-routes",
64 | files: ["index.js"],
65 | bundle: () => import("./nested-routes")
66 | },
67 | {
68 | name: "redirect",
69 | files: ["index.js"],
70 | bundle: () => import("./redirect")
71 | },
72 | {
73 | name: "route-alias",
74 | files: ["index.js"],
75 | bundle: () => import("./route-alias")
76 | },
77 | {
78 | name: "route-matching",
79 | files: ["index.js"],
80 | bundle: () => import("./route-matching")
81 | },
82 | {
83 | name: "route-props",
84 | files: ["Hello.vue", "index.js"],
85 | bundle: () => import("./route-props")
86 | },
87 | {
88 | name: "scroll-behavior",
89 | files: ["index.js"],
90 | bundle: () => import("./scroll-behavior")
91 | },
92 | {
93 | name: "sfc",
94 | files: [
95 | "App.vue",
96 | "index.js",
97 | "pages/About.vue",
98 | "pages/Home.vue",
99 | "pages/Topics.vue",
100 | "pages/topics/Topic.vue"
101 | ],
102 | bundle: () => import("./sfc")
103 | },
104 | {
105 | name: "simple",
106 | files: ["index.js"],
107 | bundle: () => import("./simple")
108 | },
109 | {
110 | name: "transitions",
111 | files: ["index.js"],
112 | bundle: () => import("./transitions")
113 | }
114 | ]
115 |
--------------------------------------------------------------------------------
/examples/simple/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const HomePage = {
7 | name: 'HomePage',
8 |
9 | render () {
10 | return (Home Page )
11 | }
12 | }
13 |
14 | const AboutPage = {
15 | name: 'AboutPage',
16 |
17 | render () {
18 | return (About Page )
19 | }
20 | }
21 |
22 | const TopicsPage = {
23 | name: 'TopicsPage',
24 |
25 | render () {
26 | return (
27 |
28 | Topics Page
29 |
30 |
31 |
32 | Rendering with Vue
33 |
34 |
35 |
36 |
37 | Components
38 |
39 |
40 |
41 |
42 | Props vs State
43 |
44 |
45 |
46 |
47 |
48 |
49 | )
50 | }
51 | }
52 |
53 | const TopicPage = {
54 | name: 'TopicPage',
55 |
56 | props: {
57 | id: {
58 | type: String,
59 | required: true
60 | }
61 | },
62 |
63 | render () {
64 | return ({this.id} )
65 | }
66 | }
67 |
68 | const router = new VueRouter({
69 | routes: [
70 | { path: '/', component: HomePage },
71 | { path: '/about', component: AboutPage },
72 | { path: '/topics', component: TopicsPage, children: [
73 | { name: 'topic', path: ':id', component: TopicPage, props: true }
74 | ] }
75 | ]
76 | })
77 |
78 | export default {
79 | name: 'App',
80 |
81 | router,
82 |
83 | render () {
84 | return (
85 |
86 |
Simple
87 |
88 |
89 | Home
90 |
91 |
92 | About
93 |
94 |
95 | Topics
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | )
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/examples/nested-routes/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | // A route component can also contain to render
7 | // nested children route components
8 | const Parent = {
9 | template: `
10 |
11 |
Parent
12 |
13 |
14 | `
15 | }
16 |
17 | const Default = { template: 'default
' }
18 | const Foo = { template: 'foo
' }
19 | const Bar = { template: 'bar
' }
20 | const Baz = { template: 'baz
' }
21 |
22 | const Qux = {
23 | template: `
24 |
25 |
qux
26 | /quux
27 |
28 |
29 | `
30 | }
31 | const Quy = {
32 | template: `
33 |
34 |
quy
35 |
{{ JSON.stringify(Object.keys($route.params)) }}
36 |
37 | `
38 | }
39 | const Quux = { template: 'quux
' }
40 | const Zap = { template: 'zap {{ $route.params.zapId }} ' }
41 |
42 | const router = new VueRouter({
43 | mode: 'history',
44 | base: __dirname,
45 | routes: [
46 | { path: '/', redirect: '/parent' },
47 | { path: '/parent', component: Parent,
48 | children: [
49 | // an empty path will be treated as the default, e.g.
50 | // components rendered at /parent: Root -> Parent -> Default
51 | { path: '', component: Default },
52 |
53 | // components rendered at /parent/foo: Root -> Parent -> Foo
54 | { path: 'foo', component: Foo },
55 |
56 | // components rendered at /parent/bar: Root -> Parent -> Bar
57 | { path: 'bar', component: Bar },
58 |
59 | // NOTE absolute path here!
60 | // this allows you to leverage the component nesting without being
61 | // limited to the nested URL.
62 | // components rendered at /baz: Root -> Parent -> Baz
63 | { path: '/baz', component: Baz },
64 |
65 | {
66 | path: 'qux/:quxId',
67 | component: Qux,
68 | children: [{ path: 'quux', name: 'quux', component: Quux }]
69 | },
70 |
71 | { path: 'quy/:quyId', component: Quy },
72 |
73 | { name: 'zap', path: 'zap/:zapId?', component: Zap }
74 | ]
75 | }
76 | ]
77 | })
78 |
79 | export default {
80 | router,
81 | template: `
82 |
83 |
Nested Routes
84 |
85 | /parent
86 | /parent/foo
87 | /parent/bar
88 | /baz
89 | /parent/qux
90 | /parent/quy
91 | /parent/zap
92 | /parent/zap/1
93 | { params: { zapId: 2 }} (relative params)
94 |
95 |
96 |
97 | `
98 | }
99 |
--------------------------------------------------------------------------------
/src/Example.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Loading...
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
109 |
110 |
140 |
141 |
142 |
--------------------------------------------------------------------------------
/src/Browser/Window.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
129 |
130 |
150 |
151 |
171 |
--------------------------------------------------------------------------------
/src/Browser/AddressBar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
22 |
23 |
69 |
70 |
133 |
--------------------------------------------------------------------------------
/examples/redirect/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = { template: ' ' }
7 | const Default = { template: 'default
' }
8 | const Foo = { template: 'foo
' }
9 | const Bar = { template: 'bar
' }
10 | const Baz = { template: 'baz
' }
11 | const WithParams = { template: '{{ $route.params.id }}
' }
12 | const Foobar = { template: 'foobar
' }
13 | const FooBar = { template: 'FooBar
' }
14 |
15 | const router = new VueRouter({
16 | mode: 'history',
17 | base: __dirname,
18 | routes: [
19 | { path: '/', component: Home,
20 | children: [
21 | { path: '', component: Default },
22 | { path: 'foo', component: Foo },
23 | { path: 'bar', component: Bar },
24 | { path: 'baz', name: 'baz', component: Baz },
25 | { path: 'with-params/:id', component: WithParams },
26 | // relative redirect to a sibling route
27 | { path: 'relative-redirect', redirect: 'foo' }
28 | ]
29 | },
30 | // absolute redirect
31 | { path: '/absolute-redirect', redirect: '/bar' },
32 | // dynamic redirect, note that the target route `to` is available for the redirect function
33 | { path: '/dynamic-redirect/:id?',
34 | redirect: to => {
35 | const { hash, params, query } = to
36 | if (query.to === 'foo') {
37 | return { path: '/foo', query: null }
38 | }
39 | if (hash === '#baz') {
40 | return { name: 'baz', hash: '' }
41 | }
42 | if (params.id) {
43 | return '/with-params/:id'
44 | } else {
45 | return '/bar'
46 | }
47 | }
48 | },
49 | // named redirect
50 | { path: '/named-redirect', redirect: { name: 'baz' }},
51 |
52 | // redirect with params
53 | { path: '/redirect-with-params/:id', redirect: '/with-params/:id' },
54 |
55 | // redirect with caseSensitive
56 | { path: '/foobar', component: Foobar, caseSensitive: true },
57 |
58 | // redirect with pathToRegexpOptions
59 | { path: '/FooBar', component: FooBar, pathToRegexpOptions: { sensitive: true }},
60 |
61 | // catch all redirect
62 | { path: '*', redirect: '/' }
63 | ]
64 | })
65 |
66 | export default {
67 | router,
68 | template: `
69 |
70 |
Redirect
71 |
72 |
73 | /relative-redirect (redirects to /foo)
74 |
75 |
76 |
77 | /relative-redirect?foo=bar (redirects to /foo?foo=bar)
78 |
79 |
80 |
81 | /absolute-redirect (redirects to /bar)
82 |
83 |
84 |
85 | /dynamic-redirect (redirects to /bar)
86 |
87 |
88 |
89 | /dynamic-redirect/123 (redirects to /with-params/123)
90 |
91 |
92 |
93 | /dynamic-redirect?to=foo (redirects to /foo)
94 |
95 |
96 |
97 | /dynamic-redirect#baz (redirects to /baz)
98 |
99 |
100 |
101 | /named-redirect (redirects to /baz)
102 |
103 |
104 |
105 | /redirect-with-params/123 (redirects to /with-params/123)
106 |
107 |
108 |
109 | /foobar
110 |
111 |
112 |
113 | /FooBar
114 |
115 |
116 |
117 | /not-found (redirects to /)
118 |
119 |
120 |
121 |
122 | `
123 | }
124 |
--------------------------------------------------------------------------------
/examples/navigation-guards/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 |
6 | const Home = { template: 'home
' }
7 | const Foo = { template: 'foo
' }
8 | const Bar = { template: 'bar
' }
9 |
10 | /**
11 | * Signatre of all route guards:
12 | * @param {Route} to
13 | * @param {Route} from
14 | * @param {Function} next
15 | *
16 | * See http://router.vuejs.org/en/advanced/navigation-guards.html
17 | * for more details.
18 | */
19 | function guardRoute (to, from, next) {
20 | if (window.confirm(`Navigate to ${to.path}?`)) {
21 | next()
22 | } else if (window.confirm(`Redirect to /baz?`)) {
23 | next('/baz')
24 | } else {
25 | next(false)
26 | }
27 | }
28 |
29 | // Baz implements an in-component beforeRouteLeave hook
30 | const Baz = {
31 | data () {
32 | return { saved: false }
33 | },
34 | template: `
35 |
36 |
baz ({{ saved ? 'saved' : 'not saved' }})
37 | save
38 |
39 | `,
40 | beforeRouteLeave (to, from, next) {
41 | if (this.saved || window.confirm('Not saved, are you sure you want to navigate away?')) {
42 | next()
43 | } else {
44 | next(false)
45 | }
46 | }
47 | }
48 |
49 | // Baz implements an in-component beforeRouteEnter hook
50 | const Qux = {
51 | data () {
52 | return {
53 | msg: null
54 | }
55 | },
56 | template: `{{ msg }}
`,
57 | beforeRouteEnter (to, from, next) {
58 | // Note that enter hooks do not have access to `this`
59 | // because it is called before the component is even created.
60 | // However, we can provide a callback to `next` which will
61 | // receive the vm instance when the route has been confirmed.
62 | //
63 | // simulate an async data fetch.
64 | // this pattern is useful when you want to stay at current route
65 | // and only switch after the data has been fetched.
66 | setTimeout(() => {
67 | next(vm => {
68 | vm.msg = 'Qux'
69 | })
70 | }, 300)
71 | }
72 | }
73 |
74 | // Quux implements an in-component beforeRouteUpdate hook.
75 | // this hook is called when the component is reused, but the route is updated.
76 | // For example, when navigating from /quux/1 to /quux/2.
77 | const Quux = {
78 | data () {
79 | return {
80 | prevId: 0
81 | }
82 | },
83 | template: `id:{{ $route.params.id }} prevId:{{ prevId }}
`,
84 | beforeRouteUpdate (to, from, next) {
85 | this.prevId = from.params.id
86 | next()
87 | }
88 | }
89 |
90 | const router = new VueRouter({
91 | mode: 'history',
92 | base: __dirname,
93 | routes: [
94 | { path: '/', component: Home },
95 |
96 | // inline guard
97 | { path: '/foo', component: Foo, beforeEnter: guardRoute },
98 |
99 | // using meta properties on the route config
100 | // and check them in a global before hook
101 | { path: '/bar', component: Bar, meta: { needGuard: true }},
102 |
103 | // Baz implements an in-component beforeRouteLeave hook
104 | { path: '/baz', component: Baz },
105 |
106 | // Qux implements an in-component beforeRouteEnter hook
107 | { path: '/qux', component: Qux },
108 |
109 | // in-component beforeRouteEnter hook for async components
110 | { path: '/qux-async', component: resolve => {
111 | setTimeout(() => {
112 | resolve(Qux)
113 | }, 0)
114 | } },
115 |
116 | // in-component beforeRouteUpdate hook
117 | { path: '/quux/:id', component: Quux }
118 | ]
119 | })
120 |
121 | router.beforeEach((to, from, next) => {
122 | if (to.matched.some(m => m.meta.needGuard)) {
123 | guardRoute(to, from, next)
124 | } else {
125 | next()
126 | }
127 | })
128 |
129 | export default {
130 | router,
131 | template: `
132 |
133 |
Navigation Guards
134 |
135 | /
136 | /foo
137 | /bar
138 | /baz
139 | /qux
140 | /qux-async
141 | /quux/1
142 | /quux/2
143 |
144 |
145 |
146 | `
147 | }
148 |
--------------------------------------------------------------------------------
/shrinkwrap.yaml:
--------------------------------------------------------------------------------
1 | devDependencies:
2 | node-sass: 4.5.3
3 | sass-loader: 6.0.6
4 | packages:
5 | /abbrev/1.1.0:
6 | dev: true
7 | resolution:
8 | integrity: sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=
9 | /ajv/4.11.8:
10 | dependencies:
11 | co: 4.6.0
12 | json-stable-stringify: 1.0.1
13 | dev: true
14 | resolution:
15 | integrity: sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
16 | /amdefine/1.0.1:
17 | dev: true
18 | resolution:
19 | integrity: sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
20 | /ansi-regex/2.1.1:
21 | dev: true
22 | resolution:
23 | integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
24 | /ansi-styles/2.2.1:
25 | dev: true
26 | resolution:
27 | integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
28 | /aproba/1.1.2:
29 | dev: true
30 | resolution:
31 | integrity: sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==
32 | /are-we-there-yet/1.1.4:
33 | dependencies:
34 | delegates: 1.0.0
35 | readable-stream: 2.3.3
36 | dev: true
37 | resolution:
38 | integrity: sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=
39 | /array-find-index/1.0.2:
40 | dev: true
41 | resolution:
42 | integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
43 | /asn1/0.2.3:
44 | dev: true
45 | resolution:
46 | integrity: sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
47 | /assert-plus/0.2.0:
48 | dev: true
49 | resolution:
50 | integrity: sha1-104bh+ev/A24qttwIfP+SBAasjQ=
51 | /assert-plus/1.0.0:
52 | dev: true
53 | resolution:
54 | integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
55 | /async-foreach/0.1.3:
56 | dev: true
57 | resolution:
58 | integrity: sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
59 | /async/2.5.0:
60 | dependencies:
61 | lodash: 4.17.4
62 | dev: true
63 | resolution:
64 | integrity: sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==
65 | /asynckit/0.4.0:
66 | dev: true
67 | resolution:
68 | integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=
69 | /aws-sign2/0.6.0:
70 | dev: true
71 | resolution:
72 | integrity: sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
73 | /aws4/1.6.0:
74 | dev: true
75 | resolution:
76 | integrity: sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=
77 | /balanced-match/1.0.0:
78 | dev: true
79 | resolution:
80 | integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
81 | /bcrypt-pbkdf/1.0.1:
82 | dependencies:
83 | tweetnacl: 0.14.5
84 | dev: true
85 | optional: true
86 | resolution:
87 | integrity: sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=
88 | /big.js/3.2.0:
89 | dev: true
90 | resolution:
91 | integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
92 | /block-stream/0.0.9:
93 | dependencies:
94 | inherits: 2.0.3
95 | dev: true
96 | resolution:
97 | integrity: sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
98 | /boom/2.10.1:
99 | dependencies:
100 | hoek: 2.16.3
101 | dev: true
102 | resolution:
103 | integrity: sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
104 | /brace-expansion/1.1.8:
105 | dependencies:
106 | balanced-match: 1.0.0
107 | concat-map: 0.0.1
108 | dev: true
109 | resolution:
110 | integrity: sha1-wHshHHyVLsH479Uad+8NHTmQopI=
111 | /builtin-modules/1.1.1:
112 | dev: true
113 | resolution:
114 | integrity: sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
115 | /camelcase-keys/2.1.0:
116 | dependencies:
117 | camelcase: 2.1.1
118 | map-obj: 1.0.1
119 | dev: true
120 | resolution:
121 | integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
122 | /camelcase/2.1.1:
123 | dev: true
124 | resolution:
125 | integrity: sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
126 | /camelcase/3.0.0:
127 | dev: true
128 | resolution:
129 | integrity: sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
130 | /caseless/0.12.0:
131 | dev: true
132 | resolution:
133 | integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
134 | /chalk/1.1.3:
135 | dependencies:
136 | ansi-styles: 2.2.1
137 | escape-string-regexp: 1.0.5
138 | has-ansi: 2.0.0
139 | strip-ansi: 3.0.1
140 | supports-color: 2.0.0
141 | dev: true
142 | resolution:
143 | integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
144 | /cliui/3.2.0:
145 | dependencies:
146 | string-width: 1.0.2
147 | strip-ansi: 3.0.1
148 | wrap-ansi: 2.1.0
149 | dev: true
150 | resolution:
151 | integrity: sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
152 | /clone-deep/0.3.0:
153 | dependencies:
154 | for-own: 1.0.0
155 | is-plain-object: 2.0.4
156 | kind-of: 3.2.2
157 | shallow-clone: 0.1.2
158 | dev: true
159 | resolution:
160 | integrity: sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=
161 | /co/4.6.0:
162 | dev: true
163 | resolution:
164 | integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
165 | /code-point-at/1.1.0:
166 | dev: true
167 | resolution:
168 | integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
169 | /combined-stream/1.0.5:
170 | dependencies:
171 | delayed-stream: 1.0.0
172 | dev: true
173 | resolution:
174 | integrity: sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
175 | /concat-map/0.0.1:
176 | dev: true
177 | resolution:
178 | integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
179 | /console-control-strings/1.1.0:
180 | dev: true
181 | resolution:
182 | integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
183 | /core-util-is/1.0.2:
184 | dev: true
185 | resolution:
186 | integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
187 | /cross-spawn/3.0.1:
188 | dependencies:
189 | lru-cache: 4.1.1
190 | which: 1.3.0
191 | dev: true
192 | resolution:
193 | integrity: sha1-ElYDfsufDF9549bvE14wdwGEuYI=
194 | /cryptiles/2.0.5:
195 | dependencies:
196 | boom: 2.10.1
197 | dev: true
198 | resolution:
199 | integrity: sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
200 | /currently-unhandled/0.4.1:
201 | dependencies:
202 | array-find-index: 1.0.2
203 | dev: true
204 | resolution:
205 | integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o=
206 | /dashdash/1.14.1:
207 | dependencies:
208 | assert-plus: 1.0.0
209 | dev: true
210 | resolution:
211 | integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
212 | /decamelize/1.2.0:
213 | dev: true
214 | resolution:
215 | integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
216 | /delayed-stream/1.0.0:
217 | dev: true
218 | resolution:
219 | integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
220 | /delegates/1.0.0:
221 | dev: true
222 | resolution:
223 | integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
224 | /ecc-jsbn/0.1.1:
225 | dependencies:
226 | jsbn: 0.1.1
227 | dev: true
228 | optional: true
229 | resolution:
230 | integrity: sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
231 | /emojis-list/2.1.0:
232 | dev: true
233 | resolution:
234 | integrity: sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
235 | /error-ex/1.3.1:
236 | dependencies:
237 | is-arrayish: 0.2.1
238 | dev: true
239 | resolution:
240 | integrity: sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=
241 | /escape-string-regexp/1.0.5:
242 | dev: true
243 | resolution:
244 | integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
245 | /extend/3.0.1:
246 | dev: true
247 | resolution:
248 | integrity: sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=
249 | /extsprintf/1.3.0:
250 | dev: true
251 | resolution:
252 | integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
253 | /find-up/1.1.2:
254 | dependencies:
255 | path-exists: 2.1.0
256 | pinkie-promise: 2.0.1
257 | dev: true
258 | resolution:
259 | integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
260 | /for-in/0.1.8:
261 | dev: true
262 | resolution:
263 | integrity: sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
264 | /for-in/1.0.2:
265 | dev: true
266 | resolution:
267 | integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
268 | /for-own/1.0.0:
269 | dependencies:
270 | for-in: 1.0.2
271 | dev: true
272 | resolution:
273 | integrity: sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
274 | /forever-agent/0.6.1:
275 | dev: true
276 | resolution:
277 | integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
278 | /form-data/2.1.4:
279 | dependencies:
280 | asynckit: 0.4.0
281 | combined-stream: 1.0.5
282 | mime-types: 2.1.17
283 | dev: true
284 | resolution:
285 | integrity: sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=
286 | /fs.realpath/1.0.0:
287 | dev: true
288 | resolution:
289 | integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
290 | /fstream/1.0.11:
291 | dependencies:
292 | graceful-fs: 4.1.11
293 | inherits: 2.0.3
294 | mkdirp: 0.5.1
295 | rimraf: 2.6.2
296 | dev: true
297 | resolution:
298 | integrity: sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
299 | /gauge/2.7.4:
300 | dependencies:
301 | aproba: 1.1.2
302 | console-control-strings: 1.1.0
303 | has-unicode: 2.0.1
304 | object-assign: 4.1.1
305 | signal-exit: 3.0.2
306 | string-width: 1.0.2
307 | strip-ansi: 3.0.1
308 | wide-align: 1.1.2
309 | dev: true
310 | resolution:
311 | integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
312 | /gaze/1.1.2:
313 | dependencies:
314 | globule: 1.2.0
315 | dev: true
316 | resolution:
317 | integrity: sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=
318 | /get-caller-file/1.0.2:
319 | dev: true
320 | resolution:
321 | integrity: sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=
322 | /get-stdin/4.0.1:
323 | dev: true
324 | resolution:
325 | integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
326 | /getpass/0.1.7:
327 | dependencies:
328 | assert-plus: 1.0.0
329 | dev: true
330 | resolution:
331 | integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
332 | /glob/7.1.2:
333 | dependencies:
334 | fs.realpath: 1.0.0
335 | inflight: 1.0.6
336 | inherits: 2.0.3
337 | minimatch: 3.0.4
338 | once: 1.4.0
339 | path-is-absolute: 1.0.1
340 | dev: true
341 | resolution:
342 | integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
343 | /globule/1.2.0:
344 | dependencies:
345 | glob: 7.1.2
346 | lodash: 4.17.4
347 | minimatch: 3.0.4
348 | dev: true
349 | resolution:
350 | integrity: sha1-HcScaCLdnoovoAuiopUAboZkvQk=
351 | /graceful-fs/4.1.11:
352 | dev: true
353 | resolution:
354 | integrity: sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
355 | /har-schema/1.0.5:
356 | dev: true
357 | resolution:
358 | integrity: sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=
359 | /har-validator/4.2.1:
360 | dependencies:
361 | ajv: 4.11.8
362 | har-schema: 1.0.5
363 | dev: true
364 | resolution:
365 | integrity: sha1-M0gdDxu/9gDdID11gSpqX7oALio=
366 | /has-ansi/2.0.0:
367 | dependencies:
368 | ansi-regex: 2.1.1
369 | dev: true
370 | resolution:
371 | integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
372 | /has-unicode/2.0.1:
373 | dev: true
374 | resolution:
375 | integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
376 | /hawk/3.1.3:
377 | dependencies:
378 | boom: 2.10.1
379 | cryptiles: 2.0.5
380 | hoek: 2.16.3
381 | sntp: 1.0.9
382 | dev: true
383 | resolution:
384 | integrity: sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
385 | /hoek/2.16.3:
386 | dev: true
387 | resolution:
388 | integrity: sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
389 | /hosted-git-info/2.5.0:
390 | dev: true
391 | resolution:
392 | integrity: sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==
393 | /http-signature/1.1.1:
394 | dependencies:
395 | assert-plus: 0.2.0
396 | jsprim: 1.4.1
397 | sshpk: 1.13.1
398 | dev: true
399 | resolution:
400 | integrity: sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
401 | /in-publish/2.0.0:
402 | dev: true
403 | resolution:
404 | integrity: sha1-4g/146KvwmkDILbcVSaCqcf631E=
405 | /indent-string/2.1.0:
406 | dependencies:
407 | repeating: 2.0.1
408 | dev: true
409 | resolution:
410 | integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
411 | /inflight/1.0.6:
412 | dependencies:
413 | once: 1.4.0
414 | wrappy: 1.0.2
415 | dev: true
416 | resolution:
417 | integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
418 | /inherits/2.0.3:
419 | dev: true
420 | resolution:
421 | integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
422 | /invert-kv/1.0.0:
423 | dev: true
424 | resolution:
425 | integrity: sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
426 | /is-arrayish/0.2.1:
427 | dev: true
428 | resolution:
429 | integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
430 | /is-buffer/1.1.5:
431 | dev: true
432 | resolution:
433 | integrity: sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=
434 | /is-builtin-module/1.0.0:
435 | dependencies:
436 | builtin-modules: 1.1.1
437 | dev: true
438 | resolution:
439 | integrity: sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
440 | /is-extendable/0.1.1:
441 | dev: true
442 | resolution:
443 | integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
444 | /is-finite/1.0.2:
445 | dependencies:
446 | number-is-nan: 1.0.1
447 | dev: true
448 | resolution:
449 | integrity: sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
450 | /is-fullwidth-code-point/1.0.0:
451 | dependencies:
452 | number-is-nan: 1.0.1
453 | dev: true
454 | resolution:
455 | integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
456 | /is-plain-object/2.0.4:
457 | dependencies:
458 | isobject: 3.0.1
459 | dev: true
460 | resolution:
461 | integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
462 | /is-typedarray/1.0.0:
463 | dev: true
464 | resolution:
465 | integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
466 | /is-utf8/0.2.1:
467 | dev: true
468 | resolution:
469 | integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
470 | /isarray/1.0.0:
471 | dev: true
472 | resolution:
473 | integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
474 | /isexe/2.0.0:
475 | dev: true
476 | resolution:
477 | integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
478 | /isobject/3.0.1:
479 | dev: true
480 | resolution:
481 | integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
482 | /isstream/0.1.2:
483 | dev: true
484 | resolution:
485 | integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
486 | /js-base64/2.3.2:
487 | dev: true
488 | resolution:
489 | integrity: sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==
490 | /jsbn/0.1.1:
491 | dev: true
492 | optional: true
493 | resolution:
494 | integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
495 | /json-schema/0.2.3:
496 | dev: true
497 | resolution:
498 | integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
499 | /json-stable-stringify/1.0.1:
500 | dependencies:
501 | jsonify: 0.0.0
502 | dev: true
503 | resolution:
504 | integrity: sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
505 | /json-stringify-safe/5.0.1:
506 | dev: true
507 | resolution:
508 | integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
509 | /json5/0.5.1:
510 | dev: true
511 | resolution:
512 | integrity: sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
513 | /jsonify/0.0.0:
514 | dev: true
515 | resolution:
516 | integrity: sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
517 | /jsprim/1.4.1:
518 | dependencies:
519 | assert-plus: 1.0.0
520 | extsprintf: 1.3.0
521 | json-schema: 0.2.3
522 | verror: 1.10.0
523 | dev: true
524 | resolution:
525 | integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
526 | /kind-of/2.0.1:
527 | dependencies:
528 | is-buffer: 1.1.5
529 | dev: true
530 | resolution:
531 | integrity: sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=
532 | /kind-of/3.2.2:
533 | dependencies:
534 | is-buffer: 1.1.5
535 | dev: true
536 | resolution:
537 | integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
538 | /lazy-cache/0.2.7:
539 | dev: true
540 | resolution:
541 | integrity: sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=
542 | /lcid/1.0.0:
543 | dependencies:
544 | invert-kv: 1.0.0
545 | dev: true
546 | resolution:
547 | integrity: sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
548 | /load-json-file/1.1.0:
549 | dependencies:
550 | graceful-fs: 4.1.11
551 | parse-json: 2.2.0
552 | pify: 2.3.0
553 | pinkie-promise: 2.0.1
554 | strip-bom: 2.0.0
555 | dev: true
556 | resolution:
557 | integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
558 | /loader-utils/1.1.0:
559 | dependencies:
560 | big.js: 3.2.0
561 | emojis-list: 2.1.0
562 | json5: 0.5.1
563 | dev: true
564 | resolution:
565 | integrity: sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
566 | /lodash.assign/4.2.0:
567 | dev: true
568 | resolution:
569 | integrity: sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
570 | /lodash.clonedeep/4.5.0:
571 | dev: true
572 | resolution:
573 | integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
574 | /lodash.mergewith/4.6.0:
575 | dev: true
576 | resolution:
577 | integrity: sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=
578 | /lodash.tail/4.1.1:
579 | dev: true
580 | resolution:
581 | integrity: sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=
582 | /lodash/4.17.4:
583 | dev: true
584 | resolution:
585 | integrity: sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
586 | /loud-rejection/1.6.0:
587 | dependencies:
588 | currently-unhandled: 0.4.1
589 | signal-exit: 3.0.2
590 | dev: true
591 | resolution:
592 | integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
593 | /lru-cache/4.1.1:
594 | dependencies:
595 | pseudomap: 1.0.2
596 | yallist: 2.1.2
597 | dev: true
598 | resolution:
599 | integrity: sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==
600 | /map-obj/1.0.1:
601 | dev: true
602 | resolution:
603 | integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
604 | /meow/3.7.0:
605 | dependencies:
606 | camelcase-keys: 2.1.0
607 | decamelize: 1.2.0
608 | loud-rejection: 1.6.0
609 | map-obj: 1.0.1
610 | minimist: 1.2.0
611 | normalize-package-data: 2.4.0
612 | object-assign: 4.1.1
613 | read-pkg-up: 1.0.1
614 | redent: 1.0.0
615 | trim-newlines: 1.0.0
616 | dev: true
617 | resolution:
618 | integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
619 | /mime-db/1.30.0:
620 | dev: true
621 | resolution:
622 | integrity: sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=
623 | /mime-types/2.1.17:
624 | dependencies:
625 | mime-db: 1.30.0
626 | dev: true
627 | resolution:
628 | integrity: sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=
629 | /minimatch/3.0.4:
630 | dependencies:
631 | brace-expansion: 1.1.8
632 | dev: true
633 | resolution:
634 | integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
635 | /minimist/0.0.8:
636 | dev: true
637 | resolution:
638 | integrity: sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
639 | /minimist/1.2.0:
640 | dev: true
641 | resolution:
642 | integrity: sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
643 | /mixin-object/2.0.1:
644 | dependencies:
645 | for-in: 0.1.8
646 | is-extendable: 0.1.1
647 | dev: true
648 | resolution:
649 | integrity: sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
650 | /mkdirp/0.5.1:
651 | dependencies:
652 | minimist: 0.0.8
653 | dev: true
654 | resolution:
655 | integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
656 | /nan/2.7.0:
657 | dev: true
658 | resolution:
659 | integrity: sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=
660 | /node-gyp/3.6.2:
661 | dependencies:
662 | fstream: 1.0.11
663 | glob: 7.1.2
664 | graceful-fs: 4.1.11
665 | minimatch: 3.0.4
666 | mkdirp: 0.5.1
667 | nopt: 3.0.6
668 | npmlog: 4.1.2
669 | osenv: 0.1.4
670 | request: 2.81.0
671 | rimraf: 2.6.2
672 | semver: 5.3.0
673 | tar: 2.2.1
674 | which: 1.3.0
675 | dev: true
676 | resolution:
677 | integrity: sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=
678 | /node-sass/4.5.3:
679 | dependencies:
680 | async-foreach: 0.1.3
681 | chalk: 1.1.3
682 | cross-spawn: 3.0.1
683 | gaze: 1.1.2
684 | get-stdin: 4.0.1
685 | glob: 7.1.2
686 | in-publish: 2.0.0
687 | lodash.assign: 4.2.0
688 | lodash.clonedeep: 4.5.0
689 | lodash.mergewith: 4.6.0
690 | meow: 3.7.0
691 | mkdirp: 0.5.1
692 | nan: 2.7.0
693 | node-gyp: 3.6.2
694 | npmlog: 4.1.2
695 | request: 2.81.0
696 | sass-graph: 2.2.4
697 | stdout-stream: 1.4.0
698 | dev: true
699 | resolution:
700 | integrity: sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=
701 | /nopt/3.0.6:
702 | dependencies:
703 | abbrev: 1.1.0
704 | dev: true
705 | resolution:
706 | integrity: sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
707 | /normalize-package-data/2.4.0:
708 | dependencies:
709 | hosted-git-info: 2.5.0
710 | is-builtin-module: 1.0.0
711 | semver: 5.4.1
712 | validate-npm-package-license: 3.0.1
713 | dev: true
714 | resolution:
715 | integrity: sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
716 | /npmlog/4.1.2:
717 | dependencies:
718 | are-we-there-yet: 1.1.4
719 | console-control-strings: 1.1.0
720 | gauge: 2.7.4
721 | set-blocking: 2.0.0
722 | dev: true
723 | resolution:
724 | integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
725 | /number-is-nan/1.0.1:
726 | dev: true
727 | resolution:
728 | integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
729 | /oauth-sign/0.8.2:
730 | dev: true
731 | resolution:
732 | integrity: sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
733 | /object-assign/4.1.1:
734 | dev: true
735 | resolution:
736 | integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
737 | /once/1.4.0:
738 | dependencies:
739 | wrappy: 1.0.2
740 | dev: true
741 | resolution:
742 | integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
743 | /os-homedir/1.0.2:
744 | dev: true
745 | resolution:
746 | integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
747 | /os-locale/1.4.0:
748 | dependencies:
749 | lcid: 1.0.0
750 | dev: true
751 | resolution:
752 | integrity: sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
753 | /os-tmpdir/1.0.2:
754 | dev: true
755 | resolution:
756 | integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
757 | /osenv/0.1.4:
758 | dependencies:
759 | os-homedir: 1.0.2
760 | os-tmpdir: 1.0.2
761 | dev: true
762 | resolution:
763 | integrity: sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=
764 | /parse-json/2.2.0:
765 | dependencies:
766 | error-ex: 1.3.1
767 | dev: true
768 | resolution:
769 | integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
770 | /path-exists/2.1.0:
771 | dependencies:
772 | pinkie-promise: 2.0.1
773 | dev: true
774 | resolution:
775 | integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
776 | /path-is-absolute/1.0.1:
777 | dev: true
778 | resolution:
779 | integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
780 | /path-type/1.1.0:
781 | dependencies:
782 | graceful-fs: 4.1.11
783 | pify: 2.3.0
784 | pinkie-promise: 2.0.1
785 | dev: true
786 | resolution:
787 | integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
788 | /performance-now/0.2.0:
789 | dev: true
790 | resolution:
791 | integrity: sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=
792 | /pify/2.3.0:
793 | dev: true
794 | resolution:
795 | integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
796 | /pify/3.0.0:
797 | dev: true
798 | resolution:
799 | integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
800 | /pinkie-promise/2.0.1:
801 | dependencies:
802 | pinkie: 2.0.4
803 | dev: true
804 | resolution:
805 | integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=
806 | /pinkie/2.0.4:
807 | dev: true
808 | resolution:
809 | integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
810 | /process-nextick-args/1.0.7:
811 | dev: true
812 | resolution:
813 | integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
814 | /pseudomap/1.0.2:
815 | dev: true
816 | resolution:
817 | integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
818 | /punycode/1.4.1:
819 | dev: true
820 | resolution:
821 | integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=
822 | /qs/6.4.0:
823 | dev: true
824 | resolution:
825 | integrity: sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=
826 | /read-pkg-up/1.0.1:
827 | dependencies:
828 | find-up: 1.1.2
829 | read-pkg: 1.1.0
830 | dev: true
831 | resolution:
832 | integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
833 | /read-pkg/1.1.0:
834 | dependencies:
835 | load-json-file: 1.1.0
836 | normalize-package-data: 2.4.0
837 | path-type: 1.1.0
838 | dev: true
839 | resolution:
840 | integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
841 | /readable-stream/2.3.3:
842 | dependencies:
843 | core-util-is: 1.0.2
844 | inherits: 2.0.3
845 | isarray: 1.0.0
846 | process-nextick-args: 1.0.7
847 | safe-buffer: 5.1.1
848 | string_decoder: 1.0.3
849 | util-deprecate: 1.0.2
850 | dev: true
851 | resolution:
852 | integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==
853 | /redent/1.0.0:
854 | dependencies:
855 | indent-string: 2.1.0
856 | strip-indent: 1.0.1
857 | dev: true
858 | resolution:
859 | integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
860 | /repeating/2.0.1:
861 | dependencies:
862 | is-finite: 1.0.2
863 | dev: true
864 | resolution:
865 | integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
866 | /request/2.81.0:
867 | dependencies:
868 | aws-sign2: 0.6.0
869 | aws4: 1.6.0
870 | caseless: 0.12.0
871 | combined-stream: 1.0.5
872 | extend: 3.0.1
873 | forever-agent: 0.6.1
874 | form-data: 2.1.4
875 | har-validator: 4.2.1
876 | hawk: 3.1.3
877 | http-signature: 1.1.1
878 | is-typedarray: 1.0.0
879 | isstream: 0.1.2
880 | json-stringify-safe: 5.0.1
881 | mime-types: 2.1.17
882 | oauth-sign: 0.8.2
883 | performance-now: 0.2.0
884 | qs: 6.4.0
885 | safe-buffer: 5.1.1
886 | stringstream: 0.0.5
887 | tough-cookie: 2.3.2
888 | tunnel-agent: 0.6.0
889 | uuid: 3.1.0
890 | dev: true
891 | resolution:
892 | integrity: sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=
893 | /require-directory/2.1.1:
894 | dev: true
895 | resolution:
896 | integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
897 | /require-main-filename/1.0.1:
898 | dev: true
899 | resolution:
900 | integrity: sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
901 | /rimraf/2.6.2:
902 | dependencies:
903 | glob: 7.1.2
904 | dev: true
905 | resolution:
906 | integrity: sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
907 | /safe-buffer/5.1.1:
908 | dev: true
909 | resolution:
910 | integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
911 | /sass-graph/2.2.4:
912 | dependencies:
913 | glob: 7.1.2
914 | lodash: 4.17.4
915 | scss-tokenizer: 0.2.3
916 | yargs: 7.1.0
917 | dev: true
918 | resolution:
919 | integrity: sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=
920 | /sass-loader/6.0.6:
921 | dependencies:
922 | async: 2.5.0
923 | clone-deep: 0.3.0
924 | loader-utils: 1.1.0
925 | lodash.tail: 4.1.1
926 | pify: 3.0.0
927 | dev: true
928 | resolution:
929 | integrity: sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==
930 | /scss-tokenizer/0.2.3:
931 | dependencies:
932 | js-base64: 2.3.2
933 | source-map: 0.4.4
934 | dev: true
935 | resolution:
936 | integrity: sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
937 | /semver/5.3.0:
938 | dev: true
939 | resolution:
940 | integrity: sha1-myzl094C0XxgEq0yaqa00M9U+U8=
941 | /semver/5.4.1:
942 | dev: true
943 | resolution:
944 | integrity: sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==
945 | /set-blocking/2.0.0:
946 | dev: true
947 | resolution:
948 | integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
949 | /shallow-clone/0.1.2:
950 | dependencies:
951 | is-extendable: 0.1.1
952 | kind-of: 2.0.1
953 | lazy-cache: 0.2.7
954 | mixin-object: 2.0.1
955 | dev: true
956 | resolution:
957 | integrity: sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=
958 | /signal-exit/3.0.2:
959 | dev: true
960 | resolution:
961 | integrity: sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
962 | /sntp/1.0.9:
963 | dependencies:
964 | hoek: 2.16.3
965 | dev: true
966 | resolution:
967 | integrity: sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
968 | /source-map/0.4.4:
969 | dependencies:
970 | amdefine: 1.0.1
971 | dev: true
972 | resolution:
973 | integrity: sha1-66T12pwNyZneaAMti092FzZSA2s=
974 | /spdx-correct/1.0.2:
975 | dependencies:
976 | spdx-license-ids: 1.2.2
977 | dev: true
978 | resolution:
979 | integrity: sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
980 | /spdx-expression-parse/1.0.4:
981 | dev: true
982 | resolution:
983 | integrity: sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
984 | /spdx-license-ids/1.2.2:
985 | dev: true
986 | resolution:
987 | integrity: sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
988 | /sshpk/1.13.1:
989 | dependencies:
990 | asn1: 0.2.3
991 | assert-plus: 1.0.0
992 | dashdash: 1.14.1
993 | getpass: 0.1.7
994 | dev: true
995 | optionalDependencies:
996 | bcrypt-pbkdf: 1.0.1
997 | ecc-jsbn: 0.1.1
998 | jsbn: 0.1.1
999 | tweetnacl: 0.14.5
1000 | resolution:
1001 | integrity: sha1-US322mKHFEMW3EwY/hzx2UBzm+M=
1002 | /stdout-stream/1.4.0:
1003 | dependencies:
1004 | readable-stream: 2.3.3
1005 | dev: true
1006 | resolution:
1007 | integrity: sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=
1008 | /string-width/1.0.2:
1009 | dependencies:
1010 | code-point-at: 1.1.0
1011 | is-fullwidth-code-point: 1.0.0
1012 | strip-ansi: 3.0.1
1013 | dev: true
1014 | resolution:
1015 | integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
1016 | /string_decoder/1.0.3:
1017 | dependencies:
1018 | safe-buffer: 5.1.1
1019 | dev: true
1020 | resolution:
1021 | integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==
1022 | /stringstream/0.0.5:
1023 | dev: true
1024 | resolution:
1025 | integrity: sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
1026 | /strip-ansi/3.0.1:
1027 | dependencies:
1028 | ansi-regex: 2.1.1
1029 | dev: true
1030 | resolution:
1031 | integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1032 | /strip-bom/2.0.0:
1033 | dependencies:
1034 | is-utf8: 0.2.1
1035 | dev: true
1036 | resolution:
1037 | integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
1038 | /strip-indent/1.0.1:
1039 | dependencies:
1040 | get-stdin: 4.0.1
1041 | dev: true
1042 | resolution:
1043 | integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
1044 | /supports-color/2.0.0:
1045 | dev: true
1046 | resolution:
1047 | integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
1048 | /tar/2.2.1:
1049 | dependencies:
1050 | block-stream: 0.0.9
1051 | fstream: 1.0.11
1052 | inherits: 2.0.3
1053 | dev: true
1054 | resolution:
1055 | integrity: sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
1056 | /tough-cookie/2.3.2:
1057 | dependencies:
1058 | punycode: 1.4.1
1059 | dev: true
1060 | resolution:
1061 | integrity: sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
1062 | /trim-newlines/1.0.0:
1063 | dev: true
1064 | resolution:
1065 | integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM=
1066 | /tunnel-agent/0.6.0:
1067 | dependencies:
1068 | safe-buffer: 5.1.1
1069 | dev: true
1070 | resolution:
1071 | integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1072 | /tweetnacl/0.14.5:
1073 | dev: true
1074 | optional: true
1075 | resolution:
1076 | integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1077 | /util-deprecate/1.0.2:
1078 | dev: true
1079 | resolution:
1080 | integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1081 | /uuid/3.1.0:
1082 | dev: true
1083 | resolution:
1084 | integrity: sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==
1085 | /validate-npm-package-license/3.0.1:
1086 | dependencies:
1087 | spdx-correct: 1.0.2
1088 | spdx-expression-parse: 1.0.4
1089 | dev: true
1090 | resolution:
1091 | integrity: sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
1092 | /verror/1.10.0:
1093 | dependencies:
1094 | assert-plus: 1.0.0
1095 | core-util-is: 1.0.2
1096 | extsprintf: 1.3.0
1097 | dev: true
1098 | resolution:
1099 | integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1100 | /which-module/1.0.0:
1101 | dev: true
1102 | resolution:
1103 | integrity: sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
1104 | /which/1.3.0:
1105 | dependencies:
1106 | isexe: 2.0.0
1107 | dev: true
1108 | resolution:
1109 | integrity: sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==
1110 | /wide-align/1.1.2:
1111 | dependencies:
1112 | string-width: 1.0.2
1113 | dev: true
1114 | resolution:
1115 | integrity: sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==
1116 | /wrap-ansi/2.1.0:
1117 | dependencies:
1118 | string-width: 1.0.2
1119 | strip-ansi: 3.0.1
1120 | dev: true
1121 | resolution:
1122 | integrity: sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
1123 | /wrappy/1.0.2:
1124 | dev: true
1125 | resolution:
1126 | integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1127 | /y18n/3.2.1:
1128 | dev: true
1129 | resolution:
1130 | integrity: sha1-bRX7qITAhnnA136I53WegR4H+kE=
1131 | /yallist/2.1.2:
1132 | dev: true
1133 | resolution:
1134 | integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
1135 | /yargs-parser/5.0.0:
1136 | dependencies:
1137 | camelcase: 3.0.0
1138 | dev: true
1139 | resolution:
1140 | integrity: sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
1141 | /yargs/7.1.0:
1142 | dependencies:
1143 | camelcase: 3.0.0
1144 | cliui: 3.2.0
1145 | decamelize: 1.2.0
1146 | get-caller-file: 1.0.2
1147 | os-locale: 1.4.0
1148 | read-pkg-up: 1.0.1
1149 | require-directory: 2.1.1
1150 | require-main-filename: 1.0.1
1151 | set-blocking: 2.0.0
1152 | string-width: 1.0.2
1153 | which-module: 1.0.0
1154 | y18n: 3.2.1
1155 | yargs-parser: 5.0.0
1156 | dev: true
1157 | resolution:
1158 | integrity: sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
1159 | registry: 'https://registry.npmjs.org/'
1160 | shrinkwrapVersion: 3
1161 | specifiers:
1162 | node-sass: ^4.5.3
1163 | sass-loader: ^6.0.6
1164 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | accepts@~1.3.3:
6 | version "1.3.3"
7 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
8 | dependencies:
9 | mime-types "~2.1.11"
10 | negotiator "0.6.1"
11 |
12 | ansi-regex@^2.0.0:
13 | version "2.1.1"
14 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
15 |
16 | ansi-styles@^2.2.1:
17 | version "2.2.1"
18 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
19 |
20 | array-flatten@1.1.1:
21 | version "1.1.1"
22 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
23 |
24 | babel-code-frame@^6.22.0:
25 | version "6.22.0"
26 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
27 | dependencies:
28 | chalk "^1.1.0"
29 | esutils "^2.0.2"
30 | js-tokens "^3.0.0"
31 |
32 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
33 | version "6.24.1"
34 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
35 | dependencies:
36 | babel-helper-explode-assignable-expression "^6.24.1"
37 | babel-runtime "^6.22.0"
38 | babel-types "^6.24.1"
39 |
40 | babel-helper-call-delegate@^6.24.1:
41 | version "6.24.1"
42 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
43 | dependencies:
44 | babel-helper-hoist-variables "^6.24.1"
45 | babel-runtime "^6.22.0"
46 | babel-traverse "^6.24.1"
47 | babel-types "^6.24.1"
48 |
49 | babel-helper-define-map@^6.24.1:
50 | version "6.24.1"
51 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
52 | dependencies:
53 | babel-helper-function-name "^6.24.1"
54 | babel-runtime "^6.22.0"
55 | babel-types "^6.24.1"
56 | lodash "^4.2.0"
57 |
58 | babel-helper-explode-assignable-expression@^6.24.1:
59 | version "6.24.1"
60 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
61 | dependencies:
62 | babel-runtime "^6.22.0"
63 | babel-traverse "^6.24.1"
64 | babel-types "^6.24.1"
65 |
66 | babel-helper-function-name@^6.24.1:
67 | version "6.24.1"
68 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
69 | dependencies:
70 | babel-helper-get-function-arity "^6.24.1"
71 | babel-runtime "^6.22.0"
72 | babel-template "^6.24.1"
73 | babel-traverse "^6.24.1"
74 | babel-types "^6.24.1"
75 |
76 | babel-helper-get-function-arity@^6.24.1:
77 | version "6.24.1"
78 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
79 | dependencies:
80 | babel-runtime "^6.22.0"
81 | babel-types "^6.24.1"
82 |
83 | babel-helper-hoist-variables@^6.24.1:
84 | version "6.24.1"
85 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
86 | dependencies:
87 | babel-runtime "^6.22.0"
88 | babel-types "^6.24.1"
89 |
90 | babel-helper-optimise-call-expression@^6.24.1:
91 | version "6.24.1"
92 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
93 | dependencies:
94 | babel-runtime "^6.22.0"
95 | babel-types "^6.24.1"
96 |
97 | babel-helper-regex@^6.24.1:
98 | version "6.24.1"
99 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
100 | dependencies:
101 | babel-runtime "^6.22.0"
102 | babel-types "^6.24.1"
103 | lodash "^4.2.0"
104 |
105 | babel-helper-remap-async-to-generator@^6.24.1:
106 | version "6.24.1"
107 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
108 | dependencies:
109 | babel-helper-function-name "^6.24.1"
110 | babel-runtime "^6.22.0"
111 | babel-template "^6.24.1"
112 | babel-traverse "^6.24.1"
113 | babel-types "^6.24.1"
114 |
115 | babel-helper-replace-supers@^6.24.1:
116 | version "6.24.1"
117 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
118 | dependencies:
119 | babel-helper-optimise-call-expression "^6.24.1"
120 | babel-messages "^6.23.0"
121 | babel-runtime "^6.22.0"
122 | babel-template "^6.24.1"
123 | babel-traverse "^6.24.1"
124 | babel-types "^6.24.1"
125 |
126 | babel-helper-vue-jsx-merge-props@^2.0.2:
127 | version "2.0.2"
128 | resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.2.tgz#aceb1c373588279e2755ea1cfd35c22394fd33f8"
129 |
130 | babel-messages@^6.23.0:
131 | version "6.23.0"
132 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
133 | dependencies:
134 | babel-runtime "^6.22.0"
135 |
136 | babel-plugin-check-es2015-constants@^6.22.0:
137 | version "6.22.0"
138 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
139 | dependencies:
140 | babel-runtime "^6.22.0"
141 |
142 | babel-plugin-syntax-async-functions@^6.8.0:
143 | version "6.13.0"
144 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
145 |
146 | babel-plugin-syntax-dynamic-import@^6.18.0:
147 | version "6.18.0"
148 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
149 |
150 | babel-plugin-syntax-exponentiation-operator@^6.8.0:
151 | version "6.13.0"
152 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
153 |
154 | babel-plugin-syntax-flow@^6.18.0:
155 | version "6.18.0"
156 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
157 |
158 | babel-plugin-syntax-jsx@^6.18.0:
159 | version "6.18.0"
160 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
161 |
162 | babel-plugin-syntax-object-rest-spread@^6.8.0:
163 | version "6.13.0"
164 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
165 |
166 | babel-plugin-syntax-trailing-function-commas@^6.22.0:
167 | version "6.22.0"
168 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
169 |
170 | babel-plugin-transform-async-to-generator@^6.22.0:
171 | version "6.24.1"
172 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
173 | dependencies:
174 | babel-helper-remap-async-to-generator "^6.24.1"
175 | babel-plugin-syntax-async-functions "^6.8.0"
176 | babel-runtime "^6.22.0"
177 |
178 | babel-plugin-transform-es2015-arrow-functions@^6.22.0:
179 | version "6.22.0"
180 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
181 | dependencies:
182 | babel-runtime "^6.22.0"
183 |
184 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
185 | version "6.22.0"
186 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
187 | dependencies:
188 | babel-runtime "^6.22.0"
189 |
190 | babel-plugin-transform-es2015-block-scoping@^6.23.0:
191 | version "6.24.1"
192 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
193 | dependencies:
194 | babel-runtime "^6.22.0"
195 | babel-template "^6.24.1"
196 | babel-traverse "^6.24.1"
197 | babel-types "^6.24.1"
198 | lodash "^4.2.0"
199 |
200 | babel-plugin-transform-es2015-classes@^6.23.0:
201 | version "6.24.1"
202 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
203 | dependencies:
204 | babel-helper-define-map "^6.24.1"
205 | babel-helper-function-name "^6.24.1"
206 | babel-helper-optimise-call-expression "^6.24.1"
207 | babel-helper-replace-supers "^6.24.1"
208 | babel-messages "^6.23.0"
209 | babel-runtime "^6.22.0"
210 | babel-template "^6.24.1"
211 | babel-traverse "^6.24.1"
212 | babel-types "^6.24.1"
213 |
214 | babel-plugin-transform-es2015-computed-properties@^6.22.0:
215 | version "6.24.1"
216 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
217 | dependencies:
218 | babel-runtime "^6.22.0"
219 | babel-template "^6.24.1"
220 |
221 | babel-plugin-transform-es2015-destructuring@^6.23.0:
222 | version "6.23.0"
223 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
224 | dependencies:
225 | babel-runtime "^6.22.0"
226 |
227 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
228 | version "6.24.1"
229 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
230 | dependencies:
231 | babel-runtime "^6.22.0"
232 | babel-types "^6.24.1"
233 |
234 | babel-plugin-transform-es2015-for-of@^6.23.0:
235 | version "6.23.0"
236 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
237 | dependencies:
238 | babel-runtime "^6.22.0"
239 |
240 | babel-plugin-transform-es2015-function-name@^6.22.0:
241 | version "6.24.1"
242 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
243 | dependencies:
244 | babel-helper-function-name "^6.24.1"
245 | babel-runtime "^6.22.0"
246 | babel-types "^6.24.1"
247 |
248 | babel-plugin-transform-es2015-literals@^6.22.0:
249 | version "6.22.0"
250 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
251 | dependencies:
252 | babel-runtime "^6.22.0"
253 |
254 | babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
255 | version "6.24.1"
256 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
257 | dependencies:
258 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
259 | babel-runtime "^6.22.0"
260 | babel-template "^6.24.1"
261 |
262 | babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
263 | version "6.24.1"
264 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
265 | dependencies:
266 | babel-plugin-transform-strict-mode "^6.24.1"
267 | babel-runtime "^6.22.0"
268 | babel-template "^6.24.1"
269 | babel-types "^6.24.1"
270 |
271 | babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
272 | version "6.24.1"
273 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
274 | dependencies:
275 | babel-helper-hoist-variables "^6.24.1"
276 | babel-runtime "^6.22.0"
277 | babel-template "^6.24.1"
278 |
279 | babel-plugin-transform-es2015-modules-umd@^6.23.0:
280 | version "6.24.1"
281 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
282 | dependencies:
283 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
284 | babel-runtime "^6.22.0"
285 | babel-template "^6.24.1"
286 |
287 | babel-plugin-transform-es2015-object-super@^6.22.0:
288 | version "6.24.1"
289 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
290 | dependencies:
291 | babel-helper-replace-supers "^6.24.1"
292 | babel-runtime "^6.22.0"
293 |
294 | babel-plugin-transform-es2015-parameters@^6.23.0:
295 | version "6.24.1"
296 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
297 | dependencies:
298 | babel-helper-call-delegate "^6.24.1"
299 | babel-helper-get-function-arity "^6.24.1"
300 | babel-runtime "^6.22.0"
301 | babel-template "^6.24.1"
302 | babel-traverse "^6.24.1"
303 | babel-types "^6.24.1"
304 |
305 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
306 | version "6.24.1"
307 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
308 | dependencies:
309 | babel-runtime "^6.22.0"
310 | babel-types "^6.24.1"
311 |
312 | babel-plugin-transform-es2015-spread@^6.22.0:
313 | version "6.22.0"
314 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
315 | dependencies:
316 | babel-runtime "^6.22.0"
317 |
318 | babel-plugin-transform-es2015-sticky-regex@^6.22.0:
319 | version "6.24.1"
320 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
321 | dependencies:
322 | babel-helper-regex "^6.24.1"
323 | babel-runtime "^6.22.0"
324 | babel-types "^6.24.1"
325 |
326 | babel-plugin-transform-es2015-template-literals@^6.22.0:
327 | version "6.22.0"
328 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
329 | dependencies:
330 | babel-runtime "^6.22.0"
331 |
332 | babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
333 | version "6.23.0"
334 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
335 | dependencies:
336 | babel-runtime "^6.22.0"
337 |
338 | babel-plugin-transform-es2015-unicode-regex@^6.22.0:
339 | version "6.24.1"
340 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
341 | dependencies:
342 | babel-helper-regex "^6.24.1"
343 | babel-runtime "^6.22.0"
344 | regexpu-core "^2.0.0"
345 |
346 | babel-plugin-transform-exponentiation-operator@^6.22.0:
347 | version "6.24.1"
348 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
349 | dependencies:
350 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
351 | babel-plugin-syntax-exponentiation-operator "^6.8.0"
352 | babel-runtime "^6.22.0"
353 |
354 | babel-plugin-transform-flow-strip-types@^6.22.0:
355 | version "6.22.0"
356 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
357 | dependencies:
358 | babel-plugin-syntax-flow "^6.18.0"
359 | babel-runtime "^6.22.0"
360 |
361 | babel-plugin-transform-object-rest-spread@^6.23.0:
362 | version "6.23.0"
363 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
364 | dependencies:
365 | babel-plugin-syntax-object-rest-spread "^6.8.0"
366 | babel-runtime "^6.22.0"
367 |
368 | babel-plugin-transform-regenerator@^6.22.0:
369 | version "6.24.1"
370 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
371 | dependencies:
372 | regenerator-transform "0.9.11"
373 |
374 | babel-plugin-transform-runtime@^6.15.0:
375 | version "6.23.0"
376 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
377 | dependencies:
378 | babel-runtime "^6.22.0"
379 |
380 | babel-plugin-transform-strict-mode@^6.24.1:
381 | version "6.24.1"
382 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
383 | dependencies:
384 | babel-runtime "^6.22.0"
385 | babel-types "^6.24.1"
386 |
387 | babel-plugin-transform-vue-jsx@^3.1.2:
388 | version "3.4.3"
389 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.4.3.tgz#de57d8dd7d619333c981867728f3e6fdf68982ff"
390 | dependencies:
391 | esutils "^2.0.2"
392 |
393 | babel-preset-env@^1.2.1:
394 | version "1.5.1"
395 | resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.5.1.tgz#d2eca6af179edf27cdc305a84820f601b456dd0b"
396 | dependencies:
397 | babel-plugin-check-es2015-constants "^6.22.0"
398 | babel-plugin-syntax-trailing-function-commas "^6.22.0"
399 | babel-plugin-transform-async-to-generator "^6.22.0"
400 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
401 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
402 | babel-plugin-transform-es2015-block-scoping "^6.23.0"
403 | babel-plugin-transform-es2015-classes "^6.23.0"
404 | babel-plugin-transform-es2015-computed-properties "^6.22.0"
405 | babel-plugin-transform-es2015-destructuring "^6.23.0"
406 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
407 | babel-plugin-transform-es2015-for-of "^6.23.0"
408 | babel-plugin-transform-es2015-function-name "^6.22.0"
409 | babel-plugin-transform-es2015-literals "^6.22.0"
410 | babel-plugin-transform-es2015-modules-amd "^6.22.0"
411 | babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
412 | babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
413 | babel-plugin-transform-es2015-modules-umd "^6.23.0"
414 | babel-plugin-transform-es2015-object-super "^6.22.0"
415 | babel-plugin-transform-es2015-parameters "^6.23.0"
416 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
417 | babel-plugin-transform-es2015-spread "^6.22.0"
418 | babel-plugin-transform-es2015-sticky-regex "^6.22.0"
419 | babel-plugin-transform-es2015-template-literals "^6.22.0"
420 | babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
421 | babel-plugin-transform-es2015-unicode-regex "^6.22.0"
422 | babel-plugin-transform-exponentiation-operator "^6.22.0"
423 | babel-plugin-transform-regenerator "^6.22.0"
424 | browserslist "^2.1.2"
425 | invariant "^2.2.2"
426 | semver "^5.3.0"
427 |
428 | babel-preset-vue-app@^1.2.0:
429 | version "1.2.0"
430 | resolved "https://registry.yarnpkg.com/babel-preset-vue-app/-/babel-preset-vue-app-1.2.0.tgz#5ddfb7920020123a2482b12c6b36bdef9e3fb0ad"
431 | dependencies:
432 | babel-plugin-syntax-dynamic-import "^6.18.0"
433 | babel-plugin-transform-object-rest-spread "^6.23.0"
434 | babel-plugin-transform-runtime "^6.15.0"
435 | babel-preset-env "^1.2.1"
436 | babel-preset-vue "^0.1.0"
437 | babel-runtime "^6.20.0"
438 |
439 | babel-preset-vue@^0.1.0:
440 | version "0.1.0"
441 | resolved "https://registry.yarnpkg.com/babel-preset-vue/-/babel-preset-vue-0.1.0.tgz#adb84ceab3873bd72606fdd3f7047640f032301f"
442 | dependencies:
443 | babel-helper-vue-jsx-merge-props "^2.0.2"
444 | babel-plugin-syntax-jsx "^6.18.0"
445 | babel-plugin-transform-vue-jsx "^3.1.2"
446 |
447 | babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0:
448 | version "6.23.0"
449 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
450 | dependencies:
451 | core-js "^2.4.0"
452 | regenerator-runtime "^0.10.0"
453 |
454 | babel-template@^6.24.1:
455 | version "6.24.1"
456 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
457 | dependencies:
458 | babel-runtime "^6.22.0"
459 | babel-traverse "^6.24.1"
460 | babel-types "^6.24.1"
461 | babylon "^6.11.0"
462 | lodash "^4.2.0"
463 |
464 | babel-traverse@^6.24.1:
465 | version "6.24.1"
466 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
467 | dependencies:
468 | babel-code-frame "^6.22.0"
469 | babel-messages "^6.23.0"
470 | babel-runtime "^6.22.0"
471 | babel-types "^6.24.1"
472 | babylon "^6.15.0"
473 | debug "^2.2.0"
474 | globals "^9.0.0"
475 | invariant "^2.2.0"
476 | lodash "^4.2.0"
477 |
478 | babel-types@^6.19.0, babel-types@^6.24.1:
479 | version "6.24.1"
480 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
481 | dependencies:
482 | babel-runtime "^6.22.0"
483 | esutils "^2.0.2"
484 | lodash "^4.2.0"
485 | to-fast-properties "^1.0.1"
486 |
487 | babylon@^6.11.0, babylon@^6.15.0:
488 | version "6.17.1"
489 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f"
490 |
491 | balanced-match@^1.0.0:
492 | version "1.0.0"
493 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
494 |
495 | brace-expansion@^1.1.7:
496 | version "1.1.8"
497 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
498 | dependencies:
499 | balanced-match "^1.0.0"
500 | concat-map "0.0.1"
501 |
502 | browserslist@^2.1.2:
503 | version "2.1.4"
504 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.4.tgz#cc526af4a1312b7d2e05653e56d0c8ab70c0e053"
505 | dependencies:
506 | caniuse-lite "^1.0.30000670"
507 | electron-to-chromium "^1.3.11"
508 |
509 | bulma@^0.5.2:
510 | version "0.5.2"
511 | resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.5.2.tgz#b5c4695075700b9539619555840d8f4f9f84b3a5"
512 |
513 | caniuse-lite@^1.0.30000670:
514 | version "1.0.30000670"
515 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000670.tgz#c94f7dbf0b68eaadc46d3d203f46e82e7801135e"
516 |
517 | chalk@^1.1.0:
518 | version "1.1.3"
519 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
520 | dependencies:
521 | ansi-styles "^2.2.1"
522 | escape-string-regexp "^1.0.2"
523 | has-ansi "^2.0.0"
524 | strip-ansi "^3.0.0"
525 | supports-color "^2.0.0"
526 |
527 | clipboard@^1.5.5:
528 | version "1.7.1"
529 | resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b"
530 | dependencies:
531 | good-listener "^1.2.2"
532 | select "^1.1.2"
533 | tiny-emitter "^2.0.0"
534 |
535 | concat-map@0.0.1:
536 | version "0.0.1"
537 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
538 |
539 | content-disposition@0.5.2:
540 | version "0.5.2"
541 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
542 |
543 | content-type@~1.0.2:
544 | version "1.0.2"
545 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
546 |
547 | cookie-signature@1.0.6:
548 | version "1.0.6"
549 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
550 |
551 | cookie@0.3.1:
552 | version "0.3.1"
553 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
554 |
555 | core-js@^2.4.0:
556 | version "2.4.1"
557 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
558 |
559 | debug@2.6.7, debug@^2.2.0:
560 | version "2.6.7"
561 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
562 | dependencies:
563 | ms "2.0.0"
564 |
565 | delegate@^3.1.2:
566 | version "3.1.3"
567 | resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.1.3.tgz#9a8251a777d7025faa55737bc3b071742127a9fd"
568 |
569 | depd@1.1.0, depd@~1.1.0:
570 | version "1.1.0"
571 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
572 |
573 | destroy@~1.0.4:
574 | version "1.0.4"
575 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
576 |
577 | ee-first@1.1.1:
578 | version "1.1.1"
579 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
580 |
581 | electron-to-chromium@^1.3.11:
582 | version "1.3.11"
583 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz#744761df1d67b492b322ce9aa0aba5393260eb61"
584 |
585 | encodeurl@~1.0.1:
586 | version "1.0.1"
587 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
588 |
589 | escape-html@~1.0.3:
590 | version "1.0.3"
591 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
592 |
593 | escape-string-regexp@^1.0.2:
594 | version "1.0.5"
595 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
596 |
597 | esutils@^2.0.2:
598 | version "2.0.2"
599 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
600 |
601 | etag@~1.8.0:
602 | version "1.8.0"
603 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
604 |
605 | express@^4.15.3:
606 | version "4.15.3"
607 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662"
608 | dependencies:
609 | accepts "~1.3.3"
610 | array-flatten "1.1.1"
611 | content-disposition "0.5.2"
612 | content-type "~1.0.2"
613 | cookie "0.3.1"
614 | cookie-signature "1.0.6"
615 | debug "2.6.7"
616 | depd "~1.1.0"
617 | encodeurl "~1.0.1"
618 | escape-html "~1.0.3"
619 | etag "~1.8.0"
620 | finalhandler "~1.0.3"
621 | fresh "0.5.0"
622 | merge-descriptors "1.0.1"
623 | methods "~1.1.2"
624 | on-finished "~2.3.0"
625 | parseurl "~1.3.1"
626 | path-to-regexp "0.1.7"
627 | proxy-addr "~1.1.4"
628 | qs "6.4.0"
629 | range-parser "~1.2.0"
630 | send "0.15.3"
631 | serve-static "1.12.3"
632 | setprototypeof "1.0.3"
633 | statuses "~1.3.1"
634 | type-is "~1.6.15"
635 | utils-merge "1.0.0"
636 | vary "~1.1.1"
637 |
638 | finalhandler@~1.0.3:
639 | version "1.0.3"
640 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
641 | dependencies:
642 | debug "2.6.7"
643 | encodeurl "~1.0.1"
644 | escape-html "~1.0.3"
645 | on-finished "~2.3.0"
646 | parseurl "~1.3.1"
647 | statuses "~1.3.1"
648 | unpipe "~1.0.0"
649 |
650 | forwarded@~0.1.0:
651 | version "0.1.0"
652 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
653 |
654 | fresh@0.5.0:
655 | version "0.5.0"
656 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
657 |
658 | fs.realpath@^1.0.0:
659 | version "1.0.0"
660 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
661 |
662 | glob@^7.1.2:
663 | version "7.1.2"
664 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
665 | dependencies:
666 | fs.realpath "^1.0.0"
667 | inflight "^1.0.4"
668 | inherits "2"
669 | minimatch "^3.0.4"
670 | once "^1.3.0"
671 | path-is-absolute "^1.0.0"
672 |
673 | globals@^9.0.0:
674 | version "9.17.0"
675 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
676 |
677 | good-listener@^1.2.2:
678 | version "1.2.2"
679 | resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
680 | dependencies:
681 | delegate "^3.1.2"
682 |
683 | has-ansi@^2.0.0:
684 | version "2.0.0"
685 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
686 | dependencies:
687 | ansi-regex "^2.0.0"
688 |
689 | http-errors@~1.6.1:
690 | version "1.6.1"
691 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257"
692 | dependencies:
693 | depd "1.1.0"
694 | inherits "2.0.3"
695 | setprototypeof "1.0.3"
696 | statuses ">= 1.3.1 < 2"
697 |
698 | inflight@^1.0.4:
699 | version "1.0.6"
700 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
701 | dependencies:
702 | once "^1.3.0"
703 | wrappy "1"
704 |
705 | inherits@2, inherits@2.0.3:
706 | version "2.0.3"
707 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
708 |
709 | invariant@^2.2.0, invariant@^2.2.2:
710 | version "2.2.2"
711 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
712 | dependencies:
713 | loose-envify "^1.0.0"
714 |
715 | ipaddr.js@1.3.0:
716 | version "1.3.0"
717 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
718 |
719 | js-tokens@^3.0.0:
720 | version "3.0.1"
721 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
722 |
723 | jsesc@~0.5.0:
724 | version "0.5.0"
725 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
726 |
727 | lodash@^4.2.0:
728 | version "4.17.4"
729 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
730 |
731 | loose-envify@^1.0.0:
732 | version "1.3.1"
733 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
734 | dependencies:
735 | js-tokens "^3.0.0"
736 |
737 | media-typer@0.3.0:
738 | version "0.3.0"
739 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
740 |
741 | merge-descriptors@1.0.1:
742 | version "1.0.1"
743 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
744 |
745 | methods@~1.1.2:
746 | version "1.1.2"
747 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
748 |
749 | mime-db@~1.27.0:
750 | version "1.27.0"
751 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
752 |
753 | mime-types@~2.1.11, mime-types@~2.1.15:
754 | version "2.1.15"
755 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
756 | dependencies:
757 | mime-db "~1.27.0"
758 |
759 | mime@1.3.4:
760 | version "1.3.4"
761 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
762 |
763 | minimatch@^3.0.4:
764 | version "3.0.4"
765 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
766 | dependencies:
767 | brace-expansion "^1.1.7"
768 |
769 | ms@2.0.0:
770 | version "2.0.0"
771 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
772 |
773 | negotiator@0.6.1:
774 | version "0.6.1"
775 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
776 |
777 | on-finished@~2.3.0:
778 | version "2.3.0"
779 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
780 | dependencies:
781 | ee-first "1.1.1"
782 |
783 | once@^1.3.0:
784 | version "1.4.0"
785 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
786 | dependencies:
787 | wrappy "1"
788 |
789 | parseurl@~1.3.1:
790 | version "1.3.1"
791 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
792 |
793 | path-is-absolute@^1.0.0:
794 | version "1.0.1"
795 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
796 |
797 | path-to-regexp@0.1.7:
798 | version "0.1.7"
799 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
800 |
801 | prettier@^1.5.2:
802 | version "1.5.2"
803 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.2.tgz#7ea0751da27b93bfb6cecfcec509994f52d83bb3"
804 |
805 | prism-themes@^1.0.0:
806 | version "1.0.0"
807 | resolved "https://registry.yarnpkg.com/prism-themes/-/prism-themes-1.0.0.tgz#58089547ed39df273e5195e1628c69177341bf88"
808 |
809 | prismjs@^1.6.0:
810 | version "1.6.0"
811 | resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.6.0.tgz#118d95fb7a66dba2272e343b345f5236659db365"
812 | optionalDependencies:
813 | clipboard "^1.5.5"
814 |
815 | private@^0.1.6:
816 | version "0.1.7"
817 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
818 |
819 | proxy-addr@~1.1.4:
820 | version "1.1.4"
821 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3"
822 | dependencies:
823 | forwarded "~0.1.0"
824 | ipaddr.js "1.3.0"
825 |
826 | qs@6.4.0:
827 | version "6.4.0"
828 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
829 |
830 | range-parser@~1.2.0:
831 | version "1.2.0"
832 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
833 |
834 | regenerate@^1.2.1:
835 | version "1.3.2"
836 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
837 |
838 | regenerator-runtime@^0.10.0:
839 | version "0.10.5"
840 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
841 |
842 | regenerator-transform@0.9.11:
843 | version "0.9.11"
844 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
845 | dependencies:
846 | babel-runtime "^6.18.0"
847 | babel-types "^6.19.0"
848 | private "^0.1.6"
849 |
850 | regexpu-core@^2.0.0:
851 | version "2.0.0"
852 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
853 | dependencies:
854 | regenerate "^1.2.1"
855 | regjsgen "^0.2.0"
856 | regjsparser "^0.1.4"
857 |
858 | regjsgen@^0.2.0:
859 | version "0.2.0"
860 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
861 |
862 | regjsparser@^0.1.4:
863 | version "0.1.5"
864 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
865 | dependencies:
866 | jsesc "~0.5.0"
867 |
868 | select@^1.1.2:
869 | version "1.1.2"
870 | resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
871 |
872 | semver@^5.3.0:
873 | version "5.3.0"
874 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
875 |
876 | send@0.15.3:
877 | version "0.15.3"
878 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309"
879 | dependencies:
880 | debug "2.6.7"
881 | depd "~1.1.0"
882 | destroy "~1.0.4"
883 | encodeurl "~1.0.1"
884 | escape-html "~1.0.3"
885 | etag "~1.8.0"
886 | fresh "0.5.0"
887 | http-errors "~1.6.1"
888 | mime "1.3.4"
889 | ms "2.0.0"
890 | on-finished "~2.3.0"
891 | range-parser "~1.2.0"
892 | statuses "~1.3.1"
893 |
894 | serve-static@1.12.3:
895 | version "1.12.3"
896 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2"
897 | dependencies:
898 | encodeurl "~1.0.1"
899 | escape-html "~1.0.3"
900 | parseurl "~1.3.1"
901 | send "0.15.3"
902 |
903 | setprototypeof@1.0.3:
904 | version "1.0.3"
905 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
906 |
907 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1:
908 | version "1.3.1"
909 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
910 |
911 | strip-ansi@^3.0.0:
912 | version "3.0.1"
913 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
914 | dependencies:
915 | ansi-regex "^2.0.0"
916 |
917 | supports-color@^2.0.0:
918 | version "2.0.0"
919 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
920 |
921 | tiny-emitter@^2.0.0:
922 | version "2.0.1"
923 | resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.1.tgz#e65919d91e488e2a78f7ebe827a56c6b188d51af"
924 |
925 | to-fast-properties@^1.0.1:
926 | version "1.0.3"
927 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
928 |
929 | type-is@~1.6.15:
930 | version "1.6.15"
931 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
932 | dependencies:
933 | media-typer "0.3.0"
934 | mime-types "~2.1.15"
935 |
936 | unpipe@~1.0.0:
937 | version "1.0.0"
938 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
939 |
940 | utils-merge@1.0.0:
941 | version "1.0.0"
942 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
943 |
944 | vary@~1.1.1:
945 | version "1.1.1"
946 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37"
947 |
948 | vue-router@^2.7.0:
949 | version "2.7.0"
950 | resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-2.7.0.tgz#16d424493aa51c3c8cce8b7c7210ea4c3a89aff1"
951 |
952 | vue@^2.3.4:
953 | version "2.3.4"
954 | resolved "https://registry.yarnpkg.com/vue/-/vue-2.3.4.tgz#5ec3b87a191da8090bbef56b7cfabd4158038171"
955 |
956 | wrappy@1:
957 | version "1.0.2"
958 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
959 |
--------------------------------------------------------------------------------