code: function onMetaDownload (block) {
      archive.tree._getAndDecode(block, {}, (err, entry) => {
        if (err || !entry) return
  
        // apply path matching
        if (paths && !match(paths, entry.name)) {
          return
        }
  
        // emit
        emitter.emit('invalidated', {path: entry.name})
  
        // check if we can emit 'changed' now
        var isChanged = false
        if (!entry.value) {
          isChanged = true // a deletion
        } else {
          var st = archive.tree._codec.decode(entry.value)
          var range = {
            start: st.offset,
            end: st.offset + st.blocks
          }
          isChanged = isDownloaded(archive, range)
        }
        if (isChanged) {
          emitter.emit('changed', {path: entry.name})
        }
      })
    }
docs: handlers