@deck.gl/carto 8.8.3 → 8.8.6
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/dist/dist.dev.js +1382 -1153
- package/dist/es5/api/index.js.map +1 -1
- package/dist/es5/api/layer-map.js +104 -17
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +213 -47
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +14 -4
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/config.js +11 -2
- package/dist/es5/config.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +10 -23
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/style/color-bins-style.js.map +1 -1
- package/dist/es5/style/color-categories-style.js.map +1 -1
- package/dist/es5/style/color-continuous-style.js.map +1 -1
- package/dist/es5/style/utils.js +3 -1
- package/dist/es5/style/utils.js.map +1 -1
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/layer-map.js +79 -14
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-api-common.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +111 -11
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +18 -4
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/config.js +10 -2
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +7 -19
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/style/color-bins-style.js.map +1 -1
- package/dist/esm/style/color-categories-style.js.map +1 -1
- package/dist/esm/style/color-continuous-style.js.map +1 -1
- package/dist/esm/style/utils.js +3 -1
- package/dist/esm/style/utils.js.map +1 -1
- package/dist.min.js +138 -138
- package/package.json +9 -9
- package/src/api/index.ts +1 -0
- package/src/api/layer-map.ts +76 -13
- package/src/api/maps-api-common.ts +8 -0
- package/src/api/maps-v3-client.ts +116 -12
- package/src/api/parseMap.ts +6 -2
- package/src/config.ts +12 -2
- package/src/index.ts +1 -1
- package/src/layers/carto-layer.ts +19 -32
- package/src/style/color-bins-style.ts +25 -3
- package/src/style/color-categories-style.ts +28 -4
- package/src/style/color-continuous-style.ts +25 -3
- package/src/style/utils.ts +8 -4
- package/typed/api/index.d.ts +1 -0
- package/typed/api/index.d.ts.map +1 -1
- package/typed/api/layer-map.d.ts +12 -4
- package/typed/api/layer-map.d.ts.map +1 -1
- package/typed/api/maps-api-common.d.ts +4 -0
- package/typed/api/maps-api-common.d.ts.map +1 -1
- package/typed/api/maps-v3-client.d.ts +4 -3
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/config.d.ts +2 -0
- package/typed/config.d.ts.map +1 -1
- package/typed/index.d.ts +1 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/layers/carto-layer.d.ts +5 -8
- package/typed/layers/carto-layer.d.ts.map +1 -1
- package/typed/style/color-bins-style.d.ts +22 -3
- package/typed/style/color-bins-style.d.ts.map +1 -1
- package/typed/style/color-categories-style.d.ts +24 -4
- package/typed/style/color-categories-style.d.ts.map +1 -1
- package/typed/style/color-continuous-style.d.ts +22 -3
- package/typed/style/color-continuous-style.d.ts.map +1 -1
- package/typed/style/utils.d.ts +3 -6
- package/typed/style/utils.d.ts.map +1 -1
- package/typed/api/index.js +0 -3
- package/typed/api/layer-map.js +0 -264
- package/typed/api/maps-api-common.js +0 -50
- package/typed/api/maps-client.js +0 -125
- package/typed/api/maps-v3-client.js +0 -304
- package/typed/api/parseMap.js +0 -178
- package/typed/basemap.js +0 -9
- package/typed/config.js +0 -35
- package/typed/index.js +0 -10
- package/typed/layers/carto-layer.js +0 -173
- package/typed/layers/carto-tile-layer.js +0 -105
- package/typed/layers/h3-tile-layer.js +0 -47
- package/typed/layers/h3-tileset-2d.js +0 -85
- package/typed/layers/quadkey-tile-layer.js +0 -42
- package/typed/layers/quadkey-tileset-2d.js +0 -36
- package/typed/layers/schema/carto-tile.js +0 -161
- package/typed/layers/spatial-index-tile-layer.js +0 -40
- package/typed/style/color-bins-style.js +0 -12
- package/typed/style/color-categories-style.js +0 -16
- package/typed/style/color-continuous-style.js +0 -12
- package/typed/style/palette.js +0 -62
- package/typed/style/utils.js +0 -15
- package/typed/utils.js +0 -4
|
@@ -25,6 +25,12 @@ var _core = require("@deck.gl/core");
|
|
|
25
25
|
|
|
26
26
|
var _utils = require("../utils");
|
|
27
27
|
|
|
28
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
29
|
+
|
|
30
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
31
|
+
|
|
32
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
33
|
+
|
|
28
34
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
29
35
|
|
|
30
36
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -201,11 +207,16 @@ function getParameters(_ref5) {
|
|
|
201
207
|
columns = _ref5.columns,
|
|
202
208
|
clientId = _ref5.clientId,
|
|
203
209
|
aggregationExp = _ref5.aggregationExp,
|
|
204
|
-
aggregationResLevel = _ref5.aggregationResLevel
|
|
210
|
+
aggregationResLevel = _ref5.aggregationResLevel,
|
|
211
|
+
queryParameters = _ref5.queryParameters;
|
|
205
212
|
var parameters = [(0, _mapsApiCommon.encodeParameter)('client', clientId || DEFAULT_CLIENT)];
|
|
206
213
|
var sourceName = type === _mapsApiCommon.MAP_TYPES.QUERY ? 'q' : 'name';
|
|
207
214
|
parameters.push((0, _mapsApiCommon.encodeParameter)(sourceName, source));
|
|
208
215
|
|
|
216
|
+
if (queryParameters) {
|
|
217
|
+
parameters.push((0, _mapsApiCommon.encodeParameter)('queryParameters', JSON.stringify(queryParameters)));
|
|
218
|
+
}
|
|
219
|
+
|
|
209
220
|
if (geoColumn) {
|
|
210
221
|
parameters.push((0, _mapsApiCommon.encodeParameter)('geo_column', geoColumn));
|
|
211
222
|
}
|
|
@@ -216,6 +227,8 @@ function getParameters(_ref5) {
|
|
|
216
227
|
|
|
217
228
|
if (aggregationExp) {
|
|
218
229
|
parameters.push((0, _mapsApiCommon.encodeParameter)('aggregationExp', aggregationExp));
|
|
230
|
+
} else if (isSpatialIndexGeoColumn(geoColumn)) {
|
|
231
|
+
parameters.push((0, _mapsApiCommon.encodeParameter)('aggregationExp', '1 AS value'));
|
|
219
232
|
}
|
|
220
233
|
|
|
221
234
|
if (aggregationResLevel) {
|
|
@@ -225,18 +238,23 @@ function getParameters(_ref5) {
|
|
|
225
238
|
return parameters.join('&');
|
|
226
239
|
}
|
|
227
240
|
|
|
241
|
+
function isSpatialIndexGeoColumn(geoColumn) {
|
|
242
|
+
var spatialIndex = geoColumn === null || geoColumn === void 0 ? void 0 : geoColumn.split(':')[0];
|
|
243
|
+
return spatialIndex === 'h3' || spatialIndex === 'quadbin';
|
|
244
|
+
}
|
|
245
|
+
|
|
228
246
|
function mapInstantiation(_x4) {
|
|
229
247
|
return _mapInstantiation.apply(this, arguments);
|
|
230
248
|
}
|
|
231
249
|
|
|
232
250
|
function _mapInstantiation() {
|
|
233
251
|
_mapInstantiation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(_ref6) {
|
|
234
|
-
var type, source, connection, credentials, geoColumn, columns, clientId, aggregationExp, aggregationResLevel, baseUrl, url, accessToken, body;
|
|
252
|
+
var type, source, connection, credentials, geoColumn, columns, clientId, aggregationExp, aggregationResLevel, queryParameters, baseUrl, url, accessToken, body;
|
|
235
253
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
236
254
|
while (1) {
|
|
237
255
|
switch (_context4.prev = _context4.next) {
|
|
238
256
|
case 0:
|
|
239
|
-
type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, clientId = _ref6.clientId, aggregationExp = _ref6.aggregationExp, aggregationResLevel = _ref6.aggregationResLevel;
|
|
257
|
+
type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, clientId = _ref6.clientId, aggregationExp = _ref6.aggregationExp, aggregationResLevel = _ref6.aggregationResLevel, queryParameters = _ref6.queryParameters;
|
|
240
258
|
baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
241
259
|
url = "".concat(baseUrl, "?").concat(getParameters({
|
|
242
260
|
type: type,
|
|
@@ -244,8 +262,9 @@ function _mapInstantiation() {
|
|
|
244
262
|
geoColumn: geoColumn,
|
|
245
263
|
columns: columns,
|
|
246
264
|
clientId: clientId,
|
|
265
|
+
aggregationResLevel: aggregationResLevel,
|
|
247
266
|
aggregationExp: aggregationExp,
|
|
248
|
-
|
|
267
|
+
queryParameters: queryParameters
|
|
249
268
|
}));
|
|
250
269
|
accessToken = credentials.accessToken;
|
|
251
270
|
|
|
@@ -256,7 +275,8 @@ function _mapInstantiation() {
|
|
|
256
275
|
|
|
257
276
|
body = JSON.stringify({
|
|
258
277
|
q: source,
|
|
259
|
-
client: clientId || DEFAULT_CLIENT
|
|
278
|
+
client: clientId || DEFAULT_CLIENT,
|
|
279
|
+
queryParameters: queryParameters
|
|
260
280
|
});
|
|
261
281
|
_context4.next = 8;
|
|
262
282
|
return requestJson({
|
|
@@ -337,13 +357,13 @@ function fetchLayerData(_x5) {
|
|
|
337
357
|
|
|
338
358
|
function _fetchLayerData() {
|
|
339
359
|
_fetchLayerData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(_ref8) {
|
|
340
|
-
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
|
|
360
|
+
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, queryParameters, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
|
|
341
361
|
|
|
342
362
|
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
343
363
|
while (1) {
|
|
344
364
|
switch (_context5.prev = _context5.next) {
|
|
345
365
|
case 0:
|
|
346
|
-
type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, clientId = _ref8.clientId, aggregationExp = _ref8.aggregationExp, aggregationResLevel = _ref8.aggregationResLevel;
|
|
366
|
+
type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, clientId = _ref8.clientId, aggregationExp = _ref8.aggregationExp, aggregationResLevel = _ref8.aggregationResLevel, queryParameters = _ref8.queryParameters;
|
|
347
367
|
_context5.next = 3;
|
|
348
368
|
return _fetchDataUrl({
|
|
349
369
|
type: type,
|
|
@@ -356,7 +376,8 @@ function _fetchLayerData() {
|
|
|
356
376
|
formatTiles: formatTiles,
|
|
357
377
|
clientId: clientId,
|
|
358
378
|
aggregationExp: aggregationExp,
|
|
359
|
-
aggregationResLevel: aggregationResLevel
|
|
379
|
+
aggregationResLevel: aggregationResLevel,
|
|
380
|
+
queryParameters: queryParameters
|
|
360
381
|
});
|
|
361
382
|
|
|
362
383
|
case 3:
|
|
@@ -397,13 +418,13 @@ function _fetchDataUrl(_x6) {
|
|
|
397
418
|
|
|
398
419
|
function _fetchDataUrl2() {
|
|
399
420
|
_fetchDataUrl2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(_ref9) {
|
|
400
|
-
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
421
|
+
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, queryParameters, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
401
422
|
|
|
402
423
|
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
403
424
|
while (1) {
|
|
404
425
|
switch (_context6.prev = _context6.next) {
|
|
405
426
|
case 0:
|
|
406
|
-
type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, clientId = _ref9.clientId, aggregationExp = _ref9.aggregationExp, aggregationResLevel = _ref9.aggregationResLevel;
|
|
427
|
+
type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, clientId = _ref9.clientId, aggregationExp = _ref9.aggregationExp, aggregationResLevel = _ref9.aggregationResLevel, queryParameters = _ref9.queryParameters;
|
|
407
428
|
defaultCredentials = (0, _config.getDefaultCredentials)();
|
|
408
429
|
localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
|
|
409
430
|
checkFetchLayerDataParameters({
|
|
@@ -431,7 +452,8 @@ function _fetchDataUrl2() {
|
|
|
431
452
|
columns: columns,
|
|
432
453
|
clientId: clientId,
|
|
433
454
|
aggregationExp: aggregationExp,
|
|
434
|
-
aggregationResLevel: aggregationResLevel
|
|
455
|
+
aggregationResLevel: aggregationResLevel,
|
|
456
|
+
queryParameters: queryParameters
|
|
435
457
|
});
|
|
436
458
|
|
|
437
459
|
case 7:
|
|
@@ -503,21 +525,23 @@ function _fetchDataUrl2() {
|
|
|
503
525
|
return _fetchDataUrl2.apply(this, arguments);
|
|
504
526
|
}
|
|
505
527
|
|
|
506
|
-
function _fetchMapDataset(_x7, _x8, _x9, _x10) {
|
|
528
|
+
function _fetchMapDataset(_x7, _x8, _x9, _x10, _x11) {
|
|
507
529
|
return _fetchMapDataset2.apply(this, arguments);
|
|
508
530
|
}
|
|
509
531
|
|
|
510
532
|
function _fetchMapDataset2() {
|
|
511
|
-
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId) {
|
|
512
|
-
var connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
533
|
+
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId, queryParameters) {
|
|
534
|
+
var aggregationExp, aggregationResLevel, connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
513
535
|
|
|
514
536
|
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
515
537
|
while (1) {
|
|
516
538
|
switch (_context7.prev = _context7.next) {
|
|
517
539
|
case 0:
|
|
518
|
-
connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
|
|
540
|
+
aggregationExp = dataset.aggregationExp, aggregationResLevel = dataset.aggregationResLevel, connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
|
|
519
541
|
_context7.next = 3;
|
|
520
542
|
return _fetchDataUrl({
|
|
543
|
+
aggregationExp: aggregationExp,
|
|
544
|
+
aggregationResLevel: aggregationResLevel,
|
|
521
545
|
clientId: clientId,
|
|
522
546
|
credentials: _objectSpread(_objectSpread({}, credentials), {}, {
|
|
523
547
|
accessToken: accessToken
|
|
@@ -527,7 +551,8 @@ function _fetchMapDataset2() {
|
|
|
527
551
|
format: format,
|
|
528
552
|
geoColumn: geoColumn,
|
|
529
553
|
source: source,
|
|
530
|
-
type: type
|
|
554
|
+
type: type,
|
|
555
|
+
queryParameters: queryParameters
|
|
531
556
|
});
|
|
532
557
|
|
|
533
558
|
case 3:
|
|
@@ -566,49 +591,186 @@ function _fetchMapDataset2() {
|
|
|
566
591
|
return _fetchMapDataset2.apply(this, arguments);
|
|
567
592
|
}
|
|
568
593
|
|
|
569
|
-
function
|
|
594
|
+
function _fetchTilestats(_x12, _x13, _x14, _x15) {
|
|
595
|
+
return _fetchTilestats2.apply(this, arguments);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
function _fetchTilestats2() {
|
|
599
|
+
_fetchTilestats2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(attribute, dataset, accessToken, credentials) {
|
|
600
|
+
var connection, source, type, statsUrl, url, stats, attributes, index;
|
|
601
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
602
|
+
while (1) {
|
|
603
|
+
switch (_context8.prev = _context8.next) {
|
|
604
|
+
case 0:
|
|
605
|
+
connection = dataset.connectionName, source = dataset.source, type = dataset.type;
|
|
606
|
+
statsUrl = (0, _config.buildStatsUrlFromBase)(credentials.apiBaseUrl);
|
|
607
|
+
url = "".concat(statsUrl, "/").concat(connection, "/");
|
|
608
|
+
|
|
609
|
+
if (type === _mapsApiCommon.MAP_TYPES.QUERY) {
|
|
610
|
+
url += "".concat(attribute, "?q=").concat(source);
|
|
611
|
+
} else {
|
|
612
|
+
url += "".concat(source, "/").concat(attribute);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
_context8.next = 6;
|
|
616
|
+
return requestData({
|
|
617
|
+
url: url,
|
|
618
|
+
format: _mapsApiCommon.FORMATS.JSON,
|
|
619
|
+
accessToken: accessToken
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
case 6:
|
|
623
|
+
stats = _context8.sent;
|
|
624
|
+
attributes = dataset.data.tilestats.layers[0].attributes;
|
|
625
|
+
index = attributes.findIndex(function (d) {
|
|
626
|
+
return d.attribute === attribute;
|
|
627
|
+
});
|
|
628
|
+
attributes[index] = stats;
|
|
629
|
+
return _context8.abrupt("return", true);
|
|
630
|
+
|
|
631
|
+
case 11:
|
|
632
|
+
case "end":
|
|
633
|
+
return _context8.stop();
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}, _callee8);
|
|
637
|
+
}));
|
|
638
|
+
return _fetchTilestats2.apply(this, arguments);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
function fillInMapDatasets(_x16, _x17, _x18) {
|
|
570
642
|
return _fillInMapDatasets.apply(this, arguments);
|
|
571
643
|
}
|
|
572
644
|
|
|
573
645
|
function _fillInMapDatasets() {
|
|
574
|
-
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
646
|
+
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(_ref10, clientId, credentials) {
|
|
575
647
|
var datasets, token, promises;
|
|
576
|
-
return _regenerator.default.wrap(function
|
|
648
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
577
649
|
while (1) {
|
|
578
|
-
switch (
|
|
650
|
+
switch (_context9.prev = _context9.next) {
|
|
579
651
|
case 0:
|
|
580
652
|
datasets = _ref10.datasets, token = _ref10.token;
|
|
581
653
|
promises = datasets.map(function (dataset) {
|
|
582
654
|
return _fetchMapDataset(dataset, token, credentials, clientId);
|
|
583
655
|
});
|
|
584
|
-
|
|
656
|
+
_context9.next = 4;
|
|
585
657
|
return Promise.all(promises);
|
|
586
658
|
|
|
587
659
|
case 4:
|
|
588
|
-
return
|
|
660
|
+
return _context9.abrupt("return", _context9.sent);
|
|
589
661
|
|
|
590
662
|
case 5:
|
|
591
663
|
case "end":
|
|
592
|
-
return
|
|
664
|
+
return _context9.stop();
|
|
593
665
|
}
|
|
594
666
|
}
|
|
595
|
-
},
|
|
667
|
+
}, _callee9);
|
|
596
668
|
}));
|
|
597
669
|
return _fillInMapDatasets.apply(this, arguments);
|
|
598
670
|
}
|
|
599
671
|
|
|
600
|
-
function
|
|
672
|
+
function fillInTileStats(_x19, _x20) {
|
|
673
|
+
return _fillInTileStats.apply(this, arguments);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
function _fillInTileStats() {
|
|
677
|
+
_fillInTileStats = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee10(_ref11, credentials) {
|
|
678
|
+
var datasets, keplerMapConfig, token, attributes, layers, _iterator, _step, _loop2, filteredAttributes, _loop, _i2, _attributes, promises;
|
|
679
|
+
|
|
680
|
+
return _regenerator.default.wrap(function _callee10$(_context10) {
|
|
681
|
+
while (1) {
|
|
682
|
+
switch (_context10.prev = _context10.next) {
|
|
683
|
+
case 0:
|
|
684
|
+
datasets = _ref11.datasets, keplerMapConfig = _ref11.keplerMapConfig, token = _ref11.token;
|
|
685
|
+
attributes = [];
|
|
686
|
+
layers = keplerMapConfig.config.visState.layers;
|
|
687
|
+
_iterator = _createForOfIteratorHelper(layers);
|
|
688
|
+
|
|
689
|
+
try {
|
|
690
|
+
_loop2 = function _loop2() {
|
|
691
|
+
var layer = _step.value;
|
|
692
|
+
|
|
693
|
+
for (var _i3 = 0, _Object$keys = Object.keys(layer.visualChannels); _i3 < _Object$keys.length; _i3++) {
|
|
694
|
+
var _layer$visualChannels;
|
|
695
|
+
|
|
696
|
+
var channel = _Object$keys[_i3];
|
|
697
|
+
var attribute = (_layer$visualChannels = layer.visualChannels[channel]) === null || _layer$visualChannels === void 0 ? void 0 : _layer$visualChannels.name;
|
|
698
|
+
|
|
699
|
+
if (attribute) {
|
|
700
|
+
var dataset = datasets.find(function (d) {
|
|
701
|
+
return d.id === layer.config.dataId;
|
|
702
|
+
});
|
|
703
|
+
|
|
704
|
+
if (dataset.data.tilestats && dataset.type !== _mapsApiCommon.MAP_TYPES.TILESET) {
|
|
705
|
+
attributes.push({
|
|
706
|
+
attribute: attribute,
|
|
707
|
+
dataset: dataset
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
715
|
+
_loop2();
|
|
716
|
+
}
|
|
717
|
+
} catch (err) {
|
|
718
|
+
_iterator.e(err);
|
|
719
|
+
} finally {
|
|
720
|
+
_iterator.f();
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
filteredAttributes = [];
|
|
724
|
+
|
|
725
|
+
_loop = function _loop() {
|
|
726
|
+
var a = _attributes[_i2];
|
|
727
|
+
|
|
728
|
+
if (!filteredAttributes.find(function (_ref13) {
|
|
729
|
+
var attribute = _ref13.attribute,
|
|
730
|
+
dataset = _ref13.dataset;
|
|
731
|
+
return attribute === a.attribute && dataset === a.dataset;
|
|
732
|
+
})) {
|
|
733
|
+
filteredAttributes.push(a);
|
|
734
|
+
}
|
|
735
|
+
};
|
|
736
|
+
|
|
737
|
+
for (_i2 = 0, _attributes = attributes; _i2 < _attributes.length; _i2++) {
|
|
738
|
+
_loop();
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
promises = filteredAttributes.map(function (_ref14) {
|
|
742
|
+
var attribute = _ref14.attribute,
|
|
743
|
+
dataset = _ref14.dataset;
|
|
744
|
+
return _fetchTilestats(attribute, dataset, token, credentials);
|
|
745
|
+
});
|
|
746
|
+
_context10.next = 11;
|
|
747
|
+
return Promise.all(promises);
|
|
748
|
+
|
|
749
|
+
case 11:
|
|
750
|
+
return _context10.abrupt("return", _context10.sent);
|
|
751
|
+
|
|
752
|
+
case 12:
|
|
753
|
+
case "end":
|
|
754
|
+
return _context10.stop();
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
}, _callee10);
|
|
758
|
+
}));
|
|
759
|
+
return _fillInTileStats.apply(this, arguments);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
function fetchMap(_x21) {
|
|
601
763
|
return _fetchMap.apply(this, arguments);
|
|
602
764
|
}
|
|
603
765
|
|
|
604
766
|
function _fetchMap() {
|
|
605
|
-
_fetchMap = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
767
|
+
_fetchMap = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee12(_ref12) {
|
|
606
768
|
var cartoMapId, clientId, credentials, autoRefresh, onNewData, defaultCredentials, localCreds, accessToken, url, map, stopAutoRefresh, intervalId, geojsonLayers, geojsonDatasetIds;
|
|
607
|
-
return _regenerator.default.wrap(function
|
|
769
|
+
return _regenerator.default.wrap(function _callee12$(_context12) {
|
|
608
770
|
while (1) {
|
|
609
|
-
switch (
|
|
771
|
+
switch (_context12.prev = _context12.next) {
|
|
610
772
|
case 0:
|
|
611
|
-
cartoMapId =
|
|
773
|
+
cartoMapId = _ref12.cartoMapId, clientId = _ref12.clientId, credentials = _ref12.credentials, autoRefresh = _ref12.autoRefresh, onNewData = _ref12.onNewData;
|
|
612
774
|
defaultCredentials = (0, _config.getDefaultCredentials)();
|
|
613
775
|
localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
|
|
614
776
|
accessToken = localCreds.accessToken;
|
|
@@ -627,27 +789,27 @@ function _fetchMap() {
|
|
|
627
789
|
}
|
|
628
790
|
|
|
629
791
|
url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
|
|
630
|
-
|
|
792
|
+
_context12.next = 12;
|
|
631
793
|
return requestJson({
|
|
632
794
|
url: url,
|
|
633
795
|
accessToken: accessToken
|
|
634
796
|
});
|
|
635
797
|
|
|
636
798
|
case 12:
|
|
637
|
-
map =
|
|
799
|
+
map = _context12.sent;
|
|
638
800
|
|
|
639
801
|
if (autoRefresh) {
|
|
640
|
-
intervalId = setInterval((0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
802
|
+
intervalId = setInterval((0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee11() {
|
|
641
803
|
var changed;
|
|
642
|
-
return _regenerator.default.wrap(function
|
|
804
|
+
return _regenerator.default.wrap(function _callee11$(_context11) {
|
|
643
805
|
while (1) {
|
|
644
|
-
switch (
|
|
806
|
+
switch (_context11.prev = _context11.next) {
|
|
645
807
|
case 0:
|
|
646
|
-
|
|
808
|
+
_context11.next = 2;
|
|
647
809
|
return fillInMapDatasets(map, clientId, localCreds);
|
|
648
810
|
|
|
649
811
|
case 2:
|
|
650
|
-
changed =
|
|
812
|
+
changed = _context11.sent;
|
|
651
813
|
|
|
652
814
|
if (onNewData && changed.some(function (v) {
|
|
653
815
|
return v === true;
|
|
@@ -657,10 +819,10 @@ function _fetchMap() {
|
|
|
657
819
|
|
|
658
820
|
case 4:
|
|
659
821
|
case "end":
|
|
660
|
-
return
|
|
822
|
+
return _context11.stop();
|
|
661
823
|
}
|
|
662
824
|
}
|
|
663
|
-
},
|
|
825
|
+
}, _callee11);
|
|
664
826
|
})), autoRefresh * 1000);
|
|
665
827
|
|
|
666
828
|
stopAutoRefresh = function stopAutoRefresh() {
|
|
@@ -668,12 +830,12 @@ function _fetchMap() {
|
|
|
668
830
|
};
|
|
669
831
|
}
|
|
670
832
|
|
|
671
|
-
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (
|
|
672
|
-
var type =
|
|
833
|
+
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (_ref16) {
|
|
834
|
+
var type = _ref16.type;
|
|
673
835
|
return type === 'geojson' || type === 'point';
|
|
674
836
|
});
|
|
675
|
-
geojsonDatasetIds = geojsonLayers.map(function (
|
|
676
|
-
var config =
|
|
837
|
+
geojsonDatasetIds = geojsonLayers.map(function (_ref17) {
|
|
838
|
+
var config = _ref17.config;
|
|
677
839
|
return config.dataId;
|
|
678
840
|
});
|
|
679
841
|
map.datasets.forEach(function (dataset) {
|
|
@@ -681,20 +843,24 @@ function _fetchMap() {
|
|
|
681
843
|
dataset.format = 'geojson';
|
|
682
844
|
}
|
|
683
845
|
});
|
|
684
|
-
|
|
846
|
+
_context12.next = 19;
|
|
685
847
|
return fillInMapDatasets(map, clientId, localCreds);
|
|
686
848
|
|
|
687
849
|
case 19:
|
|
688
|
-
|
|
850
|
+
_context12.next = 21;
|
|
851
|
+
return fillInTileStats(map, localCreds);
|
|
852
|
+
|
|
853
|
+
case 21:
|
|
854
|
+
return _context12.abrupt("return", _objectSpread(_objectSpread({}, (0, _parseMap.parseMap)(map)), {
|
|
689
855
|
stopAutoRefresh: stopAutoRefresh
|
|
690
856
|
}));
|
|
691
857
|
|
|
692
|
-
case
|
|
858
|
+
case 22:
|
|
693
859
|
case "end":
|
|
694
|
-
return
|
|
860
|
+
return _context12.stop();
|
|
695
861
|
}
|
|
696
862
|
}
|
|
697
|
-
},
|
|
863
|
+
}, _callee12);
|
|
698
864
|
}));
|
|
699
865
|
return _fetchMap.apply(this, arguments);
|
|
700
866
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","parameters","sourceName","MAP_TYPES","QUERY","push","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","keplerMapConfig","config","visState","layers","filter","geojsonDatasetIds","dataId","forEach","id"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, format, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n source,\n type\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","sourceName","MAP_TYPES","QUERY","push","JSON","stringify","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (queryParameters) {\n parameters.push(encodeParameter('queryParameters', JSON.stringify(queryParameters)));\n }\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.push(encodeParameter('aggregationExp', '1 AS value'));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT,\n queryParameters\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n queryParameters?: QueryParameters\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?q=${source}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const stats = await requestData({url, format: FORMATS.JSON, accessToken});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|