From 01229271885c84072339a769fc531fd62488a196 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Dec 2019 10:17:55 +0200 Subject: [PATCH 01/10] Added a cookbook on how to make a useful Vue plugin --- .../cookbook/how-to-use-the-vue-plugin-api.md | 209 ++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 src/v2/cookbook/how-to-use-the-vue-plugin-api.md diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md new file mode 100644 index 0000000000..d2e87652c0 --- /dev/null +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -0,0 +1,209 @@ +--- +title: Making use of the Vue Plugin API +type: cookbook +--- + +## Base Example + +Vue exposes a really nice API for creating plugins, plugins allow us to modify and add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. + +Let's say we want to create a simple abstraction for using Vuex within Vue components, we want to reduce the boilerplate essentially. We can first design how we want the abstraction to look. + +Usually we would use Vuex like this in a Vue component: + +```js +import { mapState, mapMutations } from 'vuex' + +export default { + computed: { + ...mapState({ + user: (state) => state.user, + }), + ...mapMutations(['UPDATE_USER']), + }, +} +``` + +Our abstraction would look something like this: + +```js +export default { + vuex: { + state: { + user: (state) => state.user, + }, + mutations: ['UPDATE_USER'], + }, +} +``` + +## Let's build the plugin + +### Setup + +Before we can get into the logic of the plugin, we first need to setup up the plugin in a `.js` file + +```js +import Vue from 'vue' + +const plugin = { + install(LocalVue) { + + } +} + +Vue.use(plugin) +``` + +You might have come across `Vue.use()` before, the method is responsible for registering plugins and it takes an object with a method named `install` which gets called. + +The `install` hook exposes two parameters: + +* First parameter is the Vue constructor +* Second parameter is the options that you pass to the plugin + +Next step is to add a global mixin in the `install` hook, we can use the `beforeCreate` lifecycle hook to add/modify the Vue component instance + +```js +import Vue from 'vue' + +const plugin = { + install(LocalVue) { + LocalVue.mixin({ + beforeCreate() { + this // we can access the component instance + } + }) + } +} + +Vue.use(plugin) +``` + +### Logic + +Now that we have all the plugin boilerplate setup, let's have a look at actually taking our abstraction and converting it to something that Vue understands. + +Every Vue instance has a property called `$options` which contains a reference to all the options exported in the Vue component, you can read more about the [Options API](https://vuejs.org/v2/api/?#Options-Data). + +#### Step 1 - Access vuex from options + +```js +import Vue from 'vue' + +const plugin = { + install(LocalVue) { + LocalVue.mixin({ + beforeCreate() { + const { + vuex = {}, + methods = {}, + computed = {}, + } = this.$options + } + }) + } +} + +Vue.use(plugin) +``` + +Here we are destructuring the `vuex`, `methods` and `computed` properties from the `$options` object and if it does not exist we can set a default of an empty object. + +#### Step 2 - Access props from vuex + +```js +import Vue from 'vue' + +const plugin = { + install(LocalVue) { + LocalVue.mixin({ + beforeCreate() { + const { + vuex = {}, + methods = {}, + computed = {}, + } = this.$options + + const { + state = {}, + getters = {}, + mutations = {}, + actions = {}, + } = vuex + } + }) + } +} + +Vue.use(plugin) +``` + +Next step is to destructure the `state`, `getters`, `mutations` and `actions` from the `vuex` property and set default objects as well. + +#### Step 3 - Map vuex + +```js +import Vue from 'vue' +import { mapState, mapGetters, mapMutations, mapActions } from 'vuex' + +const plugin = { + install(LocalVue) { + LocalVue.mixin({ + beforeCreate() { + const { + vuex = {}, + methods = {}, + computed = {}, + } = this.$options + + const { + state = {}, + getters = {}, + mutations = {}, + actions = {}, + } = vuex + + this.$options.methods = { + ...methods, + ...mapMutations(mutations), + ...mapActions(actions), + } + + this.$options.computed = { + ...computed, + ...mapState(state), + ...mapGetters(getters), + } + } + }) + } +} + +Vue.use(plugin) +``` + +This step is the most important as we now need to override and destructure all the vuex mappings to `methods` and `computed` properties. We need to destructure `methods` and `computed` so we don't break existing options that the user exports. + +#### Step 4 - Import plugin + +If you want to use the Vue plugin, we can just import the plugin in your `main.js` file or any entry point file of your Vue app + +```js +import Vue from 'vue' +import './plugins/vuex.js' + +new Vue({ + // options +}).$mount('#app') +``` + +## Creating a NPM package + +Creating a NPM package is a bit out of the scope of this cookbook but I believe it is a very important part of making a plugin. I would highly recommend you check out this article on how to create a package [How to make a beautiful, tiny npm package and publish it](https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/). + +In this case all we would need to do is export the `plugin` object in it's own JS file. + +## Wrapping up + +Creating Vue plugins has always seemed like something that was not as approachable to just about any developer but once you really dig into it you will see that it is not that hard and just takes some playing around to understand what's happening under the hood. \ No newline at end of file From d0022f38389a3d65812ef68e21a32864ba028133 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Dec 2019 10:23:01 +0200 Subject: [PATCH 02/10] Added order of 15 to cookbook --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index d2e87652c0..94c1ff9c9d 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -1,6 +1,7 @@ --- title: Making use of the Vue Plugin API type: cookbook +order: 15 --- ## Base Example From 8c98f153750aab8691ce8b9bcf4cb000d3fc4041 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Dec 2019 10:30:27 +0200 Subject: [PATCH 03/10] Updated some of the headings --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index 94c1ff9c9d..a3e54f042a 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -1,7 +1,7 @@ --- title: Making use of the Vue Plugin API type: cookbook -order: 15 +order: **15** --- ## Base Example @@ -40,7 +40,7 @@ export default { ## Let's build the plugin -### Setup +### Setting up the plugin Before we can get into the logic of the plugin, we first need to setup up the plugin in a `.js` file @@ -81,7 +81,7 @@ const plugin = { Vue.use(plugin) ``` -### Logic +### Writing the plugin logic Now that we have all the plugin boilerplate setup, let's have a look at actually taking our abstraction and converting it to something that Vue understands. From d56d983d97b2f8950c7c14edf13e21a6cb764628 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Dec 2019 10:47:45 +0200 Subject: [PATCH 04/10] Added an alternative solutions section --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index a3e54f042a..e0b8deeba5 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -1,12 +1,12 @@ --- title: Making use of the Vue Plugin API type: cookbook -order: **15** +order: 15 --- ## Base Example -Vue exposes a really nice API for creating plugins, plugins allow us to modify and add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. +Vue exposes a really nifty API for creating plugins, plugins allow us to modify and add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. Let's say we want to create a simple abstraction for using Vuex within Vue components, we want to reduce the boilerplate essentially. We can first design how we want the abstraction to look. @@ -205,6 +205,10 @@ Creating a NPM package is a bit out of the scope of this cookbook but I believe In this case all we would need to do is export the `plugin` object in it's own JS file. +## Alternative solutions + +In this specific case we just needed to use a mixin, so why don't we just use a mixin instead? We could do that as an alternative solution but what if we want to include `directives` or `filters` globally and make this example a helper plugin for Vue. In most cases users feel more comfortable with plugins as using custom packages is more likely to be registered with `Vue.use()` + ## Wrapping up Creating Vue plugins has always seemed like something that was not as approachable to just about any developer but once you really dig into it you will see that it is not that hard and just takes some playing around to understand what's happening under the hood. \ No newline at end of file From ec97a07de3eea4bea90b529f8b607cd4e7978ff7 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Dec 2019 10:50:38 +0200 Subject: [PATCH 05/10] Fixed spelling mistakes --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index e0b8deeba5..4ac1204326 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -42,7 +42,7 @@ export default { ### Setting up the plugin -Before we can get into the logic of the plugin, we first need to setup up the plugin in a `.js` file +Before we can get into the logic of the plugin, we first need to setup the plugin in a `.js` file ```js import Vue from 'vue' From 810eeac6aba2466b7f68cbd32946a17a79876ffa Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Mar 2020 18:51:35 +0200 Subject: [PATCH 06/10] Started writing a real-world example section --- package.json | 4 +- pnpm-lock.yaml | 3915 +++++++++++++++++ .../cookbook/how-to-use-the-vue-plugin-api.md | 8 +- 3 files changed, 3923 insertions(+), 4 deletions(-) create mode 100644 pnpm-lock.yaml diff --git a/package.json b/package.json index 030bfdfb41..653846d76a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vuejs.org", "private": true, "hexo": { - "version": "3.8.0" + "version": "3.9.0" }, "scripts": { "start": "hexo server", @@ -29,4 +29,4 @@ "hoek": "^6.1.2", "request": "^2.85.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..a517afa457 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3915 @@ +dependencies: + hexo: 3.9.0 + hexo-deployer-git: 0.3.1 + hexo-generator-alias: github.com/chrisvfritz/vuejs.org-hexo-generator-alias/67adb814a76750f3c841825f955bd5dd92cd1f20 + hexo-generator-archive: 0.1.5 + hexo-generator-category: 0.1.3 + hexo-generator-feed: 1.2.2 + hexo-generator-index: 0.2.1 + hexo-generator-tag: 0.2.0 + hexo-offline: 1.0.0_hexo@3.9.0 + hexo-renderer-ejs: 0.3.1 + hexo-renderer-marked: 0.3.2 + hexo-renderer-stylus: 0.3.3 + hexo-server: 0.3.3 + hoek: 6.1.3 + request: 2.88.2 +lockfileVersion: 5.1 +packages: + /JSONStream/1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: false + hasBin: true + resolution: + integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + /a-sync-waterfall/1.0.1: + dev: false + resolution: + integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== + /abbrev/1.1.1: + dev: false + resolution: + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + /accepts/1.3.7: + dependencies: + mime-types: 2.1.26 + negotiator: 0.6.2 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + /acorn/6.4.1: + dev: false + engines: + node: '>=0.4.0' + hasBin: true + resolution: + integrity: sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + /ajv/6.12.0: + dependencies: + fast-deep-equal: 3.1.1 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.2.2 + dev: false + resolution: + integrity: sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + /align-text/0.1.4: + dependencies: + kind-of: 3.2.2 + longest: 1.0.1 + repeat-string: 1.6.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + /amdefine/1.0.1: + dev: false + engines: + node: '>=0.4.2' + resolution: + integrity: sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + /ansi-align/2.0.0: + dependencies: + string-width: 2.1.1 + dev: false + resolution: + integrity: sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= + /ansi-regex/2.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + /ansi-regex/3.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + /ansi-regex/4.1.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + /ansi-styles/2.2.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + /ansi-styles/3.2.1: + dependencies: + color-convert: 1.9.3 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + /anymatch/1.3.2: + dependencies: + micromatch: 2.3.11 + normalize-path: 2.1.1 + dev: false + resolution: + integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + /anymatch/2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + dev: false + resolution: + integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + /anymatch/3.1.1: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.2.2 + dev: false + engines: + node: '>= 8' + optional: true + resolution: + integrity: sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + /archy/1.0.0: + dev: false + resolution: + integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + /argparse/1.0.10: + dependencies: + sprintf-js: 1.0.3 + dev: false + resolution: + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + /arr-diff/2.0.0: + dependencies: + arr-flatten: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + /arr-diff/4.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + /arr-flatten/1.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + /arr-union/3.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + /array-find-index/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + /array-unique/0.2.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + /array-unique/0.3.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + /asap/2.0.6: + dev: false + resolution: + integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + /asn1/0.2.4: + dependencies: + safer-buffer: 2.1.2 + dev: false + resolution: + integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + /assert-plus/1.0.0: + dev: false + engines: + node: '>=0.8' + resolution: + integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + /assign-symbols/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + /async-each/1.0.3: + dev: false + resolution: + integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + /async/0.2.10: + dev: false + resolution: + integrity: sha1-trvgsGdLnXGXCMo43owjfLUmw9E= + /asynckit/0.4.0: + dev: false + resolution: + integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= + /atob/2.1.2: + dev: false + engines: + node: '>= 4.5.0' + hasBin: true + resolution: + integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + /aws-sign2/0.7.0: + dev: false + resolution: + integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + /aws4/1.9.1: + dev: false + resolution: + integrity: sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + /babel-code-frame/6.26.0: + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: false + resolution: + integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + /babel-eslint/7.2.3: + dependencies: + babel-code-frame: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc= + /babel-messages/6.23.0: + dependencies: + babel-runtime: 6.26.0 + dev: false + resolution: + integrity: sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + /babel-runtime/6.26.0: + dependencies: + core-js: 2.6.11 + regenerator-runtime: 0.11.1 + dev: false + resolution: + integrity: sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + /babel-traverse/6.26.0: + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.15 + dev: false + resolution: + integrity: sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + /babel-types/6.26.0: + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.15 + to-fast-properties: 1.0.3 + dev: false + resolution: + integrity: sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + /babylon/6.18.0: + dev: false + hasBin: true + resolution: + integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + /balanced-match/1.0.0: + dev: false + resolution: + integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + /base/0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + /basic-auth/2.0.1: + dependencies: + safe-buffer: 5.1.2 + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + /bcrypt-pbkdf/1.0.2: + dependencies: + tweetnacl: 0.14.5 + dev: false + resolution: + integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + /binary-extensions/1.13.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + /binary-extensions/2.0.0: + dev: false + engines: + node: '>=8' + optional: true + resolution: + integrity: sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + /bindings/1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + dev: false + optional: true + resolution: + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + /bluebird/3.7.2: + dev: false + resolution: + integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + /boolbase/1.0.0: + dev: false + resolution: + integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24= + /boxen/1.3.0: + dependencies: + ansi-align: 2.0.0 + camelcase: 4.1.0 + chalk: 2.4.2 + cli-boxes: 1.0.0 + string-width: 2.1.1 + term-size: 1.2.0 + widest-line: 2.0.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + /brace-expansion/1.1.11: + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + dev: false + resolution: + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + /braces/1.8.5: + dependencies: + expand-range: 1.8.2 + preserve: 0.2.0 + repeat-element: 1.1.3 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + /braces/2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + /braces/3.0.2: + dependencies: + fill-range: 7.0.1 + dev: false + engines: + node: '>=8' + optional: true + resolution: + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + /browser-fingerprint/0.0.1: + dev: false + resolution: + integrity: sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo= + /bytes/3.0.0: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + /cache-base/1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + /camel-case/3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: false + resolution: + integrity: sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + /camelcase-keys/2.1.0: + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + /camelcase/1.2.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + /camelcase/2.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + /camelcase/4.1.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + /capture-stack-trace/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + /caseless/0.12.0: + dev: false + resolution: + integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + /center-align/0.1.3: + dependencies: + align-text: 0.1.4 + lazy-cache: 1.0.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + /chalk/1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + /chalk/2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + /cheerio/0.22.0: + dependencies: + css-select: 1.2.0 + dom-serializer: 0.1.1 + entities: 1.1.2 + htmlparser2: 3.10.1 + lodash.assignin: 4.2.0 + lodash.bind: 4.2.1 + lodash.defaults: 4.2.0 + lodash.filter: 4.6.0 + lodash.flatten: 4.4.0 + lodash.foreach: 4.5.0 + lodash.map: 4.6.0 + lodash.merge: 4.6.2 + lodash.pick: 4.4.0 + lodash.reduce: 4.6.0 + lodash.reject: 4.6.0 + lodash.some: 4.6.0 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= + /chokidar/1.7.0: + dependencies: + anymatch: 1.3.2 + async-each: 1.0.3 + glob-parent: 2.0.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 2.0.1 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + dev: false + optionalDependencies: + fsevents: 1.2.12 + resolution: + integrity: sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + /chokidar/2.1.8: + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + dev: false + optionalDependencies: + fsevents: 1.2.12 + resolution: + integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + /chokidar/3.3.1: + dependencies: + anymatch: 3.1.1 + braces: 3.0.2 + glob-parent: 5.1.1 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.3.0 + dev: false + engines: + node: '>= 8.10.0' + optional: true + optionalDependencies: + fsevents: 2.1.2 + resolution: + integrity: sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + /ci-info/1.6.0: + dev: false + resolution: + integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + /class-utils/0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + /cli-boxes/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-T6kXw+WclKAEzWH47lCdplFocUM= + /cliui/2.1.0: + dependencies: + center-align: 0.1.3 + right-align: 0.1.3 + wordwrap: 0.0.2 + dev: false + resolution: + integrity: sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + /collection-visit/1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + /color-convert/1.9.3: + dependencies: + color-name: 1.1.3 + dev: false + resolution: + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + /color-name/1.1.3: + dev: false + resolution: + integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + /combined-stream/1.0.8: + dependencies: + delayed-stream: 1.0.0 + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + /command-exists/1.2.8: + dev: false + resolution: + integrity: sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== + /commander/3.0.2: + dev: false + resolution: + integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + /component-emitter/1.3.0: + dev: false + resolution: + integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + /compressible/2.0.18: + dependencies: + mime-db: 1.43.0 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + /compression/1.7.4: + dependencies: + accepts: 1.3.7 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + dev: false + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + /concat-map/0.0.1: + dev: false + resolution: + integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + /configstore/3.1.2: + dependencies: + dot-prop: 4.2.0 + graceful-fs: 4.2.3 + make-dir: 1.3.0 + unique-string: 1.0.0 + write-file-atomic: 2.4.3 + xdg-basedir: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== + /connect/3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + /copy-descriptor/0.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + /core-js/1.2.7: + deprecated: 'core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.' + dev: false + resolution: + integrity: sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + /core-js/2.6.11: + deprecated: 'core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.' + dev: false + requiresBuild: true + resolution: + integrity: sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + /core-util-is/1.0.2: + dev: false + resolution: + integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + /create-error-class/3.0.2: + dependencies: + capture-stack-trace: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + /cross-spawn/4.0.2: + dependencies: + lru-cache: 4.1.5 + which: 1.3.1 + dev: false + resolution: + integrity: sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + /cross-spawn/5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + resolution: + integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + /crypto-random-string/1.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + /css-parse/1.7.0: + dev: false + resolution: + integrity: sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= + /css-parse/2.0.0: + dependencies: + css: 2.2.4 + dev: false + resolution: + integrity: sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + /css-select/1.2.0: + dependencies: + boolbase: 1.0.0 + css-what: 2.1.3 + domutils: 1.5.1 + nth-check: 1.0.2 + dev: false + resolution: + integrity: sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + /css-what/2.1.3: + dev: false + resolution: + integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + /css/2.2.4: + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.5.3 + urix: 0.1.0 + dev: false + resolution: + integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + /cuid/1.3.8: + dependencies: + browser-fingerprint: 0.0.1 + core-js: 1.2.7 + node-fingerprint: 0.0.2 + dev: false + resolution: + integrity: sha1-S4deCWm612T37AcGz0T1+wgx9rc= + /currently-unhandled/0.4.1: + dependencies: + array-find-index: 1.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o= + /dashdash/1.14.1: + dependencies: + assert-plus: 1.0.0 + dev: false + engines: + node: '>=0.10' + resolution: + integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + /debug/2.6.9: + dependencies: + ms: 2.0.0 + dev: false + resolution: + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + /debug/3.1.0: + dependencies: + ms: 2.0.0 + dev: false + resolution: + integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + /debug/4.1.1: + dependencies: + ms: 2.1.2 + dev: false + resolution: + integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + /decamelize/1.2.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + /decode-uri-component/0.2.0: + dev: false + engines: + node: '>=0.10' + resolution: + integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + /deep-extend/0.6.0: + dev: false + engines: + node: '>=4.0.0' + resolution: + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + /define-property/0.2.5: + dependencies: + is-descriptor: 0.1.6 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + /define-property/1.0.0: + dependencies: + is-descriptor: 1.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + /define-property/2.0.2: + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + /delayed-stream/1.0.0: + dev: false + engines: + node: '>=0.4.0' + resolution: + integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + /depd/1.1.2: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + /depd/2.0.0: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + /destroy/1.0.4: + dev: false + resolution: + integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + /dom-serializer/0.1.1: + dependencies: + domelementtype: 1.3.1 + entities: 1.1.2 + dev: false + resolution: + integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + /dom-serializer/0.2.2: + dependencies: + domelementtype: 2.0.1 + entities: 2.0.0 + dev: false + resolution: + integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + /dom-urls/1.1.0: + dependencies: + urijs: 1.19.2 + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4= + /domelementtype/1.3.1: + dev: false + resolution: + integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + /domelementtype/2.0.1: + dev: false + resolution: + integrity: sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + /domhandler/2.4.2: + dependencies: + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + /domutils/1.5.1: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + /domutils/1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + /dot-prop/4.2.0: + dependencies: + is-obj: 1.0.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + /duplexer3/0.1.4: + dev: false + resolution: + integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + /ecc-jsbn/0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: false + resolution: + integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + /ee-first/1.1.1: + dev: false + resolution: + integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + /ejs/2.7.4: + dev: false + engines: + node: '>=0.10.0' + requiresBuild: true + resolution: + integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + /encodeurl/1.0.2: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + /entities/1.1.2: + dev: false + resolution: + integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + /entities/2.0.0: + dev: false + resolution: + integrity: sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + /error-ex/1.3.2: + dependencies: + is-arrayish: 0.2.1 + dev: false + resolution: + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + /es6-promise/4.2.8: + dev: false + resolution: + integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + /escape-html/1.0.3: + dev: false + resolution: + integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + /escape-string-regexp/1.0.5: + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + /esprima/4.0.1: + dev: false + engines: + node: '>=4' + hasBin: true + resolution: + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + /esutils/2.0.3: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + /etag/1.8.1: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + /execa/0.7.0: + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.2 + strip-eof: 1.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + /expand-brackets/0.1.5: + dependencies: + is-posix-bracket: 0.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + /expand-brackets/2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + /expand-range/1.8.2: + dependencies: + fill-range: 2.2.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + /extend-shallow/2.0.1: + dependencies: + is-extendable: 0.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + /extend-shallow/3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + /extend/3.0.2: + dev: false + resolution: + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + /extglob/0.3.2: + dependencies: + is-extglob: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + /extglob/2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + /extsprintf/1.3.0: + dev: false + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + /fast-deep-equal/3.1.1: + dev: false + resolution: + integrity: sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + /fast-json-stable-stringify/2.1.0: + dev: false + resolution: + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + /file-uri-to-path/1.0.0: + dev: false + optional: true + resolution: + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + /filename-regex/2.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + /fill-range/2.2.4: + dependencies: + is-number: 2.1.0 + isobject: 2.1.0 + randomatic: 3.1.1 + repeat-element: 1.1.3 + repeat-string: 1.6.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + /fill-range/4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + /fill-range/7.0.1: + dependencies: + to-regex-range: 5.0.1 + dev: false + engines: + node: '>=8' + optional: true + resolution: + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + /finalhandler/1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + /find-up/1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + /for-in/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + /for-own/0.1.5: + dependencies: + for-in: 1.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + /forever-agent/0.6.1: + dev: false + resolution: + integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + /form-data/2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.26 + dev: false + engines: + node: '>= 0.12' + resolution: + integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + /fragment-cache/0.2.1: + dependencies: + map-cache: 0.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + /fresh/0.5.2: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + /fs.realpath/1.0.0: + dev: false + resolution: + integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + /fsevents/1.2.12: + bundledDependencies: + - node-pre-gyp + dependencies: + bindings: 1.5.0 + nan: 2.14.0 + dev: false + engines: + node: '>= 4.0' + optional: true + os: + - darwin + requiresBuild: true + resolution: + integrity: sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + /fsevents/2.1.2: + dev: false + engines: + node: ^8.16.0 || ^10.6.0 || >=11.0.0 + optional: true + os: + - darwin + resolution: + integrity: sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + /get-stdin/4.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + /get-stream/3.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + /get-value/2.0.6: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + /getpass/0.1.7: + dependencies: + assert-plus: 1.0.0 + dev: false + resolution: + integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + /glob-base/0.3.0: + dependencies: + glob-parent: 2.0.0 + is-glob: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + /glob-parent/2.0.0: + dependencies: + is-glob: 2.0.1 + dev: false + resolution: + integrity: sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + /glob-parent/3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: false + resolution: + integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + /glob-parent/5.1.1: + dependencies: + is-glob: 4.0.1 + dev: false + engines: + node: '>= 6' + optional: true + resolution: + integrity: sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + /glob/6.0.4: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + optional: true + resolution: + integrity: sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= + /glob/7.0.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + resolution: + integrity: sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= + /glob/7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + resolution: + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + /global-dirs/0.1.1: + dependencies: + ini: 1.3.5 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + /globals/9.18.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + /got/6.7.1: + dependencies: + create-error-class: 3.0.2 + duplexer3: 0.1.4 + get-stream: 3.0.0 + is-redirect: 1.0.0 + is-retry-allowed: 1.2.0 + is-stream: 1.1.0 + lowercase-keys: 1.0.1 + safe-buffer: 5.2.0 + timed-out: 4.0.1 + unzip-response: 2.0.1 + url-parse-lax: 1.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + /graceful-fs/4.2.3: + dev: false + resolution: + integrity: sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + /har-schema/2.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + /har-validator/5.1.3: + dependencies: + ajv: 6.12.0 + har-schema: 2.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + /has-ansi/2.0.0: + dependencies: + ansi-regex: 2.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + /has-flag/3.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + /has-value/0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + /has-value/1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + /has-values/0.1.4: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E= + /has-values/1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + /hexo-bunyan/1.0.0: + dev: false + engines: + '0': node >=0.10.0 + hasBin: true + optionalDependencies: + moment: 2.24.0 + mv: 2.1.1 + safe-json-stringify: 1.2.0 + resolution: + integrity: sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ== + /hexo-cli/2.0.0: + dependencies: + abbrev: 1.1.1 + acorn: 6.4.1 + bluebird: 3.7.2 + chalk: 2.4.2 + command-exists: 1.2.8 + hexo-fs: 1.0.2 + hexo-log: 0.2.0 + hexo-util: 0.6.3 + minimist: 1.2.5 + resolve: 1.15.1 + tildify: 1.2.0 + dev: false + engines: + node: '>=6.9.0' + hasBin: true + resolution: + integrity: sha512-ZHWh2W35IHaAv9vmcrq+yWjubF26TV+qXoihMnJ3LojWlUCFoMWfEoxJcm0AL709SSuVMpwvUI8la4CpQCOGXQ== + /hexo-deployer-git/0.3.1: + dependencies: + babel-eslint: 7.2.3 + bluebird: 3.7.2 + chalk: 1.1.3 + hexo-fs: 0.2.3 + hexo-util: 0.6.3 + moment: 2.24.0 + swig: 1.4.2 + dev: false + resolution: + integrity: sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA== + /hexo-front-matter/0.2.3: + dependencies: + js-yaml: 3.13.1 + dev: false + resolution: + integrity: sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4= + /hexo-fs/0.2.3: + dependencies: + bluebird: 3.7.2 + chokidar: 1.7.0 + escape-string-regexp: 1.0.5 + graceful-fs: 4.2.3 + dev: false + engines: + node: '>=6.9.0' + resolution: + integrity: sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ== + /hexo-fs/1.0.2: + dependencies: + bluebird: 3.7.2 + chokidar: 2.1.8 + escape-string-regexp: 1.0.5 + graceful-fs: 4.2.3 + dev: false + engines: + node: '>=6.9.0' + resolution: + integrity: sha512-cbDnYuk6IndW/Fr2RcfZsZXE5wlG6tFoeBgZsHY230sSYalvX4JBPOUrE8As7Agysl+NGMthtr/Drtuliy5foQ== + /hexo-generator-archive/0.1.5: + dependencies: + hexo-pagination: 0.0.2 + object-assign: 2.1.1 + dev: false + resolution: + integrity: sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w== + /hexo-generator-category/0.1.3: + dependencies: + hexo-pagination: 0.0.2 + object-assign: 2.1.1 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha1-uealhiUwqDvdfaTIGcG58+TMtLI= + /hexo-generator-feed/1.2.2: + dependencies: + nunjucks: 3.2.1 + object-assign: 4.1.1 + dev: false + resolution: + integrity: sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw== + /hexo-generator-index/0.2.1: + dependencies: + hexo-pagination: 0.0.2 + object-assign: 4.1.1 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0= + /hexo-generator-tag/0.2.0: + dependencies: + hexo-pagination: 0.0.2 + object-assign: 4.1.1 + dev: false + resolution: + integrity: sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI= + /hexo-i18n/0.2.1: + dependencies: + sprintf-js: 1.1.2 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha1-hPFBQyvwnYtVjth4xygWS20c1t4= + /hexo-log/0.2.0: + dependencies: + chalk: 1.1.3 + hexo-bunyan: 1.0.0 + dev: false + resolution: + integrity: sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ== + /hexo-offline/1.0.0_hexo@3.9.0: + dependencies: + hexo: 3.9.0 + sw-precache: 5.2.1 + dev: false + peerDependencies: + hexo: ^3.2.2 + resolution: + integrity: sha512-9vrcFvIB2JMTNJZsAnzoh3thvAhCg5RDvrJftvo909hIdgNt5VMWmkUg3jCQgDFUrq7OWljIVIBH8Z2R1/bOjw== + /hexo-pagination/0.0.2: + dependencies: + utils-merge: 1.0.1 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha1-jPRwx9sN5bGKOSanbesZQBXffys= + /hexo-renderer-ejs/0.3.1: + dependencies: + ejs: 2.7.4 + object-assign: 4.1.1 + dev: false + resolution: + integrity: sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA== + /hexo-renderer-marked/0.3.2: + dependencies: + hexo-util: 0.6.3 + marked: 0.3.19 + object-assign: 4.1.1 + strip-indent: 2.0.0 + dev: false + resolution: + integrity: sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg== + /hexo-renderer-stylus/0.3.3: + dependencies: + nib: 1.1.2 + stylus: 0.54.7 + dev: false + resolution: + integrity: sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8= + /hexo-server/0.3.3: + dependencies: + bluebird: 3.7.2 + chalk: 1.1.3 + compression: 1.7.4 + connect: 3.7.0 + mime: 1.6.0 + morgan: 1.10.0 + object-assign: 4.1.1 + opn: 5.5.0 + serve-static: 1.14.1 + dev: false + resolution: + integrity: sha512-70zQaf4Z+bj37Kvq7tEyn9WHH+Xj7uqbvOlGp8pHaOzWLp/riX3rMq3nnQKA2P8dKkBaM0/72IqjJPWu2Zt2WA== + /hexo-util/0.6.3: + dependencies: + bluebird: 3.7.2 + camel-case: 3.0.0 + cross-spawn: 4.0.2 + highlight.js: 9.18.1 + html-entities: 1.2.1 + striptags: 2.2.1 + dev: false + resolution: + integrity: sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw== + /hexo/3.9.0: + dependencies: + abbrev: 1.1.1 + archy: 1.0.0 + bluebird: 3.7.2 + chalk: 2.4.2 + cheerio: 0.22.0 + hexo-cli: 2.0.0 + hexo-front-matter: 0.2.3 + hexo-fs: 1.0.2 + hexo-i18n: 0.2.1 + hexo-log: 0.2.0 + hexo-util: 0.6.3 + js-yaml: 3.13.1 + lodash: 4.17.15 + minimatch: 3.0.4 + moment: 2.24.0 + moment-timezone: 0.5.28 + nunjucks: 3.2.1 + pretty-hrtime: 1.0.3 + resolve: 1.15.1 + strip-ansi: 5.2.0 + strip-indent: 2.0.0 + swig-extras: 0.0.1 + swig-templates: 2.0.3 + text-table: 0.2.0 + tildify: 1.2.0 + titlecase: 1.1.3 + warehouse: 2.2.0 + dev: false + engines: + node: '>=6.9.0' + hasBin: true + resolution: + integrity: sha512-uga6MsxGlD0AeafiObbFkQVWlUO+wWTb/IJVPI3fFpmAJu0PBD//Ek0qVOxHjlzdvFGeW0bYWYqXgDbR7suJng== + /highlight.js/9.18.1: + dev: false + resolution: + integrity: sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + /hoek/6.1.3: + deprecated: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues. + dev: false + resolution: + integrity: sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== + /hosted-git-info/2.8.8: + dev: false + resolution: + integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + /html-entities/1.2.1: + dev: false + engines: + '0': node >= 0.4.0 + resolution: + integrity: sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + /htmlparser2/3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: false + resolution: + integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + /http-errors/1.7.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + /http-signature/1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: false + engines: + node: '>=0.8' + npm: '>=1.3.7' + resolution: + integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + /import-lazy/2.1.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + /imurmurhash/0.1.4: + dev: false + engines: + node: '>=0.8.19' + resolution: + integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o= + /indent-string/2.1.0: + dependencies: + repeating: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + /inflight/1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + resolution: + integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + /inherits/2.0.4: + dev: false + resolution: + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + /ini/1.3.5: + dev: false + resolution: + integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + /invariant/2.2.4: + dependencies: + loose-envify: 1.4.0 + dev: false + resolution: + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + /is-accessor-descriptor/0.1.6: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + /is-accessor-descriptor/1.0.0: + dependencies: + kind-of: 6.0.3 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + /is-arrayish/0.2.1: + dev: false + resolution: + integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + /is-binary-path/1.0.1: + dependencies: + binary-extensions: 1.13.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + /is-binary-path/2.1.0: + dependencies: + binary-extensions: 2.0.0 + dev: false + engines: + node: '>=8' + optional: true + resolution: + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + /is-buffer/1.1.6: + dev: false + resolution: + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + /is-ci/1.2.1: + dependencies: + ci-info: 1.6.0 + dev: false + hasBin: true + resolution: + integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + /is-data-descriptor/0.1.4: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + /is-data-descriptor/1.0.0: + dependencies: + kind-of: 6.0.3 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + /is-descriptor/0.1.6: + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + /is-descriptor/1.0.2: + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + /is-dotfile/1.0.3: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + /is-equal-shallow/0.1.3: + dependencies: + is-primitive: 2.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + /is-extendable/0.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + /is-extendable/1.0.1: + dependencies: + is-plain-object: 2.0.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + /is-extglob/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + /is-extglob/2.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + /is-finite/1.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + /is-fullwidth-code-point/2.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + /is-glob/2.0.1: + dependencies: + is-extglob: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + /is-glob/3.1.0: + dependencies: + is-extglob: 2.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + /is-glob/4.0.1: + dependencies: + is-extglob: 2.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + /is-installed-globally/0.1.0: + dependencies: + global-dirs: 0.1.1 + is-path-inside: 1.0.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + /is-npm/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + /is-number/2.1.0: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + /is-number/3.0.0: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + /is-number/4.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + /is-number/7.0.0: + dev: false + engines: + node: '>=0.12.0' + optional: true + resolution: + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + /is-obj/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + /is-path-inside/1.0.1: + dependencies: + path-is-inside: 1.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-jvW33lBDej/cprToZe96pVy0gDY= + /is-plain-object/2.0.4: + dependencies: + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + /is-posix-bracket/0.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + /is-primitive/2.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + /is-redirect/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + /is-retry-allowed/1.2.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + /is-stream/1.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + /is-typedarray/1.0.0: + dev: false + resolution: + integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + /is-utf8/0.2.1: + dev: false + resolution: + integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + /is-windows/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + /is-wsl/1.1.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + /isarray/0.0.1: + dev: false + resolution: + integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + /isarray/1.0.0: + dev: false + resolution: + integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + /isexe/2.0.0: + dev: false + resolution: + integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + /isobject/2.1.0: + dependencies: + isarray: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + /isobject/3.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + /isstream/0.1.2: + dev: false + resolution: + integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + /js-tokens/3.0.2: + dev: false + resolution: + integrity: sha1-mGbfOVECEw449/mWvOtlRDIJwls= + /js-tokens/4.0.0: + dev: false + resolution: + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + /js-yaml/3.13.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + hasBin: true + resolution: + integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + /jsbn/0.1.1: + dev: false + resolution: + integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + /json-schema-traverse/0.4.1: + dev: false + resolution: + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + /json-schema/0.2.3: + dev: false + resolution: + integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + /json-stringify-safe/5.0.1: + dev: false + resolution: + integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + /jsonparse/1.3.1: + dev: false + engines: + '0': node >= 0.2.0 + resolution: + integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + /jsprim/1.4.1: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: false + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + /kind-of/3.2.2: + dependencies: + is-buffer: 1.1.6 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + /kind-of/4.0.0: + dependencies: + is-buffer: 1.1.6 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + /kind-of/5.1.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + /kind-of/6.0.3: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + /latest-version/3.1.0: + dependencies: + package-json: 4.0.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + /lazy-cache/1.0.4: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-odePw6UEdMuAhF07O24dpJpEbo4= + /load-json-file/1.1.0: + dependencies: + graceful-fs: 4.2.3 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + /lodash._reinterpolate/3.0.0: + dev: false + resolution: + integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + /lodash.assignin/4.2.0: + dev: false + resolution: + integrity: sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + /lodash.bind/4.2.1: + dev: false + resolution: + integrity: sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= + /lodash.defaults/4.2.0: + dev: false + resolution: + integrity: sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + /lodash.filter/4.6.0: + dev: false + resolution: + integrity: sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= + /lodash.flatten/4.4.0: + dev: false + resolution: + integrity: sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + /lodash.foreach/4.5.0: + dev: false + resolution: + integrity: sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + /lodash.map/4.6.0: + dev: false + resolution: + integrity: sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + /lodash.merge/4.6.2: + dev: false + resolution: + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + /lodash.pick/4.4.0: + dev: false + resolution: + integrity: sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + /lodash.reduce/4.6.0: + dev: false + resolution: + integrity: sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= + /lodash.reject/4.6.0: + dev: false + resolution: + integrity: sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= + /lodash.some/4.6.0: + dev: false + resolution: + integrity: sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + /lodash.template/4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: false + resolution: + integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + /lodash.templatesettings/4.2.0: + dependencies: + lodash._reinterpolate: 3.0.0 + dev: false + resolution: + integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + /lodash/4.17.15: + dev: false + resolution: + integrity: sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + /longest/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + /loose-envify/1.4.0: + dependencies: + js-tokens: 4.0.0 + dev: false + hasBin: true + resolution: + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + /loud-rejection/1.6.0: + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + /lower-case/1.1.4: + dev: false + resolution: + integrity: sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + /lowercase-keys/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + /lru-cache/4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: false + resolution: + integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + /make-dir/1.3.0: + dependencies: + pify: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + /map-cache/0.2.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + /map-obj/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + /map-visit/1.0.0: + dependencies: + object-visit: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + /markdown/0.5.0: + dependencies: + nopt: 2.1.2 + dev: false + hasBin: true + resolution: + integrity: sha1-KCBbVlqK51kt4gdGPWY33BgnIrI= + /marked/0.3.19: + dev: false + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== + /math-random/1.0.4: + dev: false + resolution: + integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + /meow/3.7.0: + dependencies: + camelcase-keys: 2.1.0 + decamelize: 1.2.0 + loud-rejection: 1.6.0 + map-obj: 1.0.1 + minimist: 1.2.5 + normalize-package-data: 2.5.0 + object-assign: 4.1.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + /micromatch/2.3.11: + dependencies: + arr-diff: 2.0.0 + array-unique: 0.2.1 + braces: 1.8.5 + expand-brackets: 0.1.5 + extglob: 0.3.2 + filename-regex: 2.0.1 + is-extglob: 1.0.0 + is-glob: 2.0.1 + kind-of: 3.2.2 + normalize-path: 2.1.1 + object.omit: 2.0.1 + parse-glob: 3.0.4 + regex-cache: 0.4.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + /micromatch/3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + /mime-db/1.43.0: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + /mime-types/2.1.26: + dependencies: + mime-db: 1.43.0 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + /mime/1.6.0: + dev: false + engines: + node: '>=4' + hasBin: true + resolution: + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + /minimatch/3.0.4: + dependencies: + brace-expansion: 1.1.11 + dev: false + resolution: + integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + /minimist/0.0.10: + dev: false + resolution: + integrity: sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + /minimist/1.2.5: + dev: false + resolution: + integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + /mixin-deep/1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + /mkdirp/0.5.3: + dependencies: + minimist: 1.2.5 + dev: false + hasBin: true + resolution: + integrity: sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + /moment-timezone/0.5.28: + dependencies: + moment: 2.24.0 + dev: false + resolution: + integrity: sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw== + /moment/2.24.0: + dev: false + resolution: + integrity: sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + /morgan/1.10.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + dev: false + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + /ms/2.0.0: + dev: false + resolution: + integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + /ms/2.1.1: + dev: false + resolution: + integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + /ms/2.1.2: + dev: false + resolution: + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + /mv/2.1.1: + dependencies: + mkdirp: 0.5.3 + ncp: 2.0.0 + rimraf: 2.4.5 + dev: false + engines: + node: '>=0.8.0' + optional: true + resolution: + integrity: sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI= + /nan/2.14.0: + dev: false + optional: true + resolution: + integrity: sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + /nanomatch/1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + /ncp/2.0.0: + dev: false + hasBin: true + optional: true + resolution: + integrity: sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= + /negotiator/0.6.2: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + /nib/1.1.2: + dependencies: + stylus: 0.54.5 + dev: false + resolution: + integrity: sha1-amnt5AgblcDe+L4CSkyK4MLLtsc= + /no-case/2.3.2: + dependencies: + lower-case: 1.1.4 + dev: false + resolution: + integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + /node-fingerprint/0.0.2: + dev: false + resolution: + integrity: sha1-Mcur63GmeufdWn3AQuUcPHWGhQE= + /nopt/2.1.2: + dependencies: + abbrev: 1.1.1 + dev: false + hasBin: true + resolution: + integrity: sha1-bMzZd7gBMqB3MdbozljCyDA8+a8= + /normalize-package-data/2.5.0: + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.15.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: false + resolution: + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + /normalize-path/2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + /normalize-path/3.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + /npm-run-path/2.0.2: + dependencies: + path-key: 2.0.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + /nth-check/1.0.2: + dependencies: + boolbase: 1.0.0 + dev: false + resolution: + integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + /nunjucks/3.2.1: + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + commander: 3.0.2 + dev: false + engines: + node: '>= 6.9.0' + hasBin: true + optionalDependencies: + chokidar: 3.3.1 + resolution: + integrity: sha512-LYlVuC1ZNSalQQkLNNPvcgPt2M9FTY9bs39mTCuFXtqh7jWbYzhDlmz2M6onPiXEhdZo+b9anRhc+uBGuJZ2bQ== + /oauth-sign/0.9.0: + dev: false + resolution: + integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + /object-assign/2.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= + /object-assign/4.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + /object-copy/0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + /object-visit/1.0.1: + dependencies: + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + /object.omit/2.0.1: + dependencies: + for-own: 0.1.5 + is-extendable: 0.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + /object.pick/1.3.0: + dependencies: + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + /on-finished/2.3.0: + dependencies: + ee-first: 1.1.1 + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + /on-headers/1.0.2: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + /once/1.4.0: + dependencies: + wrappy: 1.0.2 + dev: false + resolution: + integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + /opn/5.5.0: + dependencies: + is-wsl: 1.1.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + /optimist/0.6.1: + dependencies: + minimist: 0.0.10 + wordwrap: 0.0.3 + dev: false + resolution: + integrity: sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + /os-homedir/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + /p-finally/1.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + /package-json/4.0.1: + dependencies: + got: 6.7.1 + registry-auth-token: 3.4.0 + registry-url: 3.1.0 + semver: 5.7.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + /parse-glob/3.0.4: + dependencies: + glob-base: 0.3.0 + is-dotfile: 1.0.3 + is-extglob: 1.0.0 + is-glob: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + /parse-json/2.2.0: + dependencies: + error-ex: 1.3.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + /parseurl/1.3.3: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + /pascalcase/0.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + /path-dirname/1.0.2: + dev: false + resolution: + integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + /path-exists/2.1.0: + dependencies: + pinkie-promise: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + /path-is-absolute/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + /path-is-inside/1.0.2: + dev: false + resolution: + integrity: sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + /path-key/2.0.1: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + /path-parse/1.0.6: + dev: false + resolution: + integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + /path-to-regexp/1.8.0: + dependencies: + isarray: 0.0.1 + dev: false + resolution: + integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + /path-type/1.1.0: + dependencies: + graceful-fs: 4.2.3 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + /performance-now/2.1.0: + dev: false + resolution: + integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + /picomatch/2.2.2: + dev: false + engines: + node: '>=8.6' + optional: true + resolution: + integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + /pify/2.3.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + /pify/3.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + /pinkie-promise/2.0.1: + dependencies: + pinkie: 2.0.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o= + /pinkie/2.0.4: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + /posix-character-classes/0.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + /prepend-http/1.0.4: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + /preserve/0.2.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + /pretty-bytes/4.0.2: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= + /pretty-hrtime/1.0.3: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + /process-nextick-args/2.0.1: + dev: false + resolution: + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + /pseudomap/1.0.2: + dev: false + resolution: + integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + /psl/1.7.0: + dev: false + resolution: + integrity: sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + /punycode/2.1.1: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + /qs/6.5.2: + dev: false + engines: + node: '>=0.6' + resolution: + integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + /randomatic/3.1.1: + dependencies: + is-number: 4.0.0 + kind-of: 6.0.3 + math-random: 1.0.4 + dev: false + engines: + node: '>= 0.10.0' + resolution: + integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + /range-parser/1.2.1: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + /rc/1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.5 + minimist: 1.2.5 + strip-json-comments: 2.0.1 + dev: false + hasBin: true + resolution: + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + /read-pkg-up/1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + /read-pkg/1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + /readable-stream/2.3.7: + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + resolution: + integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + /readable-stream/3.6.0: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + engines: + node: '>= 6' + resolution: + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + /readdirp/2.2.1: + dependencies: + graceful-fs: 4.2.3 + micromatch: 3.1.10 + readable-stream: 2.3.7 + dev: false + engines: + node: '>=0.10' + resolution: + integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + /readdirp/3.3.0: + dependencies: + picomatch: 2.2.2 + dev: false + engines: + node: '>=8.10.0' + optional: true + resolution: + integrity: sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + /redent/1.0.0: + dependencies: + indent-string: 2.1.0 + strip-indent: 1.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + /regenerator-runtime/0.11.1: + dev: false + resolution: + integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + /regex-cache/0.4.4: + dependencies: + is-equal-shallow: 0.1.3 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + /regex-not/1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + /registry-auth-token/3.4.0: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.0 + dev: false + resolution: + integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== + /registry-url/3.1.0: + dependencies: + rc: 1.2.8 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-PU74cPc93h138M+aOBQyRE4XSUI= + /remove-trailing-separator/1.1.0: + dev: false + resolution: + integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + /repeat-element/1.1.3: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + /repeat-string/1.6.1: + dev: false + engines: + node: '>=0.10' + resolution: + integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc= + /repeating/2.0.1: + dependencies: + is-finite: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + /request/2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.9.1 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.3 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.26 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.0 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + deprecated: 'request has been deprecated, see https://github.com/request/request/issues/3142' + dev: false + engines: + node: '>= 6' + resolution: + integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + /resolve-url/0.2.1: + dev: false + resolution: + integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + /resolve/1.15.1: + dependencies: + path-parse: 1.0.6 + dev: false + resolution: + integrity: sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + /ret/0.1.15: + dev: false + engines: + node: '>=0.12' + resolution: + integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + /right-align/0.1.3: + dependencies: + align-text: 0.1.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + /rimraf/2.4.5: + dependencies: + glob: 6.0.4 + dev: false + hasBin: true + optional: true + resolution: + integrity: sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto= + /safe-buffer/5.1.2: + dev: false + resolution: + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + /safe-buffer/5.2.0: + dev: false + resolution: + integrity: sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + /safe-json-stringify/1.2.0: + dev: false + optional: true + resolution: + integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + /safe-regex/1.1.0: + dependencies: + ret: 0.1.15 + dev: false + resolution: + integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + /safer-buffer/2.1.2: + dev: false + resolution: + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + /sax/0.5.8: + dev: false + resolution: + integrity: sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= + /sax/1.2.4: + dev: false + resolution: + integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + /semver-diff/2.1.0: + dependencies: + semver: 5.7.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + /semver/5.7.1: + dev: false + hasBin: true + resolution: + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + /semver/6.3.0: + dev: false + hasBin: true + resolution: + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + /send/0.17.1: + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + dev: false + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + /serve-static/1.14.1: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1 + dev: false + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + /serviceworker-cache-polyfill/4.0.0: + dev: false + resolution: + integrity: sha1-3hnuc77yGrPAdAo3sz22JGS6ves= + /set-value/2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + /setprototypeof/1.1.1: + dev: false + resolution: + integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + /shebang-command/1.2.0: + dependencies: + shebang-regex: 1.0.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + /shebang-regex/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + /signal-exit/3.0.2: + dev: false + resolution: + integrity: sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + /snapdragon-node/2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + /snapdragon-util/3.0.1: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + /snapdragon/0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + /source-map-resolve/0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.0 + urix: 0.1.0 + dev: false + resolution: + integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + /source-map-url/0.4.0: + dev: false + resolution: + integrity: sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + /source-map/0.1.34: + dependencies: + amdefine: 1.0.1 + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-p8/omux7FoLDsZjQrPtH19CQVms= + /source-map/0.1.43: + dependencies: + amdefine: 1.0.1 + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= + /source-map/0.5.7: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + /source-map/0.6.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + /source-map/0.7.3: + dev: false + engines: + node: '>= 8' + resolution: + integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + /spdx-correct/3.1.0: + dependencies: + spdx-expression-parse: 3.0.0 + spdx-license-ids: 3.0.5 + dev: false + resolution: + integrity: sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + /spdx-exceptions/2.2.0: + dev: false + resolution: + integrity: sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + /spdx-expression-parse/3.0.0: + dependencies: + spdx-exceptions: 2.2.0 + spdx-license-ids: 3.0.5 + dev: false + resolution: + integrity: sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + /spdx-license-ids/3.0.5: + dev: false + resolution: + integrity: sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + /split-string/3.1.0: + dependencies: + extend-shallow: 3.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + /sprintf-js/1.0.3: + dev: false + resolution: + integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + /sprintf-js/1.1.2: + dev: false + resolution: + integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + /sshpk/1.16.1: + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: false + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + /static-extend/0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + /statuses/1.5.0: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + /string-width/2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + /string_decoder/1.1.1: + dependencies: + safe-buffer: 5.1.2 + dev: false + resolution: + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + /string_decoder/1.3.0: + dependencies: + safe-buffer: 5.2.0 + dev: false + resolution: + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + /strip-ansi/3.0.1: + dependencies: + ansi-regex: 2.1.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + /strip-ansi/4.0.0: + dependencies: + ansi-regex: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= + /strip-ansi/5.2.0: + dependencies: + ansi-regex: 4.1.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + /strip-bom/2.0.0: + dependencies: + is-utf8: 0.2.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + /strip-eof/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + /strip-indent/1.0.1: + dependencies: + get-stdin: 4.0.1 + dev: false + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + /strip-indent/2.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + /strip-json-comments/2.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo= + /striptags/2.2.1: + dev: false + resolution: + integrity: sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI= + /stylus/0.54.5: + dependencies: + css-parse: 1.7.0 + debug: 4.1.1 + glob: 7.0.6 + mkdirp: 0.5.3 + sax: 0.5.8 + source-map: 0.1.43 + dev: false + hasBin: true + resolution: + integrity: sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= + /stylus/0.54.7: + dependencies: + css-parse: 2.0.0 + debug: 3.1.0 + glob: 7.1.6 + mkdirp: 0.5.3 + safer-buffer: 2.1.2 + sax: 1.2.4 + semver: 6.3.0 + source-map: 0.7.3 + dev: false + hasBin: true + resolution: + integrity: sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== + /supports-color/2.0.0: + dev: false + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + /supports-color/5.5.0: + dependencies: + has-flag: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + /sw-precache/5.2.1: + dependencies: + dom-urls: 1.1.0 + es6-promise: 4.2.8 + glob: 7.1.6 + lodash.defaults: 4.2.0 + lodash.template: 4.5.0 + meow: 3.7.0 + mkdirp: 0.5.3 + pretty-bytes: 4.0.2 + sw-toolbox: 3.6.0 + update-notifier: 2.5.0 + deprecated: 'Please migrate to Workbox: https://developers.google.com/web/tools/workbox/guides/migrations/migrate-from-sw' + dev: false + engines: + node: '>=4.0.0' + hasBin: true + resolution: + integrity: sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw== + /sw-toolbox/3.6.0: + dependencies: + path-to-regexp: 1.8.0 + serviceworker-cache-polyfill: 4.0.0 + deprecated: 'Please migrate to Workbox: https://developers.google.com/web/tools/workbox/guides/migrations/migrate-from-sw' + dev: false + resolution: + integrity: sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U= + /swig-extras/0.0.1: + dependencies: + markdown: 0.5.0 + dev: false + resolution: + integrity: sha1-tQP+3jcqucJMasaMr2VrzvGHIyg= + /swig-templates/2.0.3: + dependencies: + optimist: 0.6.1 + uglify-js: 2.6.0 + dev: false + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha512-QojPTuZWdpznSZWZDB63/grsZuDwT/7geMeGlftbJXDoYBIZEnTcKvz4iwYDv3SwfPX9/B4RtGRSXNnm3S2wwg== + /swig/1.4.2: + dependencies: + optimist: 0.6.1 + uglify-js: 2.4.24 + deprecated: This package is no longer maintained + dev: false + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha1-QIXKBFM2kQS11IPihBs5t64aq6U= + /term-size/1.2.0: + dependencies: + execa: 0.7.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + /text-table/0.2.0: + dev: false + resolution: + integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + /through/2.3.8: + dev: false + resolution: + integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + /tildify/1.2.0: + dependencies: + os-homedir: 1.0.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo= + /timed-out/4.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + /titlecase/1.1.3: + dev: false + hasBin: true + resolution: + integrity: sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw== + /to-fast-properties/1.0.3: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + /to-object-path/0.3.0: + dependencies: + kind-of: 3.2.2 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + /to-regex-range/2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + /to-regex-range/5.0.1: + dependencies: + is-number: 7.0.0 + dev: false + engines: + node: '>=8.0' + optional: true + resolution: + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + /to-regex/3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + /toidentifier/1.0.0: + dev: false + engines: + node: '>=0.6' + resolution: + integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + /tough-cookie/2.5.0: + dependencies: + psl: 1.7.0 + punycode: 2.1.1 + dev: false + engines: + node: '>=0.8' + resolution: + integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + /trim-newlines/1.0.0: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM= + /tunnel-agent/0.6.0: + dependencies: + safe-buffer: 5.2.0 + dev: false + resolution: + integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + /tweetnacl/0.14.5: + dev: false + resolution: + integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + /uglify-js/2.4.24: + dependencies: + async: 0.2.10 + source-map: 0.1.34 + uglify-to-browserify: 1.0.2 + yargs: 3.5.4 + dev: false + engines: + node: '>=0.4.0' + hasBin: true + resolution: + integrity: sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4= + /uglify-js/2.6.0: + dependencies: + async: 0.2.10 + source-map: 0.5.7 + uglify-to-browserify: 1.0.2 + yargs: 3.10.0 + dev: false + engines: + node: '>=0.8.0' + hasBin: true + resolution: + integrity: sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE= + /uglify-to-browserify/1.0.2: + dev: false + resolution: + integrity: sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + /union-value/1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + /unique-string/1.0.0: + dependencies: + crypto-random-string: 1.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + /unpipe/1.0.0: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + /unset-value/1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + /unzip-response/2.0.1: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + /upath/1.2.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + /update-notifier/2.5.0: + dependencies: + boxen: 1.3.0 + chalk: 2.4.2 + configstore: 3.1.2 + import-lazy: 2.1.0 + is-ci: 1.2.1 + is-installed-globally: 0.1.0 + is-npm: 1.0.0 + latest-version: 3.1.0 + semver-diff: 2.1.0 + xdg-basedir: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== + /upper-case/1.1.3: + dev: false + resolution: + integrity: sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + /uri-js/4.2.2: + dependencies: + punycode: 2.1.1 + dev: false + resolution: + integrity: sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + /urijs/1.19.2: + dev: false + resolution: + integrity: sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w== + /urix/0.1.0: + dev: false + resolution: + integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + /url-parse-lax/1.0.0: + dependencies: + prepend-http: 1.0.4 + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + /use/3.1.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + /util-deprecate/1.0.2: + dev: false + resolution: + integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + /utils-merge/1.0.1: + dev: false + engines: + node: '>= 0.4.0' + resolution: + integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + /uuid/3.4.0: + dev: false + hasBin: true + resolution: + integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + /validate-npm-package-license/3.0.4: + dependencies: + spdx-correct: 3.1.0 + spdx-expression-parse: 3.0.0 + dev: false + resolution: + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + /vary/1.1.2: + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + /verror/1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: false + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + /warehouse/2.2.0: + dependencies: + JSONStream: 1.3.5 + bluebird: 3.7.2 + cuid: 1.3.8 + graceful-fs: 4.2.3 + is-plain-object: 2.0.4 + lodash: 4.17.15 + dev: false + resolution: + integrity: sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI= + /which/1.3.1: + dependencies: + isexe: 2.0.0 + dev: false + hasBin: true + resolution: + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + /widest-line/2.0.1: + dependencies: + string-width: 2.1.1 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + /window-size/0.1.0: + dev: false + engines: + node: '>= 0.8.0' + resolution: + integrity: sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + /wordwrap/0.0.2: + dev: false + engines: + node: '>=0.4.0' + resolution: + integrity: sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + /wordwrap/0.0.3: + dev: false + engines: + node: '>=0.4.0' + resolution: + integrity: sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + /wrappy/1.0.2: + dev: false + resolution: + integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + /write-file-atomic/2.4.3: + dependencies: + graceful-fs: 4.2.3 + imurmurhash: 0.1.4 + signal-exit: 3.0.2 + dev: false + resolution: + integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + /xdg-basedir/3.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + /yallist/2.1.2: + dev: false + resolution: + integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + /yargs/3.10.0: + dependencies: + camelcase: 1.2.1 + cliui: 2.1.0 + decamelize: 1.2.0 + window-size: 0.1.0 + dev: false + resolution: + integrity: sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + /yargs/3.5.4: + dependencies: + camelcase: 1.2.1 + decamelize: 1.2.0 + window-size: 0.1.0 + wordwrap: 0.0.2 + dev: false + resolution: + integrity: sha1-2K/49mXpTDS9JZvevRv68N3TU2E= + github.com/chrisvfritz/vuejs.org-hexo-generator-alias/67adb814a76750f3c841825f955bd5dd92cd1f20: + dev: false + name: hexo-generator-alias + resolution: + tarball: 'https://codeload.github.com/chrisvfritz/vuejs.org-hexo-generator-alias/tar.gz/67adb814a76750f3c841825f955bd5dd92cd1f20' + version: 0.1.3 +specifiers: + hexo: ^3.6.0 + hexo-deployer-git: 0.3.1 + hexo-generator-alias: 'git+https://github.com/chrisvfritz/vuejs.org-hexo-generator-alias.git' + hexo-generator-archive: ^0.1.5 + hexo-generator-category: ^0.1.3 + hexo-generator-feed: ^1.2.2 + hexo-generator-index: ^0.2.1 + hexo-generator-tag: ^0.2.0 + hexo-offline: ^1.0.0 + hexo-renderer-ejs: ^0.3.1 + hexo-renderer-marked: ^0.3.0 + hexo-renderer-stylus: ^0.3.3 + hexo-server: ^0.3.1 + hoek: ^6.1.2 + request: ^2.85.0 diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index 4ac1204326..acdff64bb5 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -6,7 +6,7 @@ order: 15 ## Base Example -Vue exposes a really nifty API for creating plugins, plugins allow us to modify and add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. +Vue exposes a really nifty API for creating plugins, which allow us to modify existing features or add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. Let's say we want to create a simple abstraction for using Vuex within Vue components, we want to reduce the boilerplate essentially. We can first design how we want the abstraction to look. @@ -49,7 +49,7 @@ import Vue from 'vue' const plugin = { install(LocalVue) { - + // LocalVue is a reference to the Vue constructor } } @@ -199,6 +199,10 @@ new Vue({ }).$mount('#app') ``` +## Real-world example + +Let's say you work on a team that manages multiple front-end projects that use Vue, so you want to reuse code or maybe build a custom API on top of Vue to help speed up development. Creating a Vue plugin and hosting it on NPM or any other package registry makes a lot of sense for this use case, this way the team can install the plugin and use it across all Vue-based projects. + ## Creating a NPM package Creating a NPM package is a bit out of the scope of this cookbook but I believe it is a very important part of making a plugin. I would highly recommend you check out this article on how to create a package [How to make a beautiful, tiny npm package and publish it](https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/). From 80aef2e0f61abcb45641580e5047bd0501ea731d Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 23 Mar 2020 18:55:17 +0200 Subject: [PATCH 07/10] Updated Node.js version to v12.16.1 + Upgraded NPM packages --- .nvmrc | 2 +- package.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.nvmrc b/.nvmrc index 988d5e9ef1..25cf32f60d 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v8.9.4 \ No newline at end of file +v12.16.1 \ No newline at end of file diff --git a/package.json b/package.json index 653846d76a..96e4622836 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "node": ">=8.9.0" }, "dependencies": { - "hexo": "^3.6.0", - "hexo-deployer-git": "0.3.1", + "hexo": "^3.9.0", + "hexo-deployer-git": "^0.3.1", "hexo-generator-alias": "git+https://github.com/chrisvfritz/vuejs.org-hexo-generator-alias.git", "hexo-generator-archive": "^0.1.5", "hexo-generator-category": "^0.1.3", @@ -23,10 +23,10 @@ "hexo-generator-tag": "^0.2.0", "hexo-offline": "^1.0.0", "hexo-renderer-ejs": "^0.3.1", - "hexo-renderer-marked": "^0.3.0", + "hexo-renderer-marked": "^0.3.2", "hexo-renderer-stylus": "^0.3.3", - "hexo-server": "^0.3.1", - "hoek": "^6.1.2", - "request": "^2.85.0" + "hexo-server": "^0.3.3", + "hoek": "^6.1.3", + "request": "^2.88.2" } -} \ No newline at end of file +} From 7ee409f055fe5fcb7f516a9c9d62f171f4463700 Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 30 Mar 2020 18:01:14 +0200 Subject: [PATCH 08/10] Added a codepen embed to the real-world example --- .../cookbook/how-to-use-the-vue-plugin-api.md | 67 ++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index acdff64bb5..d24e3af8e3 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -201,7 +201,72 @@ new Vue({ ## Real-world example -Let's say you work on a team that manages multiple front-end projects that use Vue, so you want to reuse code or maybe build a custom API on top of Vue to help speed up development. Creating a Vue plugin and hosting it on NPM or any other package registry makes a lot of sense for this use case, this way the team can install the plugin and use it across all Vue-based projects. +Let's say that you work on a team that manages multiple Vue-based frontend projects and you have noticed that the way you handle global event listeners in Vue contains too much boilerplate. + +You decide to build a Vue plugin that can help reduce the boilerplate and make it open-source for all those who are maybe experiencing the same issue as you. This is where building a Vue plugin makes a lot of sense. + +### The problem + +This is how you usually handle global events in a Vue component but you are not happy with the boilerplate. + +```vue + +``` + +### The solution + +We can create a wrapper around the adding/removing of global event listeners and make this process feel more *"Vue-like"*. The proposed API would look something like this: + +```vue + +``` + +The idea is that we can add a property to the *Vue Options* called `events` then we can add a property for `window` or `document` to the `events` object. We can define what event we want to listen to on window or document by creating a function named after the event. + +The above solution would handle removing the global events for you under the hood or you can expose methods to remove the events for you like `this.$events.remove.window.contextmenu()` + +The below Codepen contains an implementation of the plugin and how it can be used: + +

