You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ms...@apache.org on 2020/05/24 21:10:03 UTC

[incubator-teaclave-website] branch master updated: Add blog

This is an automated email from the ASF dual-hosted git repository.

mssun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave-website.git


The following commit(s) were added to refs/heads/master by this push:
     new d0290c0  Add blog
d0290c0 is described below

commit d0290c0bfb9399e860607f153951d8a41bc3c3eb
Author: Mingshen Sun <bo...@mssun.me>
AuthorDate: Sun May 24 14:09:37 2020 -0700

    Add blog
---
 site/.vuepress/config.js                           |  17 +-
 site/.vuepress/theme/components/util.js            |  57 ++++
 site/.vuepress/theme/global-components/NavLink.vue |  67 +++++
 .../theme/layouts/{Layout.vue => IndexPost.vue}    |  86 +++---
 site/.vuepress/theme/layouts/Layout.vue            |   2 +-
 .../theme/layouts/{Layout.vue => Post.vue}         |  96 ++++---
 site/.vuepress/theme/util/index.js                 |  21 ++
 ...0-01-01-podling-teaclave-report-january-2020.md |  70 +++++
 ...020-04-01-podling-teaclave-report-april-2020.md |  80 ++++++
 site/package.json                                  |   4 +-
 site/yarn.lock                                     | 305 ++++++++++++++++++++-
 11 files changed, 722 insertions(+), 83 deletions(-)

