tileblaster 0.4.3 → 0.4.5
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/lib/tileblaster.js +32 -32
- package/package.json +6 -6
package/lib/tileblaster.js
CHANGED
|
@@ -8,17 +8,17 @@ var util = require("util");
|
|
|
8
8
|
var zlib = require("zlib");
|
|
9
9
|
var stream = require("stream");
|
|
10
10
|
|
|
11
|
-
var debug = require("debug")("tileblaster");
|
|
12
11
|
var phin = require("phin");
|
|
13
12
|
var queue = require("quu");
|
|
14
|
-
var
|
|
13
|
+
var walk = require("klaw");
|
|
15
14
|
var dur = require("dur");
|
|
16
15
|
|
|
17
|
-
// optional dependencies;
|
|
16
|
+
// optional dependencies;
|
|
18
17
|
try { var pnck = require("pnck"); } catch (err) { var pnck = null; }
|
|
19
18
|
try { var jpck = require("jpck"); } catch (err) { var jpck = null; }
|
|
20
19
|
try { var zopfli = require("node-zopfli"); } catch (err) { var zopfli = null; }
|
|
21
20
|
try { var versatiles = require("versatiles"); } catch (err) { var versatiles = null; }
|
|
21
|
+
try { var debug = require("debug")("tileblaster"); } catch (err) { var debug = function(){ if (process.env.DEBUG) console.error(...arguments); }}
|
|
22
22
|
|
|
23
23
|
// load package
|
|
24
24
|
var pckg = require("../package.json");
|
|
@@ -198,7 +198,7 @@ tileblaster.prototype.reconfigure = function(config){
|
|
|
198
198
|
// cleanup timer
|
|
199
199
|
self.config.cleanup = (!!self.config.cleanup) ? dur(self.config.cleanup) : false;
|
|
200
200
|
if (!!self.cleaner) clearInterval(self.cleaner);
|
|
201
|
-
if (self.config.cleanup && self.expiration) self.cleaner = setInterval(function(){ self.cleanup(); }, self.config.cleanup).unref();
|
|
201
|
+
if (self.config.cleanup && self.expiration) self.cleaner = setInterval(function(){ self.cleanup(); }, self.config.cleanup).unref(), self.cleanup();
|
|
202
202
|
|
|
203
203
|
};
|
|
204
204
|
|
|
@@ -307,7 +307,16 @@ tileblaster.prototype.listen = function(){
|
|
|
307
307
|
tileblaster.prototype.heartbeat = function(){
|
|
308
308
|
var self = this;
|
|
309
309
|
|
|
310
|
-
if (
|
|
310
|
+
if (!self.config.heartbeat) return;
|
|
311
|
+
|
|
312
|
+
// check if nsa dependency is installed
|
|
313
|
+
try {
|
|
314
|
+
var nsa = require("nsa");
|
|
315
|
+
} catch (err) {
|
|
316
|
+
return debug("<heartbeat> missing dependency: nsa");
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
self.nsa = nsa({
|
|
311
320
|
server: self.config.heartbeat,
|
|
312
321
|
service: self.config.id,
|
|
313
322
|
interval: "10s"
|
|
@@ -351,41 +360,32 @@ tileblaster.prototype.cleanup = function(){
|
|
|
351
360
|
|
|
352
361
|
// clean up error cache
|
|
353
362
|
var d = Date.now();
|
|
354
|
-
self.errcache = self.errcache.
|
|
355
|
-
|
|
356
|
-
|
|
363
|
+
self.errcache = Object.entries(self.errcache).reduce(function(errcache, [ key, value ]){
|
|
364
|
+
if (value.until < d) errcache[key] = value;
|
|
365
|
+
return errcache;
|
|
366
|
+
},{});
|
|
357
367
|
|
|
358
|
-
//
|
|
368
|
+
// delete queue
|
|
369
|
+
var deletequeue = queue(1000);
|
|
370
|
+
var now = Date.now();
|
|
359
371
|
|
|
360
372
|
// clean up map tiles
|
|
361
373
|
Object.keys(self.maps).filter(function(mapid){
|
|
362
374
|
return (!!self.maps[mapid].expires);
|
|
363
375
|
}).forEach(function(mapid){
|
|
364
376
|
self.queue.push(function(done){
|
|
365
|
-
debug("<cleanup>
|
|
366
|
-
|
|
367
|
-
if (
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
var d = 0;
|
|
371
|
-
var q = queue(5).done(function(n){
|
|
372
|
-
return debug("<cleanup> [%s] checked %d files, deleted %d", mapid, n, d), done();
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
files.forEach(function(f){
|
|
376
|
-
q.push(function(next){
|
|
377
|
-
fs.stat(f, function(err, stat){
|
|
378
|
-
if (err) return debug("<cleanup> [%s] err: %s", mapid, err), next();
|
|
379
|
-
// debug("<cleanup> [%s] %d <> %d", f, (Date.now() - (stat.birthtimeMs || stat.ctimeMs)), self.maps[mapid].expires);
|
|
380
|
-
if ((Date.now() - (stat.birthtimeMs || stat.ctimeMs)) < self.maps[mapid].expires) return next();
|
|
381
|
-
fs.unlink(f, function(err){
|
|
382
|
-
if (err) return debug("<cleanup> [%s] err: %s", mapid, err), next();
|
|
383
|
-
d++;
|
|
384
|
-
next();
|
|
385
|
-
});
|
|
386
|
-
});
|
|
387
|
-
});
|
|
377
|
+
debug("<cleanup> start: %s", mapid);
|
|
378
|
+
walk(path.resolve(self.config.tiles, mapid)).on("data", function(f){
|
|
379
|
+
if (f.stats.isFile() && f.stats.mtimeMs+self.maps[mapid].expires < now) deletequeue.push(function(done){
|
|
380
|
+
fs.unlink(f.path, done);
|
|
388
381
|
});
|
|
382
|
+
}).on("error", function(err){
|
|
383
|
+
if (err.code !== "ENOENT") debug("<cleanup> err: %s", err);
|
|
384
|
+
else debug("<cleanup> done: %s", mapid);
|
|
385
|
+
done();
|
|
386
|
+
}).on("end", function(){
|
|
387
|
+
debug("<cleanup> done: %s", mapid);
|
|
388
|
+
done();
|
|
389
389
|
});
|
|
390
390
|
});
|
|
391
391
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tileblaster",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "pretty fast optimizing & compressing tile caching proxy",
|
|
5
5
|
"main": "lib/tileblaster.js",
|
|
6
6
|
"bin": {
|
|
@@ -17,19 +17,19 @@
|
|
|
17
17
|
},
|
|
18
18
|
"homepage": "https://github.com/yetzt/tileblaster#readme",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"debug": "^4.3.4",
|
|
21
20
|
"dur": "^0.0.3",
|
|
22
|
-
"
|
|
21
|
+
"klaw": "^4.1.0",
|
|
23
22
|
"minimist": "^1.2.7",
|
|
24
23
|
"node-watch": "^0.7.3",
|
|
25
|
-
"nsa": "^0.2",
|
|
26
24
|
"phin": "^3.7.0",
|
|
27
25
|
"quu": "^0.4.3"
|
|
28
26
|
},
|
|
29
27
|
"optionalDependencies": {
|
|
30
|
-
"
|
|
28
|
+
"debug": "^4.3.4",
|
|
31
29
|
"jpck": "^1.0.2",
|
|
32
30
|
"node-zopfli": "^2.1.4",
|
|
33
|
-
"
|
|
31
|
+
"nsa": "^0.2",
|
|
32
|
+
"pnck": "^1.0.1",
|
|
33
|
+
"versatiles": "^0.2.0"
|
|
34
34
|
}
|
|
35
35
|
}
|