@deck.gl/carto 8.5.5 → 8.5.9
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 +54 -11
- package/dist/es5/api/maps-v3-client.js +28 -8
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +29 -6
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +29 -5
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +27 -5
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/api/maps-v3-client.js +31 -7
- package/src/layers/carto-layer.js +23 -4
package/dist/dist.dev.js
CHANGED
|
@@ -10568,10 +10568,11 @@ async function request({method, url, format, accessToken, body}) {
|
|
|
10568
10568
|
*/
|
|
10569
10569
|
function dealWithError({response, error}) {
|
|
10570
10570
|
switch (response.status) {
|
|
10571
|
+
case 400:
|
|
10572
|
+
throw new Error(`Bad request. ${error}`);
|
|
10571
10573
|
case 401:
|
|
10572
10574
|
case 403:
|
|
10573
|
-
throw new Error(`Unauthorized access
|
|
10574
|
-
|
|
10575
|
+
throw new Error(`Unauthorized access. ${error}`);
|
|
10575
10576
|
default:
|
|
10576
10577
|
throw new Error(error);
|
|
10577
10578
|
}
|
|
@@ -10580,19 +10581,35 @@ function dealWithError({response, error}) {
|
|
|
10580
10581
|
/**
|
|
10581
10582
|
* Build a URL with all required parameters
|
|
10582
10583
|
*/
|
|
10583
|
-
function getParameters({type, source}) {
|
|
10584
|
+
function getParameters({type, source, geoColumn, columns}) {
|
|
10584
10585
|
const encodedClient = Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('client', 'deck-gl-carto');
|
|
10585
10586
|
const parameters = [encodedClient];
|
|
10586
10587
|
|
|
10587
10588
|
const sourceName = type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].QUERY ? 'q' : 'name';
|
|
10588
10589
|
parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])(sourceName, source));
|
|
10589
10590
|
|
|
10591
|
+
if (type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].TABLE) {
|
|
10592
|
+
if (geoColumn) {
|
|
10593
|
+
parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('geo_column', geoColumn));
|
|
10594
|
+
}
|
|
10595
|
+
if (columns) {
|
|
10596
|
+
parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('columns', columns.join(',')));
|
|
10597
|
+
}
|
|
10598
|
+
}
|
|
10599
|
+
|
|
10590
10600
|
return parameters.join('&');
|
|
10591
10601
|
}
|
|
10592
10602
|
|
|
10593
|
-
async function mapInstantiation({
|
|
10603
|
+
async function mapInstantiation({
|
|
10604
|
+
type,
|
|
10605
|
+
source,
|
|
10606
|
+
connection,
|
|
10607
|
+
credentials,
|
|
10608
|
+
geoColumn,
|
|
10609
|
+
columns
|
|
10610
|
+
}) {
|
|
10594
10611
|
const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;
|
|
10595
|
-
const url = `${baseUrl}?${getParameters({type, source})}`;
|
|
10612
|
+
const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns})}`;
|
|
10596
10613
|
const {accessToken} = credentials;
|
|
10597
10614
|
|
|
10598
10615
|
const format = 'json';
|
|
@@ -10619,7 +10636,7 @@ function getUrlFromMetadata(metadata, format) {
|
|
|
10619
10636
|
return null;
|
|
10620
10637
|
}
|
|
10621
10638
|
|
|
10622
|
-
async function getData({type, source, connection, credentials, format}) {
|
|
10639
|
+
async function getData({type, source, connection, credentials, geoColumn, columns, format}) {
|
|
10623
10640
|
const localCreds = {...Object(_config__WEBPACK_IMPORTED_MODULE_0__["getDefaultCredentials"])(), ...credentials};
|
|
10624
10641
|
|
|
10625
10642
|
_deck_gl_core__WEBPACK_IMPORTED_MODULE_2__["log"].assert(connection, 'Must define connection');
|
|
@@ -10635,7 +10652,14 @@ async function getData({type, source, connection, credentials, format}) {
|
|
|
10635
10652
|
localCreds.mapsUrl = Object(_config__WEBPACK_IMPORTED_MODULE_0__["buildMapsUrlFromBase"])(localCreds.apiBaseUrl);
|
|
10636
10653
|
}
|
|
10637
10654
|
|
|
10638
|
-
const metadata = await mapInstantiation({
|
|
10655
|
+
const metadata = await mapInstantiation({
|
|
10656
|
+
type,
|
|
10657
|
+
source,
|
|
10658
|
+
connection,
|
|
10659
|
+
credentials: localCreds,
|
|
10660
|
+
geoColumn,
|
|
10661
|
+
columns
|
|
10662
|
+
});
|
|
10639
10663
|
let url;
|
|
10640
10664
|
let mapFormat;
|
|
10641
10665
|
|
|
@@ -10915,7 +10939,13 @@ const defaultProps = {
|
|
|
10915
10939
|
/* API v3 PARAMETERS */
|
|
10916
10940
|
/**********************/
|
|
10917
10941
|
// (String, required): connection name at CARTO platform
|
|
10918
|
-
connection: null
|
|
10942
|
+
connection: null,
|
|
10943
|
+
|
|
10944
|
+
// (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.
|
|
10945
|
+
geoColumn: null,
|
|
10946
|
+
|
|
10947
|
+
// (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.
|
|
10948
|
+
columns: {type: 'array', value: null}
|
|
10919
10949
|
};
|
|
10920
10950
|
|
|
10921
10951
|
class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLayer"] {
|
|
@@ -10931,7 +10961,7 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
|
|
|
10931
10961
|
}
|
|
10932
10962
|
|
|
10933
10963
|
_checkProps(props) {
|
|
10934
|
-
const {type, credentials, connection} = props;
|
|
10964
|
+
const {type, credentials, connection, geoColumn, columns} = props;
|
|
10935
10965
|
const localCreds = {...Object(_config__WEBPACK_IMPORTED_MODULE_3__["getDefaultCredentials"])(), ...credentials};
|
|
10936
10966
|
const {apiVersion} = localCreds;
|
|
10937
10967
|
|
|
@@ -10946,12 +10976,21 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
|
|
|
10946
10976
|
`Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`
|
|
10947
10977
|
);
|
|
10948
10978
|
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);
|
|
10979
|
+
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);
|
|
10980
|
+
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);
|
|
10949
10981
|
} else if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3) {
|
|
10950
10982
|
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(connection, 'Missing mandatory connection parameter');
|
|
10951
10983
|
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(
|
|
10952
10984
|
Object.values(_api_maps_api_common__WEBPACK_IMPORTED_MODULE_2__["MAP_TYPES"]).includes(type),
|
|
10953
10985
|
`Invalid type ${type}. Use MAP_TYPES enum.`
|
|
10954
10986
|
);
|
|
10987
|
+
if (type !== _api_maps_api_common__WEBPACK_IMPORTED_MODULE_2__["MAP_TYPES"].TABLE) {
|
|
10988
|
+
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!geoColumn, `geoColumn prop is only supported for type ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_2__["MAP_TYPES"].TABLE}`);
|
|
10989
|
+
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!columns, `columns prop is only supported for type ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_2__["MAP_TYPES"].TABLE}`);
|
|
10990
|
+
}
|
|
10991
|
+
if (columns) {
|
|
10992
|
+
_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(Array.isArray(columns), 'columns prop must be an Array');
|
|
10993
|
+
}
|
|
10955
10994
|
}
|
|
10956
10995
|
}
|
|
10957
10996
|
|
|
@@ -10960,6 +10999,8 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
|
|
|
10960
10999
|
const shouldUpdateData =
|
|
10961
11000
|
changeFlags.dataChanged ||
|
|
10962
11001
|
props.connection !== oldProps.connection ||
|
|
11002
|
+
props.geoColumn !== oldProps.geoColumn ||
|
|
11003
|
+
JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||
|
|
10963
11004
|
props.type !== oldProps.type ||
|
|
10964
11005
|
JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
10965
11006
|
|
|
@@ -10971,7 +11012,7 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
|
|
|
10971
11012
|
|
|
10972
11013
|
async _updateData() {
|
|
10973
11014
|
try {
|
|
10974
|
-
const {type, data: source, connection, credentials} = this.props;
|
|
11015
|
+
const {type, data: source, connection, credentials, geoColumn, columns} = this.props;
|
|
10975
11016
|
const localConfig = {...Object(_config__WEBPACK_IMPORTED_MODULE_3__["getDefaultCredentials"])(), ...credentials};
|
|
10976
11017
|
const {apiVersion} = localConfig;
|
|
10977
11018
|
|
|
@@ -10982,7 +11023,9 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
|
|
|
10982
11023
|
type,
|
|
10983
11024
|
source,
|
|
10984
11025
|
connection,
|
|
10985
|
-
credentials
|
|
11026
|
+
credentials,
|
|
11027
|
+
geoColumn,
|
|
11028
|
+
columns
|
|
10986
11029
|
});
|
|
10987
11030
|
} else if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V2) {
|
|
10988
11031
|
data = await Object(_api__WEBPACK_IMPORTED_MODULE_1__["getDataV2"])({type, source, credentials});
|
|
@@ -107,9 +107,12 @@ function dealWithError(_ref2) {
|
|
|
107
107
|
error = _ref2.error;
|
|
108
108
|
|
|
109
109
|
switch (response.status) {
|
|
110
|
+
case 400:
|
|
111
|
+
throw new Error("Bad request. ".concat(error));
|
|
112
|
+
|
|
110
113
|
case 401:
|
|
111
114
|
case 403:
|
|
112
|
-
throw new Error("Unauthorized access
|
|
115
|
+
throw new Error("Unauthorized access. ".concat(error));
|
|
113
116
|
|
|
114
117
|
default:
|
|
115
118
|
throw new Error(error);
|
|
@@ -118,11 +121,24 @@ function dealWithError(_ref2) {
|
|
|
118
121
|
|
|
119
122
|
function getParameters(_ref3) {
|
|
120
123
|
var type = _ref3.type,
|
|
121
|
-
source = _ref3.source
|
|
124
|
+
source = _ref3.source,
|
|
125
|
+
geoColumn = _ref3.geoColumn,
|
|
126
|
+
columns = _ref3.columns;
|
|
122
127
|
var encodedClient = (0, _mapsApiCommon.encodeParameter)('client', 'deck-gl-carto');
|
|
123
128
|
var parameters = [encodedClient];
|
|
124
129
|
var sourceName = type === _mapsApiCommon.MAP_TYPES.QUERY ? 'q' : 'name';
|
|
125
130
|
parameters.push((0, _mapsApiCommon.encodeParameter)(sourceName, source));
|
|
131
|
+
|
|
132
|
+
if (type === _mapsApiCommon.MAP_TYPES.TABLE) {
|
|
133
|
+
if (geoColumn) {
|
|
134
|
+
parameters.push((0, _mapsApiCommon.encodeParameter)('geo_column', geoColumn));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (columns) {
|
|
138
|
+
parameters.push((0, _mapsApiCommon.encodeParameter)('columns', columns.join(',')));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
126
142
|
return parameters.join('&');
|
|
127
143
|
}
|
|
128
144
|
|
|
@@ -132,16 +148,18 @@ function mapInstantiation(_x2) {
|
|
|
132
148
|
|
|
133
149
|
function _mapInstantiation() {
|
|
134
150
|
_mapInstantiation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(_ref4) {
|
|
135
|
-
var type, source, connection, credentials, baseUrl, url, accessToken, format, body;
|
|
151
|
+
var type, source, connection, credentials, geoColumn, columns, baseUrl, url, accessToken, format, body;
|
|
136
152
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
137
153
|
while (1) {
|
|
138
154
|
switch (_context2.prev = _context2.next) {
|
|
139
155
|
case 0:
|
|
140
|
-
type = _ref4.type, source = _ref4.source, connection = _ref4.connection, credentials = _ref4.credentials;
|
|
156
|
+
type = _ref4.type, source = _ref4.source, connection = _ref4.connection, credentials = _ref4.credentials, geoColumn = _ref4.geoColumn, columns = _ref4.columns;
|
|
141
157
|
baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
142
158
|
url = "".concat(baseUrl, "?").concat(getParameters({
|
|
143
159
|
type: type,
|
|
144
|
-
source: source
|
|
160
|
+
source: source,
|
|
161
|
+
geoColumn: geoColumn,
|
|
162
|
+
columns: columns
|
|
145
163
|
}));
|
|
146
164
|
accessToken = credentials.accessToken;
|
|
147
165
|
format = 'json';
|
|
@@ -204,13 +222,13 @@ function getData(_x3) {
|
|
|
204
222
|
|
|
205
223
|
function _getData() {
|
|
206
224
|
_getData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(_ref5) {
|
|
207
|
-
var type, source, connection, credentials, format, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
225
|
+
var type, source, connection, credentials, geoColumn, columns, format, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
208
226
|
|
|
209
227
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
210
228
|
while (1) {
|
|
211
229
|
switch (_context3.prev = _context3.next) {
|
|
212
230
|
case 0:
|
|
213
|
-
type = _ref5.type, source = _ref5.source, connection = _ref5.connection, credentials = _ref5.credentials, format = _ref5.format;
|
|
231
|
+
type = _ref5.type, source = _ref5.source, connection = _ref5.connection, credentials = _ref5.credentials, geoColumn = _ref5.geoColumn, columns = _ref5.columns, format = _ref5.format;
|
|
214
232
|
localCreds = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
|
|
215
233
|
|
|
216
234
|
_core.log.assert(connection, 'Must define connection');
|
|
@@ -236,7 +254,9 @@ function _getData() {
|
|
|
236
254
|
type: type,
|
|
237
255
|
source: source,
|
|
238
256
|
connection: connection,
|
|
239
|
-
credentials: localCreds
|
|
257
|
+
credentials: localCreds,
|
|
258
|
+
geoColumn: geoColumn,
|
|
259
|
+
columns: columns
|
|
240
260
|
});
|
|
241
261
|
|
|
242
262
|
case 12:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["MAX_GET_LENGTH","request","method","url","format","accessToken","body","headers","Accept","Authorization","fetch","response","Error","FORMATS","NDJSON","json","ok","dealWithError","error","rows","status","getParameters","type","source","encodedClient","parameters","sourceName","MAP_TYPES","QUERY","push","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","getData","localCreds","log","assert","apiVersion","API_VERSIONS","V3","apiBaseUrl","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\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 /* eslint no-undef: \"error\" */\n response = 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 if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\n switch (response.status) {\n case 401:\n case 403:\n throw new Error(`Unauthorized access to Maps API`);\n\n default:\n throw new Error(error);\n }\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source}) {\n const encodedClient = encodeParameter('client', 'deck-gl-carto');\n const parameters = [encodedClient];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({type, source, connection, credentials}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\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: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\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\nexport async function getData({type, source, connection, credentials, format}) {\n const localCreds = {...getDefaultCredentials(), ...credentials};\n\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n log.assert(localCreds.mapsUrl, 'mapsUrl cannot be undefined');\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({type, source, connection, credentials: localCreds});\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, 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 }\n\n const {accessToken} = localCreds;\n\n return await request({url, format: mapFormat, accessToken});\n}\n"],"file":"maps-v3-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["MAX_GET_LENGTH","request","method","url","format","accessToken","body","headers","Accept","Authorization","fetch","response","Error","FORMATS","NDJSON","json","ok","dealWithError","error","rows","status","getParameters","type","source","geoColumn","columns","encodedClient","parameters","sourceName","MAP_TYPES","QUERY","push","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","getData","localCreds","log","assert","apiVersion","API_VERSIONS","V3","apiBaseUrl","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\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 /* eslint no-undef: \"error\" */\n response = 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 if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\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\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns}) {\n const encodedClient = encodeParameter('client', 'deck-gl-carto');\n const parameters = [encodedClient];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\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}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\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: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\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\nexport async function getData({type, source, connection, credentials, geoColumn, columns, format}) {\n const localCreds = {...getDefaultCredentials(), ...credentials};\n\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n log.assert(localCreds.mapsUrl, 'mapsUrl cannot be undefined');\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 });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, 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 }\n\n const {accessToken} = localCreds;\n\n return await request({url, format: mapFormat, accessToken});\n}\n"],"file":"maps-v3-client.js"}
|
|
@@ -60,7 +60,12 @@ var defaultProps = {
|
|
|
60
60
|
optional: true
|
|
61
61
|
},
|
|
62
62
|
credentials: null,
|
|
63
|
-
connection: null
|
|
63
|
+
connection: null,
|
|
64
|
+
geoColumn: null,
|
|
65
|
+
columns: {
|
|
66
|
+
type: 'array',
|
|
67
|
+
value: null
|
|
68
|
+
}
|
|
64
69
|
};
|
|
65
70
|
|
|
66
71
|
var CartoLayer = function (_CompositeLayer) {
|
|
@@ -86,7 +91,9 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
86
91
|
value: function _checkProps(props) {
|
|
87
92
|
var type = props.type,
|
|
88
93
|
credentials = props.credentials,
|
|
89
|
-
connection = props.connection
|
|
94
|
+
connection = props.connection,
|
|
95
|
+
geoColumn = props.geoColumn,
|
|
96
|
+
columns = props.columns;
|
|
90
97
|
|
|
91
98
|
var localCreds = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
|
|
92
99
|
|
|
@@ -98,10 +105,24 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
98
105
|
_core.log.assert(type === _mapsApiCommon.MAP_TYPES.QUERY || type === _mapsApiCommon.MAP_TYPES.TILESET, "Invalid type ".concat(type, ". Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ").concat(apiVersion));
|
|
99
106
|
|
|
100
107
|
_core.log.assert(!connection, "Connection prop is not supported for apiVersion ".concat(apiVersion));
|
|
108
|
+
|
|
109
|
+
_core.log.assert(!geoColumn, "geoColumn prop is not supported for apiVersion ".concat(apiVersion));
|
|
110
|
+
|
|
111
|
+
_core.log.assert(!columns, "columns prop is not supported for apiVersion ".concat(apiVersion));
|
|
101
112
|
} else if (apiVersion === _api.API_VERSIONS.V3) {
|
|
102
113
|
_core.log.assert(connection, 'Missing mandatory connection parameter');
|
|
103
114
|
|
|
104
115
|
_core.log.assert(Object.values(_mapsApiCommon.MAP_TYPES).includes(type), "Invalid type ".concat(type, ". Use MAP_TYPES enum."));
|
|
116
|
+
|
|
117
|
+
if (type !== _mapsApiCommon.MAP_TYPES.TABLE) {
|
|
118
|
+
_core.log.assert(!geoColumn, "geoColumn prop is only supported for type ".concat(_mapsApiCommon.MAP_TYPES.TABLE));
|
|
119
|
+
|
|
120
|
+
_core.log.assert(!columns, "columns prop is only supported for type ".concat(_mapsApiCommon.MAP_TYPES.TABLE));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (columns) {
|
|
124
|
+
_core.log.assert(Array.isArray(columns), 'columns prop must be an Array');
|
|
125
|
+
}
|
|
105
126
|
}
|
|
106
127
|
}
|
|
107
128
|
}, {
|
|
@@ -113,7 +134,7 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
113
134
|
|
|
114
135
|
this._checkProps(props);
|
|
115
136
|
|
|
116
|
-
var shouldUpdateData = changeFlags.dataChanged || props.connection !== oldProps.connection || props.type !== oldProps.type || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
137
|
+
var shouldUpdateData = changeFlags.dataChanged || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) || props.type !== oldProps.type || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
117
138
|
|
|
118
139
|
if (shouldUpdateData) {
|
|
119
140
|
this.setState({
|
|
@@ -128,14 +149,14 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
128
149
|
key: "_updateData",
|
|
129
150
|
value: function () {
|
|
130
151
|
var _updateData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
131
|
-
var _this$props, type, source, connection, credentials, localConfig, apiVersion, data;
|
|
152
|
+
var _this$props, type, source, connection, credentials, geoColumn, columns, localConfig, apiVersion, data;
|
|
132
153
|
|
|
133
154
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
134
155
|
while (1) {
|
|
135
156
|
switch (_context.prev = _context.next) {
|
|
136
157
|
case 0:
|
|
137
158
|
_context.prev = 0;
|
|
138
|
-
_this$props = this.props, type = _this$props.type, source = _this$props.data, connection = _this$props.connection, credentials = _this$props.credentials;
|
|
159
|
+
_this$props = this.props, type = _this$props.type, source = _this$props.data, connection = _this$props.connection, credentials = _this$props.credentials, geoColumn = _this$props.geoColumn, columns = _this$props.columns;
|
|
139
160
|
localConfig = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
|
|
140
161
|
apiVersion = localConfig.apiVersion;
|
|
141
162
|
|
|
@@ -149,7 +170,9 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
149
170
|
type: type,
|
|
150
171
|
source: source,
|
|
151
172
|
connection: connection,
|
|
152
|
-
credentials: credentials
|
|
173
|
+
credentials: credentials,
|
|
174
|
+
geoColumn: geoColumn,
|
|
175
|
+
columns: columns
|
|
153
176
|
});
|
|
154
177
|
|
|
155
178
|
case 7:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/layers/carto-layer.js"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","credentials","connection","CartoLayer","state","apiVersion","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","localConfig","updateTriggers","layer","MVTLayer","GeoJsonLayer","getSubLayerProps","id","layerName","getSubLayers","length","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, log} from '@deck.gl/core';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {getData, getDataV2, API_VERSIONS} from '../api';\nimport {MAP_TYPES} from '../api/maps-api-common';\nimport {getDefaultCredentials} from '../config';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null\n};\n\nexport default class CartoLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded() {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props) {\n const {type, credentials, connection} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.type !== oldProps.type ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n this._updateData();\n }\n }\n\n async _updateData() {\n try {\n const {type, data: source, connection, credentials} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let data;\n\n if (apiVersion === API_VERSIONS.V3) {\n data = await getData({\n type,\n source,\n connection,\n credentials\n });\n } else if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n data = await getDataV2({type, source, credentials});\n } else {\n log.assert(`Unknow apiVersion ${apiVersion}. Use API_VERSIONS enum.`);\n }\n\n this.setState({data, apiVersion});\n this.props.onDataLoad(data);\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err);\n } else {\n throw err;\n }\n }\n }\n\n renderLayers() {\n const {data, apiVersion} = this.state;\n const {type} = this.props;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n let layer;\n\n if (\n apiVersion === API_VERSIONS.V1 ||\n apiVersion === API_VERSIONS.V2 ||\n type === MAP_TYPES.TILESET\n ) {\n layer = MVTLayer;\n } else {\n layer = GeoJsonLayer;\n }\n\n const props = {...this.props};\n delete props.data;\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n\nCartoLayer.layerName = 'CartoLayer';\nCartoLayer.defaultProps = defaultProps;\n"],"file":"carto-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/carto-layer.js"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","credentials","connection","geoColumn","columns","CartoLayer","state","apiVersion","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","TABLE","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","localConfig","updateTriggers","layer","MVTLayer","GeoJsonLayer","getSubLayerProps","id","layerName","getSubLayers","length","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, log} from '@deck.gl/core';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {getData, getDataV2, API_VERSIONS} from '../api';\nimport {MAP_TYPES} from '../api/maps-api-common';\nimport {getDefaultCredentials} from '../config';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null}\n};\n\nexport default class CartoLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded() {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props) {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (type !== MAP_TYPES.TABLE) {\n log.assert(!geoColumn, `geoColumn prop is only supported for type ${MAP_TYPES.TABLE}`);\n log.assert(!columns, `columns prop is only supported for type ${MAP_TYPES.TABLE}`);\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n props.type !== oldProps.type ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n this._updateData();\n }\n }\n\n async _updateData() {\n try {\n const {type, data: source, connection, credentials, geoColumn, columns} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let data;\n\n if (apiVersion === API_VERSIONS.V3) {\n data = await getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns\n });\n } else if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n data = await getDataV2({type, source, credentials});\n } else {\n log.assert(`Unknow apiVersion ${apiVersion}. Use API_VERSIONS enum.`);\n }\n\n this.setState({data, apiVersion});\n this.props.onDataLoad(data);\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err);\n } else {\n throw err;\n }\n }\n }\n\n renderLayers() {\n const {data, apiVersion} = this.state;\n const {type} = this.props;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n let layer;\n\n if (\n apiVersion === API_VERSIONS.V1 ||\n apiVersion === API_VERSIONS.V2 ||\n type === MAP_TYPES.TILESET\n ) {\n layer = MVTLayer;\n } else {\n layer = GeoJsonLayer;\n }\n\n const props = {...this.props};\n delete props.data;\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n\nCartoLayer.layerName = 'CartoLayer';\nCartoLayer.defaultProps = defaultProps;\n"],"file":"carto-layer.js"}
|
|
@@ -54,9 +54,12 @@ function dealWithError({
|
|
|
54
54
|
error
|
|
55
55
|
}) {
|
|
56
56
|
switch (response.status) {
|
|
57
|
+
case 400:
|
|
58
|
+
throw new Error("Bad request. ".concat(error));
|
|
59
|
+
|
|
57
60
|
case 401:
|
|
58
61
|
case 403:
|
|
59
|
-
throw new Error("Unauthorized access
|
|
62
|
+
throw new Error("Unauthorized access. ".concat(error));
|
|
60
63
|
|
|
61
64
|
default:
|
|
62
65
|
throw new Error(error);
|
|
@@ -65,12 +68,25 @@ function dealWithError({
|
|
|
65
68
|
|
|
66
69
|
function getParameters({
|
|
67
70
|
type,
|
|
68
|
-
source
|
|
71
|
+
source,
|
|
72
|
+
geoColumn,
|
|
73
|
+
columns
|
|
69
74
|
}) {
|
|
70
75
|
const encodedClient = encodeParameter('client', 'deck-gl-carto');
|
|
71
76
|
const parameters = [encodedClient];
|
|
72
77
|
const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';
|
|
73
78
|
parameters.push(encodeParameter(sourceName, source));
|
|
79
|
+
|
|
80
|
+
if (type === MAP_TYPES.TABLE) {
|
|
81
|
+
if (geoColumn) {
|
|
82
|
+
parameters.push(encodeParameter('geo_column', geoColumn));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (columns) {
|
|
86
|
+
parameters.push(encodeParameter('columns', columns.join(',')));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
74
90
|
return parameters.join('&');
|
|
75
91
|
}
|
|
76
92
|
|
|
@@ -78,12 +94,16 @@ export async function mapInstantiation({
|
|
|
78
94
|
type,
|
|
79
95
|
source,
|
|
80
96
|
connection,
|
|
81
|
-
credentials
|
|
97
|
+
credentials,
|
|
98
|
+
geoColumn,
|
|
99
|
+
columns
|
|
82
100
|
}) {
|
|
83
101
|
const baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
84
102
|
const url = "".concat(baseUrl, "?").concat(getParameters({
|
|
85
103
|
type,
|
|
86
|
-
source
|
|
104
|
+
source,
|
|
105
|
+
geoColumn,
|
|
106
|
+
columns
|
|
87
107
|
}));
|
|
88
108
|
const {
|
|
89
109
|
accessToken
|
|
@@ -126,6 +146,8 @@ export async function getData({
|
|
|
126
146
|
source,
|
|
127
147
|
connection,
|
|
128
148
|
credentials,
|
|
149
|
+
geoColumn,
|
|
150
|
+
columns,
|
|
129
151
|
format
|
|
130
152
|
}) {
|
|
131
153
|
const localCreds = { ...getDefaultCredentials(),
|
|
@@ -147,7 +169,9 @@ export async function getData({
|
|
|
147
169
|
type,
|
|
148
170
|
source,
|
|
149
171
|
connection,
|
|
150
|
-
credentials: localCreds
|
|
172
|
+
credentials: localCreds,
|
|
173
|
+
geoColumn,
|
|
174
|
+
columns
|
|
151
175
|
});
|
|
152
176
|
let url;
|
|
153
177
|
let mapFormat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","log","MAX_GET_LENGTH","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","encodedClient","parameters","sourceName","QUERY","push","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","getData","localCreds","assert","apiVersion","V3","apiBaseUrl","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f"],"mappings":"AAGA,SAAQA,qBAAR,EAA+BC,oBAA/B,QAA0D,WAA1D;AACA,SAAQC,YAAR,EAAsBC,eAAtB,EAAuCC,OAAvC,EAAgDC,SAAhD,QAAgE,mBAAhE;AACA,SAAQC,GAAR,QAAkB,eAAlB;AAEA,MAAMC,cAAc,GAAG,IAAvB;;AAKA,eAAeC,OAAf,CAAuB;AAACC,EAAAA,MAAD;AAASC,EAAAA,GAAT;AAAcC,EAAAA,MAAd;AAAsBC,EAAAA,WAAtB;AAAmCC,EAAAA;AAAnC,CAAvB,EAAiE;AAC/D,MAAIC,QAAJ;AAEA,QAAMC,OAAO,GAAG;AACdC,IAAAA,MAAM,EAAE;AADM,GAAhB;;AAIA,MAAIJ,WAAJ,EAAiB;AACfG,IAAAA,OAAO,CAACE,aAAR,oBAAkCL,WAAlC;AACD;;AAED,MAAIH,MAAM,KAAK,MAAf,EAAuB;AACrBM,IAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,kBAA1B;AACD;;AAED,MAAI;AAGFD,IAAAA,QAAQ,GAAG,MAAMI,KAAK,CAACR,GAAD,EAAM;AAC1BD,MAAAA,MAD0B;AAE1BM,MAAAA,OAF0B;AAG1BF,MAAAA;AAH0B,KAAN,CAAtB;AAKD,GARD,CAQE,OAAOM,KAAP,EAAc;AACd,UAAM,IAAIC,KAAJ,0CAA4CD,KAA5C,EAAN;AACD;;AAED,MAAIR,MAAM,KAAKP,OAAO,CAACiB,MAAvB,EAA+B;AAC7B,WAAOP,QAAP;AACD;;AAED,QAAMQ,IAAI,GAAG,MAAMR,QAAQ,CAACQ,IAAT,EAAnB;;AAEA,MAAI,CAACR,QAAQ,CAACS,EAAd,EAAkB;AAChBC,IAAAA,aAAa,CAAC;AAACV,MAAAA,QAAD;AAAWK,MAAAA,KAAK,EAAEG,IAAI,CAACH;AAAvB,KAAD,CAAb;AACD;;AAED,SAAOG,IAAI,CAACG,IAAL,GAAYH,IAAI,CAACG,IAAjB,GAAwBH,IAA/B;AACD;;AAKD,SAASE,aAAT,CAAuB;AAACV,EAAAA,QAAD;AAAWK,EAAAA;AAAX,CAAvB,EAA0C;AACxC,UAAQL,QAAQ,CAACY,MAAjB;AACE,SAAK,GAAL;AACA,SAAK,GAAL;AACE,YAAM,
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","log","MAX_GET_LENGTH","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","encodedClient","parameters","sourceName","QUERY","push","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","getData","localCreds","assert","apiVersion","V3","apiBaseUrl","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\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 /* eslint no-undef: \"error\" */\n response = 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 if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\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\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns}) {\n const encodedClient = encodeParameter('client', 'deck-gl-carto');\n const parameters = [encodedClient];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\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}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\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: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\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\nexport async function getData({type, source, connection, credentials, geoColumn, columns, format}) {\n const localCreds = {...getDefaultCredentials(), ...credentials};\n\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n log.assert(localCreds.mapsUrl, 'mapsUrl cannot be undefined');\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 });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, 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 }\n\n const {accessToken} = localCreds;\n\n return await request({url, format: mapFormat, accessToken});\n}\n"],"file":"maps-v3-client.js"}
|
|
@@ -19,7 +19,12 @@ const defaultProps = {
|
|
|
19
19
|
optional: true
|
|
20
20
|
},
|
|
21
21
|
credentials: null,
|
|
22
|
-
connection: null
|
|
22
|
+
connection: null,
|
|
23
|
+
geoColumn: null,
|
|
24
|
+
columns: {
|
|
25
|
+
type: 'array',
|
|
26
|
+
value: null
|
|
27
|
+
}
|
|
23
28
|
};
|
|
24
29
|
export default class CartoLayer extends CompositeLayer {
|
|
25
30
|
initializeState() {
|
|
@@ -37,7 +42,9 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
37
42
|
const {
|
|
38
43
|
type,
|
|
39
44
|
credentials,
|
|
40
|
-
connection
|
|
45
|
+
connection,
|
|
46
|
+
geoColumn,
|
|
47
|
+
columns
|
|
41
48
|
} = props;
|
|
42
49
|
const localCreds = { ...getDefaultCredentials(),
|
|
43
50
|
...credentials
|
|
@@ -50,9 +57,20 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
50
57
|
if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {
|
|
51
58
|
log.assert(type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET, "Invalid type ".concat(type, ". Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ").concat(apiVersion));
|
|
52
59
|
log.assert(!connection, "Connection prop is not supported for apiVersion ".concat(apiVersion));
|
|
60
|
+
log.assert(!geoColumn, "geoColumn prop is not supported for apiVersion ".concat(apiVersion));
|
|
61
|
+
log.assert(!columns, "columns prop is not supported for apiVersion ".concat(apiVersion));
|
|
53
62
|
} else if (apiVersion === API_VERSIONS.V3) {
|
|
54
63
|
log.assert(connection, 'Missing mandatory connection parameter');
|
|
55
64
|
log.assert(Object.values(MAP_TYPES).includes(type), "Invalid type ".concat(type, ". Use MAP_TYPES enum."));
|
|
65
|
+
|
|
66
|
+
if (type !== MAP_TYPES.TABLE) {
|
|
67
|
+
log.assert(!geoColumn, "geoColumn prop is only supported for type ".concat(MAP_TYPES.TABLE));
|
|
68
|
+
log.assert(!columns, "columns prop is only supported for type ".concat(MAP_TYPES.TABLE));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (columns) {
|
|
72
|
+
log.assert(Array.isArray(columns), 'columns prop must be an Array');
|
|
73
|
+
}
|
|
56
74
|
}
|
|
57
75
|
}
|
|
58
76
|
|
|
@@ -63,7 +81,7 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
63
81
|
}) {
|
|
64
82
|
this._checkProps(props);
|
|
65
83
|
|
|
66
|
-
const shouldUpdateData = changeFlags.dataChanged || props.connection !== oldProps.connection || props.type !== oldProps.type || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
84
|
+
const shouldUpdateData = changeFlags.dataChanged || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) || props.type !== oldProps.type || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
67
85
|
|
|
68
86
|
if (shouldUpdateData) {
|
|
69
87
|
this.setState({
|
|
@@ -81,7 +99,9 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
81
99
|
type,
|
|
82
100
|
data: source,
|
|
83
101
|
connection,
|
|
84
|
-
credentials
|
|
102
|
+
credentials,
|
|
103
|
+
geoColumn,
|
|
104
|
+
columns
|
|
85
105
|
} = this.props;
|
|
86
106
|
const localConfig = { ...getDefaultCredentials(),
|
|
87
107
|
...credentials
|
|
@@ -96,7 +116,9 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
96
116
|
type,
|
|
97
117
|
source,
|
|
98
118
|
connection,
|
|
99
|
-
credentials
|
|
119
|
+
credentials,
|
|
120
|
+
geoColumn,
|
|
121
|
+
columns
|
|
100
122
|
});
|
|
101
123
|
} else if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {
|
|
102
124
|
data = await getDataV2({
|