diff --git a/site/.vuepress/config.js b/site/.vuepress/config.js
index a1e04f8..c285784 100644
--- a/site/.vuepress/config.js
+++ b/site/.vuepress/config.js
@@ -10,9 +10,10 @@ module.exports = {
             { text: 'Community', link: '/community/' },
             { text: 'Contributors', link: '/contributors/' },
             { text: 'Documentation', link: '/docs/my-first-function/' },
+            { text: 'Blog', link: '/blog/' },
             { text: 'GitHub', link: 'https://github.com/apache/incubator-teaclave' },
             {
-                text: 'Apache Software Foundation',
+                text: 'ASF',
                 ariaLabel: 'Apache Software Foundation',
                 items: [
                     { text: 'ASF Homepage', link: 'https://www.apache.org/' },
@@ -55,5 +56,19 @@ module.exports = {
     },
     plugins: [
         '@vuepress/plugin-back-to-top',
+        [
+        '@vuepress/blog',
+            {
+                directories: [
+                    {
+                        id: 'blog',
+                        dirname: 'blog',
+                        path: '/blog/',
+                        layout: 'IndexPost',
+                        itemPermalink: '/blog/:year/:month/:day/:slug',
+                    },
+                ],
+            },
+        ],
     ],
 }
diff --git a/site/.vuepress/theme/components/util.js b/site/.vuepress/theme/components/util.js
new file mode 100644
index 0000000..7bd68d6
--- /dev/null
+++ b/site/.vuepress/theme/components/util.js
@@ -0,0 +1,57 @@
+export const hashRE = /#.*$/
+export const extRE = /\.(md|html)$/
+export const endingSlashRE = /\/$/
+export const outboundRE = /^(https?:|mailto:|tel:)/
+
+export function normalize(path) {
+  return decodeURI(path)
+    .replace(hashRE, '')
+    .replace(extRE, '')
+}
+
+export function isExternal(path) {
+  return outboundRE.test(path)
+}
+
+export function isMailto(path) {
+  return /^mailto:/.test(path)
+}
+
+export function isTel(path) {
+  return /^tel:/.test(path)
+}
+
+export function ensureExt(path) {
+  if (isExternal(path)) {
+    return path
+  }
+  const hashMatch = path.match(hashRE)
+  const hash = hashMatch ? hashMatch[0] : ''
+  const normalized = normalize(path)
+
+  if (endingSlashRE.test(normalized)) {
+    return path
+  }
+  return normalized + '.html' + hash
+}
+
+/*
+ * find parent vm by ref
+ * @param {String} ref
+ * @param {Vue} vm
+ * @param {any} def default value
+ * @returns {Element}
+ */
+export function findContainerInVm(ref, vm, def) {
+  if (!ref) return def
+  let container
+  let parent = vm
+  while ((parent = parent.$parent) && !container) {
+    container = parent.$refs[ref]
+  }
+  // Ensure it's html element (ref could be component)
+  if (container && container.$el) {
+    container = container.$el
+  }
+  return container || def
+}
diff --git a/site/.vuepress/theme/global-components/NavLink.vue b/site/.vuepress/theme/global-components/NavLink.vue
new file mode 100644
index 0000000..8420314
--- /dev/null
+++ b/site/.vuepress/theme/global-components/NavLink.vue
@@ -0,0 +1,67 @@
+<template>
+  <router-link
+    v-if="!isExternal(normalizedlink)"
+    class="nav-link"
+    :to="normalizedlink"
+    :exact="exact"
+  >
+    <slot />
+  </router-link>
+  <a
+    v-else
+    :href="normalizedlink"
+    class="nav-link external"
+    :target="
+      isMailto(normalizedlink) || isTel(normalizedlink) ? null : '_blank'
+    "
+    :rel="
+      isMailto(normalizedlink) || isTel(normalizedlink)
+        ? null
+        : 'noopener noreferrer'
+    "
+  >
+    <slot />
+  </a>
+</template>
+
+<script>
+import { isExternal, isMailto, isTel, ensureExt } from '../util'
+
+export default {
+  props: {
+    link: {
+      required: true,
+    },
+  },
+
+  computed: {
+    normalizedlink() {
+      return ensureExt(this.link)
+    },
+
+    exact() {
+      if (this.$site.locales) {
+        return Object.keys(this.$site.locales).some(
+          rootLink => rootLink === this.normalizedlink
+        )
+      }
+      return this.normalizedlink === '/'
+    },
+  },
+
+  methods: {
+    isExternal,
+    isMailto,
+    isTel,
+  },
+}
+</script>
+
+<style lang="stylus">
+.nav-link
+  color $darkTextColor
+
+.nav-link
+  &:hover, &.router-link-active
+    color $accentColor
+</style>
diff --git a/site/.vuepress/theme/layouts/Layout.vue b/site/.vuepress/theme/layouts/IndexPost.vue
similarity index 64%
copy from site/.vuepress/theme/layouts/Layout.vue
copy to site/.vuepress/theme/layouts/IndexPost.vue
index 3298070..f841aad 100644
--- a/site/.vuepress/theme/layouts/Layout.vue
+++ b/site/.vuepress/theme/layouts/IndexPost.vue
@@ -17,8 +17,7 @@
 
     <Sidebar
       :items="sidebarItems"
-      @toggle-sidebar="toggleSidebar"
-    >
+      @toggle-sidebar="toggleSidebar">
       <template #top>
         <slot name="sidebar-top" />
       </template>
@@ -27,19 +26,26 @@
       </template>
     </Sidebar>
 
-    <Home v-if="$page.frontmatter.home" />
+  <main class="page">
+    <slot name="top" />
+    <div id="base-list-layout" class="theme-default-content">
+      <h1>Blog</h1>
+      <article
+        v-for="page in pages"
+        :key="page.key"
+        class="ui-post"
+        itemprop="blogPost"
+        itemscope
+        itemtype="https://schema.org/BlogPosting"
+      >
+        <h3><NavLink :link="page.path">{{ page.title }}</NavLink> · {{ resolvePostDate(page.frontmatter.date) }}</h3>
+      </article>
+    </div>
+    <slot name="bottom" />
+  </main>
+
+  </div>
 
-    <Page
-      v-else
-      :sidebar-items="sidebarItems"
-    >
-      <template #top>
-        <slot name="page-top" />
-      </template>
-      <template #bottom>
-        <slot name="page-bottom" />
-      </template>
-    </Page>
   </div>
 </template>
 
@@ -48,7 +54,13 @@ import Home from '@theme/components/Home.vue'
 import Navbar from '@theme/components/Navbar.vue'
 import Page from '@theme/components/Page.vue'
 import Sidebar from '@theme/components/Sidebar.vue'
-import { resolveSidebarItems } from '../util'
+import Vue from 'vue'
+import dayjs from 'dayjs'
+import { NavigationIcon, ClockIcon, TagIcon } from 'vue-feather-icons'
+import {
+  Pagination,
+  SimplePagination,
+} from '@vuepress/plugin-blog/lib/client/components'
 
 export default {
   name: 'Layout',
@@ -62,11 +74,15 @@ export default {
 
   data () {
     return {
-      isSidebarOpen: false
+      isSidebarOpen: false,
+      paginationComponent: null,
     }
   },
 
   computed: {
+    pages() {
+      return this.$pagination.pages
+    },
     shouldShowNavbar () {
       const { themeConfig } = this.$site
       const { frontmatter } = this.$page
@@ -83,23 +99,8 @@ export default {
         || this.$themeLocaleConfig.nav
       )
     },
-
-    shouldShowSidebar () {
-      const { frontmatter } = this.$page
-      return (
-        !frontmatter.home
-        && frontmatter.sidebar !== false
-        && this.sidebarItems.length
-      )
-    },
-
     sidebarItems () {
-      return resolveSidebarItems(
-        this.$page,
-        this.$page.regularPath,
-        this.$site,
-        this.$localePath
-      )
+      return []
     },
 
     pageClasses () {
@@ -108,12 +109,15 @@ export default {
         {
           'no-navbar': !this.shouldShowNavbar,
           'sidebar-open': this.isSidebarOpen,
-          'no-sidebar': !this.shouldShowSidebar
+          'no-sidebar': true,
         },
         userPageClass
       ]
     }
   },
+  created() {
+    this.paginationComponent = this.getPaginationComponent()
+  },
 
   mounted () {
     this.$router.afterEach(() => {
@@ -145,7 +149,19 @@ export default {
           this.toggleSidebar(false)
         }
       }
-    }
+    },
+    getPaginationComponent() {
+      return Pagination
+    },
+    resolvePostDate(date) {
+      return dayjs(date).format(
+        this.$themeConfig.dateFormat || 'MMM DD YYYY'
+      )
+    },
+    resolvePostTags(tags) {
+      if (!tags || Array.isArray(tags)) return tags
+      return [tags]
+    },
   }
 }
-</script>
+</script>
\ No newline at end of file
diff --git a/site/.vuepress/theme/layouts/Layout.vue b/site/.vuepress/theme/layouts/Layout.vue
index 3298070..d4c28ad 100644
--- a/site/.vuepress/theme/layouts/Layout.vue
+++ b/site/.vuepress/theme/layouts/Layout.vue
@@ -148,4 +148,4 @@ export default {
     }
   }
 }
