text: import Vue from '../../../../dist/vue.runtime.common.js'
  
  function createRegisterFn(id) {
    return function (context) {
      context = context || this.$vnode.ssrContext
      context.registered.push(id)
    }
  }
  
  function addHooks(comp) {
    const hook = createRegisterFn(comp.name)
    return Object.assign(comp, {
      _ssrRegister: hook,
      beforeCreate: hook
    })
  }
  
  const grandchild = addHooks({
    name: 'grandchild',
    props: ['id'],
    serverCacheKey: props => props.id,
    render(h) {
      return h('div', '/test')
    }
  })
  
  const child = addHooks({
    name: 'child',
    props: ['id'],
    serverCacheKey: props => props.id,
    render(h) {
      return h(grandchild, { props: { id: this.id } })
    }
  })
  
  const app = addHooks({
    name: 'app',
    props: ['id'],
    serverCacheKey: props => props.id,
    render(h) {
      return h(child, { props: { id: this.id } })
    }
  })
  
  export default () => {
    return Promise.resolve(
      new Vue({
        render: h => h(app, { props: { id: 1 } })
      })
    )
  }
  