Sorry, the diff of this file is too big to display
+2
-1
@@ -11,4 +11,5 @@ language: node_js | ||
| - '0.12' | ||
| - '4' | ||
| env: | ||
| global: | ||
| secure: ED+05KdMKREJdP8doskLsejnN0KnqES6o8g3juRwRWnwWoa6E+NJGv34ayxIf+2q/XI6ReWVwIkQkhlw4m/nLO06SPISGQtHkYBe1xHDqpM/BoB7XMxN/znFe+vB//AX8TTK1Pk7hC0BuSd2728fcsROHZCqxwiy723WPRnf2Gs= | ||
| secure: UrfB0BI2DSCwbwYV3MucH8r03vnXpEMtSde5GdIWv8EpldScZEF/42eFwFVs1ts6DUbTmV+EeDeApIakAyV5aLP/nZmoOcyRM/7tRmgkHhX91KneDfU0oiR/KXAy3WMvYRzSnDLXXGx4a3T04uMyKhnYRyM8nvTnenjPpk7ghPI= |
+11
-46
@@ -448,16 +448,17 @@ # bulkFeatureUpdate | ||
| // { | ||
| // "account": {account}, | ||
| // "tilesetid": "tileset-id", | ||
| // "layerCount": {layer count}, | ||
| // "layers": [ | ||
| // { | ||
| // "account": {account}, | ||
| // "tilesetid": "tileset-id", | ||
| // "layer": {layername}, | ||
| // "count": 10, | ||
| // "layer": {layer name}, | ||
| // "geometry": {dominant geometry}, | ||
| // "count": {feature count}, | ||
| // "attributeCount": {attribute count} | ||
| // "attributes": [ | ||
| // { | ||
| // "attribute": {attributename}, | ||
| // "min": 0, | ||
| // "max": 10, | ||
| // "values": [0, 10] | ||
| // "attribute": {attribute name}, | ||
| // "type": {attribute type}, | ||
| // "count": {unique value count}, | ||
| // "min": {minimum value if type is number}, | ||
| // "max": {maximum value if type is number}, | ||
| // "values": [{...unique values}] | ||
| // } | ||
@@ -473,38 +474,2 @@ // ] | ||
| # getTilestatsAttribute | ||
| To retrieve statistics about the attribute values of a particular attribute | ||
| within a tileset layer. | ||
| **Parameters** | ||
| - `tileset` **String** the id for the tileset | ||
| - `layer` **String** the name of the layer in the tileset | ||
| - `attribute` **String** the name of the attribute in the layer | ||
| - `callback` **Function** called with (err) | ||
| **Examples** | ||
| ```javascript | ||
| var client = new MapboxClient('ACCESSTOKEN'); | ||
| client.getTilestatsAttribute('tileset-id', 'layer-name', 'attr-name', function(err, info) { | ||
| console.log(info); | ||
| // { | ||
| // "account": {account}, | ||
| // "tilesetid": "tileset-id", | ||
| // "layer": "layer-name", | ||
| // "attribute": "attr-name", | ||
| // "type": "Number", | ||
| // "min": 0, | ||
| // "max": 10, | ||
| // "values": [ | ||
| // 0, | ||
| // 10 | ||
| // ] | ||
| // } | ||
| }); | ||
| ``` | ||
| Returns **undefined** nothing, calls callback | ||
| # createUpload | ||
@@ -511,0 +476,0 @@ |
+4
-0
@@ -0,1 +1,5 @@ | ||
| ## 1.0.0-beta3 | ||
| - Update tilestat service for new API. | ||
| ## 1.0.0-beta1 | ||
@@ -2,0 +6,0 @@ |
+23
-170
@@ -10,58 +10,2 @@ 'use strict'; | ||
| /** | ||
| * To create an empty set of tileset statistics. | ||
| * | ||
| * @private | ||
| * @param {String} tileset - the id for the tileset | ||
| * @param {Array<string>} layers - an array of layer names in the tileset | ||
| * @param {Function} callback called with (err, tilestats) | ||
| * @returns {undefined} nothing, calls callback | ||
| */ | ||
| Tilestats.prototype.createTilestats = function(tileset, layers, callback) { | ||
| invariant(typeof tileset === 'string', 'tileset must be a string'); | ||
| invariant(Array.isArray(layers), 'layers must be an array'); | ||
| invariant(layers.every(function(layer) { | ||
| return typeof layer === 'string'; | ||
| }), 'layers must be an array of strings'); | ||
| var owner = tileset.split('.')[0]; | ||
| if (owner === tileset) owner = this.owner; | ||
| return this.client({ | ||
| path: constants.API_TILESTATS_STATISTICS, | ||
| params: { | ||
| owner: owner, | ||
| tileset: tileset | ||
| }, | ||
| entity: { layers: layers }, | ||
| method: 'post', | ||
| callback: callback | ||
| }).entity(); | ||
| }; | ||
| /** | ||
| * To delete a set of tileset statistics. | ||
| * | ||
| * @private | ||
| * @param {String} tileset - the id for the tileset | ||
| * @param {Function} callback called with (err) | ||
| * @returns {undefined} nothing, calls callback | ||
| */ | ||
| Tilestats.prototype.deleteTilestats = function(tileset, callback) { | ||
| invariant(typeof tileset === 'string', 'tileset must be a string'); | ||
| var owner = tileset.split('.')[0]; | ||
| if (owner === tileset) owner = this.owner; | ||
| return this.client({ | ||
| path: constants.API_TILESTATS_STATISTICS, | ||
| params: { | ||
| owner: owner, | ||
| tileset: tileset | ||
| }, | ||
| method: 'delete', | ||
| callback: callback | ||
| }).entity(); | ||
| }; | ||
| /** | ||
| * To retrieve statistics about a specific tileset. | ||
@@ -77,16 +21,17 @@ * | ||
| * // { | ||
| * // "account": {account}, | ||
| * // "tilesetid": "tileset-id", | ||
| * // "layerCount": {layer count}, | ||
| * // "layers": [ | ||
| * // { | ||
| * // "account": {account}, | ||
| * // "tilesetid": "tileset-id", | ||
| * // "layer": {layername}, | ||
| * // "count": 10, | ||
| * // "layer": {layer name}, | ||
| * // "geometry": {dominant geometry}, | ||
| * // "count": {feature count}, | ||
| * // "attributeCount": {attribute count} | ||
| * // "attributes": [ | ||
| * // { | ||
| * // "attribute": {attributename}, | ||
| * // "min": 0, | ||
| * // "max": 10, | ||
| * // "values": [0, 10] | ||
| * // "attribute": {attribute name}, | ||
| * // "type": {attribute type}, | ||
| * // "count": {unique value count}, | ||
| * // "min": {minimum value if type is number}, | ||
| * // "max": {maximum value if type is number}, | ||
| * // "values": [{...unique values}] | ||
| * // } | ||
@@ -115,114 +60,22 @@ * // ] | ||
| /** | ||
| * Add or update information about geometry types present in a tileset layer. | ||
| * This request may be made multiple times against a single layer, in order to | ||
| * update the total geometry counts across a set of parallel tileset reads. | ||
| * | ||
| * @private | ||
| * @param {String} tileset - the id for the tileset | ||
| * @param {String} layer - the name of the layer in the tileset | ||
| * @param {Object} geometries - an object indicating the number of features present | ||
| * in the layer of various geometry types. | ||
| * @param {Number} [geometries.point] - number of Point features | ||
| * @param {Number} [geometries.multipoint] - number of MultiPoint features | ||
| * @param {Number} [geometries.linestring] - number of LineString features | ||
| * @param {Number} [geometries.multilinestring] - number of MultiLineString features | ||
| * @param {Number} [geometries.polygon] - number of Polygon features | ||
| * @param {Number} [geometries.multipolygon] - number of MultiPolygon features | ||
| * @param {Number} [geometries.geometrycollection] - number of GeometryCollection features | ||
| * @param {Function} callback called with (err) | ||
| * @returns {undefined} nothing, calls callback | ||
| */ | ||
| Tilestats.prototype.updateTilestatsLayer = function(tileset, layer, geometries, callback) { | ||
| invariant(typeof tileset === 'string', 'tileset must be a string'); | ||
| invariant(typeof layer === 'string', 'layer must be a string'); | ||
| invariant(typeof geometries === 'object', 'geometries must be an object'); | ||
| var owner = tileset.split('.')[0]; | ||
| if (owner === tileset) owner = this.owner; | ||
| return this.client({ | ||
| path: constants.API_TILESTATS_LAYER, | ||
| params: { | ||
| owner: owner, | ||
| tileset: tileset, | ||
| layer: layer | ||
| }, | ||
| entity: geometries, | ||
| method: 'post', | ||
| callback: callback | ||
| }).entity(); | ||
| }; | ||
| /** | ||
| * To add or update statistics about the values of a particular attribute in | ||
| * a layer. This request may be made multiple times against a single attribute, | ||
| * in order to update the statistics across a set of parallel tileset reads. | ||
| * To create or update statistics about a specific tileset. | ||
| * | ||
| * @private | ||
| * @param {String} tileset - the id for the tileset | ||
| * @param {String} layer - the name of the layer in the tileset | ||
| * @param {String} attribute - the name of the attribute in the layer | ||
| * @param {Object} stats - statistics about attribute values in the layer | ||
| * @param {Number|String} stats.min - the minimum attribute value | ||
| * @param {Number|String} stats.max - the maximum attribute value | ||
| * @param {Array<Number|String>} stats.values - an array of unique values for the attribute | ||
| * @param {Function} callback called with (err) | ||
| * @param {object} statistics - the statistics to upload | ||
| * @param {Function} callback called with (err, tilestats) | ||
| * @returns {undefined} nothing, calls callback | ||
| */ | ||
| Tilestats.prototype.updateTilestatsAttribute = function(tileset, layer, attribute, stats, callback) { | ||
| invariant(typeof tileset === 'string', 'tileset must be a string'); | ||
| invariant(typeof layer === 'string', 'layer must be a string'); | ||
| invariant(typeof attribute === 'string', 'attribute must be a string'); | ||
| invariant(typeof stats === 'object', 'stats must be an object'); | ||
| var owner = tileset.split('.')[0]; | ||
| if (owner === tileset) owner = this.owner; | ||
| return this.client({ | ||
| path: constants.API_TILESTATS_ATTRIBUTE, | ||
| params: { | ||
| owner: owner, | ||
| tileset: tileset, | ||
| layer: layer, | ||
| attribute: attribute | ||
| }, | ||
| entity: stats, | ||
| method: 'post', | ||
| callback: callback | ||
| }).entity(); | ||
| }; | ||
| /** | ||
| * To retrieve statistics about the attribute values of a particular attribute | ||
| * within a tileset layer. | ||
| * | ||
| * @param {String} tileset - the id for the tileset | ||
| * @param {String} layer - the name of the layer in the tileset | ||
| * @param {String} attribute - the name of the attribute in the layer | ||
| * @param {Function} callback called with (err) | ||
| * @returns {undefined} nothing, calls callback | ||
| * @example | ||
| * var client = new MapboxClient('ACCESSTOKEN'); | ||
| * client.getTilestatsAttribute('tileset-id', 'layer-name', 'attr-name', function(err, info) { | ||
| * console.log(info); | ||
| * client.getTilestats('tileset-id', function(err, stats) { | ||
| * console.log(stats); | ||
| * // { | ||
| * // "account": {account}, | ||
| * // "tilesetid": "tileset-id", | ||
| * // "layer": "layer-name", | ||
| * // "attribute": "attr-name", | ||
| * // "type": "Number", | ||
| * // "min": 0, | ||
| * // "max": 10, | ||
| * // "values": [ | ||
| * // 0, | ||
| * // 10 | ||
| * // ] | ||
| * // "account": {account} | ||
| * // ... see stats example above (for Tilestats#getTilestats) | ||
| * // } | ||
| * }); | ||
| */ | ||
| Tilestats.prototype.getTilestatsAttribute = function(tileset, layer, attribute, callback) { | ||
| Tilestats.prototype.putTilestats = function(tileset, statistics, callback) { | ||
| invariant(typeof tileset === 'string', 'tileset must be a string'); | ||
| invariant(typeof layer === 'string', 'layer must be a string'); | ||
| invariant(typeof attribute === 'string', 'attribute must be a string'); | ||
@@ -233,11 +86,11 @@ var owner = tileset.split('.')[0]; | ||
| return this.client({ | ||
| path: constants.API_TILESTATS_ATTRIBUTE, | ||
| path: constants.API_TILESTATS_STATISTICS, | ||
| params: { | ||
| owner: owner, | ||
| tileset: tileset, | ||
| layer: layer, | ||
| attribute: attribute | ||
| tileset: tileset | ||
| }, | ||
| entity: statistics, | ||
| method: 'put', | ||
| callback: callback | ||
| }).entity(); | ||
| }; |
+2
-2
| { | ||
| "name": "mapbox", | ||
| "version": "1.0.0-beta2", | ||
| "version": "1.0.0-beta3", | ||
| "description": "interface to mapbox services", | ||
@@ -46,2 +46,3 @@ "main": "lib/mapbox.js", | ||
| "geojson-random": "^0.2.2", | ||
| "geojsonhint": "^1.1.0", | ||
| "smokestack": "^3.3.0", | ||
@@ -51,3 +52,2 @@ "tap": "^1.3.1", | ||
| "tape": "^4.2.0", | ||
| "geojsonhint": "^1.1.0", | ||
| "uglifyjs": "^2.4.10" | ||
@@ -54,0 +54,0 @@ }, |
+20
-304
@@ -7,40 +7,25 @@ /* eslint no-shadow: 0 */ | ||
| var hat = require('../vendor/hat'); | ||
| var xtend = require('../vendor/xtend').extend; | ||
| var sampleStats = require('./fixtures/tilestats'); | ||
| var modifiedStats = xtend(sampleStats, { layerCount: 12 }); | ||
| test('TilestatsClient', function(tilestatsClient) { | ||
| var tilesetid = hat().slice(0, 6); | ||
| tilestatsClient.test('#createTilestats', function(createTilestats) { | ||
| createTilestats.test('typecheck', function(assert) { | ||
| tilestatsClient.test('#putTilestats', function(putTilestats) { | ||
| putTilestats.test('typecheck', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| assert.ok(client, 'created dataset client'); | ||
| assert.ok(client, 'created tilestats client'); | ||
| assert.throws(function() { | ||
| client.createTilestats(null, ['ham'], function() {}); | ||
| client.putTilestats(null, {}, function() {}); | ||
| }, 'tileset must be a string'); | ||
| assert.throws(function() { | ||
| client.createTilestats('yes', 'ham', function() {}); | ||
| }, 'layers must be an array'); | ||
| assert.throws(function() { | ||
| client.createTilestats('yes', [{}], function() {}); | ||
| }, 'layers must be an array of strings'); | ||
| assert.end(); | ||
| }); | ||
| createTilestats.test('creates', function(assert) { | ||
| putTilestats.test('creates with simple tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| client.createTilestats(tilesetid, ['layer'], function(err, result) { | ||
| client.putTilestats(tilesetid, sampleStats, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layers: [ | ||
| { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| geometry: 'UNKNOWN', | ||
| count: 0, | ||
| attributes: [] | ||
| } | ||
| ] | ||
| }, 'expected result'); | ||
| assert.deepEqual(result, sampleStats, 'expected result'); | ||
| assert.end(); | ||
@@ -50,42 +35,7 @@ }); | ||
| createTilestats.test('creates - promise style', function(assert) { | ||
| putTilestats.test('creates with tilesetid containing owner', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| client.createTilestats(tilesetid, ['layer']).then(function(result) { | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layers: [ | ||
| { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| geometry: 'UNKNOWN', | ||
| count: 0, | ||
| attributes: [] | ||
| } | ||
| ] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| createTilestats.test('creates when user specified by tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var id = client.owner + '.' + tilesetid; | ||
| client.createTilestats(id, ['layer'], function(err, result) { | ||
| client.putTilestats(client.owner + '.' + tilesetid, sampleStats, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layers: [ | ||
| { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layer: 'layer', | ||
| geometry: 'UNKNOWN', | ||
| count: 0, | ||
| attributes: [] | ||
| } | ||
| ] | ||
| }, 'expected result'); | ||
| assert.deepEqual(result, sampleStats, 'expected result'); | ||
| assert.end(); | ||
@@ -95,34 +45,7 @@ }); | ||
| createTilestats.end(); | ||
| }); | ||
| tilestatsClient.test('#updateTilestatsLayer', function(updateTilestatsLayer) { | ||
| updateTilestatsLayer.test('typecheck', function(assert) { | ||
| putTilestats.test('updates', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| assert.ok(client, 'created dataset client'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsLayer(null, 'ham', {}, function() {}); | ||
| }, 'tileset must be a string'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsLayer('yes', null, {}, function() {}); | ||
| }, 'layer must be a string'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsLayer('yes', 'ham', 'geom', function() {}); | ||
| }, 'geometries must be an object'); | ||
| assert.end(); | ||
| }); | ||
| updateTilestatsLayer.test('updates layer', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var geoms = { 'point': 10, 'linestring': 100 }; | ||
| client.updateTilestatsLayer(tilesetid, 'layer', geoms, function(err, result) { | ||
| client.putTilestats(tilesetid, modifiedStats, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| geometry: 'LineString', | ||
| count: 110, | ||
| attributes: [] | ||
| }, 'expected result'); | ||
| assert.deepEqual(result, modifiedStats, 'expected result'); | ||
| assert.end(); | ||
@@ -132,140 +55,5 @@ }); | ||
| updateTilestatsLayer.test('updates layer when user specified by tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var geoms = { 'point': 10, 'linestring': 100 }; | ||
| var id = client.owner + '.' + tilesetid; | ||
| client.updateTilestatsLayer(id, 'layer', geoms, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layer: 'layer', | ||
| geometry: 'LineString', | ||
| count: 110, | ||
| attributes: [] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| updateTilestatsLayer.end(); | ||
| putTilestats.end(); | ||
| }); | ||
| tilestatsClient.test('#updateTilestatsAttribute', function(updateTilestatsAttribute) { | ||
| updateTilestatsAttribute.test('typecheck', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| assert.ok(client, 'created dataset client'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsAttribute(null, 'ham', 'eggs', {}, function() {}); | ||
| }, 'tileset must be a string'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsAttribute('yes', null, 'eggs', {}, function() {}); | ||
| }, 'layer must be a string'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsAttribute('yes', 'ham', null, {}, function() {}); | ||
| }, 'attribute must be a string'); | ||
| assert.throws(function() { | ||
| client.updateTilestatsAttribute('yes', 'ham', 'eggs', 'stats', function() {}); | ||
| }, 'stats must be an object'); | ||
| assert.end(); | ||
| }); | ||
| updateTilestatsAttribute.test('update attribute', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var stats = { min: 2, max: 2, values: [2] }; | ||
| client.updateTilestatsAttribute(tilesetid, 'layer', 'attr', stats, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| attribute: 'attr', | ||
| type: 'number', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| updateTilestatsAttribute.test('update attribute when user specified by tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var stats = { min: 2, max: 2, values: [2] }; | ||
| var id = client.owner + '.' + tilesetid; | ||
| client.updateTilestatsAttribute(id, 'layer', 'attr', stats, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layer: 'layer', | ||
| attribute: 'attr', | ||
| type: 'number', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| updateTilestatsAttribute.end(); | ||
| }); | ||
| tilestatsClient.test('#getTilestatsAttribute', function(getTilestatsAttribute) { | ||
| getTilestatsAttribute.test('typecheck', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| assert.ok(client, 'created dataset client'); | ||
| assert.throws(function() { | ||
| client.getTilestatsAttribute(null, 'ham', 'eggs', function() {}); | ||
| }, 'tileset must be a string'); | ||
| assert.throws(function() { | ||
| client.getTilestatsAttribute('yes', null, 'eggs', function() {}); | ||
| }, 'layer must be a string'); | ||
| assert.throws(function() { | ||
| client.getTilestatsAttribute('yes', 'ham', null, function() {}); | ||
| }, 'attribute must be a string'); | ||
| assert.end(); | ||
| }); | ||
| getTilestatsAttribute.test('get attribute', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| client.getTilestatsAttribute(tilesetid, 'layer', 'attr', function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| attribute: 'attr', | ||
| type: 'number', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| getTilestatsAttribute.test('get attribute when user specified by tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var id = client.owner + '.' + tilesetid; | ||
| client.getTilestatsAttribute(id, 'layer', 'attr', function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layer: 'layer', | ||
| attribute: 'attr', | ||
| type: 'number', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| }, 'expected result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| getTilestatsAttribute.end(); | ||
| }); | ||
| tilestatsClient.test('#getTilestats', function(getTilestats) { | ||
@@ -285,23 +73,3 @@ getTilestats.test('typecheck', function(assert) { | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layers: [ | ||
| { | ||
| account: client.owner, | ||
| tilesetid: tilesetid, | ||
| layer: 'layer', | ||
| geometry: 'LineString', | ||
| count: 110, | ||
| attributes: [ | ||
| { | ||
| attribute: 'attr', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
| }, 'expected result'); | ||
| assert.deepEqual(result, modifiedStats, 'expected result'); | ||
| assert.end(); | ||
@@ -316,23 +84,3 @@ }); | ||
| assert.ifError(err, 'success'); | ||
| assert.deepEqual(result, { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layers: [ | ||
| { | ||
| account: client.owner, | ||
| tilesetid: id, | ||
| layer: 'layer', | ||
| geometry: 'LineString', | ||
| count: 110, | ||
| attributes: [ | ||
| { | ||
| attribute: 'attr', | ||
| min: 2, | ||
| max: 2, | ||
| values: [2] | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
| }, 'expected result'); | ||
| assert.deepEqual(result, sampleStats, 'expected result'); | ||
| assert.end(); | ||
@@ -345,35 +93,3 @@ }); | ||
| tilestatsClient.test('#deleteTilestats', function(deleteTilestats) { | ||
| deleteTilestats.test('typecheck', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| assert.ok(client, 'created dataset client'); | ||
| assert.throws(function() { | ||
| client.deleteTilestats(null, function() {}); | ||
| }, 'tileset must be a string'); | ||
| assert.end(); | ||
| }); | ||
| deleteTilestats.test('deletes', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| client.deleteTilestats(tilesetid, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.notOk(result, 'no result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| deleteTilestats.test('deletes when user specified by tilesetid', function(assert) { | ||
| var client = new MapboxClient(process.env.MapboxAccessToken); | ||
| var id = client.owner + '.' + tilesetid; | ||
| client.deleteTilestats(id, function(err, result) { | ||
| assert.ifError(err, 'success'); | ||
| assert.notOk(result, 'no result'); | ||
| assert.end(); | ||
| }); | ||
| }); | ||
| deleteTilestats.end(); | ||
| }); | ||
| tilestatsClient.end(); | ||
| }); |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
371543
59.66%52
1.96%11574
161.26%116
-9.37%2
Infinity%