-</script>
+</script>
\ No newline at end of file
diff --git a/site/.vuepress/theme/layouts/Layout.vue b/site/.vuepress/theme/layouts/Post.vue
similarity index 62%
copy from site/.vuepress/theme/layouts/Layout.vue
copy to site/.vuepress/theme/layouts/Post.vue
index 3298070..0d4a4a9 100644
--- a/site/.vuepress/theme/layouts/Layout.vue
+++ b/site/.vuepress/theme/layouts/Post.vue
@@ -17,8 +17,7 @@
 
     <Sidebar
       :items="sidebarItems"
-      @toggle-sidebar="toggleSidebar"
-    >
+      @toggle-sidebar="toggleSidebar">
       <template #top>
         <slot name="sidebar-top" />
       </template>
@@ -27,19 +26,28 @@
       </template>
     </Sidebar>
 
-    <Home v-if="$page.frontmatter.home" />
-
-    <Page
-      v-else
-      :sidebar-items="sidebarItems"
+  <main class="page">
+    <slot name="top" />
+    <div id="base-list-layout" class="theme-default-content">
+    <article
+      class="vuepress-blog-theme-content"
+      itemscope
+      itemtype="https://schema.org/BlogPosting"
     >
-      <template #top>
-        <slot name="page-top" />
-      </template>
-      <template #bottom>
-        <slot name="page-bottom" />
-      </template>
-    </Page>
+      <header>
+        <h1 class="post-title" itemprop="name headline">
+          {{ $frontmatter.title }}
+        </h1>
+        <div class="publish-date-author">{{ resolvePostDate($frontmatter.date) }} · {{ $frontmatter.author }}</div>
+      </header>
+      <Content itemprop="articleBody" />
+    </article>
+    </div>
+    <slot name="bottom" />
+  </main>
+
+  </div>
+
   </div>
 </template>
 
@@ -48,7 +56,13 @@ import Home from '@theme/components/Home.vue'
 import Navbar from '@theme/components/Navbar.vue'
 import Page from '@theme/components/Page.vue'
 import Sidebar from '@theme/components/Sidebar.vue'
-import { resolveSidebarItems } from '../util'
+import Vue from 'vue'
+import dayjs from 'dayjs'
+import { NavigationIcon, ClockIcon, TagIcon } from 'vue-feather-icons'
+import {
+  Pagination,
+  SimplePagination,
+} from '@vuepress/plugin-blog/lib/client/components'
 
 export default {
   name: 'Layout',
@@ -62,11 +76,18 @@ export default {
 
   data () {
     return {
-      isSidebarOpen: false
+      isSidebarOpen: false,
+      paginationComponent: null,
     }
   },
 
   computed: {
+    sidebarItems () {
+      return []
+    },
+    pages() {
+      return this.$pagination.pages
+    },
     shouldShowNavbar () {
       const { themeConfig } = this.$site
       const { frontmatter } = this.$page
@@ -84,36 +105,21 @@ export default {
       )
     },
 
-    shouldShowSidebar () {
-      const { frontmatter } = this.$page
-      return (
-        !frontmatter.home
-        && frontmatter.sidebar !== false
-        && this.sidebarItems.length
-      )
-    },
-
-    sidebarItems () {
-      return resolveSidebarItems(
-        this.$page,
-        this.$page.regularPath,
-        this.$site,
-        this.$localePath
-      )
-    },
-
     pageClasses () {
       const userPageClass = this.$page.frontmatter.pageClass
       return [
         {
           'no-navbar': !this.shouldShowNavbar,
           'sidebar-open': this.isSidebarOpen,
-          'no-sidebar': !this.shouldShowSidebar
+          'no-sidebar': true,
         },
         userPageClass
       ]
     }
   },
+  created() {
+    this.paginationComponent = this.getPaginationComponent()
+  },
 
   mounted () {
     this.$router.afterEach(() => {
@@ -145,7 +151,25 @@ export default {
           this.toggleSidebar(false)
         }
       }
-    }
+    },
+    getPaginationComponent() {
+      return Pagination
+    },
+    resolvePostDate(date) {
+      return dayjs(date).format(
+        this.$themeConfig.dateFormat || 'ddd MMM DD YYYY'
+      )
+    },
+    resolvePostTags(tags) {
+      if (!tags || Array.isArray(tags)) return tags
+      return [tags]
+    },
   }
 }
 </script>
+
+<style lang="stylus">
+.publish-date-author {
+  margin: -10px 0 40px 0
+}
+</style>
\ No newline at end of file
diff --git a/site/.vuepress/theme/util/index.js b/site/.vuepress/theme/util/index.js
index 23e78f8..65fbc3a 100644
--- a/site/.vuepress/theme/util/index.js
+++ b/site/.vuepress/theme/util/index.js
@@ -238,3 +238,24 @@ function resolveItem (item, pages, base, groupDepth = 1) {
     }
   }
 }
