@deck.gl/carto 8.7.0-beta.5 → 8.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +398 -343
- package/dist/es5/api/index.js.map +1 -1
- package/dist/es5/api/layer-map.js +8 -8
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-api-common.js +15 -1
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-client.js +15 -18
- package/dist/es5/api/maps-client.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +237 -177
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +5 -8
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/basemap.js +7 -7
- package/dist/es5/basemap.js.map +1 -1
- package/dist/es5/config.js.map +1 -1
- package/dist/es5/index.js +4 -4
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +20 -18
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/{carto-dynamic-tile-layer.js → carto-tile-layer.js} +24 -24
- package/dist/es5/layers/carto-tile-layer.js.map +1 -0
- package/dist/es5/layers/schema/{carto-dynamic-tile.js → carto-tile.js} +1 -1
- package/dist/es5/layers/schema/carto-tile.js.map +1 -0
- package/dist/es5/style/color-bins-style.js +1 -1
- package/dist/es5/style/color-bins-style.js.map +1 -1
- package/dist/es5/style/color-categories-style.js +1 -1
- package/dist/es5/style/color-categories-style.js.map +1 -1
- package/dist/es5/style/color-continuous-style.js +1 -1
- package/dist/es5/style/color-continuous-style.js.map +1 -1
- package/dist/es5/style/palette.js +1 -6
- package/dist/es5/style/palette.js.map +1 -1
- package/dist/es5/style/utils.js +2 -6
- package/dist/es5/style/utils.js.map +1 -1
- package/dist/es5/utils.js +13 -0
- package/dist/es5/utils.js.map +1 -0
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/layer-map.js +5 -4
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-api-common.js +14 -0
- package/dist/esm/api/maps-api-common.js.map +1 -1
- package/dist/esm/api/maps-client.js +6 -10
- package/dist/esm/api/maps-client.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +72 -37
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +4 -3
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/basemap.js +7 -7
- package/dist/esm/basemap.js.map +1 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +15 -17
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/{carto-dynamic-tile-layer.js → carto-tile-layer.js} +16 -16
- package/dist/esm/layers/carto-tile-layer.js.map +1 -0
- package/dist/esm/layers/schema/{carto-dynamic-tile.js → carto-tile.js} +1 -1
- package/dist/esm/layers/schema/carto-tile.js.map +1 -0
- package/dist/esm/style/color-bins-style.js +1 -1
- package/dist/esm/style/color-bins-style.js.map +1 -1
- package/dist/esm/style/color-categories-style.js +1 -1
- package/dist/esm/style/color-categories-style.js.map +1 -1
- package/dist/esm/style/color-continuous-style.js +1 -1
- package/dist/esm/style/color-continuous-style.js.map +1 -1
- package/dist/esm/style/palette.js +1 -6
- package/dist/esm/style/palette.js.map +1 -1
- package/dist/esm/style/utils.js +2 -6
- package/dist/esm/style/utils.js.map +1 -1
- package/dist/esm/utils.js +5 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist.min.js +4 -4
- package/package.json +8 -2
- package/src/api/{index.js → index.ts} +0 -0
- package/src/api/{layer-map.js → layer-map.ts} +25 -14
- package/src/api/maps-api-common.ts +76 -0
- package/src/api/{maps-client.js → maps-client.ts} +55 -20
- package/src/api/{maps-v3-client.js → maps-v3-client.ts} +146 -57
- package/src/api/{parseMap.js → parseMap.ts} +7 -6
- package/src/basemap.ts +10 -0
- package/src/{config.js → config.ts} +22 -6
- package/src/{index.js → index.ts} +2 -2
- package/src/layers/carto-layer.js +13 -12
- package/src/layers/{carto-dynamic-tile-layer.js → carto-tile-layer.js} +14 -14
- package/src/layers/schema/{carto-dynamic-tile.js → carto-tile.js} +0 -0
- package/src/style/color-bins-style.ts +26 -0
- package/src/style/{color-categories-style.js → color-categories-style.ts} +10 -4
- package/src/style/color-continuous-style.ts +25 -0
- package/src/style/{palette.js → palette.ts} +18 -15
- package/src/style/{utils.js → utils.ts} +7 -10
- package/src/utils.ts +5 -0
- package/dist/es5/layers/carto-dynamic-tile-layer.js.map +0 -1
- package/dist/es5/layers/schema/carto-dynamic-tile.js.map +0 -1
- package/dist/esm/layers/carto-dynamic-tile-layer.js.map +0 -1
- package/dist/esm/layers/schema/carto-dynamic-tile.js.map +0 -1
- package/src/api/maps-api-common.js +0 -41
- package/src/basemap.js +0 -10
- package/src/style/color-bins-style.js +0 -21
- package/src/style/color-continuous-style.js +0 -20
|
@@ -2,17 +2,16 @@ import { getDefaultCredentials, buildMapsUrlFromBase } from '../config';
|
|
|
2
2
|
import { API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES } from './maps-api-common';
|
|
3
3
|
import { parseMap } from './parseMap';
|
|
4
4
|
import { log } from '@deck.gl/core';
|
|
5
|
+
import { assert } from '../utils';
|
|
5
6
|
const MAX_GET_LENGTH = 2048;
|
|
6
7
|
const DEFAULT_CLIENT = 'deck-gl-carto';
|
|
7
8
|
|
|
8
9
|
async function request({
|
|
9
10
|
method,
|
|
10
11
|
url,
|
|
11
|
-
format,
|
|
12
12
|
accessToken,
|
|
13
13
|
body
|
|
14
14
|
}) {
|
|
15
|
-
let response;
|
|
16
15
|
const headers = {
|
|
17
16
|
Accept: 'application/json'
|
|
18
17
|
};
|
|
@@ -26,7 +25,7 @@ async function request({
|
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
try {
|
|
29
|
-
|
|
28
|
+
return await fetch(url, {
|
|
30
29
|
method,
|
|
31
30
|
headers,
|
|
32
31
|
body
|
|
@@ -34,11 +33,20 @@ async function request({
|
|
|
34
33
|
} catch (error) {
|
|
35
34
|
throw new Error("Failed to connect to Maps API: ".concat(error));
|
|
36
35
|
}
|
|
36
|
+
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
async function requestJson({
|
|
39
|
+
method,
|
|
40
|
+
url,
|
|
41
|
+
accessToken,
|
|
42
|
+
body
|
|
43
|
+
}) {
|
|
44
|
+
const response = await request({
|
|
45
|
+
method,
|
|
46
|
+
url,
|
|
47
|
+
accessToken,
|
|
48
|
+
body
|
|
49
|
+
});
|
|
42
50
|
const json = await response.json();
|
|
43
51
|
|
|
44
52
|
if (!response.ok) {
|
|
@@ -48,7 +56,32 @@ async function request({
|
|
|
48
56
|
});
|
|
49
57
|
}
|
|
50
58
|
|
|
51
|
-
return json
|
|
59
|
+
return json;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async function requestData({
|
|
63
|
+
method,
|
|
64
|
+
url,
|
|
65
|
+
accessToken,
|
|
66
|
+
format,
|
|
67
|
+
body
|
|
68
|
+
}) {
|
|
69
|
+
if (format === FORMATS.NDJSON) {
|
|
70
|
+
return request({
|
|
71
|
+
method,
|
|
72
|
+
url,
|
|
73
|
+
accessToken,
|
|
74
|
+
body
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const data = await requestJson({
|
|
79
|
+
method,
|
|
80
|
+
url,
|
|
81
|
+
accessToken,
|
|
82
|
+
body
|
|
83
|
+
});
|
|
84
|
+
return data.rows ? data.rows : data;
|
|
52
85
|
}
|
|
53
86
|
|
|
54
87
|
function dealWithError({
|
|
@@ -120,25 +153,22 @@ export async function mapInstantiation({
|
|
|
120
153
|
const {
|
|
121
154
|
accessToken
|
|
122
155
|
} = credentials;
|
|
123
|
-
const format = 'json';
|
|
124
156
|
|
|
125
157
|
if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {
|
|
126
158
|
const body = JSON.stringify({
|
|
127
159
|
q: source,
|
|
128
160
|
client: clientId || DEFAULT_CLIENT
|
|
129
161
|
});
|
|
130
|
-
return await
|
|
162
|
+
return await requestJson({
|
|
131
163
|
method: 'POST',
|
|
132
164
|
url: baseUrl,
|
|
133
|
-
format,
|
|
134
165
|
accessToken,
|
|
135
166
|
body
|
|
136
167
|
});
|
|
137
168
|
}
|
|
138
169
|
|
|
139
|
-
return await
|
|
170
|
+
return await requestJson({
|
|
140
171
|
url,
|
|
141
|
-
format,
|
|
142
172
|
accessToken
|
|
143
173
|
});
|
|
144
174
|
}
|
|
@@ -157,14 +187,14 @@ function checkFetchLayerDataParameters({
|
|
|
157
187
|
type,
|
|
158
188
|
source,
|
|
159
189
|
connection,
|
|
160
|
-
|
|
190
|
+
credentials
|
|
161
191
|
}) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
192
|
+
assert(connection, 'Must define connection');
|
|
193
|
+
assert(type, 'Must define a type');
|
|
194
|
+
assert(source, 'Must define a source');
|
|
195
|
+
assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');
|
|
196
|
+
assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');
|
|
197
|
+
assert(credentials.accessToken, 'Must define an accessToken');
|
|
168
198
|
}
|
|
169
199
|
|
|
170
200
|
export async function fetchLayerData({
|
|
@@ -194,7 +224,7 @@ export async function fetchLayerData({
|
|
|
194
224
|
schema,
|
|
195
225
|
clientId
|
|
196
226
|
});
|
|
197
|
-
const data = await
|
|
227
|
+
const data = await requestData({
|
|
198
228
|
url,
|
|
199
229
|
format: mapFormat,
|
|
200
230
|
accessToken
|
|
@@ -230,7 +260,7 @@ async function _fetchDataUrl({
|
|
|
230
260
|
type,
|
|
231
261
|
source,
|
|
232
262
|
connection,
|
|
233
|
-
localCreds
|
|
263
|
+
credentials: localCreds
|
|
234
264
|
});
|
|
235
265
|
|
|
236
266
|
if (!localCreds.mapsUrl) {
|
|
@@ -247,13 +277,13 @@ async function _fetchDataUrl({
|
|
|
247
277
|
schema,
|
|
248
278
|
clientId
|
|
249
279
|
});
|
|
250
|
-
let url;
|
|
280
|
+
let url = null;
|
|
251
281
|
let mapFormat;
|
|
252
282
|
|
|
253
283
|
if (format) {
|
|
254
284
|
mapFormat = format;
|
|
255
285
|
url = getUrlFromMetadata(metadata, format);
|
|
256
|
-
|
|
286
|
+
assert(url, "Format ".concat(format, " not available"));
|
|
257
287
|
} else {
|
|
258
288
|
const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];
|
|
259
289
|
|
|
@@ -265,6 +295,8 @@ async function _fetchDataUrl({
|
|
|
265
295
|
break;
|
|
266
296
|
}
|
|
267
297
|
}
|
|
298
|
+
|
|
299
|
+
assert(url && mapFormat, 'Unsupported data formats received from backend.');
|
|
268
300
|
}
|
|
269
301
|
|
|
270
302
|
const {
|
|
@@ -306,6 +338,8 @@ export async function getData({
|
|
|
306
338
|
async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
|
|
307
339
|
const {
|
|
308
340
|
connectionName: connection,
|
|
341
|
+
columns,
|
|
342
|
+
geoColumn,
|
|
309
343
|
source,
|
|
310
344
|
type
|
|
311
345
|
} = dataset;
|
|
@@ -317,23 +351,24 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
|
|
|
317
351
|
accessToken
|
|
318
352
|
},
|
|
319
353
|
connection,
|
|
354
|
+
columns,
|
|
355
|
+
geoColumn,
|
|
320
356
|
source,
|
|
321
357
|
type,
|
|
322
358
|
clientId
|
|
323
359
|
});
|
|
324
|
-
const cache = parseInt(new URL(url).searchParams.get('cache'), 10);
|
|
360
|
+
const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);
|
|
325
361
|
|
|
326
362
|
if (cache && dataset.cache === cache) {
|
|
327
363
|
return false;
|
|
328
364
|
}
|
|
329
365
|
|
|
330
366
|
dataset.cache = cache;
|
|
331
|
-
|
|
367
|
+
dataset.data = await requestData({
|
|
332
368
|
url,
|
|
333
369
|
format: mapFormat,
|
|
334
370
|
accessToken
|
|
335
371
|
});
|
|
336
|
-
dataset.data = data;
|
|
337
372
|
return true;
|
|
338
373
|
}
|
|
339
374
|
|
|
@@ -359,22 +394,22 @@ export async function fetchMap({
|
|
|
359
394
|
const {
|
|
360
395
|
accessToken
|
|
361
396
|
} = localCreds;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
397
|
+
assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: "XXXX-XXXX-XXXX"})');
|
|
398
|
+
assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');
|
|
399
|
+
assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');
|
|
365
400
|
|
|
366
401
|
if (!localCreds.mapsUrl) {
|
|
367
402
|
localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);
|
|
368
403
|
}
|
|
369
404
|
|
|
370
405
|
if (autoRefresh || onNewData) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
406
|
+
assert(onNewData, 'Must define `onNewData` when using autoRefresh');
|
|
407
|
+
assert(typeof onNewData === 'function', '`onNewData` must be a function');
|
|
408
|
+
assert(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');
|
|
374
409
|
}
|
|
375
410
|
|
|
376
411
|
const url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
|
|
377
|
-
const map = await
|
|
412
|
+
const map = await requestJson({
|
|
378
413
|
url,
|
|
379
414
|
accessToken
|
|
380
415
|
});
|
|
@@ -382,9 +417,9 @@ export async function fetchMap({
|
|
|
382
417
|
|
|
383
418
|
if (autoRefresh) {
|
|
384
419
|
const intervalId = setInterval(async () => {
|
|
385
|
-
const changed = await fillInMapDatasets(map, clientId,
|
|
420
|
+
const changed = await fillInMapDatasets(map, clientId, localCreds);
|
|
386
421
|
|
|
387
|
-
if (changed.some(v => v === true)) {
|
|
422
|
+
if (onNewData && changed.some(v => v === true)) {
|
|
388
423
|
onNewData(parseMap(map));
|
|
389
424
|
}
|
|
390
425
|
}, autoRefresh * 1000);
|
|
@@ -394,7 +429,7 @@ export async function fetchMap({
|
|
|
394
429
|
};
|
|
395
430
|
}
|
|
396
431
|
|
|
397
|
-
await fillInMapDatasets(map, clientId,
|
|
432
|
+
await fillInMapDatasets(map, clientId, localCreds);
|
|
398
433
|
return { ...parseMap(map),
|
|
399
434
|
...{
|
|
400
435
|
stopAutoRefresh
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","parseMap","log","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","localCreds","assert","apiVersion","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","data","result","defaultCredentials","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","clearInterval"],"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 {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\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, schema, clientId}) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\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 schema,\n clientId\n}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\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: clientId || DEFAULT_CLIENT\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\nfunction checkFetchLayerDataParameters({type, source, connection, localCreds}) {\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}\n\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}) {\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 schema,\n clientId\n });\n\n const data = await request({url, format: mapFormat, accessToken});\n const result = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}) {\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({type, source, connection, localCreds});\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 schema,\n clientId\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.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 }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false,\n clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(dataset, accessToken, credentials, clientId) {\n // First fetch metadata\n const {connectionName: connection, source, type} = dataset;\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n source,\n type,\n clientId\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 data = await request({url, format: mapFormat, accessToken});\n dataset.data = data;\n return true;\n}\n\nasync function fillInMapDatasets({datasets, token}, clientId, credentials) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({cartoMapId, clientId, credentials, autoRefresh, onNewData}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n const {accessToken} = localCreds;\n\n log.assert(cartoMapId, `Must define CARTO map id: fetchMap({cartoMapId: 'XXXX-XXXX-XXXX'})`);\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n log.assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n log.assert(typeof onNewData === 'function', '`onNewData` must be a function');\n log.assert(autoRefresh > 0, '`autoRefresh` must be a positive number');\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await request({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh;\n if (autoRefresh) {\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, credentials);\n if (changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, credentials);\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":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","error","Error","requestJson","response","json","ok","dealWithError","requestData","format","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","clearInterval"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n encodeParameter,\n Format,\n FORMATS,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\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 schema,\n clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: 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\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 schema,\n clientId\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 schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\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({type, source, connection, credentials: localCreds});\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 schema,\n clientId\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 const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false,\n clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n columns,\n geoColumn,\n source,\n type,\n clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
package/dist/esm/api/parseMap.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { getLayer, getColorAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor } from './layer-map';
|
|
2
2
|
import { _flatten as flatten, log } from '@deck.gl/core';
|
|
3
|
+
import { assert } from '../utils';
|
|
3
4
|
export function parseMap(json) {
|
|
4
5
|
const {
|
|
5
6
|
keplerMapConfig,
|
|
6
7
|
datasets
|
|
7
8
|
} = json;
|
|
8
|
-
|
|
9
|
+
assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');
|
|
9
10
|
const {
|
|
10
11
|
mapState,
|
|
11
12
|
mapStyle
|
|
@@ -34,11 +35,11 @@ export function parseMap(json) {
|
|
|
34
35
|
dataId
|
|
35
36
|
} = config;
|
|
36
37
|
const dataset = datasets.find(d => d.id === dataId);
|
|
37
|
-
|
|
38
|
+
assert(dataset, "No dataset matching dataId: ".concat(dataId));
|
|
38
39
|
const {
|
|
39
40
|
data
|
|
40
41
|
} = dataset;
|
|
41
|
-
|
|
42
|
+
assert(data, "No data loaded for dataId: ".concat(dataId));
|
|
42
43
|
const {
|
|
43
44
|
Layer,
|
|
44
45
|
propMap,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/parseMap.js"],"names":["getLayer","getColorAccessor","getSizeAccessor","getTextAccessor","getTextPixelOffsetAccessor","_flatten","flatten","log","parseMap","json","keplerMapConfig","datasets","assert","version","mapState","mapStyle","config","layers","layerBlending","interactionConfig","visState","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","strokeOpacity","getLineColor","strokeColorRange","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n getLayer,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n log.assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n log.assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n log.assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createBlendingProps(layerBlending),\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...createStyleProps(config, propMap),\n ...createChannelProps(visualChannels, type, config, data) // Must come after style\n });\n } catch (e) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction extractTextLayers(layers) {\n return flatten(\n layers.map(({id, config, ...rest}) => {\n const {textLabel, ...configRest} = config;\n return [\n // Original layer without textLabel\n {id, config: configRest, ...rest},\n\n // One layer per valid text label, with full opacity\n ...textLabel\n .filter(t => t.field)\n .map(t => {\n return {\n id: `${id}-label-${t.field.name}`,\n config: {\n textLabel: t,\n ...configRest,\n label: `${config.label}-label-${t.field.name}`,\n visConfig: {...configRest.visConfig, opacity: 1}\n },\n ...rest\n };\n })\n ];\n })\n );\n}\n\nfunction createBlendingProps(layerBlending) {\n if (layerBlending === 'additive') {\n return {\n parameters: {\n blendFunc: [GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: GL.FUNC_ADD\n }\n };\n } else if (layerBlending === 'subtractive') {\n return {\n parameters: {\n blendFunc: [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: [GL.FUNC_SUBTRACT, GL.FUNC_ADD]\n }\n };\n }\n\n return {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result = {};\n mapProps(config, result, mapping);\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity */\nfunction createChannelProps(visualChannels, type, config, data) {\n const {colorField, colorScale, sizeField, sizeScale, strokeColorField, strokeColorScale} =\n visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result = {};\n const textLabelField = textLabel && textLabel.field;\n if (colorField) {\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n visConfig.colorRange,\n 1, // Rely on layer opacity\n data\n );\n }\n if (strokeColorField) {\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.strokeColorRange,\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n if (textLabelField) {\n result.getText = getTextAccessor(textLabelField, data);\n result.pointType = 'text';\n const radius = result.getPointRadius || visConfig.radius;\n result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);\n }\n\n return result;\n}\n"],"file":"parseMap.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["getLayer","getColorAccessor","getSizeAccessor","getTextAccessor","getTextPixelOffsetAccessor","_flatten","flatten","log","assert","parseMap","json","keplerMapConfig","datasets","version","mapState","mapStyle","config","layers","layerBlending","interactionConfig","visState","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","strokeOpacity","getLineColor","strokeColorRange","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n getLayer,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createBlendingProps(layerBlending),\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...createStyleProps(config, propMap),\n ...createChannelProps(visualChannels, type, config, data) // Must come after style\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction extractTextLayers(layers) {\n return flatten(\n layers.map(({id, config, ...rest}) => {\n const {textLabel, ...configRest} = config;\n return [\n // Original layer without textLabel\n {id, config: configRest, ...rest},\n\n // One layer per valid text label, with full opacity\n ...textLabel\n .filter(t => t.field)\n .map(t => {\n return {\n id: `${id}-label-${t.field.name}`,\n config: {\n textLabel: t,\n ...configRest,\n label: `${config.label}-label-${t.field.name}`,\n visConfig: {...configRest.visConfig, opacity: 1}\n },\n ...rest\n };\n })\n ];\n })\n );\n}\n\nfunction createBlendingProps(layerBlending) {\n if (layerBlending === 'additive') {\n return {\n parameters: {\n blendFunc: [GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: GL.FUNC_ADD\n }\n };\n } else if (layerBlending === 'subtractive') {\n return {\n parameters: {\n blendFunc: [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: [GL.FUNC_SUBTRACT, GL.FUNC_ADD]\n }\n };\n }\n\n return {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity */\nfunction createChannelProps(visualChannels, type, config, data) {\n const {colorField, colorScale, sizeField, sizeScale, strokeColorField, strokeColorScale} =\n visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n const textLabelField = textLabel && textLabel.field;\n if (colorField) {\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n visConfig.colorRange,\n 1, // Rely on layer opacity\n data\n );\n }\n if (strokeColorField) {\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.strokeColorRange,\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n if (textLabelField) {\n result.getText = getTextAccessor(textLabelField, data);\n result.pointType = 'text';\n const radius = result.getPointRadius || visConfig.radius;\n result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);\n }\n\n return result;\n}\n"],"file":"parseMap.js"}
|
package/dist/esm/basemap.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const
|
|
1
|
+
const baseUrl = 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json';
|
|
2
2
|
export default {
|
|
3
|
-
VOYAGER:
|
|
4
|
-
POSITRON:
|
|
5
|
-
DARK_MATTER:
|
|
6
|
-
VOYAGER_NOLABELS:
|
|
7
|
-
POSITRON_NOLABELS:
|
|
8
|
-
DARK_MATTER_NOLABELS:
|
|
3
|
+
VOYAGER: baseUrl.replace('{basemap}', 'voyager'),
|
|
4
|
+
POSITRON: baseUrl.replace('{basemap}', 'positron'),
|
|
5
|
+
DARK_MATTER: baseUrl.replace('{basemap}', 'dark-matter'),
|
|
6
|
+
VOYAGER_NOLABELS: baseUrl.replace('{basemap}', 'voyager-nolabels'),
|
|
7
|
+
POSITRON_NOLABELS: baseUrl.replace('{basemap}', 'positron-nolabels'),
|
|
8
|
+
DARK_MATTER_NOLABELS: baseUrl.replace('{basemap}', 'dark-matter-nolabels')
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=basemap.js.map
|
package/dist/esm/basemap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/basemap.
|
|
1
|
+
{"version":3,"sources":["../../src/basemap.ts"],"names":["baseUrl","VOYAGER","replace","POSITRON","DARK_MATTER","VOYAGER_NOLABELS","POSITRON_NOLABELS","DARK_MATTER_NOLABELS"],"mappings":"AAAA,MAAMA,OAAO,GAAG,gEAAhB;AAEA,eAAe;AACbC,EAAAA,OAAO,EAAED,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,SAA7B,CADI;AAEbC,EAAAA,QAAQ,EAAEH,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,UAA7B,CAFG;AAGbE,EAAAA,WAAW,EAAEJ,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,aAA7B,CAHA;AAIbG,EAAAA,gBAAgB,EAAEL,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,kBAA7B,CAJL;AAKbI,EAAAA,iBAAiB,EAAEN,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,mBAA7B,CALN;AAMbK,EAAAA,oBAAoB,EAAEP,OAAO,CAACE,OAAR,CAAgB,WAAhB,EAA6B,sBAA7B;AANT,CAAf","sourcesContent":["const baseUrl = 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json';\n\nexport default {\n VOYAGER: baseUrl.replace('{basemap}', 'voyager'),\n POSITRON: baseUrl.replace('{basemap}', 'positron'),\n DARK_MATTER: baseUrl.replace('{basemap}', 'dark-matter'),\n VOYAGER_NOLABELS: baseUrl.replace('{basemap}', 'voyager-nolabels'),\n POSITRON_NOLABELS: baseUrl.replace('{basemap}', 'positron-nolabels'),\n DARK_MATTER_NOLABELS: baseUrl.replace('{basemap}', 'dark-matter-nolabels')\n} as const;\n"],"file":"basemap.js"}
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config.
|
|
1
|
+
{"version":3,"sources":["../../src/config.ts"],"names":["API_VERSIONS","defaultClassicCredentials","apiKey","region","username","defaultCloudNativeCredentials","apiBaseUrl","credentials","setDefaultCredentials","apiVersion","rest","V3","V1","V2","Error","getDefaultCredentials","buildMapsUrlFromBase","suffix","endsWith","substring"],"mappings":"AAAA,SAAQA,YAAR,QAA2B,uBAA3B;AAEA,OAAO,MAAMC,yBAAyB,GAAG;AACvCC,EAAAA,MAAM,EAAE,gBAD+B;AAEvCC,EAAAA,MAAM,EAAE,IAF+B;AAGvCC,EAAAA,QAAQ,EAAE;AAH6B,CAAlC;AAMP,OAAO,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,UAAU,EAAE;AAD+B,CAAtC;AAoBP,IAAIC,WAAwB,GAAG,EAA/B;AAEAC,qBAAqB,CAAC,EAAD,CAArB;AAEA,OAAO,SAASA,qBAAT,CAA+B;AAACC,EAAAA,UAAD;AAAa,KAAGC;AAAhB,CAA/B,EAA4E;AACjFD,EAAAA,UAAU,GAAGA,UAAU,IAAIT,YAAY,CAACW,EAAxC;;AAEA,UAAQF,UAAR;AACE,SAAKT,YAAY,CAACY,EAAlB;AACA,SAAKZ,YAAY,CAACa,EAAlB;AACEN,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGR,yBAAhB;AAA2C,WAAGS;AAA9C,OAAd;AACA;;AACF,SAAKV,YAAY,CAACW,EAAlB;AACEJ,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGJ,6BAAhB;AAA+C,WAAGK;AAAlD,OAAd;AACA;;AACF;AACE,YAAM,IAAII,KAAJ,+BAAiCL,UAAjC,8BAAN;AATJ;AAWD;AAED,OAAO,SAASM,qBAAT,GAA8C;AACnD,SAAOR,WAAP;AACD;AAED,OAAO,SAASS,oBAAT,CAA8BV,UAA9B,EAA0D;AAC/D,MAAIW,MAAM,GAAG,UAAb;;AACA,MAAIX,UAAU,CAACY,QAAX,CAAoB,GAApB,CAAJ,EAA8B;AAC5BD,IAAAA,MAAM,GAAGA,MAAM,CAACE,SAAP,CAAiB,CAAjB,CAAT;AACD;;AAED,mBAAUb,UAAV,SAAuBW,MAAvB;AACD","sourcesContent":["import {API_VERSIONS} from './api/maps-api-common';\n\nexport const defaultClassicCredentials = {\n apiKey: 'default_public',\n region: 'us',\n username: 'public'\n} as const;\n\nexport const defaultCloudNativeCredentials = {\n apiBaseUrl: 'https://gcp-us-east1.api.carto.com'\n} as const;\n\nexport interface ClassicCredentials {\n apiVersion: 'v1' | 'v2';\n apiKey: string;\n region: string;\n username: string;\n mapsUrl?: string;\n}\n\nexport interface CloudNativeCredentials {\n apiVersion: 'v3';\n apiBaseUrl: string;\n accessToken?: string;\n mapsUrl?: string;\n}\n\nexport type Credentials = ClassicCredentials | CloudNativeCredentials;\nlet credentials: Credentials = {} as Credentials;\n\nsetDefaultCredentials({});\n\nexport function setDefaultCredentials({apiVersion, ...rest}: Partial<Credentials>) {\n apiVersion = apiVersion || API_VERSIONS.V3;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n case API_VERSIONS.V2:\n credentials = {apiVersion, ...defaultClassicCredentials, ...rest};\n break;\n case API_VERSIONS.V3:\n credentials = {apiVersion, ...defaultCloudNativeCredentials, ...rest};\n break;\n default:\n throw new Error(`Invalid API version ${apiVersion}. Use API_VERSIONS enum.`);\n }\n}\n\nexport function getDefaultCredentials(): Credentials {\n return credentials;\n}\n\nexport function buildMapsUrlFromBase(apiBaseUrl: string): string {\n let suffix = '/v3/maps';\n if (apiBaseUrl.endsWith('/')) {\n suffix = suffix.substring(1);\n }\n\n return `${apiBaseUrl}${suffix}`;\n}\n"],"file":"config.js"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { getDefaultCredentials, setDefaultCredentials } from './config
|
|
1
|
+
export { getDefaultCredentials, setDefaultCredentials } from './config';
|
|
2
2
|
export { default as CartoLayer } from './layers/carto-layer';
|
|
3
|
-
export { default as
|
|
3
|
+
export { default as _CartoTileLayer } from './layers/carto-tile-layer';
|
|
4
4
|
export { default as BASEMAP } from './basemap';
|
|
5
5
|
export { default as colorBins } from './style/color-bins-style';
|
|
6
6
|
export { default as colorCategories } from './style/color-categories-style';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["getDefaultCredentials","setDefaultCredentials","default","CartoLayer","_CartoTileLayer","BASEMAP","colorBins","colorCategories","colorContinuous","FORMATS","TILE_FORMATS","MAP_TYPES","API_VERSIONS","fetchLayerData","fetchMap","getDataV2","_getDataV2","getData","mapInstantiation","_mapInstantiation"],"mappings":"AAAA,SAAQA,qBAAR,EAA+BC,qBAA/B,QAA2D,UAA3D;AACA,SAAQC,OAAO,IAAIC,UAAnB,QAAoC,sBAApC;AACA,SAAQD,OAAO,IAAIE,eAAnB,QAAyC,2BAAzC;AACA,SAAQF,OAAO,IAAIG,OAAnB,QAAiC,WAAjC;AACA,SAAQH,OAAO,IAAII,SAAnB,QAAmC,0BAAnC;AACA,SAAQJ,OAAO,IAAIK,eAAnB,QAAyC,gCAAzC;AACA,SAAQL,OAAO,IAAIM,eAAnB,QAAyC,gCAAzC;AACA,SACEC,OADF,EAEEC,YAFF,EAGEC,SAHF,EAIEC,YAJF,EAKEC,cALF,EAMEC,QANF,EAOEC,SAAS,IAAIC,UAPf,EAQEC,OARF,EASEC,gBAAgB,IAAIC,iBATtB,QAUO,OAVP","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n getData,\n mapInstantiation as _mapInstantiation\n} from './api';\n"],"file":"index.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompositeLayer, log } from '@deck.gl/core';
|
|
2
|
-
import
|
|
2
|
+
import CartoTileLayer from './carto-tile-layer';
|
|
3
3
|
import { MVTLayer } from '@deck.gl/geo-layers';
|
|
4
4
|
import { GeoJsonLayer } from '@deck.gl/layers';
|
|
5
5
|
import { fetchLayerData, getDataV2, API_VERSIONS } from '../api';
|
|
@@ -146,23 +146,31 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
|
|
149
|
+
_getSubLayerAndProps() {
|
|
150
150
|
const {
|
|
151
151
|
data,
|
|
152
152
|
format,
|
|
153
153
|
apiVersion
|
|
154
154
|
} = this.state;
|
|
155
|
+
const {
|
|
156
|
+
uniqueIdProperty
|
|
157
|
+
} = defaultProps;
|
|
158
|
+
const props = {
|
|
159
|
+
uniqueIdProperty,
|
|
160
|
+
...this.props
|
|
161
|
+
};
|
|
162
|
+
delete props.data;
|
|
155
163
|
|
|
156
164
|
if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {
|
|
157
|
-
return MVTLayer;
|
|
165
|
+
return [MVTLayer, props];
|
|
158
166
|
}
|
|
159
167
|
|
|
160
168
|
if (format === FORMATS.TILEJSON) {
|
|
161
|
-
|
|
162
|
-
return formatTiles === TILE_FORMATS.MVT ? MVTLayer :
|
|
169
|
+
props.formatTiles = props.formatTiles || new URL(data.tiles[0]).searchParams.get('formatTiles') || TILE_FORMATS.MVT;
|
|
170
|
+
return props.formatTiles === TILE_FORMATS.MVT ? [MVTLayer, props] : [CartoTileLayer, props];
|
|
163
171
|
}
|
|
164
172
|
|
|
165
|
-
return GeoJsonLayer;
|
|
173
|
+
return [GeoJsonLayer, props];
|
|
166
174
|
}
|
|
167
175
|
|
|
168
176
|
renderLayers() {
|
|
@@ -174,18 +182,8 @@ export default class CartoLayer extends CompositeLayer {
|
|
|
174
182
|
updateTriggers
|
|
175
183
|
} = this.props;
|
|
176
184
|
|
|
177
|
-
const layer = this.
|
|
185
|
+
const [layer, props] = this._getSubLayerAndProps();
|
|
178
186
|
|
|
179
|
-
const {
|
|
180
|
-
formatTiles,
|
|
181
|
-
uniqueIdProperty
|
|
182
|
-
} = defaultProps;
|
|
183
|
-
const props = {
|
|
184
|
-
formatTiles,
|
|
185
|
-
uniqueIdProperty,
|
|
186
|
-
...this.props
|
|
187
|
-
};
|
|
188
|
-
delete props.data;
|
|
189
187
|
return new layer(props, this.getSubLayerProps({
|
|
190
188
|
id: "carto-".concat(layer.layerName),
|
|
191
189
|
data,
|