From 5bafbdfaa016fa5818dbb3683648b0591a3ff7cd Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 29 Aug 2014 17:03:31 +0200 Subject: [PATCH 01/23] Changes mapnik dependency in windshaft module to use node-mapnik 1.4.13 which is based on mapnik-2.3.x --- npm-shrinkwrap.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index afe3439d..dfd6a15f 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -928,8 +928,7 @@ } }, "mapnik": { - "version": "0.7.26-cdb1", - "from": "http://github.com/Vizzuality/node-mapnik/tarball/0.7.26-cdb1" + "version": "1.4.13" }, "carto": { "version": "0.9.5-cdb3", From 3b96f0d5355b57845dc879f63878981f214f04f9 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 24 Sep 2014 15:54:13 +0200 Subject: [PATCH 02/23] Starts using mapnik 2.3.x via windshaft upgrade --- NEWS.md | 3 + npm-shrinkwrap.json | 302 +++++++++++++++++++++++++++++++--- package.json | 2 +- test/acceptance/multilayer.js | 10 +- test/acceptance/server.js | 6 +- 5 files changed, 290 insertions(+), 33 deletions(-) diff --git a/NEWS.md b/NEWS.md index 5cefa031..a95f6e61 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ 1.16.2 -- 2014-mm-dd -------------------- +New features: + - Starts using mapnik 2.3.x + Enhancements: - Upgrades windshaft and cartodb-redis - Supports `!scale_denominator!` dynamic param in SQL queries diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index dfd6a15f..a21dfbb5 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -10,20 +10,27 @@ "version": "1.6.0" }, "windshaft": { - "version": "0.25.1", - "from": "https://github.com/CartoDB/Windshaft/tarball/0.25.1", + "version": "0.27.0", + "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", "dependencies": { + "chronograph": { + "version": "0.1.0", + "from": "git://github.com/CartoDB/chronographjs.git#0.1.0" + }, "grainstore": { - "version": "0.20.0", - "from": "git://github.com/CartoDB/grainstore.git#0.20.0", + "version": "0.22.0", + "from": "https://github.com/CartoDB/grainstore/tarball/0.22.0", "dependencies": { "carto": { "version": "0.9.5-cdb2", - "from": "http://github.com/CartoDB/carto/tarball/0.9.5-cdb2", + "from": "https://github.com/CartoDB/carto/tarball/0.9.5-cdb2", "dependencies": { "underscore": { "version": "1.4.4" }, + "mapnik-reference": { + "version": "5.0.9" + }, "xml2js": { "version": "0.2.8", "dependencies": { @@ -45,9 +52,6 @@ } } }, - "mapnik-reference": { - "version": "5.0.9" - }, "millstone": { "version": "0.6.14", "dependencies": { @@ -891,27 +895,275 @@ } } }, + "mapnik": { + "version": "1.4.15", + "from": "https://github.com/CartoDB/node-mapnik/tarball/1.4.15-cdb", + "dependencies": { + "nan": { + "version": "1.2.0" + }, + "mapnik-vector-tile": { + "version": "0.5.5" + }, + "node-pre-gyp": { + "version": "0.5.25", + "dependencies": { + "nopt": { + "version": "3.0.1", + "dependencies": { + "abbrev": { + "version": "1.0.5" + } + } + }, + "npmlog": { + "version": "0.1.1", + "dependencies": { + "ansi": { + "version": "0.3.0" + } + } + }, + "request": { + "version": "2.40.0", + "dependencies": { + "qs": { + "version": "1.0.2" + }, + "json-stringify-safe": { + "version": "5.0.0" + }, + "mime-types": { + "version": "1.0.2" + }, + "forever-agent": { + "version": "0.5.2" + }, + "node-uuid": { + "version": "1.4.1" + }, + "tough-cookie": { + "version": "0.12.1", + "dependencies": { + "punycode": { + "version": "1.3.1" + } + } + }, + "form-data": { + "version": "0.1.4", + "dependencies": { + "combined-stream": { + "version": "0.0.5", + "dependencies": { + "delayed-stream": { + "version": "0.0.5" + } + } + }, + "mime": { + "version": "1.2.11" + }, + "async": { + "version": "0.9.0" + } + } + }, + "tunnel-agent": { + "version": "0.4.0" + }, + "http-signature": { + "version": "0.10.0", + "dependencies": { + "assert-plus": { + "version": "0.1.2" + }, + "asn1": { + "version": "0.1.11" + }, + "ctype": { + "version": "0.5.2" + } + } + }, + "oauth-sign": { + "version": "0.3.0" + }, + "hawk": { + "version": "1.1.1", + "dependencies": { + "hoek": { + "version": "0.9.1" + }, + "boom": { + "version": "0.4.2" + }, + "cryptiles": { + "version": "0.2.2" + }, + "sntp": { + "version": "0.2.4" + } + } + }, + "aws-sign2": { + "version": "0.5.0" + }, + "stringstream": { + "version": "0.0.4" + } + } + }, + "semver": { + "version": "3.0.1" + }, + "tar": { + "version": "1.0.1", + "dependencies": { + "block-stream": { + "version": "0.0.7" + }, + "fstream": { + "version": "1.0.2", + "dependencies": { + "graceful-fs": { + "version": "3.0.2" + } + } + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "tar-pack": { + "version": "2.0.0", + "dependencies": { + "uid-number": { + "version": "0.0.3" + }, + "once": { + "version": "1.1.1" + }, + "debug": { + "version": "0.7.4" + }, + "fstream": { + "version": "0.1.31", + "dependencies": { + "graceful-fs": { + "version": "3.0.2" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "tar": { + "version": "0.1.20", + "dependencies": { + "block-stream": { + "version": "0.0.7" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "fstream-ignore": { + "version": "0.0.7", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "dependencies": { + "lru-cache": { + "version": "2.5.0" + }, + "sigmund": { + "version": "1.0.0" + } + } + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "readable-stream": { + "version": "1.0.31", + "dependencies": { + "core-util-is": { + "version": "1.0.1" + }, + "isarray": { + "version": "0.0.1" + }, + "string_decoder": { + "version": "0.10.31" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "graceful-fs": { + "version": "1.2.3" + } + } + }, + "mkdirp": { + "version": "0.5.0", + "dependencies": { + "minimist": { + "version": "0.0.8" + } + } + }, + "rc": { + "version": "0.5.1", + "dependencies": { + "minimist": { + "version": "0.0.10" + }, + "deep-extend": { + "version": "0.2.11" + }, + "strip-json-comments": { + "version": "0.1.3" + }, + "ini": { + "version": "1.1.0" + } + } + }, + "rimraf": { + "version": "2.2.8" + } + } + } + } + }, "tilelive": { - "version": "4.4.3", + "version": "4.5.3", "dependencies": { "optimist": { - "version": "0.3.7", + "version": "0.6.1", "dependencies": { "wordwrap": { "version": "0.0.2" + }, + "minimist": { + "version": "0.0.10" } } }, "sphericalmercator": { "version": "1.0.2" - }, - "underscore": { - "version": "1.3.3" } } }, "tilelive-mapnik": { - "version": "0.6.9", + "version": "0.6.11", "dependencies": { "underscore": { "version": "1.3.3" @@ -927,9 +1179,6 @@ } } }, - "mapnik": { - "version": "1.4.13" - }, "carto": { "version": "0.9.5-cdb3", "from": "http://github.com/CartoDB/carto/tarball/0.9.5-cdb3", @@ -980,8 +1229,13 @@ "version": "2.9.203" }, "cartodb-redis": { - "version": "0.10.0", - "from": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.10.0" + "version": "0.11.0", + "from": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", + "dependencies": { + "dot": { + "version": "1.0.2" + } + } }, "cartodb-psql": { "version": "0.4.0", @@ -1028,13 +1282,13 @@ "version": "1.3.7" }, "log4js": { - "version": "0.6.17", + "version": "0.6.21", "dependencies": { "async": { - "version": "0.1.15" + "version": "0.2.10" }, "readable-stream": { - "version": "1.0.27-1", + "version": "1.0.32", "dependencies": { "core-util-is": { "version": "1.0.1" @@ -1043,7 +1297,7 @@ "version": "0.0.1" }, "string_decoder": { - "version": "0.10.25-1" + "version": "0.10.31" }, "inherits": { "version": "2.0.1" @@ -1099,7 +1353,7 @@ "version": "1.0.7" }, "debug": { - "version": "1.0.4", + "version": "2.0.0", "dependencies": { "ms": { "version": "0.6.2" diff --git a/package.json b/package.json index 99627479..1f542da7 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "dependencies": { "node-varnish": "https://github.com/Vizzuality/node-varnish/tarball/0.3.0", "underscore" : "~1.6.0", - "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.26.0", + "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", "step": "~0.0.5", "request": "~2.9.203", "cartodb-redis": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", diff --git a/test/acceptance/multilayer.js b/test/acceptance/multilayer.js index 77474a6b..ed1b1f4c 100644 --- a/test/acceptance/multilayer.js +++ b/test/acceptance/multilayer.js @@ -157,7 +157,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' }, {}, function(res) { assert.equal(res.statusCode, 200, res.body); - assert.equal(res.headers['content-type'], "text/javascript; charset=utf-8; charset=utf-8"); + assert.equal(res.headers['content-type'], "application/json; charset=utf-8"); assert.utfgridEqualsFile(res.body, 'test/fixtures/test_table_0_0_0_multilayer1.layer0.grid.json', 2, function(err, similarity) { next(err); @@ -175,7 +175,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' }, {}, function(res) { assert.equal(res.statusCode, 200, res.body); - assert.equal(res.headers['content-type'], "text/javascript; charset=utf-8; charset=utf-8"); + assert.equal(res.headers['content-type'], "application/json; charset=utf-8"); assert.utfgridEqualsFile(res.body, 'test/fixtures/test_table_0_0_0_multilayer1.layer1.grid.json', 2, function(err, similarity) { next(err); @@ -458,7 +458,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' }, {}, function(res) { assert.equal(res.statusCode, 200, res.body); - assert.equal(res.headers['content-type'], "text/javascript; charset=utf-8; charset=utf-8"); + assert.equal(res.headers['content-type'], "application/json; charset=utf-8"); assert.utfgridEqualsFile(res.body, 'test/fixtures/test_multilayer_bbox.grid.json', 2, function(err, similarity) { next(err); @@ -476,7 +476,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' }, {}, function(res) { assert.equal(res.statusCode, 200, res.body); - assert.equal(res.headers['content-type'], "text/javascript; charset=utf-8; charset=utf-8"); + assert.equal(res.headers['content-type'], "application/json; charset=utf-8"); assert.utfgridEqualsFile(res.body, 'test/fixtures/test_multilayer_bbox.grid.json', 2, function(err, similarity) { next(err); @@ -752,7 +752,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' }, {}, function(res) { assert.equal(res.statusCode, 200, res.body); - assert.equal(res.headers['content-type'], "text/javascript; charset=utf-8; charset=utf-8"); + assert.equal(res.headers['content-type'], "application/json; charset=utf-8"); next(err); }); }, diff --git a/test/acceptance/server.js b/test/acceptance/server.js index 280d54d1..a2e2324e 100644 --- a/test/acceptance/server.js +++ b/test/acceptance/server.js @@ -586,7 +586,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' },{ status: 200, - headers: { 'Content-Type': 'text/javascript; charset=utf-8; charset=utf-8', + headers: { 'Content-Type': 'application/json; charset=utf-8', 'X-Cache-Channel': test_database+':gadm4' } }, function() { done(); }); }); @@ -598,7 +598,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' },{ status: 200, - headers: { 'Content-Type': 'text/javascript; charset=utf-8; charset=utf-8' } + headers: { 'Content-Type': 'application/json; charset=utf-8' } }, function() { done(); }); }); @@ -610,7 +610,7 @@ suite('multilayer:postgres=' + cdbQueryTablesFromPostgresEnabledValue, function( method: 'GET' },{ status: 200, - headers: { 'Content-Type': 'text/javascript; charset=utf-8; charset=utf-8' } + headers: { 'Content-Type': 'application/json; charset=utf-8' } }, function() { done(); }); }); From f88f0b5019ea4dbcf62a5cf845b09ffa9e703df2 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 24 Sep 2014 16:02:31 +0200 Subject: [PATCH 03/23] Modify travis configuration to be able to compile node-mapnik with mapnik 2.3.x --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5b2a4b9b..cec4f06f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,13 @@ before_install: - sudo apt-add-repository --yes ppa:cartodb/postgresql-9.3 - sudo apt-add-repository --yes ppa:cartodb/gis - sudo rm -Rf /var/lib/postgresql /etc/postgresql - - sudo apt-add-repository --yes ppa:mapnik/v2.1.0 + - sudo apt-add-repository --yes ppa:mapnik/nightly-2.3 - sudo apt-get update - sudo apt-get install -y postgresql-9.3-postgis-2.1 - sudo apt-get install -y postgresql-contrib-9.3 - - sudo apt-get install -y libmapnik-dev + - sudo apt-get install -q libprotobuf-dev protobuf-compiler + - sudo apt-get install -q libmapnik-dev + - sudo apt-get install -q mapnik-input-plugin-gdal mapnik-input-plugin-ogr mapnik-input-plugin-postgis - sudo apt-get install -y gdal-bin - echo -e "local\tall\tall\ttrust\nhost\tall\tall\t127.0.0.1/32\ttrust\nhost\tall\tall\t::1/128\ttrust" |sudo tee /etc/postgresql/9.3/main/pg_hba.conf - sudo service postgresql restart From 4c5bc13c7fe86e7e45638c5f26899e8891238747 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 24 Sep 2014 19:11:53 +0200 Subject: [PATCH 04/23] Check style fixes --- lib/cartodb/template_maps.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index c5ca91d4..8e61a42c 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -38,7 +38,7 @@ function TemplateMaps(redis_pool, signed_maps, opts) { // // We have the following datastores: // - // 1. User teplates: set of per-user map templates + // 1. User templates: set of per-user map templates // NOTE: each template would have an associated auth // reference, see signed_maps.js @@ -150,7 +150,7 @@ o._checkInvalidTemplate = function(template) { if ( ! phold[k].hasOwnProperty('type') ) { return new Error("Missing type for placeholder '" + k + "'"); } - }; + } // Check certificate validity var cert = this.getTemplateCertificate(template); @@ -168,12 +168,11 @@ o._checkInvalidTemplate = function(template) { // SignedMaps.addCertificate or SignedMaps.authorizedByCert // o.getTemplateCertificate = function(template) { - var cert = { - version: '0.0.1', - template_id: template.name, - auth: template.auth + return { + version: '0.0.1', + template_id: template.name, + auth: template.auth }; - return cert; }; // Add a template @@ -519,9 +518,8 @@ o.getTemplate = function(owner, tpl_id, callback) { }, function parseTemplate(err, tpl_val) { if ( err ) throw err; - var tpl = JSON.parse(tpl_val); // Should we strip auth_id ? - return tpl; + return JSON.parse(tpl_val); }, function finish(err, tpl) { callback(err, tpl); From abf0fa1b32203569e7791879612ee33a3199a2c1 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 24 Sep 2014 19:12:43 +0200 Subject: [PATCH 05/23] Remove unused var --- lib/cartodb/template_maps.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 8e61a42c..255f367a 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -2,9 +2,6 @@ var crypto = require('crypto'); var Step = require('step'); var _ = require('underscore'); -// Templates in this hash (keyed as @) -// are being worked on. -var user_template_locks = {}; // Class handling map templates // From 1c10b8193ba26d38d7247d2c59f7df4821f5d138 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 24 Sep 2014 19:17:51 +0200 Subject: [PATCH 06/23] Adds dot to compile templates --- lib/cartodb/template_maps.js | 33 ++++++++++++++------------------- package.json | 1 + 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 255f367a..63b16971 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -1,7 +1,7 @@ -var crypto = require('crypto'); -var Step = require('step'); -var _ = require('underscore'); - +var crypto = require('crypto'), + Step = require('step'), + _ = require('underscore'), + dot = require('dot'); // Class handling map templates // @@ -40,12 +40,11 @@ function TemplateMaps(redis_pool, signed_maps, opts) { // reference, see signed_maps.js // User templates (HASH:tpl_id->tpl_val) - this.key_usr_tpl = "map_tpl|<%= owner %>"; + this.key_usr_tpl = dot.template("map_tpl|{{=it.owner}}"); // User template locks (HASH:tpl_id->ctime) - this.key_usr_tpl_lck = "map_tpl|<%= owner %>|locks"; - -}; + this.key_usr_tpl_lck = dot.template("map_tpl|{{=it.owner}}|locks"); +} var o = TemplateMaps.prototype; @@ -94,13 +93,12 @@ o._redisCmd = function(redisFunc, redisArgs, callback) { // @param callback function(err, obtained) o._obtainTemplateLock = function(owner, tpl_id, callback) { - var usr_tpl_lck_key = _.template(this.key_usr_tpl_lck, {owner:owner}); var that = this; var gotLock = false; Step ( function obtainLock() { var ctime = Date.now(); - that._redisCmd('HSETNX', [usr_tpl_lck_key, tpl_id, ctime], this); + that._redisCmd('HSETNX', [that.key_usr_tpl_lck({owner:owner}), tpl_id, ctime], this); }, function checkLock(err, locked) { if ( err ) throw err; @@ -119,8 +117,7 @@ o._obtainTemplateLock = function(owner, tpl_id, callback) { // @param callback function(err, deleted) o._releaseTemplateLock = function(owner, tpl_id, callback) { - var usr_tpl_lck_key = _.template(this.key_usr_tpl_lck, {owner:owner}); - this._redisCmd('HDEL', [usr_tpl_lck_key, tpl_id], callback); + this._redisCmd('HDEL', [this.key_usr_tpl_lck({owner:owner}), tpl_id], callback); }; o._reValidIdentifier = /^[a-zA-Z][0-9a-zA-Z_]*$/; @@ -205,7 +202,7 @@ o.addTemplate = function(owner, template, callback) { // // - var usr_tpl_key = _.template(this.key_usr_tpl, {owner:owner}); + var usr_tpl_key = this.key_usr_tpl({owner:owner}); var gotLock = false; var that = this; var limit = that._userTemplateLimit(); @@ -289,7 +286,7 @@ o.addTemplate = function(owner, template, callback) { // @param callback function(err) // o.delTemplate = function(owner, tpl_id, callback) { - var usr_tpl_key = _.template(this.key_usr_tpl, {owner:owner}); + var usr_tpl_key = this.key_usr_tpl({owner:owner}); var gotLock = false; var that = this; Step( @@ -398,7 +395,7 @@ o.updTemplate = function(owner, tpl_id, template, callback) { return; } - var usr_tpl_key = _.template(this.key_usr_tpl, {owner:owner}); + var usr_tpl_key = this.key_usr_tpl({owner:owner}); var gotLock = false; var that = this; Step( @@ -492,8 +489,7 @@ o.updTemplate = function(owner, tpl_id, template, callback) { // Returns a list of template identifiers // o.listTemplates = function(owner, callback) { - var usr_tpl_key = _.template(this.key_usr_tpl, {owner:owner}); - this._redisCmd('HKEYS', [ usr_tpl_key ], callback); + this._redisCmd('HKEYS', [ this.key_usr_tpl({owner:owner}) ], callback); }; // Get a templates @@ -507,11 +503,10 @@ o.listTemplates = function(owner, callback) { // Return full template definition // o.getTemplate = function(owner, tpl_id, callback) { - var usr_tpl_key = _.template(this.key_usr_tpl, {owner:owner}); var that = this; Step( function getTemplate() { - that._redisCmd('HGET', [ usr_tpl_key, tpl_id ], this); + that._redisCmd('HGET', [ that.key_usr_tpl({owner:owner}), tpl_id ], this); }, function parseTemplate(err, tpl_val) { if ( err ) throw err; diff --git a/package.json b/package.json index 1f542da7..f126a5d8 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "dependencies": { "node-varnish": "https://github.com/Vizzuality/node-varnish/tarball/0.3.0", "underscore" : "~1.6.0", + "dot": "~1.0.2", "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", "step": "~0.0.5", "request": "~2.9.203", From ac2a3243b5427e0d5aefcb49251ae73a8bd5790a Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 12:04:52 +0200 Subject: [PATCH 07/23] Don't cache regexes and avoid the _re hack --- lib/cartodb/template_maps.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 63b16971..6b76f9d9 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -537,14 +537,10 @@ o._reCSSColorVal = /^#[0-9a-fA-F]{3,6}$/; o._replaceVars = function(str, params) { //return _.template(str, params); // lazy way, possibly dangerous // Construct regular expressions for each param - if ( ! params._re ) { - params._re = {}; - for (var k in params) { - params._re[k] = RegExp("<%=\\s*" + k + "\\s*%>", "g"); - } - } - for (var k in params) str = str.replace(params._re[k], params[k]); - return str; + Object.keys(params).forEach(function(k) { + str = str.replace(new RegExp("<%=\\s*" + k + "\\s*%>", "g"), params[k]); + }); + return str; }; o.instance = function(template, params) { var all_params = {}; From fb8fd5121ebf1932abb628ce39a893ce73aaf469 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 12:16:34 +0200 Subject: [PATCH 08/23] Do not expose internal implementation --- lib/cartodb/template_maps.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 6b76f9d9..04cac79e 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -531,10 +531,11 @@ o.getTemplate = function(owner, tpl_id, callback) { // // @throws Error on malformed template or parameter // -o._reNumber = /^([-+]?[\d\.]?\d+([eE][+-]?\d+)?)$/; -o._reCSSColorName = /^[a-zA-Z]+$/; -o._reCSSColorVal = /^#[0-9a-fA-F]{3,6}$/; -o._replaceVars = function(str, params) { +var _reNumber = /^([-+]?[\d\.]?\d+([eE][+-]?\d+)?)$/, + _reCSSColorName = /^[a-zA-Z]+$/, + _reCSSColorVal = /^#[0-9a-fA-F]{3,6}$/; + +_replaceVars = function(str, params) { //return _.template(str, params); // lazy way, possibly dangerous // Construct regular expressions for each param Object.keys(params).forEach(function(k) { @@ -559,7 +560,7 @@ o.instance = function(template, params) { } else if ( type === 'number' ) { // check it's a number - if ( typeof(val) !== 'number' && ! val.match(this._reNumber) ) { + if ( typeof(val) !== 'number' && ! val.match(_reNumber) ) { throw new Error("Invalid number value for template parameter '" + k + "': " + val); } @@ -567,7 +568,7 @@ o.instance = function(template, params) { else if ( type === 'css_color' ) { // check it only contains letters or // starts with # and only contains hexdigits - if ( ! val.match(this._reCSSColorName) && ! val.match(this._reCSSColorVal) ) { + if ( ! val.match(_reCSSColorName) && ! val.match(_reCSSColorVal) ) { throw new Error("Invalid css_color value for template parameter '" + k + "': " + val); } @@ -583,8 +584,8 @@ o.instance = function(template, params) { var layergroup = JSON.parse(JSON.stringify(template.layergroup)); for (var i=0; i Date: Thu, 25 Sep 2014 12:17:32 +0200 Subject: [PATCH 09/23] Use object.keys to iterate over objects --- lib/cartodb/template_maps.js | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 04cac79e..15565e2b 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -120,7 +120,7 @@ o._releaseTemplateLock = function(owner, tpl_id, callback) { this._redisCmd('HDEL', [this.key_usr_tpl_lck({owner:owner}), tpl_id], callback); }; -o._reValidIdentifier = /^[a-zA-Z][0-9a-zA-Z_]*$/; +var _reValidIdentifier = /^[a-zA-Z][0-9a-zA-Z_]*$/; o._checkInvalidTemplate = function(template) { if ( template.version != '0.0.1' ) { return new Error("Unsupported template version " + template.version); @@ -129,21 +129,25 @@ o._checkInvalidTemplate = function(template) { if ( ! tplname ) { return new Error("Missing template name"); } - if ( ! tplname.match(this._reValidIdentifier) ) { + if ( ! tplname.match(_reValidIdentifier) ) { return new Error("Invalid characters in template name '" + tplname + "'"); } - var phold = template.placeholders; - for (var k in phold) { - if ( ! k.match(this._reValidIdentifier) ) { - return new Error("Invalid characters in placeholder name '" + k + "'"); - } - if ( ! phold[k].hasOwnProperty('default') ) { - return new Error("Missing default for placeholder '" + k + "'"); - } - if ( ! phold[k].hasOwnProperty('type') ) { - return new Error("Missing type for placeholder '" + k + "'"); - } + var placeholders = template.placeholders || {}; + + var placeholderKeys = Object.keys(placeholders); + for (var i = 0, len = placeholderKeys.length; i < len; i++) { + var placeholderKey = placeholderKeys[i]; + + if (!placeholderKey.match(_reValidIdentifier)) { + return new Error("Invalid characters in placeholder name '" + placeholderKey + "'"); + } + if ( ! placeholders[placeholderKey].hasOwnProperty('default') ) { + return new Error("Missing default for placeholder '" + placeholderKey + "'"); + } + if ( ! placeholders[placeholderKey].hasOwnProperty('type') ) { + return new Error("Missing type for placeholder '" + placeholderKey + "'"); + } } // Check certificate validity @@ -545,8 +549,8 @@ _replaceVars = function(str, params) { }; o.instance = function(template, params) { var all_params = {}; - var phold = template.placeholders; - for (var k in phold) { + var phold = template.placeholders || {}; + Object.keys(phold).forEach(function(k) { var val = params.hasOwnProperty(k) ? params[k] : phold[k].default; var type = phold[k].type; // properly escape @@ -578,7 +582,7 @@ o.instance = function(template, params) { throw new Error("Invalid placeholder type '" + type + "'"); } all_params[k] = val; - } + }); // NOTE: we're deep-cloning the layergroup here var layergroup = JSON.parse(JSON.stringify(template.layergroup)); From b5d5d7c2b09f5d4036395c78d0e3d0f825a395fb Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 16:15:51 +0200 Subject: [PATCH 10/23] Release 1.17.0 --- NEWS.md | 2 +- npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index a95f6e61..51fac504 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -1.16.2 -- 2014-mm-dd +1.17.0 -- 2014-09-25 -------------------- New features: diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a21dfbb5..dfd455fd 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.16.2", + "version": "1.17.0", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index 1f542da7..872e7efd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.16.2", + "version": "1.17.0", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From b41d1e84da1802e49a1a7817d2e8aa493162d6c5 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 16:17:10 +0200 Subject: [PATCH 11/23] Stubs next version --- NEWS.md | 4 ++++ npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 51fac504..67bd5e38 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +1.17.1 -- 2014-mm-dd +-------------------- + + 1.17.0 -- 2014-09-25 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index dfd455fd..7152ca1e 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.17.0", + "version": "1.17.1", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index 872e7efd..6a9723f8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.17.0", + "version": "1.17.1", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From b4bee864d2b5279839ce171487af06bb5830812e Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 19:00:35 +0200 Subject: [PATCH 12/23] Lock now considers the creation time and compares against a ttl so a lock is not keep forever in case of failure. Pending: lazy removal of expired locks. --- lib/cartodb/template_maps.js | 42 +++++------ test/unit/cartodb/template_maps.test.js | 94 ++++++++++++++++++++++++- 2 files changed, 115 insertions(+), 21 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 15565e2b..9b4cfba4 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -44,6 +44,8 @@ function TemplateMaps(redis_pool, signed_maps, opts) { // User template locks (HASH:tpl_id->ctime) this.key_usr_tpl_lck = dot.template("map_tpl|{{=it.owner}}|locks"); + + this.lock_ttl = this.opts['lock_ttl'] || 5000; } var o = TemplateMaps.prototype; @@ -93,26 +95,26 @@ o._redisCmd = function(redisFunc, redisArgs, callback) { // @param callback function(err, obtained) o._obtainTemplateLock = function(owner, tpl_id, callback) { - var that = this; - var gotLock = false; - Step ( - function obtainLock() { - var ctime = Date.now(); - that._redisCmd('HSETNX', [that.key_usr_tpl_lck({owner:owner}), tpl_id, ctime], this); - }, - function checkLock(err, locked) { - if ( err ) throw err; - if ( ! locked ) { - // Already locked - // TODO: unlock if expired ? - throw new Error("Template '" + tpl_id + "' of user '" + owner + "' is locked"); - } - return gotLock = true; - }, - function finish(err) { - callback(err, gotLock); - } - ); + var that = this, + lockKey = this.key_usr_tpl_lck({owner:owner}); + Step ( + function obtainLock() { + that._redisCmd('HGET', [lockKey, tpl_id], this); + }, + function checkLock(err, lockTime) { + if (err) { throw err; } + + var _newLockTime = Date.now(); + if (!lockTime || ((_newLockTime - lockTime) > that.lock_ttl)) { + that._redisCmd('HSET', [lockKey, tpl_id, _newLockTime], this); + } else { + throw new Error("Template '" + tpl_id + "' of user '" + owner + "' is locked"); + } + }, + function finish(err, hsetValue) { + callback(err, !!hsetValue); + } + ); }; // @param callback function(err, deleted) diff --git a/test/unit/cartodb/template_maps.test.js b/test/unit/cartodb/template_maps.test.js index 1314dbe6..928d68fe 100644 --- a/test/unit/cartodb/template_maps.test.js +++ b/test/unit/cartodb/template_maps.test.js @@ -12,6 +12,14 @@ suite('template_maps', function() { // configure redis pool instance to use in tests var redis_pool = RedisPool(global.environment.redis); var signed_maps = new SignedMaps(redis_pool); + + var validTemplate = { + version:'0.0.1', + name: 'first', + auth: {}, + layergroup: {} + }; + var owner = 'me'; test('does not accept template with unsupported version', function(done) { var tmap = new TemplateMaps(redis_pool, signed_maps); @@ -502,5 +510,89 @@ suite('template_maps', function() { } ); }); - + + var redisCmdFunc = TemplateMaps.prototype._redisCmd; + + function runWithRedisStubbed(stubbedCommands, func) { + TemplateMaps.prototype._redisCmd = function(redisFunc, redisArgs, callback) { + redisFunc = redisFunc.toLowerCase(); + if (stubbedCommands.hasOwnProperty(redisFunc)) { + callback(null, stubbedCommands[redisFunc]); + } else { + throw 'Unknown command'; + } + }; + + func(); + + TemplateMaps.prototype._redisCmd = redisCmdFunc; + } + + test('_obtainTemplateLock with no previous value, happy case', function(done) { + runWithRedisStubbed({hget: null, hset: 1}, function() { + var templateMaps = new TemplateMaps(redis_pool, signed_maps); + + templateMaps._obtainTemplateLock(owner, validTemplate.name, function(err, gotLock) { + assert.ok(!err); + assert.ok(gotLock); + done(); + }); + }); + }); + + test('_obtainTemplateLock no lock for non expired ttl, simulates obtaining two locks at same time', function(done) { + runWithRedisStubbed({hget: Date.now()}, function() { + var templateMaps = new TemplateMaps(redis_pool, signed_maps); + + templateMaps._obtainTemplateLock(owner, validTemplate.name, function(err, gotLock) { + assert.ok(!!err); + assert.equal(gotLock, false); + done(); + }); + }); + }); + + + test('_obtainTemplateLock no lock for non expired ttl, last millisecond of valid ttl', function(done) { + var nowValue = Date.now(), + nowFunc = Date.now; + Date.now = function() { + return nowValue; + }; + var lockTtl = 1000; + runWithRedisStubbed({hget: Date.now() - lockTtl, hset: true}, function() { + var templateMaps = new TemplateMaps(redis_pool, signed_maps, {lock_ttl: lockTtl}); + + templateMaps._obtainTemplateLock(owner, validTemplate.name, function(err, gotLock) { + assert.ok(!!err); + assert.equal(gotLock, false); + + Date.now = nowFunc; + + done(); + }); + }); + }); + + test('_obtainTemplateLock gets lock for expired ttl, first millisecond of invalid ttl', function(done) { + var nowValue = Date.now(), + nowFunc = Date.now; + Date.now = function() { + return nowValue; + }; + var lockTtl = 1000; + runWithRedisStubbed({hget: Date.now() - lockTtl - 1, hset: true}, function() { + var templateMaps = new TemplateMaps(redis_pool, signed_maps, {lock_ttl: lockTtl}); + + templateMaps._obtainTemplateLock(owner, validTemplate.name, function(err, gotLock) { + assert.ok(!err); + assert.ok(gotLock); + + Date.now = nowFunc; + + done(); + }); + }); + }); + }); From e8e03585ffa196f30ceb99d774b27daddae8819b Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 25 Sep 2014 19:17:02 +0200 Subject: [PATCH 13/23] Adds dot.js dependency --- npm-shrinkwrap.json | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a21dfbb5..2f68cd70 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -9,6 +9,9 @@ "underscore": { "version": "1.6.0" }, + "dot": { + "version": "1.0.2" + }, "windshaft": { "version": "0.27.0", "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", @@ -1230,12 +1233,7 @@ }, "cartodb-redis": { "version": "0.11.0", - "from": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", - "dependencies": { - "dot": { - "version": "1.0.2" - } - } + "from": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0" }, "cartodb-psql": { "version": "0.4.0", From 55669f88ffded928c337e61e8033e1b1ab99d6b2 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 26 Sep 2014 11:21:28 +0200 Subject: [PATCH 14/23] Updates news --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index 67bd5e38..234176fa 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ 1.17.1 -- 2014-mm-dd -------------------- +Enhancements: + - TTL for template locks so they are not kept forever + 1.17.0 -- 2014-09-25 -------------------- From e31ef916f0f259ca5994b254a075754b90906150 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 30 Sep 2014 15:02:24 +0200 Subject: [PATCH 15/23] Upgrades windshaft to 0.27.1 which downgrades node-mapnik to 1.4.10 --- NEWS.md | 3 ++ npm-shrinkwrap.json | 84 +++++++++++++++++++-------------------------- package.json | 2 +- 3 files changed, 40 insertions(+), 49 deletions(-) diff --git a/NEWS.md b/NEWS.md index 234176fa..7d53d816 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ 1.17.1 -- 2014-mm-dd -------------------- +Announcements: + - Upgrades windshaft to 0.27.1 which downgrades node-mapnik to 1.4.10 + Enhancements: - TTL for template locks so they are not kept forever diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index f5874239..27a2f6dd 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -13,8 +13,8 @@ "version": "1.0.2" }, "windshaft": { - "version": "0.27.0", - "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", + "version": "0.27.1", + "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.1", "dependencies": { "chronograph": { "version": "0.1.0", @@ -899,20 +899,19 @@ } }, "mapnik": { - "version": "1.4.15", - "from": "https://github.com/CartoDB/node-mapnik/tarball/1.4.15-cdb", + "version": "1.4.10", "dependencies": { "nan": { "version": "1.2.0" }, "mapnik-vector-tile": { - "version": "0.5.5" + "version": "0.5.1" }, "node-pre-gyp": { - "version": "0.5.25", + "version": "0.5.17", "dependencies": { "nopt": { - "version": "3.0.1", + "version": "2.2.1", "dependencies": { "abbrev": { "version": "1.0.5" @@ -920,24 +919,24 @@ } }, "npmlog": { - "version": "0.1.1", + "version": "0.0.6", "dependencies": { "ansi": { - "version": "0.3.0" + "version": "0.2.1" } } }, "request": { - "version": "2.40.0", + "version": "2.36.0", "dependencies": { "qs": { - "version": "1.0.2" + "version": "0.6.6" }, "json-stringify-safe": { "version": "5.0.0" }, - "mime-types": { - "version": "1.0.2" + "mime": { + "version": "1.2.11" }, "forever-agent": { "version": "0.5.2" @@ -949,26 +948,23 @@ "version": "0.12.1", "dependencies": { "punycode": { - "version": "1.3.1" + "version": "1.2.4" } } }, "form-data": { - "version": "0.1.4", + "version": "0.1.2", "dependencies": { "combined-stream": { - "version": "0.0.5", + "version": "0.0.4", "dependencies": { "delayed-stream": { "version": "0.0.5" } } }, - "mime": { - "version": "1.2.11" - }, "async": { - "version": "0.9.0" + "version": "0.2.10" } } }, @@ -993,7 +989,7 @@ "version": "0.3.0" }, "hawk": { - "version": "1.1.1", + "version": "1.0.0", "dependencies": { "hoek": { "version": "0.9.1" @@ -1011,31 +1007,31 @@ }, "aws-sign2": { "version": "0.5.0" - }, - "stringstream": { - "version": "0.0.4" } } }, "semver": { - "version": "3.0.1" + "version": "2.3.0" }, "tar": { - "version": "1.0.1", + "version": "0.1.19", "dependencies": { + "inherits": { + "version": "2.0.1" + }, "block-stream": { "version": "0.0.7" }, "fstream": { - "version": "1.0.2", + "version": "0.1.25", "dependencies": { + "mkdirp": { + "version": "0.3.5" + }, "graceful-fs": { - "version": "3.0.2" + "version": "2.0.3" } } - }, - "inherits": { - "version": "2.0.1" } } }, @@ -1052,21 +1048,13 @@ "version": "0.7.4" }, "fstream": { - "version": "0.1.31", + "version": "0.1.25", "dependencies": { - "graceful-fs": { - "version": "3.0.2" + "mkdirp": { + "version": "0.3.5" }, - "inherits": { - "version": "2.0.1" - } - } - }, - "tar": { - "version": "0.1.20", - "dependencies": { - "block-stream": { - "version": "0.0.7" + "graceful-fs": { + "version": "2.0.3" }, "inherits": { "version": "2.0.1" @@ -1093,7 +1081,7 @@ } }, "readable-stream": { - "version": "1.0.31", + "version": "1.0.27-1", "dependencies": { "core-util-is": { "version": "1.0.1" @@ -1102,7 +1090,7 @@ "version": "0.0.1" }, "string_decoder": { - "version": "0.10.31" + "version": "0.10.25-1" }, "inherits": { "version": "2.0.1" @@ -1123,13 +1111,13 @@ } }, "rc": { - "version": "0.5.1", + "version": "0.4.0", "dependencies": { "minimist": { "version": "0.0.10" }, "deep-extend": { - "version": "0.2.11" + "version": "0.2.10" }, "strip-json-comments": { "version": "0.1.3" diff --git a/package.json b/package.json index 19d154bc..3665c127 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "node-varnish": "https://github.com/Vizzuality/node-varnish/tarball/0.3.0", "underscore" : "~1.6.0", "dot": "~1.0.2", - "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.0", + "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.1", "step": "~0.0.5", "request": "~2.9.203", "cartodb-redis": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", From e0331ec0229af5a36f1b45e4fe0045dc2c1d18c5 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 30 Sep 2014 15:03:14 +0200 Subject: [PATCH 16/23] Upgrades mocha --- NEWS.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 7d53d816..89815f45 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ Announcements: Enhancements: - TTL for template locks so they are not kept forever + - Upgrades mocha 1.17.0 -- 2014-09-25 diff --git a/package.json b/package.json index 3665c127..c81a9e8d 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "rollbar": "~0.3.13" }, "devDependencies": { - "mocha": "1.14.0", + "mocha": "~1.21.4", "redis": "~0.8.6", "strftime": "~0.8.2", "semver": "~1.1.4" From 0b896fb935575671d71c4781cd703c2a24fc492f Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 30 Sep 2014 15:08:26 +0200 Subject: [PATCH 17/23] Release 1.17.1 --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 89815f45..9ccabe0d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -1.17.1 -- 2014-mm-dd +1.17.1 -- 2014-09-30 -------------------- Announcements: From db34a4ffffe612574a8e3712de1b7eed8658a4c3 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 30 Sep 2014 15:09:56 +0200 Subject: [PATCH 18/23] Stubs next version --- NEWS.md | 4 ++++ npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 9ccabe0d..74e184fa 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +1.17.2 -- 2014-mm-dd +-------------------- + + 1.17.1 -- 2014-09-30 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 27a2f6dd..d9ba1137 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.17.1", + "version": "1.17.2", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index c81a9e8d..56d2004d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.17.1", + "version": "1.17.2", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 723a184086ba90bb465da22fa1bef55ff85d7f9c Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 1 Oct 2014 20:27:11 +0200 Subject: [PATCH 19/23] Release 1.17.2 --- NEWS.md | 5 +- npm-shrinkwrap.json | 244 ++------------------------------------------ package.json | 2 +- 3 files changed, 11 insertions(+), 240 deletions(-) diff --git a/NEWS.md b/NEWS.md index 74e184fa..40ceb40a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ -1.17.2 -- 2014-mm-dd +1.17.2 -- 2014-10-01 -------------------- +Announcements: + - Upgrades windshaft to 0.27.2 which downgrades node-mapnik to 0.7.26-cdb1 + 1.17.1 -- 2014-09-30 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index d9ba1137..2222dd12 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -13,8 +13,8 @@ "version": "1.0.2" }, "windshaft": { - "version": "0.27.1", - "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.1", + "version": "0.27.2", + "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.2", "dependencies": { "chronograph": { "version": "0.1.0", @@ -899,240 +899,8 @@ } }, "mapnik": { - "version": "1.4.10", - "dependencies": { - "nan": { - "version": "1.2.0" - }, - "mapnik-vector-tile": { - "version": "0.5.1" - }, - "node-pre-gyp": { - "version": "0.5.17", - "dependencies": { - "nopt": { - "version": "2.2.1", - "dependencies": { - "abbrev": { - "version": "1.0.5" - } - } - }, - "npmlog": { - "version": "0.0.6", - "dependencies": { - "ansi": { - "version": "0.2.1" - } - } - }, - "request": { - "version": "2.36.0", - "dependencies": { - "qs": { - "version": "0.6.6" - }, - "json-stringify-safe": { - "version": "5.0.0" - }, - "mime": { - "version": "1.2.11" - }, - "forever-agent": { - "version": "0.5.2" - }, - "node-uuid": { - "version": "1.4.1" - }, - "tough-cookie": { - "version": "0.12.1", - "dependencies": { - "punycode": { - "version": "1.2.4" - } - } - }, - "form-data": { - "version": "0.1.2", - "dependencies": { - "combined-stream": { - "version": "0.0.4", - "dependencies": { - "delayed-stream": { - "version": "0.0.5" - } - } - }, - "async": { - "version": "0.2.10" - } - } - }, - "tunnel-agent": { - "version": "0.4.0" - }, - "http-signature": { - "version": "0.10.0", - "dependencies": { - "assert-plus": { - "version": "0.1.2" - }, - "asn1": { - "version": "0.1.11" - }, - "ctype": { - "version": "0.5.2" - } - } - }, - "oauth-sign": { - "version": "0.3.0" - }, - "hawk": { - "version": "1.0.0", - "dependencies": { - "hoek": { - "version": "0.9.1" - }, - "boom": { - "version": "0.4.2" - }, - "cryptiles": { - "version": "0.2.2" - }, - "sntp": { - "version": "0.2.4" - } - } - }, - "aws-sign2": { - "version": "0.5.0" - } - } - }, - "semver": { - "version": "2.3.0" - }, - "tar": { - "version": "0.1.19", - "dependencies": { - "inherits": { - "version": "2.0.1" - }, - "block-stream": { - "version": "0.0.7" - }, - "fstream": { - "version": "0.1.25", - "dependencies": { - "mkdirp": { - "version": "0.3.5" - }, - "graceful-fs": { - "version": "2.0.3" - } - } - } - } - }, - "tar-pack": { - "version": "2.0.0", - "dependencies": { - "uid-number": { - "version": "0.0.3" - }, - "once": { - "version": "1.1.1" - }, - "debug": { - "version": "0.7.4" - }, - "fstream": { - "version": "0.1.25", - "dependencies": { - "mkdirp": { - "version": "0.3.5" - }, - "graceful-fs": { - "version": "2.0.3" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "fstream-ignore": { - "version": "0.0.7", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "dependencies": { - "lru-cache": { - "version": "2.5.0" - }, - "sigmund": { - "version": "1.0.0" - } - } - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "readable-stream": { - "version": "1.0.27-1", - "dependencies": { - "core-util-is": { - "version": "1.0.1" - }, - "isarray": { - "version": "0.0.1" - }, - "string_decoder": { - "version": "0.10.25-1" - }, - "inherits": { - "version": "2.0.1" - } - } - }, - "graceful-fs": { - "version": "1.2.3" - } - } - }, - "mkdirp": { - "version": "0.5.0", - "dependencies": { - "minimist": { - "version": "0.0.8" - } - } - }, - "rc": { - "version": "0.4.0", - "dependencies": { - "minimist": { - "version": "0.0.10" - }, - "deep-extend": { - "version": "0.2.10" - }, - "strip-json-comments": { - "version": "0.1.3" - }, - "ini": { - "version": "1.1.0" - } - } - }, - "rimraf": { - "version": "2.2.8" - } - } - } - } + "version": "0.7.26-cdb1", + "from": "http://github.com/Vizzuality/node-mapnik/tarball/0.7.26-cdb1" }, "tilelive": { "version": "4.5.3", @@ -1316,13 +1084,13 @@ "version": "0.8.2" }, "mocha": { - "version": "1.14.0", + "version": "1.21.4", "dependencies": { "commander": { "version": "2.0.0" }, "growl": { - "version": "1.7.0" + "version": "1.8.1" }, "jade": { "version": "0.26.3", diff --git a/package.json b/package.json index 56d2004d..ab27bc60 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "node-varnish": "https://github.com/Vizzuality/node-varnish/tarball/0.3.0", "underscore" : "~1.6.0", "dot": "~1.0.2", - "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.1", + "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.2", "step": "~0.0.5", "request": "~2.9.203", "cartodb-redis": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", From 9b0232c48d093de5206a5d9b2c525e04c8ba54da Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Wed, 1 Oct 2014 20:28:47 +0200 Subject: [PATCH 20/23] Stubs next version --- NEWS.md | 4 ++++ npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 40ceb40a..d66ddc98 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +1.17.3 -- 2014-mm-dd +-------------------- + + 1.17.2 -- 2014-10-01 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 2222dd12..589109fd 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.17.2", + "version": "1.17.3", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index ab27bc60..0230c06a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.17.2", + "version": "1.17.3", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From fbdafcb7b740d6e479be4108e9e420eac65d3324 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 3 Oct 2014 16:57:04 +0200 Subject: [PATCH 21/23] Comes back to use mapnik 2.3.x based on cartodb/node-mapnik@1.4.15-cdb from windshaft@0.28.0 --- NEWS.md | 3 + npm-shrinkwrap.json | 252 +++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 3 files changed, 252 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index d66ddc98..8fc009d9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ 1.17.3 -- 2014-mm-dd -------------------- +Announcements: + - Comes back to use mapnik 2.3.x based on cartodb/node-mapnik@1.4.15-cdb from windshaft@0.28.0 + 1.17.2 -- 2014-10-01 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 589109fd..ace7247a 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -13,8 +13,8 @@ "version": "1.0.2" }, "windshaft": { - "version": "0.27.2", - "from": "https://github.com/CartoDB/Windshaft/tarball/0.27.2", + "version": "0.28.1", + "from": "https://github.com/CartoDB/Windshaft/tarball/0.28.0", "dependencies": { "chronograph": { "version": "0.1.0", @@ -899,8 +899,252 @@ } }, "mapnik": { - "version": "0.7.26-cdb1", - "from": "http://github.com/Vizzuality/node-mapnik/tarball/0.7.26-cdb1" + "version": "1.4.15", + "from": "https://github.com/CartoDB/node-mapnik/tarball/1.4.15-cdb", + "dependencies": { + "nan": { + "version": "1.2.0" + }, + "mapnik-vector-tile": { + "version": "0.5.5" + }, + "node-pre-gyp": { + "version": "0.5.25", + "dependencies": { + "nopt": { + "version": "3.0.1", + "dependencies": { + "abbrev": { + "version": "1.0.5" + } + } + }, + "npmlog": { + "version": "0.1.1", + "dependencies": { + "ansi": { + "version": "0.3.0" + } + } + }, + "request": { + "version": "2.40.0", + "dependencies": { + "qs": { + "version": "1.0.2" + }, + "json-stringify-safe": { + "version": "5.0.0" + }, + "mime-types": { + "version": "1.0.2" + }, + "forever-agent": { + "version": "0.5.2" + }, + "node-uuid": { + "version": "1.4.1" + }, + "tough-cookie": { + "version": "0.12.1", + "dependencies": { + "punycode": { + "version": "1.3.1" + } + } + }, + "form-data": { + "version": "0.1.4", + "dependencies": { + "combined-stream": { + "version": "0.0.5", + "dependencies": { + "delayed-stream": { + "version": "0.0.5" + } + } + }, + "mime": { + "version": "1.2.11" + }, + "async": { + "version": "0.9.0" + } + } + }, + "tunnel-agent": { + "version": "0.4.0" + }, + "http-signature": { + "version": "0.10.0", + "dependencies": { + "assert-plus": { + "version": "0.1.2" + }, + "asn1": { + "version": "0.1.11" + }, + "ctype": { + "version": "0.5.2" + } + } + }, + "oauth-sign": { + "version": "0.3.0" + }, + "hawk": { + "version": "1.1.1", + "dependencies": { + "hoek": { + "version": "0.9.1" + }, + "boom": { + "version": "0.4.2" + }, + "cryptiles": { + "version": "0.2.2" + }, + "sntp": { + "version": "0.2.4" + } + } + }, + "aws-sign2": { + "version": "0.5.0" + }, + "stringstream": { + "version": "0.0.4" + } + } + }, + "semver": { + "version": "3.0.1" + }, + "tar": { + "version": "1.0.1", + "dependencies": { + "block-stream": { + "version": "0.0.7" + }, + "fstream": { + "version": "1.0.2", + "dependencies": { + "graceful-fs": { + "version": "3.0.2" + } + } + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "tar-pack": { + "version": "2.0.0", + "dependencies": { + "uid-number": { + "version": "0.0.3" + }, + "once": { + "version": "1.1.1" + }, + "debug": { + "version": "0.7.4" + }, + "fstream": { + "version": "0.1.31", + "dependencies": { + "graceful-fs": { + "version": "3.0.2" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "tar": { + "version": "0.1.20", + "dependencies": { + "block-stream": { + "version": "0.0.7" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "fstream-ignore": { + "version": "0.0.7", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "dependencies": { + "lru-cache": { + "version": "2.5.0" + }, + "sigmund": { + "version": "1.0.0" + } + } + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "readable-stream": { + "version": "1.0.31", + "dependencies": { + "core-util-is": { + "version": "1.0.1" + }, + "isarray": { + "version": "0.0.1" + }, + "string_decoder": { + "version": "0.10.31" + }, + "inherits": { + "version": "2.0.1" + } + } + }, + "graceful-fs": { + "version": "1.2.3" + } + } + }, + "mkdirp": { + "version": "0.5.0", + "dependencies": { + "minimist": { + "version": "0.0.8" + } + } + }, + "rc": { + "version": "0.5.1", + "dependencies": { + "minimist": { + "version": "0.0.10" + }, + "deep-extend": { + "version": "0.2.11" + }, + "strip-json-comments": { + "version": "0.1.3" + }, + "ini": { + "version": "1.1.0" + } + } + }, + "rimraf": { + "version": "2.2.8" + } + } + } + } }, "tilelive": { "version": "4.5.3", diff --git a/package.json b/package.json index 0230c06a..8004835e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "node-varnish": "https://github.com/Vizzuality/node-varnish/tarball/0.3.0", "underscore" : "~1.6.0", "dot": "~1.0.2", - "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.27.2", + "windshaft": "https://github.com/CartoDB/Windshaft/tarball/0.28.0", "step": "~0.0.5", "request": "~2.9.203", "cartodb-redis": "https://github.com/CartoDB/node-cartodb-redis/tarball/0.11.0", From 474198b4e18601a22a52a803f02de30fcba591f3 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 3 Oct 2014 17:03:50 +0200 Subject: [PATCH 22/23] Release 1.18.0 --- NEWS.md | 2 +- npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 8fc009d9..f4ef1c72 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -1.17.3 -- 2014-mm-dd +1.18.0 -- 2014-10-03 -------------------- Announcements: diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index ace7247a..b577560b 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.17.3", + "version": "1.18.0", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index 8004835e..1812c5b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.17.3", + "version": "1.18.0", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 8fd6e22dc4db3f890a7fd7299b13cbefa799b41d Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 3 Oct 2014 17:05:20 +0200 Subject: [PATCH 23/23] Stubs next version --- NEWS.md | 4 ++++ npm-shrinkwrap.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index f4ef1c72..14f367f0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +1.18.1 -- 2014-mm-dd +-------------------- + + 1.18.0 -- 2014-10-03 -------------------- diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index b577560b..a84e3555 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.18.0", + "version": "1.18.1", "dependencies": { "node-varnish": { "version": "0.3.0", diff --git a/package.json b/package.json index 1812c5b2..65f64e45 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.18.0", + "version": "1.18.1", "description": "A map tile server for CartoDB", "keywords": [ "cartodb"