+
+/*
+ * find parent vm by ref
+ * @param {String} ref
+ * @param {Vue} vm
+ * @param {any} def default value
+ * @returns {Element}
+ */
+export function findContainerInVm(ref, vm, def) {
+  if (!ref) return def
+  let container
+  let parent = vm
+  while ((parent = parent.$parent) && !container) {
+    container = parent.$refs[ref]
+  }
+  // Ensure it's html element (ref could be component)
+  if (container && container.$el) {
+    container = container.$el
+  }
+  return container || def
+}
diff --git a/site/blog/2020-01-01-podling-teaclave-report-january-2020.md b/site/blog/2020-01-01-podling-teaclave-report-january-2020.md
new file mode 100644
index 0000000..568fb6d
--- /dev/null
+++ b/site/blog/2020-01-01-podling-teaclave-report-january-2020.md
@@ -0,0 +1,70 @@
+---
+title: Podling Teaclave Report - January 2020
+date: 2020-01-01
+author: The Teacalve PPMC
+---
+
+
+## Teaclave
+
+Teaclave is a universal secure computing platform.
+
+Teaclave has been incubating since 2019-08-20.
+
+### Three most important unfinished issues to address before graduating:
+
+  1. Improving project structure and documentation
+  2. Grow the community (committers, contributors, users)
+  3. Publish Apache release
+
+### Are there any issues that the IPMC or ASF Board need to be aware of?
+
+No.
+
+### How has the community developed since the last report?
+
+  - Since last report, we planned to schedule an online meetup recently.
+  - We have also received contributions of two new contributors.
+  - We draft a roadmap RFC for discussion.
+  - We use GitHub issues to track bugs, features, enhancements. Issues
+labeled with "good first issues" is more approachable for newcomers.
+
+### How has the project developed since the last report?
+
+  - Resolve all renaming issues of INFRA (INFRA-19532)
+  - Refactor components: `teaclave_utils`, `teaclave_config`,
+`teaclave_cli`, `teaclave_binder`
+  - Rewrite README.md to clearly explain the project's highlights in
+security, functionality, and usability.
+  - Start to use protobuf for RPC definition
+  - SGX SDK starts to use Intel SGX SDK v2.7.1
+
+### How would you assess the podling's maturity?
+
+  - [ ] Initial setup
+  - [x] Working towards first release
+  - [ ] Community building
+  - [ ] Nearing graduation
+  - [ ] Other:
+
+### Date of last release:
+
+N/A
+
+### When were the last committers or PPMC members elected?
+
+We haven't started new committers or PPMC members elections yet.
+Currently, our work focus on improving the design and documents to
+make the project more approachable for newcomers.
+
+### Have your mentors been helpful and responsive?
+
+Yes. Last month, we changed name from MesaTEE to Teaclave. There are a
+lot of changes need to be done. The mentors and infra teams help us a
+lot on the transfer.
+
+### Is the PPMC managing the podling's brand / trademarks?
+
+We don't find any 3rd parties incorrectly using the podling's name and
+brand. The VP, Brand has approve the project name.
+(PODLINGNAMESEARCH-175)
diff --git a/site/blog/2020-04-01-podling-teaclave-report-april-2020.md b/site/blog/2020-04-01-podling-teaclave-report-april-2020.md
new file mode 100644
index 0000000..032351e
--- /dev/null
+++ b/site/blog/2020-04-01-podling-teaclave-report-april-2020.md
@@ -0,0 +1,80 @@
+---
+title: Podling Teaclave Report - April 2020
+date: 2020-04-01
+author: The Teacalve PPMC
+---
+
+
+## Teacalve
+
+Teaclave is a universal secure computing platform.
+
+Teaclave has been incubating since 2019-08-20.
+
+### Three most important unfinished issues to address before graduating:
+
+  1. Improving project structure and documentation
+  2. Grow the community (committers, contributors, users)
+  3. Publish Apache release
+
+### Are there any issues that the IPMC or ASF Board need to be aware of?
+
+No.
+
+### How has the community developed since the last report?
+
+  - Since last report, one external contributor has became our regular
+    contributor.
+  - Compared to the last report, we have seen more pull request from external
+    contributors.
+  - We received emails from some companies which are interested in the
+    project and willing to make some contributions for the secure computing
+    community.
+  - Since we are mainly working on GitHub, with the help of the INFRA team,
+    we can sync the notifications of GitHub with our mailing list.
+
+### How has the project developed since the last report?
+
+  - Since last report, the whole project has been refactored to be more
+    functional, as well as readable and approachable for new contributors.
+  - We have rewrote the framework for implementing enclave services. Also, we
+    have redesigned current services into seven core services
+including access control,
+    authentication, execution, frontend, management, scheduler, and storage
+    service. Communication protocols between services are defined in protobuf.
+  - RPC between services has been redesigned to supported TLS-based attestation.
+  - We have added DCAP attestation algorithm in the platform so that people can
+    deploy the system in environments without Intel's attestation service.
+  - Communication between app and enclave has been also redesigned
+with better APIs.
+  - All updates is currently in the `develop` branch. We plan to merge
+into `master`
+    when main refactoring is done.
+
+### How would you assess the podling's maturity?
+Please feel free to add your own commentary.
+
+  - [ ] Initial setup
+  - [x] Working towards first release
+  - [ ] Community building
+  - [ ] Nearing graduation
+  - [ ] Other:
+
+### Date of last release:
+
+N/A
+
+### When were the last committers or PPMC members elected?
+
+We haven't started new committers or PPMC members elections yet. Currently, our
+work focus on improving the design and documents to make the project more
+approachable for newcomers.
+
+### Have your mentors been helpful and responsive?
+
+Yes, our mentors help use to resolve the mailing list moderator issues.
+
+### Is the PPMC managing the podling's brand / trademarks?
+
+We don't find any 3rd parties incorrectly using the podling's name and brand.
+The VP, Brand has approve the project name. (PODLINGNAMESEARCH-175)
diff --git a/site/package.json b/site/package.json
index 60abcb3..b02de95 100644
--- a/site/package.json
+++ b/site/package.json
@@ -1,6 +1,8 @@
 {
   "devDependencies": {
     "@vuepress/plugin-back-to-top": "^1.5.0",
-    "vuepress": "^1.0.0"
+    "@vuepress/plugin-blog": "^1.9.2",
+    "vue-feather-icons": "^5.0.0",
+    "vuepress": "^1.5.0"
   }
 }
