@deck.gl/carto 8.8.0-beta.3 → 8.8.0
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 +2298 -1182
- package/dist/es5/api/index.js +0 -6
- package/dist/es5/api/index.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +44 -86
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/index.js +23 -9
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +14 -19
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/h3-tile-layer.js +28 -3
- package/dist/es5/layers/h3-tile-layer.js.map +1 -1
- package/dist/es5/layers/h3-tileset-2d.js +19 -13
- package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
- package/dist/es5/layers/quadbin-layer.js +71 -0
- package/dist/es5/layers/quadbin-layer.js.map +1 -0
- package/dist/es5/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +17 -17
- package/dist/es5/layers/quadbin-tile-layer.js.map +1 -0
- package/dist/es5/layers/{quadkey-tileset-2d.js → quadbin-tileset-2d.js} +25 -57
- package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -0
- package/dist/es5/layers/quadbin-utils.js +122 -0
- package/dist/es5/layers/quadbin-utils.js.map +1 -0
- package/dist/esm/api/index.js +1 -1
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +0 -24
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +12 -17
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/h3-tile-layer.js +22 -3
- package/dist/esm/layers/h3-tile-layer.js.map +1 -1
- package/dist/esm/layers/h3-tileset-2d.js +20 -16
- package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
- package/dist/esm/layers/quadbin-layer.js +29 -0
- package/dist/esm/layers/quadbin-layer.js.map +1 -0
- package/dist/esm/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +10 -10
- package/dist/esm/layers/quadbin-tile-layer.js.map +1 -0
- package/dist/esm/layers/quadbin-tileset-2d.js +37 -0
- package/dist/esm/layers/quadbin-tileset-2d.js.map +1 -0
- package/dist/esm/layers/quadbin-utils.js +88 -0
- package/dist/esm/layers/quadbin-utils.js.map +1 -0
- package/dist.min.js +138 -138
- package/package.json +2 -2
- package/src/api/index.ts +1 -1
- package/src/api/maps-v3-client.ts +0 -24
- package/src/index.ts +6 -2
- package/src/layers/carto-layer.ts +22 -37
- package/src/layers/h3-tile-layer.ts +25 -3
- package/src/layers/h3-tileset-2d.ts +20 -10
- package/src/layers/quadbin-layer.ts +43 -0
- package/src/layers/{quadkey-tile-layer.ts → quadbin-tile-layer.ts} +15 -13
- package/src/layers/quadbin-tileset-2d.ts +34 -0
- package/src/layers/quadbin-utils.ts +102 -0
- package/typed/api/index.d.ts +1 -1
- package/typed/api/index.d.ts.map +1 -1
- package/typed/api/index.js +3 -0
- package/typed/api/layer-map.js +264 -0
- package/typed/api/maps-api-common.js +50 -0
- package/typed/api/maps-client.js +125 -0
- package/typed/api/maps-v3-client.d.ts +0 -1
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/api/maps-v3-client.js +304 -0
- package/typed/api/parseMap.js +178 -0
- package/typed/basemap.js +9 -0
- package/typed/config.js +35 -0
- package/typed/index.d.ts +3 -2
- package/typed/index.d.ts.map +1 -1
- package/typed/index.js +10 -0
- package/typed/layers/carto-layer.d.ts +4 -12
- package/typed/layers/carto-layer.d.ts.map +1 -1
- package/typed/layers/carto-layer.js +173 -0
- package/typed/layers/carto-tile-layer.js +105 -0
- package/typed/layers/h3-tile-layer.d.ts.map +1 -1
- package/typed/layers/h3-tile-layer.js +47 -0
- package/typed/layers/h3-tileset-2d.d.ts +6 -0
- package/typed/layers/h3-tileset-2d.d.ts.map +1 -1
- package/typed/layers/h3-tileset-2d.js +85 -0
- package/typed/layers/quadbin-layer.d.ts +20 -0
- package/typed/layers/quadbin-layer.d.ts.map +1 -0
- package/typed/layers/quadbin-tile-layer.d.ts +21 -0
- package/typed/layers/quadbin-tile-layer.d.ts.map +1 -0
- package/typed/layers/quadbin-tileset-2d.d.ts +13 -0
- package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -0
- package/typed/layers/quadbin-utils.d.ts +11 -0
- package/typed/layers/quadbin-utils.d.ts.map +1 -0
- package/typed/layers/quadkey-tile-layer.js +42 -0
- package/typed/layers/quadkey-tileset-2d.js +36 -0
- package/typed/layers/schema/carto-tile.js +161 -0
- package/typed/layers/spatial-index-tile-layer.js +40 -0
- package/typed/style/color-bins-style.js +12 -0
- package/typed/style/color-categories-style.js +16 -0
- package/typed/style/color-continuous-style.js +12 -0
- package/typed/style/palette.js +62 -0
- package/typed/style/utils.js +15 -0
- package/typed/utils.js +4 -0
- package/dist/es5/layers/quadkey-tile-layer.js.map +0 -1
- package/dist/es5/layers/quadkey-tileset-2d.js.map +0 -1
- package/dist/esm/layers/quadkey-tile-layer.js.map +0 -1
- package/dist/esm/layers/quadkey-tileset-2d.js +0 -71
- package/dist/esm/layers/quadkey-tileset-2d.js.map +0 -1
- package/src/layers/quadkey-tileset-2d.ts +0 -59
package/dist/es5/api/index.js
CHANGED
|
@@ -51,12 +51,6 @@ Object.defineProperty(exports, "fetchMap", {
|
|
|
51
51
|
return _mapsV3Client.fetchMap;
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
-
Object.defineProperty(exports, "getData", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function get() {
|
|
57
|
-
return _mapsV3Client.getData;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
54
|
Object.defineProperty(exports, "mapInstantiation", {
|
|
61
55
|
enumerable: true,
|
|
62
56
|
get: function get() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export {FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS} from './maps-api-common';\nexport {getDataV2, CONNECTIONS} from './maps-client';\nexport {fetchLayerData, fetchMap, mapInstantiation} from './maps-v3-client';\n"],"file":"index.js"}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.mapInstantiation = mapInstantiation;
|
|
9
9
|
exports.fetchLayerData = fetchLayerData;
|
|
10
|
-
exports.getData = getData;
|
|
11
10
|
exports.fetchMap = fetchMap;
|
|
12
11
|
|
|
13
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
@@ -504,61 +503,20 @@ function _fetchDataUrl2() {
|
|
|
504
503
|
return _fetchDataUrl2.apply(this, arguments);
|
|
505
504
|
}
|
|
506
505
|
|
|
507
|
-
function
|
|
508
|
-
return _getData.apply(this, arguments);
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
function _getData() {
|
|
512
|
-
_getData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(_ref10) {
|
|
513
|
-
var type, source, connection, credentials, geoColumn, columns, format, clientId, layerData;
|
|
514
|
-
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
515
|
-
while (1) {
|
|
516
|
-
switch (_context7.prev = _context7.next) {
|
|
517
|
-
case 0:
|
|
518
|
-
type = _ref10.type, source = _ref10.source, connection = _ref10.connection, credentials = _ref10.credentials, geoColumn = _ref10.geoColumn, columns = _ref10.columns, format = _ref10.format, clientId = _ref10.clientId;
|
|
519
|
-
|
|
520
|
-
_core.log.deprecated('getData', 'fetchLayerData')();
|
|
521
|
-
|
|
522
|
-
_context7.next = 4;
|
|
523
|
-
return fetchLayerData({
|
|
524
|
-
type: type,
|
|
525
|
-
source: source,
|
|
526
|
-
connection: connection,
|
|
527
|
-
credentials: credentials,
|
|
528
|
-
geoColumn: geoColumn,
|
|
529
|
-
columns: columns,
|
|
530
|
-
format: format,
|
|
531
|
-
clientId: clientId
|
|
532
|
-
});
|
|
533
|
-
|
|
534
|
-
case 4:
|
|
535
|
-
layerData = _context7.sent;
|
|
536
|
-
return _context7.abrupt("return", layerData.data);
|
|
537
|
-
|
|
538
|
-
case 6:
|
|
539
|
-
case "end":
|
|
540
|
-
return _context7.stop();
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}, _callee7);
|
|
544
|
-
}));
|
|
545
|
-
return _getData.apply(this, arguments);
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
function _fetchMapDataset(_x8, _x9, _x10, _x11) {
|
|
506
|
+
function _fetchMapDataset(_x7, _x8, _x9, _x10) {
|
|
549
507
|
return _fetchMapDataset2.apply(this, arguments);
|
|
550
508
|
}
|
|
551
509
|
|
|
552
510
|
function _fetchMapDataset2() {
|
|
553
|
-
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
511
|
+
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId) {
|
|
554
512
|
var connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
555
513
|
|
|
556
|
-
return _regenerator.default.wrap(function
|
|
514
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
557
515
|
while (1) {
|
|
558
|
-
switch (
|
|
516
|
+
switch (_context7.prev = _context7.next) {
|
|
559
517
|
case 0:
|
|
560
518
|
connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
|
|
561
|
-
|
|
519
|
+
_context7.next = 3;
|
|
562
520
|
return _fetchDataUrl({
|
|
563
521
|
clientId: clientId,
|
|
564
522
|
credentials: _objectSpread(_objectSpread({}, credentials), {}, {
|
|
@@ -573,21 +531,21 @@ function _fetchMapDataset2() {
|
|
|
573
531
|
});
|
|
574
532
|
|
|
575
533
|
case 3:
|
|
576
|
-
_yield$_fetchDataUrl2 =
|
|
534
|
+
_yield$_fetchDataUrl2 = _context7.sent;
|
|
577
535
|
url = _yield$_fetchDataUrl2.url;
|
|
578
536
|
mapFormat = _yield$_fetchDataUrl2.mapFormat;
|
|
579
537
|
cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);
|
|
580
538
|
|
|
581
539
|
if (!(cache && dataset.cache === cache)) {
|
|
582
|
-
|
|
540
|
+
_context7.next = 9;
|
|
583
541
|
break;
|
|
584
542
|
}
|
|
585
543
|
|
|
586
|
-
return
|
|
544
|
+
return _context7.abrupt("return", false);
|
|
587
545
|
|
|
588
546
|
case 9:
|
|
589
547
|
dataset.cache = cache;
|
|
590
|
-
|
|
548
|
+
_context7.next = 12;
|
|
591
549
|
return requestData({
|
|
592
550
|
url: url,
|
|
593
551
|
format: mapFormat,
|
|
@@ -595,62 +553,62 @@ function _fetchMapDataset2() {
|
|
|
595
553
|
});
|
|
596
554
|
|
|
597
555
|
case 12:
|
|
598
|
-
dataset.data =
|
|
599
|
-
return
|
|
556
|
+
dataset.data = _context7.sent;
|
|
557
|
+
return _context7.abrupt("return", true);
|
|
600
558
|
|
|
601
559
|
case 14:
|
|
602
560
|
case "end":
|
|
603
|
-
return
|
|
561
|
+
return _context7.stop();
|
|
604
562
|
}
|
|
605
563
|
}
|
|
606
|
-
},
|
|
564
|
+
}, _callee7);
|
|
607
565
|
}));
|
|
608
566
|
return _fetchMapDataset2.apply(this, arguments);
|
|
609
567
|
}
|
|
610
568
|
|
|
611
|
-
function fillInMapDatasets(_x12, _x13
|
|
569
|
+
function fillInMapDatasets(_x11, _x12, _x13) {
|
|
612
570
|
return _fillInMapDatasets.apply(this, arguments);
|
|
613
571
|
}
|
|
614
572
|
|
|
615
573
|
function _fillInMapDatasets() {
|
|
616
|
-
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
574
|
+
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(_ref10, clientId, credentials) {
|
|
617
575
|
var datasets, token, promises;
|
|
618
|
-
return _regenerator.default.wrap(function
|
|
576
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
619
577
|
while (1) {
|
|
620
|
-
switch (
|
|
578
|
+
switch (_context8.prev = _context8.next) {
|
|
621
579
|
case 0:
|
|
622
|
-
datasets =
|
|
580
|
+
datasets = _ref10.datasets, token = _ref10.token;
|
|
623
581
|
promises = datasets.map(function (dataset) {
|
|
624
582
|
return _fetchMapDataset(dataset, token, credentials, clientId);
|
|
625
583
|
});
|
|
626
|
-
|
|
584
|
+
_context8.next = 4;
|
|
627
585
|
return Promise.all(promises);
|
|
628
586
|
|
|
629
587
|
case 4:
|
|
630
|
-
return
|
|
588
|
+
return _context8.abrupt("return", _context8.sent);
|
|
631
589
|
|
|
632
590
|
case 5:
|
|
633
591
|
case "end":
|
|
634
|
-
return
|
|
592
|
+
return _context8.stop();
|
|
635
593
|
}
|
|
636
594
|
}
|
|
637
|
-
},
|
|
595
|
+
}, _callee8);
|
|
638
596
|
}));
|
|
639
597
|
return _fillInMapDatasets.apply(this, arguments);
|
|
640
598
|
}
|
|
641
599
|
|
|
642
|
-
function fetchMap(
|
|
600
|
+
function fetchMap(_x14) {
|
|
643
601
|
return _fetchMap.apply(this, arguments);
|
|
644
602
|
}
|
|
645
603
|
|
|
646
604
|
function _fetchMap() {
|
|
647
|
-
_fetchMap = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
605
|
+
_fetchMap = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee10(_ref11) {
|
|
648
606
|
var cartoMapId, clientId, credentials, autoRefresh, onNewData, defaultCredentials, localCreds, accessToken, url, map, stopAutoRefresh, intervalId, geojsonLayers, geojsonDatasetIds;
|
|
649
|
-
return _regenerator.default.wrap(function
|
|
607
|
+
return _regenerator.default.wrap(function _callee10$(_context10) {
|
|
650
608
|
while (1) {
|
|
651
|
-
switch (
|
|
609
|
+
switch (_context10.prev = _context10.next) {
|
|
652
610
|
case 0:
|
|
653
|
-
cartoMapId =
|
|
611
|
+
cartoMapId = _ref11.cartoMapId, clientId = _ref11.clientId, credentials = _ref11.credentials, autoRefresh = _ref11.autoRefresh, onNewData = _ref11.onNewData;
|
|
654
612
|
defaultCredentials = (0, _config.getDefaultCredentials)();
|
|
655
613
|
localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
|
|
656
614
|
accessToken = localCreds.accessToken;
|
|
@@ -669,27 +627,27 @@ function _fetchMap() {
|
|
|
669
627
|
}
|
|
670
628
|
|
|
671
629
|
url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
|
|
672
|
-
|
|
630
|
+
_context10.next = 12;
|
|
673
631
|
return requestJson({
|
|
674
632
|
url: url,
|
|
675
633
|
accessToken: accessToken
|
|
676
634
|
});
|
|
677
635
|
|
|
678
636
|
case 12:
|
|
679
|
-
map =
|
|
637
|
+
map = _context10.sent;
|
|
680
638
|
|
|
681
639
|
if (autoRefresh) {
|
|
682
|
-
intervalId = setInterval((0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
640
|
+
intervalId = setInterval((0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9() {
|
|
683
641
|
var changed;
|
|
684
|
-
return _regenerator.default.wrap(function
|
|
642
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
685
643
|
while (1) {
|
|
686
|
-
switch (
|
|
644
|
+
switch (_context9.prev = _context9.next) {
|
|
687
645
|
case 0:
|
|
688
|
-
|
|
646
|
+
_context9.next = 2;
|
|
689
647
|
return fillInMapDatasets(map, clientId, localCreds);
|
|
690
648
|
|
|
691
649
|
case 2:
|
|
692
|
-
changed =
|
|
650
|
+
changed = _context9.sent;
|
|
693
651
|
|
|
694
652
|
if (onNewData && changed.some(function (v) {
|
|
695
653
|
return v === true;
|
|
@@ -699,10 +657,10 @@ function _fetchMap() {
|
|
|
699
657
|
|
|
700
658
|
case 4:
|
|
701
659
|
case "end":
|
|
702
|
-
return
|
|
660
|
+
return _context9.stop();
|
|
703
661
|
}
|
|
704
662
|
}
|
|
705
|
-
},
|
|
663
|
+
}, _callee9);
|
|
706
664
|
})), autoRefresh * 1000);
|
|
707
665
|
|
|
708
666
|
stopAutoRefresh = function stopAutoRefresh() {
|
|
@@ -710,12 +668,12 @@ function _fetchMap() {
|
|
|
710
668
|
};
|
|
711
669
|
}
|
|
712
670
|
|
|
713
|
-
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (
|
|
714
|
-
var type =
|
|
671
|
+
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (_ref13) {
|
|
672
|
+
var type = _ref13.type;
|
|
715
673
|
return type === 'geojson' || type === 'point';
|
|
716
674
|
});
|
|
717
|
-
geojsonDatasetIds = geojsonLayers.map(function (
|
|
718
|
-
var config =
|
|
675
|
+
geojsonDatasetIds = geojsonLayers.map(function (_ref14) {
|
|
676
|
+
var config = _ref14.config;
|
|
719
677
|
return config.dataId;
|
|
720
678
|
});
|
|
721
679
|
map.datasets.forEach(function (dataset) {
|
|
@@ -723,20 +681,20 @@ function _fetchMap() {
|
|
|
723
681
|
dataset.format = 'geojson';
|
|
724
682
|
}
|
|
725
683
|
});
|
|
726
|
-
|
|
684
|
+
_context10.next = 19;
|
|
727
685
|
return fillInMapDatasets(map, clientId, localCreds);
|
|
728
686
|
|
|
729
687
|
case 19:
|
|
730
|
-
return
|
|
688
|
+
return _context10.abrupt("return", _objectSpread(_objectSpread({}, (0, _parseMap.parseMap)(map)), {
|
|
731
689
|
stopAutoRefresh: stopAutoRefresh
|
|
732
690
|
}));
|
|
733
691
|
|
|
734
692
|
case 20:
|
|
735
693
|
case "end":
|
|
736
|
-
return
|
|
694
|
+
return _context10.stop();
|
|
737
695
|
}
|
|
738
696
|
}
|
|
739
|
-
},
|
|
697
|
+
}, _callee10);
|
|
740
698
|
}));
|
|
741
699
|
return _fetchMap.apply(this, arguments);
|
|
742
700
|
}
|
|
@@ -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","getData","deprecated","layerData","_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\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n });\n return layerData.data;\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","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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -35,10 +35,28 @@ Object.defineProperty(exports, "_H3TileLayer", {
|
|
|
35
35
|
return _h3TileLayer.default;
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
-
Object.defineProperty(exports, "
|
|
38
|
+
Object.defineProperty(exports, "_QuadbinTileLayer", {
|
|
39
39
|
enumerable: true,
|
|
40
40
|
get: function get() {
|
|
41
|
-
return
|
|
41
|
+
return _quadbinTileLayer.default;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "_tileToQuadbin", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function get() {
|
|
47
|
+
return _quadbinUtils.tileToQuadbin;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(exports, "_quadbinToTile", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function get() {
|
|
53
|
+
return _quadbinUtils.quadbinToTile;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(exports, "_quadbinZoom", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function get() {
|
|
59
|
+
return _quadbinUtils.quadbinZoom;
|
|
42
60
|
}
|
|
43
61
|
});
|
|
44
62
|
Object.defineProperty(exports, "BASEMAP", {
|
|
@@ -107,12 +125,6 @@ Object.defineProperty(exports, "_getDataV2", {
|
|
|
107
125
|
return _api.getDataV2;
|
|
108
126
|
}
|
|
109
127
|
});
|
|
110
|
-
Object.defineProperty(exports, "getData", {
|
|
111
|
-
enumerable: true,
|
|
112
|
-
get: function get() {
|
|
113
|
-
return _api.getData;
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
128
|
Object.defineProperty(exports, "_mapInstantiation", {
|
|
117
129
|
enumerable: true,
|
|
118
130
|
get: function get() {
|
|
@@ -128,7 +140,9 @@ var _cartoTileLayer = _interopRequireDefault(require("./layers/carto-tile-layer"
|
|
|
128
140
|
|
|
129
141
|
var _h3TileLayer = _interopRequireDefault(require("./layers/h3-tile-layer"));
|
|
130
142
|
|
|
131
|
-
var
|
|
143
|
+
var _quadbinTileLayer = _interopRequireDefault(require("./layers/quadbin-tile-layer"));
|
|
144
|
+
|
|
145
|
+
var _quadbinUtils = require("./layers/quadbin-utils");
|
|
132
146
|
|
|
133
147
|
var _basemap = _interopRequireDefault(require("./basemap"));
|
|
134
148
|
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {\n tileToQuadbin as _tileToQuadbin,\n quadbinToTile as _quadbinToTile,\n quadbinZoom as _quadbinZoom\n} from './layers/quadbin-utils';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\n\nexport type {CartoLayerProps} from './layers/carto-layer';\n"],"file":"index.js"}
|
|
@@ -35,12 +35,10 @@ var _cartoTileLayer = _interopRequireDefault(require("./carto-tile-layer"));
|
|
|
35
35
|
|
|
36
36
|
var _h3TileLayer = _interopRequireDefault(require("./h3-tile-layer"));
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _quadbinTileLayer = _interopRequireDefault(require("./quadbin-tile-layer"));
|
|
39
39
|
|
|
40
40
|
var _geoLayers = require("@deck.gl/geo-layers");
|
|
41
41
|
|
|
42
|
-
var _layers = require("@deck.gl/layers");
|
|
43
|
-
|
|
44
42
|
var _api = require("../api");
|
|
45
43
|
|
|
46
44
|
var _mapsApiCommon = require("../api/maps-api-common");
|
|
@@ -162,7 +160,7 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
162
160
|
|
|
163
161
|
this._checkProps(props);
|
|
164
162
|
|
|
165
|
-
var shouldUpdateData = changeFlags.dataChanged || props.aggregationExp !== oldProps.aggregationExp || props.aggregationResLevel !== oldProps.aggregationResLevel || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || props.
|
|
163
|
+
var shouldUpdateData = changeFlags.dataChanged || props.aggregationExp !== oldProps.aggregationExp || props.aggregationResLevel !== oldProps.aggregationResLevel || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || props.formatTiles !== oldProps.formatTiles || props.type !== oldProps.type || JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
166
164
|
|
|
167
165
|
if (shouldUpdateData) {
|
|
168
166
|
this.setState({
|
|
@@ -210,13 +208,15 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
210
208
|
|
|
211
209
|
case 11:
|
|
212
210
|
_context.next = 13;
|
|
213
|
-
return (0, _api.fetchLayerData)(_objectSpread({
|
|
211
|
+
return (0, _api.fetchLayerData)(_objectSpread(_objectSpread({
|
|
214
212
|
type: type,
|
|
215
213
|
source: source,
|
|
216
214
|
clientId: clientId,
|
|
217
215
|
credentials: credentials,
|
|
218
216
|
connection: connection
|
|
219
|
-
}, rest)
|
|
217
|
+
}, rest), {}, {
|
|
218
|
+
format: _mapsApiCommon.FORMATS.TILEJSON
|
|
219
|
+
}));
|
|
220
220
|
|
|
221
221
|
case 13:
|
|
222
222
|
result = _context.sent;
|
|
@@ -268,7 +268,6 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
268
268
|
(0, _utils.assert)(this.state);
|
|
269
269
|
var _this$state = this.state,
|
|
270
270
|
data = _this$state.data,
|
|
271
|
-
format = _this$state.format,
|
|
272
271
|
apiVersion = _this$state.apiVersion;
|
|
273
272
|
var uniqueIdProperty = defaultProps.uniqueIdProperty;
|
|
274
273
|
var _this$props3 = this.props,
|
|
@@ -283,22 +282,18 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
283
282
|
return [_geoLayers.MVTLayer, props];
|
|
284
283
|
}
|
|
285
284
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
props.formatTiles = props.formatTiles || tileUrl.searchParams.get('formatTiles') || _mapsApiCommon.TILE_FORMATS.MVT;
|
|
289
|
-
|
|
290
|
-
if (data.scheme === 'h3') {
|
|
291
|
-
return [_h3TileLayer.default, props];
|
|
292
|
-
}
|
|
285
|
+
var tileUrl = new URL(data.tiles[0]);
|
|
286
|
+
props.formatTiles = props.formatTiles || tileUrl.searchParams.get('formatTiles') || _mapsApiCommon.TILE_FORMATS.MVT;
|
|
293
287
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
288
|
+
if (data.scheme === 'h3') {
|
|
289
|
+
return [_h3TileLayer.default, props];
|
|
290
|
+
}
|
|
297
291
|
|
|
298
|
-
|
|
292
|
+
if (data.scheme === 'quadbin') {
|
|
293
|
+
return [_quadbinTileLayer.default, props];
|
|
299
294
|
}
|
|
300
295
|
|
|
301
|
-
return [
|
|
296
|
+
return props.formatTiles === _mapsApiCommon.TILE_FORMATS.MVT ? [_geoLayers.MVTLayer, props] : [_cartoTileLayer.default, props];
|
|
302
297
|
}
|
|
303
298
|
}, {
|
|
304
299
|
key: "renderLayers",
|