UNPKG

1.08 kBJavaScriptView Raw
1// work-around for bug elsewhere where ways and relations
2// sometimes contain deleted records
3
4var through = require('through2')
5
6module.exports = function (osm) {
7 return through.obj(write)
8
9 function write (row, enc, next) {
10 var pending = 1
11 var nrefs = []
12 ;(row.refs || []).forEach(function (ref, i) {
13 pending++
14 osm.get(ref, function (err, docs) {
15 if (err) return next(err)
16 if (Object.keys(docs).length > 0) nrefs[i] = ref
17 else console.log('SKIP', ref)
18 if (--pending === 0) done()
19 })
20 })
21 var nmembers = []
22 ;(row.members || []).forEach(function (m, i) {
23 pending++
24 osm.get(m.ref, function (err, doc) {
25 if (err) return next(err)
26 if (Object.keys(doc).length > 0) nmembers[i] = m
27 else console.log('SKIP', m.ref)
28 if (--pending === 0) done()
29 })
30 })
31 if (--pending === 0) done()
32
33 function done () {
34 if (row.refs) row.refs = nrefs.filter(Boolean)
35 if (row.members) row.members = nmembers.filter(Boolean)
36 next(null, row)
37 }
38 }
39}