diff --git a/site/yarn.lock b/site/yarn.lock
index ebebdb5..a6ab228 100644
--- a/site/yarn.lock
+++ b/site/yarn.lock
@@ -855,6 +855,29 @@
   resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
   integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
 
+"@vssue/api-github-v3@^1.1.2":
+  version "1.4.4"
+  resolved "https://registry.yarnpkg.com/@vssue/api-github-v3/-/api-github-v3-1.4.4.tgz#e32ed6d5910bb87c327de8576c107ee7e53bb6db"
+  integrity sha512-/ZQwO+/XgHz7hnVX6zLIWA0L1fmI4LBzQoRp1J56tonH6gbDpvl/VZ8VHIcSldHnpEsjf8wYmbIEz8rJd7jG2Q==
+  dependencies:
+    "@vssue/utils" "^1.4.0"
+    axios "^0.18.1"
+
+"@vssue/utils@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/@vssue/utils/-/utils-1.4.0.tgz#3cc2fd8492a3409e343289981e2209b6ca2f8313"
+  integrity sha512-3d9WCYNurdFKApFzU8i7YD1GCGhunEVYnwSJxwQ2rDmEdpLneAYNJWg9+QS6bqzB+Pw7ymtwLf/Sqti9+xUGqA==
+  dependencies:
+    date-fns "^1.29.0"
+    qs "^6.6.0"
+
+"@vssue/vuepress-plugin-vssue@^1.2.0":
+  version "1.4.5"
+  resolved "https://registry.yarnpkg.com/@vssue/vuepress-plugin-vssue/-/vuepress-plugin-vssue-1.4.5.tgz#58bb3366e5b1636836e395c9aa66fe83cf1f496a"
+  integrity sha512-MLm+9Tp+xI9qekaCvDVX6rDf/VW+5h6o5yw/q/r/avsLjOUm2d6kuZcW7aXZSGpF6r6KSAcJbdp73sqxyd5PPg==
+  dependencies:
+    vssue "^1.4.5"
+
 "@vue/babel-helper-vue-jsx-merge-props@^1.0.0":
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040"
@@ -1035,6 +1058,20 @@
   dependencies:
     lodash.debounce "^4.0.8"
 
+"@vuepress/plugin-blog@^1.9.2":
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-blog/-/plugin-blog-1.9.2.tgz#d463a218bf54b51a07b87eb703dc1cc9eddeef3c"
+  integrity sha512-1y4C7miuJyhP2YV9+8SGPzcwbyNqQWB1WQQf1AYdWvlAK/QrFdTXOtFyBKoViJppHxIkLLz+45bvOm5sIqjv6w==
+  dependencies:
+    "@vssue/api-github-v3" "^1.1.2"
+    "@vssue/vuepress-plugin-vssue" "^1.2.0"
+    dayjs "^1.8.19"
+    vuejs-paginate "^2.1.0"
+    vuepress-plugin-disqus "^0.2.0"
+    vuepress-plugin-feed "^0.1.8"
+    vuepress-plugin-mailchimp "^1.4.1"
+    vuepress-plugin-sitemap "^2.3.1"
+
 "@vuepress/plugin-last-updated@1.5.0":
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.0.tgz#080ff0d8d8a4dbf5ead83802b4b9dfbf531e50e4"
@@ -1535,6 +1572,19 @@ aws4@^1.8.0:
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
   integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
 
+axios@^0.18.1:
+  version "0.18.1"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3"
+  integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==
+  dependencies:
+    follow-redirects "1.5.10"
+    is-buffer "^2.0.2"
+
+babel-helper-vue-jsx-merge-props@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
+  integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==
+
 babel-loader@^8.0.4:
   version "8.1.0"
   resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3"