+ See the Pen + Vue Plugin by Shailen (@Naidoo) + on CodePen. +

+ ## Creating a NPM package From 37e94e4732b74e60cf0265e7a461e6ed9ff08e9c Mon Sep 17 00:00:00 2001 From: shailen Date: Mon, 30 Mar 2020 20:07:55 +0200 Subject: [PATCH 09/10] Added a reference to te Vuevent plugin --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index d24e3af8e3..af596a2686 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -268,6 +268,8 @@ The below Codepen contains an implementation of the plugin and how it can be use

+I ended up creating the Vue plugin and called it [Vuevent](https://vuevent.netlify.com/), the source code is available on [GitHub](https://github.com/ShailenNaidoo/vuevent) if you want to get a bit deeper into building plugins + ## Creating a NPM package Creating a NPM package is a bit out of the scope of this cookbook but I believe it is a very important part of making a plugin. I would highly recommend you check out this article on how to create a package [How to make a beautiful, tiny npm package and publish it](https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/). From fb5658e506e04dd7ae290886be8245d5a9d0ba04 Mon Sep 17 00:00:00 2001 From: Shailen Naidoo Date: Mon, 6 Apr 2020 16:48:00 +0200 Subject: [PATCH 10/10] Update how-to-use-the-vue-plugin-api.md --- src/v2/cookbook/how-to-use-the-vue-plugin-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md index af596a2686..ec82214526 100644 --- a/src/v2/cookbook/how-to-use-the-vue-plugin-api.md +++ b/src/v2/cookbook/how-to-use-the-vue-plugin-api.md @@ -6,7 +6,7 @@ order: 15 ## Base Example -Vue exposes a really nifty API for creating plugins, which allow us to modify existing features or add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. +Vue exposes a really nifty API for creating plugins, which allows us to modify existing features or add features to Vue. This cookbook is aimed at showing you how to take a simple idea and turn it into a full-fledged Vue plugin. Let's say we want to create a simple abstraction for using Vuex within Vue components, we want to reduce the boilerplate essentially. We can first design how we want the abstraction to look. @@ -282,4 +282,4 @@ In this specific case we just needed to use a mixin, so why don't we just use a ## Wrapping up -Creating Vue plugins has always seemed like something that was not as approachable to just about any developer but once you really dig into it you will see that it is not that hard and just takes some playing around to understand what's happening under the hood. \ No newline at end of file +Creating Vue plugins has always seemed like something that was not as approachable to just about any developer but once you really dig into it you will see that it is not that hard and just takes some playing around to understand what's happening under the hood.