vtt 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/vtt.js +25 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vtt",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Vector Tile Transform",
5
5
  "main": "vtt.js",
6
6
  "author": "yetzt <node@yetzt.me>",
package/vtt.js CHANGED
@@ -16,8 +16,10 @@ const vtt = module.exports = function vtt(){
16
16
  const s = this;
17
17
  if (!fn) return s.emit("error", new Error("Missing Modify Function")), done();
18
18
  fn(unpack(Buffer.concat(buf)), function(err, data){ // FIXME error?
19
- if (err) return s.emit("error", new Error(err)), done();
20
- s.emit("data", pack(data)), done();
19
+ if (err) return s.emit("error", new Error(err)), s.emit("end"), done();
20
+ if (data) s.emit("data", pack(data));
21
+ s.emit("end");
22
+ done();
21
23
  });
22
24
  }
23
25
  });
@@ -27,7 +29,7 @@ const vtt = module.exports = function vtt(){
27
29
  const unpack = module.exports.unpack = function unpack(buf){
28
30
  return (new pbf(buf)).readFields(function(tag, layers, pb){
29
31
  if (tag === 0x3) {
30
-
32
+
31
33
  const layer = {
32
34
  version: 1,
33
35
  name: null,
@@ -42,7 +44,7 @@ const unpack = module.exports.unpack = function unpack(buf){
42
44
  case 0xf: l.version = pb.readVarint(); break;
43
45
  case 0x1: l.name = pb.readString(); break;
44
46
  case 0x5: l.extent = pb.readVarint(); break;
45
- case 0x2:
47
+ case 0x2:
46
48
  const feature = { type: 0, properties: [], geometry: -1 };
47
49
  pb.readFields(function(tag, f, pb) {
48
50
  let end;
@@ -85,7 +87,7 @@ const unpack = module.exports.unpack = function unpack(buf){
85
87
  l.features.push(feature);
86
88
  break;
87
89
  case 0x3: l.keys.push(pb.readString()); break;
88
- case 0x4:
90
+ case 0x4:
89
91
  let end = (pb.readVarint()+pb.pos);
90
92
  while (pb.pos < end) {
91
93
  switch (pb.readVarint() >> 3) {
@@ -108,10 +110,10 @@ const unpack = module.exports.unpack = function unpack(buf){
108
110
  return p[layer.keys[v[0]]]=layer.values[v[1]],p;
109
111
  },{}), f;
110
112
  });
111
-
113
+
112
114
  layers.push(layer);
113
115
  }
114
-
116
+
115
117
  }, []);
116
118
  };
117
119
 
@@ -120,15 +122,15 @@ const pack = module.exports.pack = function js2pbf(tile){
120
122
  const pb = new pbf();
121
123
 
122
124
  tile.map(function(layer){
123
-
125
+
124
126
  // destruct properties
125
127
  const keys = {};
126
128
  const values = {};
127
129
  let kidx = 0;
128
130
  let vidx = 0;
129
-
131
+
130
132
  layer.features = layer.features.map(function(feature){
131
-
133
+
132
134
  feature.properties = Object.entries(feature.properties).filter(function([ k, v ]){
133
135
  return (v === null || typeof v !== undefined);
134
136
  }).map(function([ k, v ]){
@@ -139,29 +141,29 @@ const pack = module.exports.pack = function js2pbf(tile){
139
141
  if (!keys.hasOwnProperty(k)) keys[k] = kidx++;
140
142
  if (!values.hasOwnProperty(vk)) values[vk] = [ vidx++, v ];
141
143
  return [ keys[k], values[vk][0] ];
142
-
144
+
143
145
  });
144
-
146
+
145
147
  return feature;
146
-
148
+
147
149
  });
148
-
150
+
149
151
  // flatten keys and values
150
152
  layer.keys = Object.entries(keys).reduce(function(l, [ k, v ]){ return l[v]=k,l },[]);
151
153
  layer.values = Object.entries(values).reduce(function(l, [ k, v ]){ return l[v[0]]=v[1],l },[]);
152
-
154
+
153
155
  return layer;
154
-
156
+
155
157
  }).forEach(function(layer){
156
-
158
+
157
159
  // construct protobuf
158
160
  pb.writeMessage(3, function(l, p){
159
-
161
+
160
162
  // write version, name and extent
161
163
  pb.writeVarintField(15, layer.version || 1);
162
164
  pb.writeStringField(1, layer.name || "");
163
165
  pb.writeVarintField(5, layer.extent || 4096);
164
-
166
+
165
167
  // write keys
166
168
  layer.keys.forEach(function(k){
167
169
  pb.writeStringField(3, k);
@@ -186,12 +188,12 @@ const pack = module.exports.pack = function js2pbf(tile){
186
188
  break;
187
189
  }
188
190
  }, v);
189
-
191
+
190
192
  });
191
193
 
192
194
  // write features
193
195
  layer.features.forEach(function(feature){
194
-
196
+
195
197
  // write feature
196
198
  pb.writeMessage(2, function(){
197
199
 
@@ -206,7 +208,7 @@ const pack = module.exports.pack = function js2pbf(tile){
206
208
  pb.writeVarint(property[1]); // value-id
207
209
  });
208
210
  }, feature.properties);
209
-
211
+
210
212
  // write geometry — https://github.com/mapbox/vector-tile-spec/blob/master/2.1/README.md#43-geometry-encoding
211
213
  pb.writeMessage(4, function(feature, pb){
212
214
  let x = 0, y = 0;
@@ -234,7 +236,7 @@ const pack = module.exports.pack = function js2pbf(tile){
234
236
  });
235
237
  }, layer);
236
238
  });
237
-
239
+
238
240
  return pb.finish();
239
241
 
240
242
  };