@@ -2598,18 +2648,35 @@ dashdash@^1.12.0:
   dependencies:
     assert-plus "^1.0.0"
 
+date-fns@^1.29.0:
+  version "1.30.1"
+  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
+  integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+
+dayjs@^1.8.19:
+  version "1.8.27"
+  resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.27.tgz#a8ae63ee990af28c05c430f0e160ae835a0fbbf8"
+  integrity sha512-Jpa2acjWIeOkg8KURUHICk0EqnEFSSF5eMEscsOgyJ92ZukXwmpmRkPSUka7KHSfbj5eKH30ieosYip+ky9emQ==
+
 de-indent@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
   integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
 
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
   integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
   dependencies:
     ms "2.0.0"
 
+debug@=3.1.0, debug@~3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+  dependencies:
+    ms "2.0.0"
+
 debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
   version "3.2.6"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -2624,13 +2691,6 @@ debug@^4.1.0, debug@^4.1.1:
   dependencies:
     ms "^2.1.1"
 
-debug@~3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
-  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
-  dependencies:
-    ms "2.0.0"
-
 decamelize@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -3254,6 +3314,14 @@ faye-websocket@~0.11.1:
   dependencies:
     websocket-driver ">=0.5.1"
 
+feed@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/feed/-/feed-2.0.4.tgz#14cd71b3bae1e965b81f7e0c5927e8941de996f8"
+  integrity sha512-sWatfulDP6d18qVaWcu34qmq9ml6UeN6nHSBJpNZ2muBqxjPAdT375whPYAHP+gqLfyabtYU5qf2Dv4nqtlp0w==
+  dependencies:
+    luxon "^1.3.3"
+    xml "^1.0.1"
+
 figgy-pudding@^3.5.1:
   version "3.5.2"
   resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -3340,6 +3408,13 @@ flush-write-stream@^1.0.0:
     inherits "^2.0.3"
     readable-stream "^2.3.6"
 
+follow-redirects@1.5.10:
+  version "1.5.10"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+  integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+  dependencies:
+    debug "=3.1.0"
+
 follow-redirects@^1.0.0:
   version "1.11.0"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb"
@@ -3474,6 +3549,11 @@ getpass@^0.1.1:
   dependencies:
     assert-plus "^1.0.0"
 
+github-markdown-css@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/github-markdown-css/-/github-markdown-css-3.0.1.tgz#d08db1060d2e182025e0d07d547cfe2afed30205"
+  integrity sha512-9G5CIPsHoyk5ObDsb/H4KTi23J8KE1oDd4KYU51qwqeM+lKWAiO7abpSgCkyWswgmSKBiuE7/4f8xUz7f2qAiQ==
+
 glob-parent@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -4084,6 +4164,11 @@ is-buffer@^1.1.5:
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
+is-buffer@^2.0.2:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
+  integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+
 is-callable@^1.1.4, is-callable@^1.1.5:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
@@ -4434,6 +4519,13 @@ jsonfile@^4.0.0:
   optionalDependencies:
     graceful-fs "^4.1.6"
 
+jsonp@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/jsonp/-/jsonp-0.2.1.tgz#a65b4fa0f10bda719a05441ea7b94c55f3e15bae"
+  integrity sha1-pltPoPEL2nGaBUQep7lMVfPhW64=
+  dependencies:
+    debug "^2.1.3"
+
 jsprim@^1.2.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4564,6 +4656,11 @@ lodash._reinterpolate@^3.0.0:
   resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
   integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
 
+lodash.chunk@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc"
+  integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=
+
 lodash.clonedeep@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
@@ -4574,6 +4671,16 @@ lodash.debounce@^4.0.8:
   resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
   integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
 
+lodash.defaultsdeep@4.6.1:
+  version "4.6.1"
+  resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
+  integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
+
+lodash.isempty@4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
+  integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=
+
 lodash.kebabcase@^4.1.1:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
@@ -4584,6 +4691,16 @@ lodash.memoize@^4.1.2:
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
   integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
 
+lodash.padstart@^4.6.1:
+  version "4.6.1"
+  resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b"
+  integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=
+
+lodash.sortby@^4.7.0:
+  version "4.7.0"
+  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+  integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
 lodash.template@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
@@ -4599,6 +4716,16 @@ lodash.templatesettings@^4.0.0:
   dependencies:
     lodash._reinterpolate "^3.0.0"
 
+lodash.trimend@^4.5.1:
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f"
+  integrity sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8=
+
+lodash.trimstart@^4.5.1:
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1"
+  integrity sha1-j/TexTLYJIavWVc8OURZFOlEp/E=
+
 lodash.uniq@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -4651,6 +4778,11 @@ lru-cache@^5.1.1:
   dependencies:
     yallist "^3.0.2"
 
+luxon@^1.3.3:
+  version "1.24.1"
+  resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a"
+  integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg==
+
 make-dir@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -5964,6 +6096,11 @@ qs@6.7.0:
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
   integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
 
+qs@^6.6.0:
+  version "6.9.4"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
+  integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
+
 qs@~6.5.2:
   version "6.5.2"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
@@ -5978,6 +6115,15 @@ query-string@^5.0.1:
     object-assign "^4.1.0"
     strict-uri-encode "^1.0.0"
 
