code: function processProps (instance) {
    let props
    if (isLegacy && (props = instance._props)) {
      // 1.x
      return Object.keys(props).map(key => {
        const prop = props[key]
        const options = prop.options
        return {
          type: 'props',
          key: prop.path,
          value: instance[prop.path],
          meta: options ? {
            type: options.type ? getPropType(options.type) : 'any',
            required: !!options.required,
            mode: propModes[prop.mode]
          } : {}
        }
      })
    } else if ((props = instance.$options.props)) {
      // 2.0
      const propsData = []
      for (let key in props) {
        const prop = props[key]
        key = camelize(key)
        propsData.push({
          type: 'props',
          key,
          value: instance[key],
          meta: prop ? {
            type: prop.type ? getPropType(prop.type) : 'any',
            required: !!prop.required
          } : {
            type: 'invalid'
          },
          editable: SharedData.editableProps
        })
      }
      return propsData
    } else {
      return []
    }
  }
docs: Process the props of an instance.
  Make sure return a plain object because window.postMessage()
  will throw an Error if the passed object contains Functions.
  
  @param {Vue} instance
  @return {Array}