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.
- package/package.json +1 -1
- package/vtt.js +25 -23
package/package.json
CHANGED
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))
|
|
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
|
};
|