+query-string@^6.9.0:
+  version "6.12.1"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.12.1.tgz#2ae4d272db4fba267141665374e49a1de09e8a7c"
+  integrity sha512-OHj+zzfRMyj3rmo/6G8a5Ifvw3AleL/EbcHMD27YA31Q+cO5lfmQxECkImuNVjcskLcvBRVHNAB3w6udMs1eAA==
+  dependencies:
+    decode-uri-component "^0.2.0"
+    split-on-first "^1.0.0"
+    strict-uri-encode "^2.0.0"
+
 querystring-es3@^0.2.0, querystring-es3@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -6162,6 +6308,11 @@ relateurl@0.2.x:
   resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
   integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
 
+remove-markdown@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98"
+  integrity sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=
+
 remove-trailing-separator@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -6502,6 +6653,16 @@ simple-swizzle@^0.2.2:
   dependencies:
     is-arrayish "^0.3.1"
 
+sitemap@^3.0.0:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-3.2.2.tgz#3f77c358fa97b555c879e457098e39910095c62b"
+  integrity sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==
+  dependencies:
+    lodash.chunk "^4.2.0"
+    lodash.padstart "^4.6.1"
+    whatwg-url "^7.0.0"
+    xmlbuilder "^13.0.0"
+
 slash@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
@@ -6647,6 +6808,11 @@ spdy@^4.0.2:
     select-hose "^2.0.0"
     spdy-transport "^3.0.0"
 
+split-on-first@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+  integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
 split-string@^3.0.1, split-string@^3.0.2:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
@@ -6748,6 +6914,11 @@ strict-uri-encode@^1.0.0:
   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
   integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
 
+strict-uri-encode@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+  integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
+
 string-width@^3.0.0, string-width@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
@@ -6850,6 +7021,11 @@ strip-json-comments@~2.0.1:
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
   integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
 
+striptags@3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd"
+  integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0=
+
 stylehacks@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -7081,6 +7257,13 @@ tough-cookie@~2.5.0:
     psl "^1.1.28"
     punycode "^2.1.1"
 
+tr46@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+  integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+  dependencies:
+    punycode "^2.1.0"
+
 tslib@^1.9.0:
   version "1.13.0"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
@@ -7387,11 +7570,44 @@ vm-browserify@^1.0.1:
   resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
   integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
 
+vssue@^1.4.5:
+  version "1.4.5"
+  resolved "https://registry.yarnpkg.com/vssue/-/vssue-1.4.5.tgz#ae2e9c193ddc61338c01f216a9ae2814ff869f9a"
+  integrity sha512-/DVQDeA9e9PFhjGIcIOFaTVuuQgUNjnt5zcRSuMWo+e3+2xaeGE9nZVqMT63eutogvHqjphhM7SGHqW6H09M1Q==
+  dependencies:
+    "@vssue/utils" "^1.4.0"
+    github-markdown-css "^3.0.1"
+    vue "^2.6.10"
+    vue-i18n "^8.11.2"
+    vue-property-decorator "^8.1.1"
+
+vue-class-component@^7.1.0:
+  version "7.2.3"
+  resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.3.tgz#a5b1abd53513a72ad51098752e2dedd499807cca"
+  integrity sha512-oEqYpXKaFN+TaXU+mRLEx8dX0ah85aAJEe61mpdoUrq0Bhe/6sWhyZX1JjMQLhVsHAkncyhedhmCdDVSasUtDw==
+
+vue-disqus@^3.0.5:
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/vue-disqus/-/vue-disqus-3.0.5.tgz#8d0dd5cabdba7c47f82d129d2907a64366842fa8"
+  integrity sha512-T3Y68lXf5W2lYt6j4Y3kZ4opLPH0EAzqriy11MS4D4Q2+UN0tFuUXeYP1MxfvdyaCEboXSM6CUswxsULuNV70Q==
+
+vue-feather-icons@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/vue-feather-icons/-/vue-feather-icons-5.0.0.tgz#f804304907d648667b879525b094bab1f7413140"
+  integrity sha512-uvi2l3i0aeRRzG3vX24/AH+8BkcXkSJboAv8XkUZ6aPkEC9n6LXDcKp5/ho+3moVQ9wlga3N6BjL89pmkHBzPw==
+  dependencies:
+    babel-helper-vue-jsx-merge-props "^2.0.2"
+
 vue-hot-reload-api@^2.3.0:
   version "2.3.4"
   resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
   integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
 
+vue-i18n@^8.11.2:
+  version "8.17.7"
+  resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.17.7.tgz#d87e653e815a07f86e2c2dfe35261e6ea105c38a"
+  integrity sha512-7IQJ+72IIIxfR6Mt+X6EDmMP1i5oETFpc0FttnWKA9cgacf1DAlyho1aTItekG+AkbNs6nz4q3sYrXaPdC0irA==
+
 vue-loader@^15.7.1:
   version "15.9.2"
   resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.2.tgz#ae01f5f4c9c6a04bff4483912e72ef91a402c1ae"
@@ -7403,6 +7619,13 @@ vue-loader@^15.7.1:
     vue-hot-reload-api "^2.3.0"
     vue-style-loader "^4.1.0"
 
