@deck.gl/carto 8.9.0-beta.2 → 8.9.0-beta.3
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 +22 -21
- package/dist/es5/api/maps-v3-client.js +49 -41
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +23 -21
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist.min.js +17 -17
- package/package.json +2 -2
- package/src/api/maps-v3-client.ts +35 -23
- package/typed/api/maps-v3-client.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -13269,28 +13269,30 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
13269
13269
|
aggregationResLevel,
|
|
13270
13270
|
queryParameters
|
|
13271
13271
|
}) {
|
|
13272
|
-
const parameters =
|
|
13273
|
-
|
|
13272
|
+
const parameters = {
|
|
13273
|
+
client: clientId || DEFAULT_CLIENT,
|
|
13274
|
+
v: V3_MINOR_VERSION
|
|
13275
|
+
};
|
|
13274
13276
|
const sourceName = type === MAP_TYPES.QUERY ? "q" : "name";
|
|
13275
|
-
parameters
|
|
13277
|
+
parameters[sourceName] = source;
|
|
13276
13278
|
if (queryParameters) {
|
|
13277
|
-
parameters.
|
|
13279
|
+
parameters.queryParameters = queryParameters;
|
|
13278
13280
|
}
|
|
13279
13281
|
if (geoColumn) {
|
|
13280
|
-
parameters.
|
|
13282
|
+
parameters.geo_column = geoColumn;
|
|
13281
13283
|
}
|
|
13282
13284
|
if (columns) {
|
|
13283
|
-
parameters.
|
|
13285
|
+
parameters.columns = columns.join(",");
|
|
13284
13286
|
}
|
|
13285
13287
|
if (aggregationExp) {
|
|
13286
|
-
parameters.
|
|
13288
|
+
parameters.aggregationExp = aggregationExp;
|
|
13287
13289
|
} else if (isSpatialIndexGeoColumn(geoColumn)) {
|
|
13288
|
-
parameters.
|
|
13290
|
+
parameters.aggregationExp = "1 AS value";
|
|
13289
13291
|
}
|
|
13290
13292
|
if (aggregationResLevel) {
|
|
13291
|
-
parameters.
|
|
13293
|
+
parameters.aggregationResLevel = aggregationResLevel;
|
|
13292
13294
|
}
|
|
13293
|
-
return parameters
|
|
13295
|
+
return parameters;
|
|
13294
13296
|
}
|
|
13295
13297
|
function isSpatialIndexGeoColumn(geoColumn) {
|
|
13296
13298
|
const spatialIndex = geoColumn?.split(":")[0];
|
|
@@ -13310,7 +13312,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
13310
13312
|
queryParameters
|
|
13311
13313
|
}) {
|
|
13312
13314
|
const baseUrl2 = `${credentials2.mapsUrl}/${connection}/${type}`;
|
|
13313
|
-
const
|
|
13315
|
+
const parameters = getParameters({
|
|
13314
13316
|
type,
|
|
13315
13317
|
source,
|
|
13316
13318
|
geoColumn,
|
|
@@ -13319,7 +13321,14 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
13319
13321
|
aggregationResLevel,
|
|
13320
13322
|
aggregationExp,
|
|
13321
13323
|
queryParameters
|
|
13322
|
-
})
|
|
13324
|
+
});
|
|
13325
|
+
const encodedParameters = Object.entries(parameters).map(([key, value]) => {
|
|
13326
|
+
if (typeof value !== "string") {
|
|
13327
|
+
value = JSON.stringify(value);
|
|
13328
|
+
}
|
|
13329
|
+
return encodeParameter(key, value);
|
|
13330
|
+
});
|
|
13331
|
+
const url = `${baseUrl2}?${encodedParameters.join("&")}`;
|
|
13323
13332
|
const {
|
|
13324
13333
|
accessToken
|
|
13325
13334
|
} = credentials2;
|
|
@@ -13330,20 +13339,12 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
13330
13339
|
source
|
|
13331
13340
|
};
|
|
13332
13341
|
if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {
|
|
13333
|
-
const body = JSON.stringify({
|
|
13334
|
-
q: source,
|
|
13335
|
-
client: clientId || DEFAULT_CLIENT,
|
|
13336
|
-
aggregationResLevel,
|
|
13337
|
-
aggregationExp,
|
|
13338
|
-
geoColumn,
|
|
13339
|
-
queryParameters
|
|
13340
|
-
});
|
|
13341
13342
|
return await requestJson({
|
|
13342
13343
|
method: "POST",
|
|
13343
13344
|
url: baseUrl2,
|
|
13344
13345
|
headers,
|
|
13345
13346
|
accessToken,
|
|
13346
|
-
body,
|
|
13347
|
+
body: JSON.stringify(parameters),
|
|
13347
13348
|
errorContext
|
|
13348
13349
|
});
|
|
13349
13350
|
}
|
|
@@ -11,6 +11,8 @@ exports.fetchMap = fetchMap;
|
|
|
11
11
|
|
|
12
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
13
|
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
14
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
17
|
|
|
16
18
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -200,34 +202,36 @@ function getParameters(_ref4) {
|
|
|
200
202
|
aggregationExp = _ref4.aggregationExp,
|
|
201
203
|
aggregationResLevel = _ref4.aggregationResLevel,
|
|
202
204
|
queryParameters = _ref4.queryParameters;
|
|
203
|
-
var parameters =
|
|
204
|
-
|
|
205
|
+
var parameters = {
|
|
206
|
+
client: clientId || DEFAULT_CLIENT,
|
|
207
|
+
v: V3_MINOR_VERSION
|
|
208
|
+
};
|
|
205
209
|
var sourceName = type === _mapsApiCommon.MAP_TYPES.QUERY ? 'q' : 'name';
|
|
206
|
-
parameters
|
|
210
|
+
parameters[sourceName] = source;
|
|
207
211
|
|
|
208
212
|
if (queryParameters) {
|
|
209
|
-
parameters.
|
|
213
|
+
parameters.queryParameters = queryParameters;
|
|
210
214
|
}
|
|
211
215
|
|
|
212
216
|
if (geoColumn) {
|
|
213
|
-
parameters.
|
|
217
|
+
parameters.geo_column = geoColumn;
|
|
214
218
|
}
|
|
215
219
|
|
|
216
220
|
if (columns) {
|
|
217
|
-
parameters.
|
|
221
|
+
parameters.columns = columns.join(',');
|
|
218
222
|
}
|
|
219
223
|
|
|
220
224
|
if (aggregationExp) {
|
|
221
|
-
parameters.
|
|
225
|
+
parameters.aggregationExp = aggregationExp;
|
|
222
226
|
} else if (isSpatialIndexGeoColumn(geoColumn)) {
|
|
223
|
-
parameters.
|
|
227
|
+
parameters.aggregationExp = '1 AS value';
|
|
224
228
|
}
|
|
225
229
|
|
|
226
230
|
if (aggregationResLevel) {
|
|
227
|
-
parameters.
|
|
231
|
+
parameters.aggregationResLevel = aggregationResLevel;
|
|
228
232
|
}
|
|
229
233
|
|
|
230
|
-
return parameters
|
|
234
|
+
return parameters;
|
|
231
235
|
}
|
|
232
236
|
|
|
233
237
|
function isSpatialIndexGeoColumn(geoColumn) {
|
|
@@ -241,14 +245,14 @@ function mapInstantiation(_x4) {
|
|
|
241
245
|
|
|
242
246
|
function _mapInstantiation() {
|
|
243
247
|
_mapInstantiation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(_ref5) {
|
|
244
|
-
var type, source, connection, credentials, geoColumn, columns, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, baseUrl, url, accessToken, errorContext
|
|
248
|
+
var type, source, connection, credentials, geoColumn, columns, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, baseUrl, parameters, encodedParameters, url, accessToken, errorContext;
|
|
245
249
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
246
250
|
while (1) {
|
|
247
251
|
switch (_context4.prev = _context4.next) {
|
|
248
252
|
case 0:
|
|
249
253
|
type = _ref5.type, source = _ref5.source, connection = _ref5.connection, credentials = _ref5.credentials, geoColumn = _ref5.geoColumn, columns = _ref5.columns, clientId = _ref5.clientId, headers = _ref5.headers, aggregationExp = _ref5.aggregationExp, aggregationResLevel = _ref5.aggregationResLevel, queryParameters = _ref5.queryParameters;
|
|
250
254
|
baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
251
|
-
|
|
255
|
+
parameters = getParameters({
|
|
252
256
|
type: type,
|
|
253
257
|
source: source,
|
|
254
258
|
geoColumn: geoColumn,
|
|
@@ -257,7 +261,19 @@ function _mapInstantiation() {
|
|
|
257
261
|
aggregationResLevel: aggregationResLevel,
|
|
258
262
|
aggregationExp: aggregationExp,
|
|
259
263
|
queryParameters: queryParameters
|
|
260
|
-
})
|
|
264
|
+
});
|
|
265
|
+
encodedParameters = Object.entries(parameters).map(function (_ref12) {
|
|
266
|
+
var _ref13 = (0, _slicedToArray2.default)(_ref12, 2),
|
|
267
|
+
key = _ref13[0],
|
|
268
|
+
value = _ref13[1];
|
|
269
|
+
|
|
270
|
+
if (typeof value !== 'string') {
|
|
271
|
+
value = JSON.stringify(value);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return (0, _mapsApiCommon.encodeParameter)(key, value);
|
|
275
|
+
});
|
|
276
|
+
url = "".concat(baseUrl, "?").concat(encodedParameters.join('&'));
|
|
261
277
|
accessToken = credentials.accessToken;
|
|
262
278
|
errorContext = {
|
|
263
279
|
requestType: _mapsApiCommon.REQUEST_TYPES.INSTANTIATION,
|
|
@@ -267,33 +283,25 @@ function _mapInstantiation() {
|
|
|
267
283
|
};
|
|
268
284
|
|
|
269
285
|
if (!(url.length > MAX_GET_LENGTH && type === _mapsApiCommon.MAP_TYPES.QUERY)) {
|
|
270
|
-
_context4.next =
|
|
286
|
+
_context4.next = 11;
|
|
271
287
|
break;
|
|
272
288
|
}
|
|
273
289
|
|
|
274
|
-
|
|
275
|
-
q: source,
|
|
276
|
-
client: clientId || DEFAULT_CLIENT,
|
|
277
|
-
aggregationResLevel: aggregationResLevel,
|
|
278
|
-
aggregationExp: aggregationExp,
|
|
279
|
-
geoColumn: geoColumn,
|
|
280
|
-
queryParameters: queryParameters
|
|
281
|
-
});
|
|
282
|
-
_context4.next = 9;
|
|
290
|
+
_context4.next = 10;
|
|
283
291
|
return requestJson({
|
|
284
292
|
method: 'POST',
|
|
285
293
|
url: baseUrl,
|
|
286
294
|
headers: headers,
|
|
287
295
|
accessToken: accessToken,
|
|
288
|
-
body:
|
|
296
|
+
body: JSON.stringify(parameters),
|
|
289
297
|
errorContext: errorContext
|
|
290
298
|
});
|
|
291
299
|
|
|
292
|
-
case
|
|
300
|
+
case 10:
|
|
293
301
|
return _context4.abrupt("return", _context4.sent);
|
|
294
302
|
|
|
295
|
-
case
|
|
296
|
-
_context4.next =
|
|
303
|
+
case 11:
|
|
304
|
+
_context4.next = 13;
|
|
297
305
|
return requestJson({
|
|
298
306
|
url: url,
|
|
299
307
|
headers: headers,
|
|
@@ -301,10 +309,10 @@ function _mapInstantiation() {
|
|
|
301
309
|
errorContext: errorContext
|
|
302
310
|
});
|
|
303
311
|
|
|
304
|
-
case
|
|
312
|
+
case 13:
|
|
305
313
|
return _context4.abrupt("return", _context4.sent);
|
|
306
314
|
|
|
307
|
-
case
|
|
315
|
+
case 14:
|
|
308
316
|
case "end":
|
|
309
317
|
return _context4.stop();
|
|
310
318
|
}
|
|
@@ -750,9 +758,9 @@ function _fillInTileStats() {
|
|
|
750
758
|
_loop = function _loop() {
|
|
751
759
|
var a = _attributes[_i2];
|
|
752
760
|
|
|
753
|
-
if (!filteredAttributes.find(function (
|
|
754
|
-
var attribute =
|
|
755
|
-
dataset =
|
|
761
|
+
if (!filteredAttributes.find(function (_ref14) {
|
|
762
|
+
var attribute = _ref14.attribute,
|
|
763
|
+
dataset = _ref14.dataset;
|
|
756
764
|
return attribute === a.attribute && dataset === a.dataset;
|
|
757
765
|
})) {
|
|
758
766
|
filteredAttributes.push(a);
|
|
@@ -763,9 +771,9 @@ function _fillInTileStats() {
|
|
|
763
771
|
_loop();
|
|
764
772
|
}
|
|
765
773
|
|
|
766
|
-
promises = filteredAttributes.map(function (
|
|
767
|
-
var attribute =
|
|
768
|
-
dataset =
|
|
774
|
+
promises = filteredAttributes.map(function (_ref15) {
|
|
775
|
+
var attribute = _ref15.attribute,
|
|
776
|
+
dataset = _ref15.dataset;
|
|
769
777
|
return _fetchTilestats(attribute, dataset, token, credentials);
|
|
770
778
|
});
|
|
771
779
|
_context10.next = 11;
|
|
@@ -861,18 +869,18 @@ function _fetchMap() {
|
|
|
861
869
|
};
|
|
862
870
|
}
|
|
863
871
|
|
|
864
|
-
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (
|
|
865
|
-
var type =
|
|
872
|
+
geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(function (_ref17) {
|
|
873
|
+
var type = _ref17.type;
|
|
866
874
|
return type === 'geojson' || type === 'point';
|
|
867
875
|
});
|
|
868
|
-
geojsonDatasetIds = geojsonLayers.map(function (
|
|
869
|
-
var config =
|
|
876
|
+
geojsonDatasetIds = geojsonLayers.map(function (_ref18) {
|
|
877
|
+
var config = _ref18.config;
|
|
870
878
|
return config.dataId;
|
|
871
879
|
});
|
|
872
880
|
map.datasets.forEach(function (dataset) {
|
|
873
881
|
if (geojsonDatasetIds.includes(dataset.id)) {
|
|
874
|
-
var _geojsonLayers$find = geojsonLayers.find(function (
|
|
875
|
-
var config =
|
|
882
|
+
var _geojsonLayers$find = geojsonLayers.find(function (_ref19) {
|
|
883
|
+
var config = _ref19.config;
|
|
876
884
|
return config.dataId === dataset.id;
|
|
877
885
|
}),
|
|
878
886
|
config = _geojsonLayers$find.config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","ok","error","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","push","sourceName","MAP_TYPES","QUERY","JSON","stringify","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","requestType","REQUEST_TYPES","INSTANTIATION","length","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\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 CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n const json = await response.json();\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\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 headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n parameters.push(encodeParameter('v', V3_MINOR_VERSION));\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (queryParameters) {\n parameters.push(encodeParameter('queryParameters', JSON.stringify(queryParameters)));\n }\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.push(encodeParameter('aggregationExp', '1 AS value'));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n })}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\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 aggregationResLevel,\n aggregationExp,\n geoColumn,\n queryParameters\n });\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body,\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\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\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 headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\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 headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?${encodeParameter('q', source)}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n const stats = await requestData({url, format: FORMATS.JSON, accessToken, errorContext});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\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 errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\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, headers);\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 const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","ok","error","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","MAP_TYPES","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","REQUEST_TYPES","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\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 CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n const json = await response.json();\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\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 headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n geo_column?: string;\n columns?: string;\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 queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\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\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 headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\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 headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?${encodeParameter('q', source)}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n const stats = await requestData({url, format: FORMATS.JSON, accessToken, errorContext});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\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 errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\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, headers);\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 const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
|
@@ -102,34 +102,36 @@ function getParameters({
|
|
|
102
102
|
aggregationResLevel,
|
|
103
103
|
queryParameters
|
|
104
104
|
}) {
|
|
105
|
-
const parameters =
|
|
106
|
-
|
|
105
|
+
const parameters = {
|
|
106
|
+
client: clientId || DEFAULT_CLIENT,
|
|
107
|
+
v: V3_MINOR_VERSION
|
|
108
|
+
};
|
|
107
109
|
const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';
|
|
108
|
-
parameters
|
|
110
|
+
parameters[sourceName] = source;
|
|
109
111
|
|
|
110
112
|
if (queryParameters) {
|
|
111
|
-
parameters.
|
|
113
|
+
parameters.queryParameters = queryParameters;
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
if (geoColumn) {
|
|
115
|
-
parameters.
|
|
117
|
+
parameters.geo_column = geoColumn;
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
if (columns) {
|
|
119
|
-
parameters.
|
|
121
|
+
parameters.columns = columns.join(',');
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
if (aggregationExp) {
|
|
123
|
-
parameters.
|
|
125
|
+
parameters.aggregationExp = aggregationExp;
|
|
124
126
|
} else if (isSpatialIndexGeoColumn(geoColumn)) {
|
|
125
|
-
parameters.
|
|
127
|
+
parameters.aggregationExp = '1 AS value';
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
if (aggregationResLevel) {
|
|
129
|
-
parameters.
|
|
131
|
+
parameters.aggregationResLevel = aggregationResLevel;
|
|
130
132
|
}
|
|
131
133
|
|
|
132
|
-
return parameters
|
|
134
|
+
return parameters;
|
|
133
135
|
}
|
|
134
136
|
|
|
135
137
|
function isSpatialIndexGeoColumn(geoColumn) {
|
|
@@ -151,7 +153,7 @@ export async function mapInstantiation({
|
|
|
151
153
|
queryParameters
|
|
152
154
|
}) {
|
|
153
155
|
const baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
154
|
-
const
|
|
156
|
+
const parameters = getParameters({
|
|
155
157
|
type,
|
|
156
158
|
source,
|
|
157
159
|
geoColumn,
|
|
@@ -160,7 +162,15 @@ export async function mapInstantiation({
|
|
|
160
162
|
aggregationResLevel,
|
|
161
163
|
aggregationExp,
|
|
162
164
|
queryParameters
|
|
163
|
-
})
|
|
165
|
+
});
|
|
166
|
+
const encodedParameters = Object.entries(parameters).map(([key, value]) => {
|
|
167
|
+
if (typeof value !== 'string') {
|
|
168
|
+
value = JSON.stringify(value);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return encodeParameter(key, value);
|
|
172
|
+
});
|
|
173
|
+
const url = "".concat(baseUrl, "?").concat(encodedParameters.join('&'));
|
|
164
174
|
const {
|
|
165
175
|
accessToken
|
|
166
176
|
} = credentials;
|
|
@@ -172,20 +182,12 @@ export async function mapInstantiation({
|
|
|
172
182
|
};
|
|
173
183
|
|
|
174
184
|
if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {
|
|
175
|
-
const body = JSON.stringify({
|
|
176
|
-
q: source,
|
|
177
|
-
client: clientId || DEFAULT_CLIENT,
|
|
178
|
-
aggregationResLevel,
|
|
179
|
-
aggregationExp,
|
|
180
|
-
geoColumn,
|
|
181
|
-
queryParameters
|
|
182
|
-
});
|
|
183
185
|
return await requestJson({
|
|
184
186
|
method: 'POST',
|
|
185
187
|
url: baseUrl,
|
|
186
188
|
headers,
|
|
187
189
|
accessToken,
|
|
188
|
-
body,
|
|
190
|
+
body: JSON.stringify(parameters),
|
|
189
191
|
errorContext
|
|
190
192
|
});
|
|
191
193
|
}
|