@deck.gl/carto 8.8.5 → 8.8.8
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 +35806 -27510
- package/dist/es5/api/index.js.map +1 -1
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +47 -30
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +11 -6
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/carto-tile-layer.js +1 -1
- package/dist/es5/layers/carto-tile-layer.js.map +1 -1
- package/dist/es5/layers/quadbin-utils.js +2 -0
- package/dist/es5/layers/quadbin-utils.js.map +1 -1
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js +99 -0
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -0
- package/dist/es5/layers/schema/carto-spatial-tile.js +117 -0
- package/dist/es5/layers/schema/carto-spatial-tile.js.map +1 -0
- package/dist/es5/layers/schema/carto-tile.js +5 -1
- package/dist/es5/layers/schema/carto-tile.js.map +1 -1
- package/dist/es5/layers/schema/spatialjson-utils.js +41 -0
- package/dist/es5/layers/schema/spatialjson-utils.js.map +1 -0
- package/dist/es5/layers/spatial-index-tile-layer.js +6 -0
- package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist/esm/api/index.js.map +1 -1
- package/dist/esm/api/maps-api-common.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +41 -15
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +8 -4
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/carto-tile-layer.js +1 -1
- package/dist/esm/layers/carto-tile-layer.js.map +1 -1
- package/dist/esm/layers/quadbin-utils.js +2 -5
- package/dist/esm/layers/quadbin-utils.js.map +1 -1
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js +56 -0
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -0
- package/dist/esm/layers/schema/carto-spatial-tile.js +72 -0
- package/dist/esm/layers/schema/carto-spatial-tile.js.map +1 -0
- package/dist/esm/layers/schema/carto-tile.js +2 -2
- package/dist/esm/layers/schema/carto-tile.js.map +1 -1
- package/dist/esm/layers/schema/spatialjson-utils.js +26 -0
- package/dist/esm/layers/schema/spatialjson-utils.js.map +1 -0
- package/dist/esm/layers/spatial-index-tile-layer.js +3 -0
- package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist.min.js +4 -4
- package/package.json +2 -2
- package/src/api/index.ts +1 -0
- package/src/api/maps-api-common.ts +8 -0
- package/src/api/maps-v3-client.ts +59 -20
- package/src/index.ts +1 -1
- package/src/layers/carto-layer.ts +19 -6
- package/src/layers/carto-tile-layer.ts +6 -3
- package/src/layers/quadbin-utils.ts +2 -2
- package/src/layers/schema/carto-spatial-tile-loader.ts +59 -0
- package/src/layers/schema/carto-spatial-tile.ts +83 -0
- package/src/layers/schema/carto-tile.ts +6 -6
- package/src/layers/schema/spatialjson-utils.ts +35 -0
- package/src/layers/spatial-index-tile-layer.ts +4 -0
- package/typed/api/index.d.ts +1 -0
- package/typed/api/index.d.ts.map +1 -1
- package/typed/api/maps-api-common.d.ts +4 -0
- package/typed/api/maps-api-common.d.ts.map +1 -1
- package/typed/api/maps-v3-client.d.ts +8 -4
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/index.d.ts +1 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/layers/carto-layer.d.ts +6 -1
- package/typed/layers/carto-layer.d.ts.map +1 -1
- package/typed/layers/carto-tile-layer.d.ts.map +1 -1
- package/typed/layers/quadbin-utils.d.ts +2 -0
- package/typed/layers/quadbin-utils.d.ts.map +1 -1
- package/typed/layers/schema/carto-spatial-tile-loader.d.ts +4 -0
- package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -0
- package/typed/layers/schema/carto-spatial-tile.d.ts +21 -0
- package/typed/layers/schema/carto-spatial-tile.d.ts.map +1 -0
- package/typed/layers/schema/carto-tile.d.ts +15 -3
- package/typed/layers/schema/carto-tile.d.ts.map +1 -1
- package/typed/layers/schema/spatialjson-utils.d.ts +25 -0
- package/typed/layers/schema/spatialjson-utils.d.ts.map +1 -0
- package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["../../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA","sourcesContent":["export {FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS} from './maps-api-common';\nexport type {QueryParameters} from './maps-api-common';\nexport {getDataV2, CONNECTIONS} from './maps-client';\nexport {fetchLayerData, fetchMap, mapInstantiation} from './maps-v3-client';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":";;;;;;;;;;;;;;AAAO,IAAMA,6BAA6B,GAAG,QAAtC;;AACA,IAAMC,+BAA+B,GAAG,UAAxC;;AAGA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;;AAOA,IAAMC,uBAAuB,qFACjCJ,YAAY,CAACC,EADoB,oBACJH,6BADI,kFAEjCE,YAAY,CAACE,EAFoB,gCAEQH,+BAFR,6BAE0DD,6BAF1D,0BAA7B;;AAKA,IAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;;AAMA,IAAMC,eAA0B,GAAG,CAACJ,SAAS,CAACE,KAAX,CAAnC;;AACA,IAAMG,kBAA6B,GAAG,CAACL,SAAS,CAACC,KAAX,EAAkBD,SAAS,CAACE,KAA5B,CAAtC;;AAGA,IAAMI,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE,SADY;AAErBC,EAAAA,MAAM,EAAE,QAFa;AAGrBC,EAAAA,QAAQ,EAAE,UAHW;AAIrBC,EAAAA,IAAI,EAAE;AAJe,CAAhB;;AASA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,GAAG,EAAE,KADqB;AAE1BF,EAAAA,IAAI,EAAE,MAFoB;AAG1BH,EAAAA,OAAO,EAAE,SAHiB;AAI1BM,EAAAA,MAAM,EAAE;AAJkB,CAArB;;IAQKC,e;;;WAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;GAAAA,e,+BAAAA,e;;AAiCL,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AACtF,mBAAUD,IAAV,cAAkBE,kBAAkB,CAACD,KAAD,CAApC;AACD","sourcesContent":["export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\n\nexport type ValuesOf<T extends {}> = T[keyof T];\nexport const API_VERSIONS = {\n V1: 'v1',\n V2: 'v2',\n V3: 'v3'\n} as const;\nexport type ApiVersion = ValuesOf<typeof API_VERSIONS>;\n\nexport const DEFAULT_MAPS_URL_FORMAT = {\n [API_VERSIONS.V1]: `https://${DEFAULT_USER_COMPONENT_IN_URL}.carto.com/api/v1/map`,\n [API_VERSIONS.V2]: `https://maps-api-v2.${DEFAULT_REGION_COMPONENT_IN_URL}.carto.com/user/${DEFAULT_USER_COMPONENT_IN_URL}`\n} as const;\n\nexport const MAP_TYPES = {\n QUERY: 'query',\n TABLE: 'table',\n TILESET: 'tileset'\n} as const;\nexport type MapType = ValuesOf<typeof MAP_TYPES>;\nexport const COLUMNS_SUPPORT: MapType[] = [MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT: MapType[] = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\n\n// AVAILABLE FORMATS\nexport const FORMATS = {\n GEOJSON: 'geojson',\n NDJSON: 'ndjson',\n TILEJSON: 'tilejson',\n JSON: 'json'\n} as const;\nexport type Format = ValuesOf<typeof FORMATS>;\n\n// AVAILABLE FORMATS FOR TILES\nexport const TILE_FORMATS = {\n MVT: 'mvt',\n JSON: 'json',\n GEOJSON: 'geojson',\n BINARY: 'binary'\n} as const;\nexport type TileFormat = ValuesOf<typeof TILE_FORMATS>;\n\nexport enum SchemaFieldType {\n Number = 'number',\n Bigint = 'bigint',\n String = 'string',\n Geometry = 'geometry',\n Timestamp = 'timestamp',\n Object = 'object',\n Boolean = 'boolean',\n Variant = 'variant',\n Unknown = 'unknown'\n}\nexport interface SchemaField {\n name: string;\n type: SchemaFieldType; // Field type in the CARTO stack, common for all providers\n}\n\nexport interface MapInstantiation extends MapInstantiationFormats {\n nrows: number;\n size?: number;\n schema: SchemaField[];\n}\n\ntype MapInstantiationFormats = Record<\n Format,\n {\n url: string[];\n error?: any;\n }\n>;\n\n/**\n * Simple encode parameter\n */\nexport function encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n"],"file":"maps-api-common.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":";;;;;;;;;;;;;;AAAO,IAAMA,6BAA6B,GAAG,QAAtC;;AACA,IAAMC,+BAA+B,GAAG,UAAxC;;AAGA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;;AAOA,IAAMC,uBAAuB,qFACjCJ,YAAY,CAACC,EADoB,oBACJH,6BADI,kFAEjCE,YAAY,CAACE,EAFoB,gCAEQH,+BAFR,6BAE0DD,6BAF1D,0BAA7B;;AAKA,IAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;;AAMA,IAAMC,eAA0B,GAAG,CAACJ,SAAS,CAACE,KAAX,CAAnC;;AACA,IAAMG,kBAA6B,GAAG,CAACL,SAAS,CAACC,KAAX,EAAkBD,SAAS,CAACE,KAA5B,CAAtC;;AAGA,IAAMI,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE,SADY;AAErBC,EAAAA,MAAM,EAAE,QAFa;AAGrBC,EAAAA,QAAQ,EAAE,UAHW;AAIrBC,EAAAA,IAAI,EAAE;AAJe,CAAhB;;AASA,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,GAAG,EAAE,KADqB;AAE1BF,EAAAA,IAAI,EAAE,MAFoB;AAG1BH,EAAAA,OAAO,EAAE,SAHiB;AAI1BM,EAAAA,MAAM,EAAE;AAJkB,CAArB;;IAQKC,e;;;WAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;GAAAA,e,+BAAAA,e;;AAiCL,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AACtF,mBAAUD,IAAV,cAAkBE,kBAAkB,CAACD,KAAD,CAApC;AACD","sourcesContent":["export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\n\nexport type ValuesOf<T extends {}> = T[keyof T];\nexport const API_VERSIONS = {\n V1: 'v1',\n V2: 'v2',\n V3: 'v3'\n} as const;\nexport type ApiVersion = ValuesOf<typeof API_VERSIONS>;\n\nexport const DEFAULT_MAPS_URL_FORMAT = {\n [API_VERSIONS.V1]: `https://${DEFAULT_USER_COMPONENT_IN_URL}.carto.com/api/v1/map`,\n [API_VERSIONS.V2]: `https://maps-api-v2.${DEFAULT_REGION_COMPONENT_IN_URL}.carto.com/user/${DEFAULT_USER_COMPONENT_IN_URL}`\n} as const;\n\nexport const MAP_TYPES = {\n QUERY: 'query',\n TABLE: 'table',\n TILESET: 'tileset'\n} as const;\nexport type MapType = ValuesOf<typeof MAP_TYPES>;\nexport const COLUMNS_SUPPORT: MapType[] = [MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT: MapType[] = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\n\n// AVAILABLE FORMATS\nexport const FORMATS = {\n GEOJSON: 'geojson',\n NDJSON: 'ndjson',\n TILEJSON: 'tilejson',\n JSON: 'json'\n} as const;\nexport type Format = ValuesOf<typeof FORMATS>;\n\n// AVAILABLE FORMATS FOR TILES\nexport const TILE_FORMATS = {\n MVT: 'mvt',\n JSON: 'json',\n GEOJSON: 'geojson',\n BINARY: 'binary'\n} as const;\nexport type TileFormat = ValuesOf<typeof TILE_FORMATS>;\n\nexport enum SchemaFieldType {\n Number = 'number',\n Bigint = 'bigint',\n String = 'string',\n Geometry = 'geometry',\n Timestamp = 'timestamp',\n Object = 'object',\n Boolean = 'boolean',\n Variant = 'variant',\n Unknown = 'unknown'\n}\nexport interface SchemaField {\n name: string;\n type: SchemaFieldType; // Field type in the CARTO stack, common for all providers\n}\n\nexport interface MapInstantiation extends MapInstantiationFormats {\n nrows: number;\n size?: number;\n schema: SchemaField[];\n}\n\ntype MapInstantiationFormats = Record<\n Format,\n {\n url: string[];\n error?: any;\n }\n>;\n\n/**\n * Simple encode parameter\n */\nexport function encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n\nexport type QueryParameterValue = string | number | boolean | Array<QueryParameterValue> | object;\n\nexport type NamedQueryParameter = Record<string, QueryParameterValue>;\n\nexport type PositionalQueryParameter = QueryParameterValue[];\n\nexport type QueryParameters = NamedQueryParameter | PositionalQueryParameter;\n"],"file":"maps-api-common.js"}
|
|
@@ -44,15 +44,15 @@ function request(_x) {
|
|
|
44
44
|
|
|
45
45
|
function _request() {
|
|
46
46
|
_request = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(_ref) {
|
|
47
|
-
var method, url, accessToken, body, headers;
|
|
47
|
+
var method, url, customHeaders, accessToken, body, headers;
|
|
48
48
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
49
49
|
while (1) {
|
|
50
50
|
switch (_context.prev = _context.next) {
|
|
51
51
|
case 0:
|
|
52
|
-
method = _ref.method, url = _ref.url, accessToken = _ref.accessToken, body = _ref.body;
|
|
53
|
-
headers = {
|
|
52
|
+
method = _ref.method, url = _ref.url, customHeaders = _ref.headers, accessToken = _ref.accessToken, body = _ref.body;
|
|
53
|
+
headers = _objectSpread(_objectSpread({}, customHeaders), {}, {
|
|
54
54
|
Accept: 'application/json'
|
|
55
|
-
};
|
|
55
|
+
});
|
|
56
56
|
|
|
57
57
|
if (accessToken) {
|
|
58
58
|
headers.Authorization = "Bearer ".concat(accessToken);
|
|
@@ -94,16 +94,17 @@ function requestJson(_x2) {
|
|
|
94
94
|
|
|
95
95
|
function _requestJson() {
|
|
96
96
|
_requestJson = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(_ref2) {
|
|
97
|
-
var method, url, accessToken, body, response, json;
|
|
97
|
+
var method, url, headers, accessToken, body, response, json;
|
|
98
98
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
99
99
|
while (1) {
|
|
100
100
|
switch (_context2.prev = _context2.next) {
|
|
101
101
|
case 0:
|
|
102
|
-
method = _ref2.method, url = _ref2.url, accessToken = _ref2.accessToken, body = _ref2.body;
|
|
102
|
+
method = _ref2.method, url = _ref2.url, headers = _ref2.headers, accessToken = _ref2.accessToken, body = _ref2.body;
|
|
103
103
|
_context2.next = 3;
|
|
104
104
|
return request({
|
|
105
105
|
method: method,
|
|
106
106
|
url: url,
|
|
107
|
+
headers: headers,
|
|
107
108
|
accessToken: accessToken,
|
|
108
109
|
body: body
|
|
109
110
|
});
|
|
@@ -207,11 +208,16 @@ function getParameters(_ref5) {
|
|
|
207
208
|
columns = _ref5.columns,
|
|
208
209
|
clientId = _ref5.clientId,
|
|
209
210
|
aggregationExp = _ref5.aggregationExp,
|
|
210
|
-
aggregationResLevel = _ref5.aggregationResLevel
|
|
211
|
+
aggregationResLevel = _ref5.aggregationResLevel,
|
|
212
|
+
queryParameters = _ref5.queryParameters;
|
|
211
213
|
var parameters = [(0, _mapsApiCommon.encodeParameter)('client', clientId || DEFAULT_CLIENT)];
|
|
212
214
|
var sourceName = type === _mapsApiCommon.MAP_TYPES.QUERY ? 'q' : 'name';
|
|
213
215
|
parameters.push((0, _mapsApiCommon.encodeParameter)(sourceName, source));
|
|
214
216
|
|
|
217
|
+
if (queryParameters) {
|
|
218
|
+
parameters.push((0, _mapsApiCommon.encodeParameter)('queryParameters', JSON.stringify(queryParameters)));
|
|
219
|
+
}
|
|
220
|
+
|
|
215
221
|
if (geoColumn) {
|
|
216
222
|
parameters.push((0, _mapsApiCommon.encodeParameter)('geo_column', geoColumn));
|
|
217
223
|
}
|
|
@@ -244,12 +250,12 @@ function mapInstantiation(_x4) {
|
|
|
244
250
|
|
|
245
251
|
function _mapInstantiation() {
|
|
246
252
|
_mapInstantiation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(_ref6) {
|
|
247
|
-
var type, source, connection, credentials, geoColumn, columns, clientId, aggregationExp, aggregationResLevel, baseUrl, url, accessToken, body;
|
|
253
|
+
var type, source, connection, credentials, geoColumn, columns, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, baseUrl, url, accessToken, body;
|
|
248
254
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
249
255
|
while (1) {
|
|
250
256
|
switch (_context4.prev = _context4.next) {
|
|
251
257
|
case 0:
|
|
252
|
-
type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, clientId = _ref6.clientId, aggregationExp = _ref6.aggregationExp, aggregationResLevel = _ref6.aggregationResLevel;
|
|
258
|
+
type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, clientId = _ref6.clientId, headers = _ref6.headers, aggregationExp = _ref6.aggregationExp, aggregationResLevel = _ref6.aggregationResLevel, queryParameters = _ref6.queryParameters;
|
|
253
259
|
baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
254
260
|
url = "".concat(baseUrl, "?").concat(getParameters({
|
|
255
261
|
type: type,
|
|
@@ -258,7 +264,8 @@ function _mapInstantiation() {
|
|
|
258
264
|
columns: columns,
|
|
259
265
|
clientId: clientId,
|
|
260
266
|
aggregationResLevel: aggregationResLevel,
|
|
261
|
-
aggregationExp: aggregationExp
|
|
267
|
+
aggregationExp: aggregationExp,
|
|
268
|
+
queryParameters: queryParameters
|
|
262
269
|
}));
|
|
263
270
|
accessToken = credentials.accessToken;
|
|
264
271
|
|
|
@@ -269,12 +276,14 @@ function _mapInstantiation() {
|
|
|
269
276
|
|
|
270
277
|
body = JSON.stringify({
|
|
271
278
|
q: source,
|
|
272
|
-
client: clientId || DEFAULT_CLIENT
|
|
279
|
+
client: clientId || DEFAULT_CLIENT,
|
|
280
|
+
queryParameters: queryParameters
|
|
273
281
|
});
|
|
274
282
|
_context4.next = 8;
|
|
275
283
|
return requestJson({
|
|
276
284
|
method: 'POST',
|
|
277
285
|
url: baseUrl,
|
|
286
|
+
headers: headers,
|
|
278
287
|
accessToken: accessToken,
|
|
279
288
|
body: body
|
|
280
289
|
});
|
|
@@ -286,6 +295,7 @@ function _mapInstantiation() {
|
|
|
286
295
|
_context4.next = 11;
|
|
287
296
|
return requestJson({
|
|
288
297
|
url: url,
|
|
298
|
+
headers: headers,
|
|
289
299
|
accessToken: accessToken
|
|
290
300
|
});
|
|
291
301
|
|
|
@@ -350,13 +360,13 @@ function fetchLayerData(_x5) {
|
|
|
350
360
|
|
|
351
361
|
function _fetchLayerData() {
|
|
352
362
|
_fetchLayerData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(_ref8) {
|
|
353
|
-
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
|
|
363
|
+
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
|
|
354
364
|
|
|
355
365
|
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
356
366
|
while (1) {
|
|
357
367
|
switch (_context5.prev = _context5.next) {
|
|
358
368
|
case 0:
|
|
359
|
-
type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, clientId = _ref8.clientId, aggregationExp = _ref8.aggregationExp, aggregationResLevel = _ref8.aggregationResLevel;
|
|
369
|
+
type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, clientId = _ref8.clientId, headers = _ref8.headers, aggregationExp = _ref8.aggregationExp, aggregationResLevel = _ref8.aggregationResLevel, queryParameters = _ref8.queryParameters;
|
|
360
370
|
_context5.next = 3;
|
|
361
371
|
return _fetchDataUrl({
|
|
362
372
|
type: type,
|
|
@@ -368,8 +378,10 @@ function _fetchLayerData() {
|
|
|
368
378
|
format: format,
|
|
369
379
|
formatTiles: formatTiles,
|
|
370
380
|
clientId: clientId,
|
|
381
|
+
headers: headers,
|
|
371
382
|
aggregationExp: aggregationExp,
|
|
372
|
-
aggregationResLevel: aggregationResLevel
|
|
383
|
+
aggregationResLevel: aggregationResLevel,
|
|
384
|
+
queryParameters: queryParameters
|
|
373
385
|
});
|
|
374
386
|
|
|
375
387
|
case 3:
|
|
@@ -410,13 +422,13 @@ function _fetchDataUrl(_x6) {
|
|
|
410
422
|
|
|
411
423
|
function _fetchDataUrl2() {
|
|
412
424
|
_fetchDataUrl2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(_ref9) {
|
|
413
|
-
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, aggregationExp, aggregationResLevel, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
425
|
+
var type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
|
|
414
426
|
|
|
415
427
|
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
416
428
|
while (1) {
|
|
417
429
|
switch (_context6.prev = _context6.next) {
|
|
418
430
|
case 0:
|
|
419
|
-
type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, clientId = _ref9.clientId, aggregationExp = _ref9.aggregationExp, aggregationResLevel = _ref9.aggregationResLevel;
|
|
431
|
+
type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, clientId = _ref9.clientId, headers = _ref9.headers, aggregationExp = _ref9.aggregationExp, aggregationResLevel = _ref9.aggregationResLevel, queryParameters = _ref9.queryParameters;
|
|
420
432
|
defaultCredentials = (0, _config.getDefaultCredentials)();
|
|
421
433
|
localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
|
|
422
434
|
checkFetchLayerDataParameters({
|
|
@@ -443,8 +455,10 @@ function _fetchDataUrl2() {
|
|
|
443
455
|
geoColumn: geoColumn,
|
|
444
456
|
columns: columns,
|
|
445
457
|
clientId: clientId,
|
|
458
|
+
headers: headers,
|
|
446
459
|
aggregationExp: aggregationExp,
|
|
447
|
-
aggregationResLevel: aggregationResLevel
|
|
460
|
+
aggregationResLevel: aggregationResLevel,
|
|
461
|
+
queryParameters: queryParameters
|
|
448
462
|
});
|
|
449
463
|
|
|
450
464
|
case 7:
|
|
@@ -516,12 +530,12 @@ function _fetchDataUrl2() {
|
|
|
516
530
|
return _fetchDataUrl2.apply(this, arguments);
|
|
517
531
|
}
|
|
518
532
|
|
|
519
|
-
function _fetchMapDataset(_x7, _x8, _x9, _x10) {
|
|
533
|
+
function _fetchMapDataset(_x7, _x8, _x9, _x10, _x11, _x12) {
|
|
520
534
|
return _fetchMapDataset2.apply(this, arguments);
|
|
521
535
|
}
|
|
522
536
|
|
|
523
537
|
function _fetchMapDataset2() {
|
|
524
|
-
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId) {
|
|
538
|
+
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId, headers, queryParameters) {
|
|
525
539
|
var aggregationExp, aggregationResLevel, connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
526
540
|
|
|
527
541
|
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
@@ -541,8 +555,10 @@ function _fetchMapDataset2() {
|
|
|
541
555
|
columns: columns,
|
|
542
556
|
format: format,
|
|
543
557
|
geoColumn: geoColumn,
|
|
558
|
+
headers: headers,
|
|
544
559
|
source: source,
|
|
545
|
-
type: type
|
|
560
|
+
type: type,
|
|
561
|
+
queryParameters: queryParameters
|
|
546
562
|
});
|
|
547
563
|
|
|
548
564
|
case 3:
|
|
@@ -581,7 +597,7 @@ function _fetchMapDataset2() {
|
|
|
581
597
|
return _fetchMapDataset2.apply(this, arguments);
|
|
582
598
|
}
|
|
583
599
|
|
|
584
|
-
function _fetchTilestats(
|
|
600
|
+
function _fetchTilestats(_x13, _x14, _x15, _x16) {
|
|
585
601
|
return _fetchTilestats2.apply(this, arguments);
|
|
586
602
|
}
|
|
587
603
|
|
|
@@ -628,12 +644,12 @@ function _fetchTilestats2() {
|
|
|
628
644
|
return _fetchTilestats2.apply(this, arguments);
|
|
629
645
|
}
|
|
630
646
|
|
|
631
|
-
function fillInMapDatasets(
|
|
647
|
+
function fillInMapDatasets(_x17, _x18, _x19, _x20) {
|
|
632
648
|
return _fillInMapDatasets.apply(this, arguments);
|
|
633
649
|
}
|
|
634
650
|
|
|
635
651
|
function _fillInMapDatasets() {
|
|
636
|
-
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(_ref10, clientId, credentials) {
|
|
652
|
+
_fillInMapDatasets = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(_ref10, clientId, credentials, headers) {
|
|
637
653
|
var datasets, token, promises;
|
|
638
654
|
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
639
655
|
while (1) {
|
|
@@ -641,7 +657,7 @@ function _fillInMapDatasets() {
|
|
|
641
657
|
case 0:
|
|
642
658
|
datasets = _ref10.datasets, token = _ref10.token;
|
|
643
659
|
promises = datasets.map(function (dataset) {
|
|
644
|
-
return _fetchMapDataset(dataset, token, credentials, clientId);
|
|
660
|
+
return _fetchMapDataset(dataset, token, credentials, clientId, headers);
|
|
645
661
|
});
|
|
646
662
|
_context9.next = 4;
|
|
647
663
|
return Promise.all(promises);
|
|
@@ -659,7 +675,7 @@ function _fillInMapDatasets() {
|
|
|
659
675
|
return _fillInMapDatasets.apply(this, arguments);
|
|
660
676
|
}
|
|
661
677
|
|
|
662
|
-
function fillInTileStats(
|
|
678
|
+
function fillInTileStats(_x21, _x22) {
|
|
663
679
|
return _fillInTileStats.apply(this, arguments);
|
|
664
680
|
}
|
|
665
681
|
|
|
@@ -749,18 +765,18 @@ function _fillInTileStats() {
|
|
|
749
765
|
return _fillInTileStats.apply(this, arguments);
|
|
750
766
|
}
|
|
751
767
|
|
|
752
|
-
function fetchMap(
|
|
768
|
+
function fetchMap(_x23) {
|
|
753
769
|
return _fetchMap.apply(this, arguments);
|
|
754
770
|
}
|
|
755
771
|
|
|
756
772
|
function _fetchMap() {
|
|
757
773
|
_fetchMap = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee12(_ref12) {
|
|
758
|
-
var cartoMapId, clientId, credentials, autoRefresh, onNewData, defaultCredentials, localCreds, accessToken, url, map, stopAutoRefresh, intervalId, geojsonLayers, geojsonDatasetIds;
|
|
774
|
+
var cartoMapId, clientId, credentials, headers, autoRefresh, onNewData, defaultCredentials, localCreds, accessToken, url, map, stopAutoRefresh, intervalId, geojsonLayers, geojsonDatasetIds;
|
|
759
775
|
return _regenerator.default.wrap(function _callee12$(_context12) {
|
|
760
776
|
while (1) {
|
|
761
777
|
switch (_context12.prev = _context12.next) {
|
|
762
778
|
case 0:
|
|
763
|
-
cartoMapId = _ref12.cartoMapId, clientId = _ref12.clientId, credentials = _ref12.credentials, autoRefresh = _ref12.autoRefresh, onNewData = _ref12.onNewData;
|
|
779
|
+
cartoMapId = _ref12.cartoMapId, clientId = _ref12.clientId, credentials = _ref12.credentials, headers = _ref12.headers, autoRefresh = _ref12.autoRefresh, onNewData = _ref12.onNewData;
|
|
764
780
|
defaultCredentials = (0, _config.getDefaultCredentials)();
|
|
765
781
|
localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
|
|
766
782
|
accessToken = localCreds.accessToken;
|
|
@@ -782,6 +798,7 @@ function _fetchMap() {
|
|
|
782
798
|
_context12.next = 12;
|
|
783
799
|
return requestJson({
|
|
784
800
|
url: url,
|
|
801
|
+
headers: headers,
|
|
785
802
|
accessToken: accessToken
|
|
786
803
|
});
|
|
787
804
|
|
|
@@ -796,7 +813,7 @@ function _fetchMap() {
|
|
|
796
813
|
switch (_context11.prev = _context11.next) {
|
|
797
814
|
case 0:
|
|
798
815
|
_context11.next = 2;
|
|
799
|
-
return fillInMapDatasets(map, clientId, localCreds);
|
|
816
|
+
return fillInMapDatasets(map, clientId, localCreds, headers);
|
|
800
817
|
|
|
801
818
|
case 2:
|
|
802
819
|
changed = _context11.sent;
|
|
@@ -834,7 +851,7 @@ function _fetchMap() {
|
|
|
834
851
|
}
|
|
835
852
|
});
|
|
836
853
|
_context12.next = 19;
|
|
837
|
-
return fillInMapDatasets(map, clientId, localCreds);
|
|
854
|
+
return fillInMapDatasets(map, clientId, localCreds, headers);
|
|
838
855
|
|
|
839
856
|
case 19:
|
|
840
857
|
_context12.next = 21;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","parameters","sourceName","MAP_TYPES","QUERY","push","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.push(encodeParameter('aggregationExp', '1 AS value'));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: 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 })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n source,\n type\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?q=${source}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const stats = await requestData({url, format: FORMATS.JSON, accessToken});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","customHeaders","headers","accessToken","body","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","sourceName","MAP_TYPES","QUERY","push","JSON","stringify","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body\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 Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n 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\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 if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT,\n queryParameters\n });\n return await requestJson({method: 'POST', url: baseUrl, headers, accessToken, body});\n }\n\n return await requestJson({url, headers, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n 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 data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n 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 queryParameters?: QueryParameters\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n 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 dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?q=${source}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const stats = await requestData({url, format: FORMATS.JSON, accessToken});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n 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 map = await requestJson<any>({url, headers, 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, 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 dataset.format = 'geojson';\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"}
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {\n tileToQuadbin as _tileToQuadbin,\n quadbinToTile as _quadbinToTile,\n quadbinZoom as _quadbinZoom\n} from './layers/quadbin-utils';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {\n tileToQuadbin as _tileToQuadbin,\n quadbinToTile as _quadbinToTile,\n quadbinZoom as _quadbinZoom\n} from './layers/quadbin-utils';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\nexport type {QueryParameters} from './api';\nexport type {CartoLayerProps} from './layers/carto-layer';\n"],"file":"index.js"}
|
|
@@ -43,7 +43,7 @@ var _config = require("../config");
|
|
|
43
43
|
|
|
44
44
|
var _utils = require("../utils");
|
|
45
45
|
|
|
46
|
-
var _excluded = ["type", "data", "
|
|
46
|
+
var _excluded = ["type", "data", "credentials", "connection"],
|
|
47
47
|
_excluded2 = ["data"];
|
|
48
48
|
|
|
49
49
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -79,8 +79,14 @@ var defaultProps = {
|
|
|
79
79
|
type: 'array',
|
|
80
80
|
value: null
|
|
81
81
|
},
|
|
82
|
+
headers: {
|
|
83
|
+
type: 'object',
|
|
84
|
+
value: {},
|
|
85
|
+
optional: true
|
|
86
|
+
},
|
|
82
87
|
aggregationExp: null,
|
|
83
|
-
aggregationResLevel: null
|
|
88
|
+
aggregationResLevel: null,
|
|
89
|
+
queryParameters: null
|
|
84
90
|
};
|
|
85
91
|
|
|
86
92
|
var CartoLayer = function (_CompositeLayer) {
|
|
@@ -156,7 +162,7 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
156
162
|
|
|
157
163
|
this._checkProps(props);
|
|
158
164
|
|
|
159
|
-
var shouldUpdateData = changeFlags.dataChanged || props.aggregationExp !== oldProps.aggregationExp || props.aggregationResLevel !== oldProps.aggregationResLevel || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || props.formatTiles !== oldProps.formatTiles || props.type !== oldProps.type || JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);
|
|
165
|
+
var shouldUpdateData = changeFlags.dataChanged || props.aggregationExp !== oldProps.aggregationExp || props.aggregationResLevel !== oldProps.aggregationResLevel || props.connection !== oldProps.connection || props.geoColumn !== oldProps.geoColumn || props.formatTiles !== oldProps.formatTiles || props.type !== oldProps.type || JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) || JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials) || JSON.stringify(props.queryParameters) !== JSON.stringify(oldProps.queryParameters);
|
|
160
166
|
|
|
161
167
|
if (shouldUpdateData) {
|
|
162
168
|
this.setState({
|
|
@@ -171,14 +177,14 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
171
177
|
key: "_updateData",
|
|
172
178
|
value: function () {
|
|
173
179
|
var _updateData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
174
|
-
var _this$props$onDataLoa, _this$props2, _this$props, type, source,
|
|
180
|
+
var _this$props$onDataLoa, _this$props2, _this$props, type, source, credentials, connection, rest, localConfig, apiVersion, result;
|
|
175
181
|
|
|
176
182
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
177
183
|
while (1) {
|
|
178
184
|
switch (_context.prev = _context.next) {
|
|
179
185
|
case 0:
|
|
180
186
|
_context.prev = 0;
|
|
181
|
-
_this$props = this.props, type = _this$props.type, source = _this$props.data,
|
|
187
|
+
_this$props = this.props, type = _this$props.type, source = _this$props.data, credentials = _this$props.credentials, connection = _this$props.connection, rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
|
|
182
188
|
localConfig = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
|
|
183
189
|
apiVersion = localConfig.apiVersion;
|
|
184
190
|
|
|
@@ -207,7 +213,6 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
207
213
|
return (0, _api.fetchLayerData)(_objectSpread(_objectSpread({
|
|
208
214
|
type: type,
|
|
209
215
|
source: source,
|
|
210
|
-
clientId: clientId,
|
|
211
216
|
credentials: credentials,
|
|
212
217
|
connection: connection
|
|
213
218
|
}, rest), {}, {
|