+vue-property-decorator@^8.1.1:
+  version "8.4.2"
+  resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-8.4.2.tgz#016e17f259f73bc547e77a50ce282ba18db4ee41"
+  integrity sha512-IqbARlvgPE2pzKfbecKxsu2yEH0Wv7hfHR6m4eZA3LTnNw9hveAX77vDfLFyTeMISS5N7Kucp/xRSHjcQ6bAfQ==
+  dependencies:
+    vue-class-component "^7.1.0"
+
 vue-router@^3.1.3:
   version "3.1.6"
   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.6.tgz#45f5a3a3843e31702c061dd829393554e4328f89"
@@ -7448,6 +7671,11 @@ vue@^2.6.10:
   resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
   integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
 
+vuejs-paginate@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/vuejs-paginate/-/vuejs-paginate-2.1.0.tgz#93e1ad1539b713a688c7a2d3080bda60fcc6c77d"
+  integrity sha512-gnwyXlmCiDOu9MLWxN5UJ4PGijKGNOMpHG8ujsrynCzTJljn/rp7Jq0WiDGDAMi5/u0AHuYIHhced+tUW4jblA==
+
 vuepress-html-webpack-plugin@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz#219be272ad510faa8750d2d4e70fd028bfd1c16e"
@@ -7468,6 +7696,41 @@ vuepress-plugin-container@^2.0.2:
   dependencies:
     markdown-it-container "^2.0.0"
 
+vuepress-plugin-disqus@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/vuepress-plugin-disqus/-/vuepress-plugin-disqus-0.2.0.tgz#0a5bde424f81e0185eda36fba23d7ac4cae6ff07"
+  integrity sha512-kx+AeVzjJ9lx9bufLt1/X35V1VXfnQ1srkDMIzFKD9NyQ3eycsWQRcGO1dFe1HMrY3+7fTu+1/JeUEUEpGZ5tw==
+  dependencies:
+    vue-disqus "^3.0.5"
+
+vuepress-plugin-feed@^0.1.8:
+  version "0.1.8"
+  resolved "https://registry.yarnpkg.com/vuepress-plugin-feed/-/vuepress-plugin-feed-0.1.8.tgz#134c69f98c71994d17f926e3c7c2ad006f573195"
+  integrity sha512-ZDJ2KTAxdeXiykBKOWTht4qleImaY9OEbm9cqQdc/54j0P45ax1PhJjsq5aTs3GcIE1nbZKLCd4fSzhRY6bijg==
+  dependencies:
+    feed "2.0.4"
+    lodash.defaultsdeep "4.6.1"
+    lodash.isempty "4.4.0"
+    lodash.trimend "^4.5.1"
+    lodash.trimstart "^4.5.1"
+    remove-markdown "0.3.0"
+    striptags "3.1.1"
+
+vuepress-plugin-mailchimp@^1.4.1:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/vuepress-plugin-mailchimp/-/vuepress-plugin-mailchimp-1.4.2.tgz#373fa1df8f03a8993817b09ddfb8bd9d04a1c665"
+  integrity sha512-4t5ZaKZXu5ZkwgE+WW//7CgXgz6DEhRefGrO5aql4PwapauNXlHKgQ2JMf9FRe5y5WHjNpDHYveEDNzISZmxJw==
+  dependencies:
+    jsonp "^0.2.1"
+    query-string "^6.9.0"
+
+vuepress-plugin-sitemap@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz#51298aca77a5de96396fdbd1103e1637dd61ae6a"
+  integrity sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ==
+  dependencies:
+    sitemap "^3.0.0"
+
 vuepress-plugin-smooth-scroll@^0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz#6eff2d4c186cca917cc9f7df2b0af7de7c8c6438"
@@ -7475,7 +7738,7 @@ vuepress-plugin-smooth-scroll@^0.0.3:
   dependencies:
     smoothscroll-polyfill "^0.4.3"
 
-vuepress@^1.0.0:
+vuepress@^1.5.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.5.0.tgz#690ed2b190844c2e53665df1e211a5fb107a8de7"
   integrity sha512-Th07IdRtD6EiDGtlNwohQqfYorkDVdUkOHjLEC+T6k79Vfj7f0vv3tswmLrFb+sZvRxdfESOHDlpatxUZDjSmA==
@@ -7512,6 +7775,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
   dependencies:
     minimalistic-assert "^1.0.0"
 
+webidl-conversions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+  integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
 webpack-chain@^4.9.0:
   version "4.12.1"
   resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6"
@@ -7665,6 +7933,15 @@ websocket-extensions@>=0.1.1:
   resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
   integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
 
+whatwg-url@^7.0.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+  integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+  dependencies:
+    lodash.sortby "^4.7.0"
+    tr46 "^1.0.1"
+    webidl-conversions "^4.0.2"
+
 when@~3.6.x:
   version "3.6.4"
   resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e"
@@ -7732,6 +8009,16 @@ xdg-basedir@^4.0.0:
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
   integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
 
+xml@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
+  integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=
+
+xmlbuilder@^13.0.0:
+  version "13.0.2"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7"
+  integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==
+
 xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org