@deck.gl/carto 8.8.19 → 8.8.21

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.
Files changed (47) hide show
  1. package/dist/dist.dev.js +199 -83
  2. package/dist/es5/api/carto-api-error.js +87 -0
  3. package/dist/es5/api/carto-api-error.js.map +1 -0
  4. package/dist/es5/api/index.js +8 -0
  5. package/dist/es5/api/index.js.map +1 -1
  6. package/dist/es5/api/maps-api-common.js +9 -1
  7. package/dist/es5/api/maps-api-common.js.map +1 -1
  8. package/dist/es5/api/maps-v3-client.js +135 -109
  9. package/dist/es5/api/maps-v3-client.js.map +1 -1
  10. package/dist/es5/index.js +6 -0
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/layers/carto-layer.js.map +1 -1
  13. package/dist/es5/layers/quadbin-tile-layer.js +8 -2
  14. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  15. package/dist/esm/api/carto-api-error.js +51 -0
  16. package/dist/esm/api/carto-api-error.js.map +1 -0
  17. package/dist/esm/api/index.js +1 -0
  18. package/dist/esm/api/index.js.map +1 -1
  19. package/dist/esm/api/maps-api-common.js +6 -0
  20. package/dist/esm/api/maps-api-common.js.map +1 -1
  21. package/dist/esm/api/maps-v3-client.js +59 -35
  22. package/dist/esm/api/maps-v3-client.js.map +1 -1
  23. package/dist/esm/index.js +1 -1
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/layers/carto-layer.js.map +1 -1
  26. package/dist/esm/layers/quadbin-tile-layer.js +4 -4
  27. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  28. package/dist.min.js +4 -4
  29. package/package.json +2 -2
  30. package/src/api/carto-api-error.ts +67 -0
  31. package/src/api/index.ts +2 -0
  32. package/src/api/maps-api-common.ts +8 -0
  33. package/src/api/maps-v3-client.ts +37 -29
  34. package/src/index.ts +2 -1
  35. package/src/layers/carto-layer.ts +4 -3
  36. package/src/layers/quadbin-tile-layer.ts +4 -2
  37. package/typed/api/index.d.ts +2 -0
  38. package/typed/api/index.d.ts.map +1 -1
  39. package/typed/api/maps-api-common.d.ts +7 -0
  40. package/typed/api/maps-api-common.d.ts.map +1 -1
  41. package/typed/api/maps-v3-client.d.ts.map +1 -1
  42. package/typed/index.d.ts +2 -2
  43. package/typed/index.d.ts.map +1 -1
  44. package/typed/layers/carto-layer.d.ts +3 -2
  45. package/typed/layers/carto-layer.d.ts.map +1 -1
  46. package/typed/layers/quadbin-tile-layer.d.ts +4 -1
  47. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
package/dist/dist.dev.js CHANGED
@@ -13018,7 +13018,7 @@ __webpack_require__.r(__webpack_exports__);
13018
13018
 
13019
13019
 
13020
13020
 
13021
- const VERSION = true ? "8.8.19" : undefined;
13021
+ const VERSION = true ? "8.8.21" : undefined;
13022
13022
  const isBrowser = Object(_lib_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
13023
13023
  //# sourceMappingURL=globals.js.map
13024
13024
 
@@ -54543,7 +54543,7 @@ __webpack_require__.r(__webpack_exports__);
54543
54543
 
54544
54544
 
54545
54545
 
54546
- const VERSION = true ? "8.8.19" : undefined;
54546
+ const VERSION = true ? "8.8.21" : undefined;
54547
54547
  const isBrowser = Object(_env_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
54548
54548
  //# sourceMappingURL=globals.js.map
54549
54549
 
@@ -55072,35 +55072,118 @@ module.exports = Object.assign(deck, {
55072
55072
 
55073
55073
  /***/ }),
55074
55074
 
55075
+ /***/ "./src/api/carto-api-error.ts":
55076
+ /*!************************************!*\
55077
+ !*** ./src/api/carto-api-error.ts ***!
55078
+ \************************************/
55079
+ /*! exports provided: CartoAPIError */
55080
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
55081
+
55082
+ "use strict";
55083
+ __webpack_require__.r(__webpack_exports__);
55084
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CartoAPIError", function() { return CartoAPIError; });
55085
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
55086
+
55087
+ /**
55088
+ *
55089
+ * Custom error for reported errors in CARTO Maps API.
55090
+ * Provides useful debugging information in console and context for applications.
55091
+ *
55092
+ */
55093
+ class CartoAPIError extends Error {
55094
+ /** Source error from server */
55095
+
55096
+ /** Context (API call & parameters) in which error occured */
55097
+
55098
+ /** Response from server */
55099
+ constructor(error, errorContext, response) {
55100
+ let responseString = 'Failed to connect';
55101
+
55102
+ if (response) {
55103
+ responseString = 'Server returned: ';
55104
+
55105
+ if (response.status === 400) {
55106
+ responseString += 'Bad request';
55107
+ } else if (response.status === 401 || response.status === 403) {
55108
+ responseString += 'Unauthorized access';
55109
+ } else if (response.status === 404) {
55110
+ responseString += 'Not found';
55111
+ } else {
55112
+ responseString += 'Error';
55113
+ }
55114
+
55115
+ responseString += ` (${response.status}):`;
55116
+ }
55117
+
55118
+ responseString += ` ${error.message || error}`;
55119
+ let message = `${errorContext.requestType} API request failed`;
55120
+ message += `\n${responseString}`;
55121
+
55122
+ for (const key of Object.keys(errorContext)) {
55123
+ if (key === 'requestType') continue; // eslint-disable-line no-continue
55124
+
55125
+ message += `\n${formatErrorKey(key)}: ${errorContext[key]}`;
55126
+ }
55127
+
55128
+ message += '\n';
55129
+ super(message);
55130
+
55131
+ _defineProperty(this, "error", void 0);
55132
+
55133
+ _defineProperty(this, "errorContext", void 0);
55134
+
55135
+ _defineProperty(this, "response", void 0);
55136
+
55137
+ this.name = 'CartoAPIError';
55138
+ this.response = response;
55139
+ this.error = error;
55140
+ this.errorContext = errorContext;
55141
+ }
55142
+
55143
+ }
55144
+ /**
55145
+ * Converts camelCase to Camel Case
55146
+ */
55147
+
55148
+ function formatErrorKey(key) {
55149
+ return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());
55150
+ }
55151
+
55152
+ /***/ }),
55153
+
55075
55154
  /***/ "./src/api/index.ts":
55076
55155
  /*!**************************!*\
55077
55156
  !*** ./src/api/index.ts ***!
55078
55157
  \**************************/
55079
- /*! exports provided: FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS, getDataV2, CONNECTIONS, fetchLayerData, fetchMap, mapInstantiation */
55158
+ /*! exports provided: CartoAPIError, FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS, getDataV2, CONNECTIONS, fetchLayerData, fetchMap, mapInstantiation */
55080
55159
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
55081
55160
 
55082
55161
  "use strict";
55083
55162
  __webpack_require__.r(__webpack_exports__);
55084
- /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
55085
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FORMATS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_0__["FORMATS"]; });
55163
+ /* harmony import */ var _carto_api_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./carto-api-error */ "./src/api/carto-api-error.ts");
55164
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CartoAPIError", function() { return _carto_api_error__WEBPACK_IMPORTED_MODULE_0__["CartoAPIError"]; });
55165
+
55166
+ /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
55167
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FORMATS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"]; });
55086
55168
 
55087
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TILE_FORMATS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_0__["TILE_FORMATS"]; });
55169
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TILE_FORMATS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["TILE_FORMATS"]; });
55088
55170
 
55089
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MAP_TYPES", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_0__["MAP_TYPES"]; });
55171
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MAP_TYPES", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"]; });
55090
55172
 
55091
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "API_VERSIONS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_0__["API_VERSIONS"]; });
55173
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "API_VERSIONS", function() { return _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"]; });
55092
55174
 
55093
- /* harmony import */ var _maps_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maps-client */ "./src/api/maps-client.ts");
55094
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDataV2", function() { return _maps_client__WEBPACK_IMPORTED_MODULE_1__["getDataV2"]; });
55175
+ /* harmony import */ var _maps_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./maps-client */ "./src/api/maps-client.ts");
55176
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDataV2", function() { return _maps_client__WEBPACK_IMPORTED_MODULE_2__["getDataV2"]; });
55095
55177
 
55096
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CONNECTIONS", function() { return _maps_client__WEBPACK_IMPORTED_MODULE_1__["CONNECTIONS"]; });
55178
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CONNECTIONS", function() { return _maps_client__WEBPACK_IMPORTED_MODULE_2__["CONNECTIONS"]; });
55097
55179
 
55098
- /* harmony import */ var _maps_v3_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./maps-v3-client */ "./src/api/maps-v3-client.ts");
55099
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchLayerData", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_2__["fetchLayerData"]; });
55180
+ /* harmony import */ var _maps_v3_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maps-v3-client */ "./src/api/maps-v3-client.ts");
55181
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchLayerData", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_3__["fetchLayerData"]; });
55100
55182
 
55101
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchMap", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_2__["fetchMap"]; });
55183
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchMap", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_3__["fetchMap"]; });
55184
+
55185
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapInstantiation", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_3__["mapInstantiation"]; });
55102
55186
 
55103
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapInstantiation", function() { return _maps_v3_client__WEBPACK_IMPORTED_MODULE_2__["mapInstantiation"]; });
55104
55187
 
55105
55188
 
55106
55189
 
@@ -55679,7 +55762,7 @@ function getTextPixelOffsetAccessor({
55679
55762
  /*!************************************!*\
55680
55763
  !*** ./src/api/maps-api-common.ts ***!
55681
55764
  \************************************/
55682
- /*! exports provided: DEFAULT_USER_COMPONENT_IN_URL, DEFAULT_REGION_COMPONENT_IN_URL, API_VERSIONS, DEFAULT_MAPS_URL_FORMAT, MAP_TYPES, COLUMNS_SUPPORT, GEO_COLUMN_SUPPORT, FORMATS, TILE_FORMATS, SchemaFieldType, encodeParameter */
55765
+ /*! exports provided: DEFAULT_USER_COMPONENT_IN_URL, DEFAULT_REGION_COMPONENT_IN_URL, API_VERSIONS, DEFAULT_MAPS_URL_FORMAT, MAP_TYPES, COLUMNS_SUPPORT, GEO_COLUMN_SUPPORT, FORMATS, TILE_FORMATS, SchemaFieldType, REQUEST_TYPES, encodeParameter */
55683
55766
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
55684
55767
 
55685
55768
  "use strict";
@@ -55694,6 +55777,7 @@ __webpack_require__.r(__webpack_exports__);
55694
55777
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FORMATS", function() { return FORMATS; });
55695
55778
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TILE_FORMATS", function() { return TILE_FORMATS; });
55696
55779
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SchemaFieldType", function() { return SchemaFieldType; });
55780
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "REQUEST_TYPES", function() { return REQUEST_TYPES; });
55697
55781
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeParameter", function() { return encodeParameter; });
55698
55782
  const DEFAULT_USER_COMPONENT_IN_URL = '{user}';
55699
55783
  const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';
@@ -55741,6 +55825,13 @@ let SchemaFieldType;
55741
55825
  SchemaFieldType["Unknown"] = "unknown";
55742
55826
  })(SchemaFieldType || (SchemaFieldType = {}));
55743
55827
 
55828
+ const REQUEST_TYPES = {
55829
+ DATA: 'Map data',
55830
+ INSTANTIATION: 'Map instantiation',
55831
+ PUBLIC_MAP: 'Public map',
55832
+ TILE_STATS: 'Tile stats'
55833
+ };
55834
+
55744
55835
  /**
55745
55836
  * Simple encode parameter
55746
55837
  */
@@ -55956,10 +56047,11 @@ __webpack_require__.r(__webpack_exports__);
55956
56047
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchMap", function() { return fetchMap; });
55957
56048
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ "./src/config.ts");
55958
56049
  /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
55959
- /* harmony import */ var _parseMap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parseMap */ "./src/api/parseMap.ts");
55960
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
55961
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_3__);
55962
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
56050
+ /* harmony import */ var _carto_api_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./carto-api-error */ "./src/api/carto-api-error.ts");
56051
+ /* harmony import */ var _parseMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parseMap */ "./src/api/parseMap.ts");
56052
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
56053
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_4__);
56054
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
55963
56055
  /**
55964
56056
  * Maps API Client for Carto 3
55965
56057
  */
@@ -55968,6 +56060,7 @@ __webpack_require__.r(__webpack_exports__);
55968
56060
 
55969
56061
 
55970
56062
 
56063
+
55971
56064
  const MAX_GET_LENGTH = 2048;
55972
56065
  const DEFAULT_CLIENT = 'deck-gl-carto';
55973
56066
  const V3_MINOR_VERSION = '3.1';
@@ -55980,7 +56073,8 @@ async function request({
55980
56073
  url,
55981
56074
  headers: customHeaders,
55982
56075
  accessToken,
55983
- body
56076
+ body,
56077
+ errorContext
55984
56078
  }) {
55985
56079
  const headers = { ...customHeaders,
55986
56080
  Accept: 'application/json'
@@ -56002,7 +56096,7 @@ async function request({
56002
56096
  body
56003
56097
  });
56004
56098
  } catch (error) {
56005
- throw new Error(`Failed to connect to Maps API: ${error}`);
56099
+ throw new _carto_api_error__WEBPACK_IMPORTED_MODULE_2__["CartoAPIError"](error, errorContext);
56006
56100
  }
56007
56101
  }
56008
56102
 
@@ -56011,22 +56105,21 @@ async function requestJson({
56011
56105
  url,
56012
56106
  headers,
56013
56107
  accessToken,
56014
- body
56108
+ body,
56109
+ errorContext
56015
56110
  }) {
56016
56111
  const response = await request({
56017
56112
  method,
56018
56113
  url,
56019
56114
  headers,
56020
56115
  accessToken,
56021
- body
56116
+ body,
56117
+ errorContext
56022
56118
  });
56023
56119
  const json = await response.json();
56024
56120
 
56025
56121
  if (!response.ok) {
56026
- dealWithError({
56027
- response,
56028
- error: json.error
56029
- });
56122
+ throw new _carto_api_error__WEBPACK_IMPORTED_MODULE_2__["CartoAPIError"](json.error, errorContext, response);
56030
56123
  }
56031
56124
 
56032
56125
  return json;
@@ -56037,14 +56130,16 @@ async function requestData({
56037
56130
  url,
56038
56131
  accessToken,
56039
56132
  format,
56040
- body
56133
+ body,
56134
+ errorContext
56041
56135
  }) {
56042
56136
  if (format === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].NDJSON) {
56043
56137
  return request({
56044
56138
  method,
56045
56139
  url,
56046
56140
  accessToken,
56047
- body
56141
+ body,
56142
+ errorContext
56048
56143
  });
56049
56144
  }
56050
56145
 
@@ -56052,31 +56147,11 @@ async function requestData({
56052
56147
  method,
56053
56148
  url,
56054
56149
  accessToken,
56055
- body
56150
+ body,
56151
+ errorContext
56056
56152
  });
56057
56153
  return data.rows ? data.rows : data;
56058
56154
  }
56059
- /**
56060
- * Display proper message from Maps API error
56061
- */
56062
-
56063
-
56064
- function dealWithError({
56065
- response,
56066
- error
56067
- }) {
56068
- switch (response.status) {
56069
- case 400:
56070
- throw new Error(`Bad request. ${error}`);
56071
-
56072
- case 401:
56073
- case 403:
56074
- throw new Error(`Unauthorized access. ${error}`);
56075
-
56076
- default:
56077
- throw new Error(error);
56078
- }
56079
- }
56080
56155
 
56081
56156
  /**
56082
56157
  * Build a URL with all required parameters
@@ -56154,12 +56229,21 @@ async function mapInstantiation({
56154
56229
  const {
56155
56230
  accessToken
56156
56231
  } = credentials;
56232
+ const errorContext = {
56233
+ requestType: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["REQUEST_TYPES"].INSTANTIATION,
56234
+ connection,
56235
+ type,
56236
+ source
56237
+ };
56157
56238
 
56158
56239
  if (url.length > MAX_GET_LENGTH && type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].QUERY) {
56159
56240
  // need to be a POST request
56160
56241
  const body = JSON.stringify({
56161
56242
  q: source,
56162
56243
  client: clientId || DEFAULT_CLIENT,
56244
+ aggregationResLevel,
56245
+ aggregationExp,
56246
+ geoColumn,
56163
56247
  queryParameters
56164
56248
  });
56165
56249
  return await requestJson({
@@ -56167,14 +56251,16 @@ async function mapInstantiation({
56167
56251
  url: baseUrl,
56168
56252
  headers,
56169
56253
  accessToken,
56170
- body
56254
+ body,
56255
+ errorContext
56171
56256
  });
56172
56257
  }
56173
56258
 
56174
56259
  return await requestJson({
56175
56260
  url,
56176
56261
  headers,
56177
- accessToken
56262
+ accessToken,
56263
+ errorContext
56178
56264
  });
56179
56265
  }
56180
56266
 
@@ -56198,22 +56284,22 @@ function checkFetchLayerDataParameters({
56198
56284
  aggregationExp,
56199
56285
  aggregationResLevel
56200
56286
  }) {
56201
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(connection, 'Must define connection');
56202
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(type, 'Must define a type');
56203
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(source, 'Must define a source');
56204
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.apiVersion === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3, 'Method only available for v3');
56205
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.apiBaseUrl, 'Must define apiBaseUrl');
56206
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.accessToken, 'Must define an accessToken');
56287
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(connection, 'Must define connection');
56288
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(type, 'Must define a type');
56289
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(source, 'Must define a source');
56290
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(credentials.apiVersion === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3, 'Method only available for v3');
56291
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(credentials.apiBaseUrl, 'Must define apiBaseUrl');
56292
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(credentials.accessToken, 'Must define an accessToken');
56207
56293
 
56208
56294
  if (columns) {
56209
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["COLUMNS_SUPPORT"].includes(type), `The columns parameter is not supported by type ${type}`);
56295
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["COLUMNS_SUPPORT"].includes(type), `The columns parameter is not supported by type ${type}`);
56210
56296
  }
56211
56297
 
56212
56298
  if (geoColumn) {
56213
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["GEO_COLUMN_SUPPORT"].includes(type), `The geoColumn parameter is not supported by type ${type}`);
56299
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["GEO_COLUMN_SUPPORT"].includes(type), `The geoColumn parameter is not supported by type ${type}`);
56214
56300
  } else {
56215
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
56216
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
56301
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
56302
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
56217
56303
  }
56218
56304
  }
56219
56305
 
@@ -56254,10 +56340,17 @@ async function fetchLayerData({
56254
56340
  aggregationResLevel,
56255
56341
  queryParameters
56256
56342
  });
56343
+ const errorContext = {
56344
+ requestType: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["REQUEST_TYPES"].DATA,
56345
+ connection,
56346
+ type,
56347
+ source
56348
+ };
56257
56349
  const data = await requestData({
56258
56350
  url,
56259
56351
  format: mapFormat,
56260
- accessToken
56352
+ accessToken,
56353
+ errorContext
56261
56354
  });
56262
56355
  const result = {
56263
56356
  data,
@@ -56322,7 +56415,7 @@ async function _fetchDataUrl({
56322
56415
  if (format) {
56323
56416
  mapFormat = format;
56324
56417
  url = getUrlFromMetadata(metadata, format);
56325
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(url, `Format ${format} not available`);
56418
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(url, `Format ${format} not available`);
56326
56419
  } else {
56327
56420
  // guess map format
56328
56421
  const prioritizedFormats = [_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].GEOJSON, _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].JSON, _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].NDJSON, _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].TILEJSON];
@@ -56336,11 +56429,11 @@ async function _fetchDataUrl({
56336
56429
  }
56337
56430
  }
56338
56431
 
56339
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(url && mapFormat, 'Unsupported data formats received from backend.');
56432
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(url && mapFormat, 'Unsupported data formats received from backend.');
56340
56433
  }
56341
56434
 
56342
56435
  if (format === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].TILEJSON && formatTiles) {
56343
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__["log"].assert(Object.values(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["TILE_FORMATS"]).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
56436
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_4__["log"].assert(Object.values(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["TILE_FORMATS"]).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
56344
56437
  url += `&${Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('formatTiles', formatTiles)}`;
56345
56438
  }
56346
56439
 
@@ -56398,10 +56491,17 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId, hea
56398
56491
 
56399
56492
  dataset.cache = cache; // Only fetch if the data has changed
56400
56493
 
56494
+ const errorContext = {
56495
+ requestType: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["REQUEST_TYPES"].DATA,
56496
+ connection,
56497
+ type,
56498
+ source
56499
+ };
56401
56500
  dataset.data = await requestData({
56402
56501
  url,
56403
56502
  format: mapFormat,
56404
- accessToken
56503
+ accessToken,
56504
+ errorContext
56405
56505
  });
56406
56506
  return true;
56407
56507
  }
@@ -56422,10 +56522,17 @@ async function _fetchTilestats(attribute, dataset, accessToken, credentials) {
56422
56522
  url += `${source}/${attribute}`;
56423
56523
  }
56424
56524
 
56525
+ const errorContext = {
56526
+ requestType: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["REQUEST_TYPES"].TILE_STATS,
56527
+ connection,
56528
+ type,
56529
+ source
56530
+ };
56425
56531
  const stats = await requestData({
56426
56532
  url,
56427
56533
  format: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].JSON,
56428
- accessToken
56534
+ accessToken,
56535
+ errorContext
56429
56536
  }); // Replace tilestats for attribute with value from API
56430
56537
 
56431
56538
  const {
@@ -56506,25 +56613,30 @@ async function fetchMap({
56506
56613
  const {
56507
56614
  accessToken
56508
56615
  } = localCreds;
56509
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: "XXXX-XXXX-XXXX"})');
56510
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(localCreds.apiVersion === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3, 'Method only available for v3');
56511
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(localCreds.apiBaseUrl, 'Must define apiBaseUrl');
56616
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: "XXXX-XXXX-XXXX"})');
56617
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(localCreds.apiVersion === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3, 'Method only available for v3');
56618
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(localCreds.apiBaseUrl, 'Must define apiBaseUrl');
56512
56619
 
56513
56620
  if (!localCreds.mapsUrl) {
56514
56621
  localCreds.mapsUrl = Object(_config__WEBPACK_IMPORTED_MODULE_0__["buildMapsUrlFromBase"])(localCreds.apiBaseUrl);
56515
56622
  }
56516
56623
 
56517
56624
  if (autoRefresh || onNewData) {
56518
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(onNewData, 'Must define `onNewData` when using autoRefresh');
56519
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(typeof onNewData === 'function', '`onNewData` must be a function');
56520
- Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');
56625
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(onNewData, 'Must define `onNewData` when using autoRefresh');
56626
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(typeof onNewData === 'function', '`onNewData` must be a function');
56627
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');
56521
56628
  }
56522
56629
 
56523
56630
  const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;
56631
+ const errorContext = {
56632
+ requestType: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["REQUEST_TYPES"].PUBLIC_MAP,
56633
+ mapId: cartoMapId
56634
+ };
56524
56635
  const map = await requestJson({
56525
56636
  url,
56526
56637
  headers,
56527
- accessToken
56638
+ accessToken,
56639
+ errorContext
56528
56640
  }); // Periodically check if the data has changed. Note that this
56529
56641
  // will not update when a map is published.
56530
56642
 
@@ -56536,7 +56648,7 @@ async function fetchMap({
56536
56648
  const changed = await fillInMapDatasets(map, clientId, localCreds, headers);
56537
56649
 
56538
56650
  if (onNewData && changed.some(v => v === true)) {
56539
- onNewData(Object(_parseMap__WEBPACK_IMPORTED_MODULE_2__["parseMap"])(map));
56651
+ onNewData(Object(_parseMap__WEBPACK_IMPORTED_MODULE_3__["parseMap"])(map));
56540
56652
  }
56541
56653
  }, autoRefresh * 1000);
56542
56654
 
@@ -56566,7 +56678,7 @@ async function fetchMap({
56566
56678
  await fillInMapDatasets(map, clientId, localCreds, headers); // Mutates attributes in visualChannels to contain tile stats
56567
56679
 
56568
56680
  await fillInTileStats(map, localCreds);
56569
- return { ...Object(_parseMap__WEBPACK_IMPORTED_MODULE_2__["parseMap"])(map),
56681
+ return { ...Object(_parseMap__WEBPACK_IMPORTED_MODULE_3__["parseMap"])(map),
56570
56682
  ...{
56571
56683
  stopAutoRefresh
56572
56684
  }
@@ -57036,7 +57148,7 @@ function buildStatsUrlFromBase(apiBaseUrl) {
57036
57148
  /*!**********************!*\
57037
57149
  !*** ./src/index.ts ***!
57038
57150
  \**********************/
57039
- /*! exports provided: getDefaultCredentials, setDefaultCredentials, CartoLayer, _CartoTileLayer, _H3TileLayer, _QuadbinTileLayer, BASEMAP, colorBins, colorCategories, colorContinuous, FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS, fetchLayerData, fetchMap, _getDataV2, _mapInstantiation */
57151
+ /*! exports provided: getDefaultCredentials, setDefaultCredentials, CartoLayer, _CartoTileLayer, _H3TileLayer, _QuadbinTileLayer, BASEMAP, colorBins, colorCategories, colorContinuous, FORMATS, TILE_FORMATS, MAP_TYPES, API_VERSIONS, CartoAPIError, fetchLayerData, fetchMap, _getDataV2, _mapInstantiation */
57040
57152
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
57041
57153
 
57042
57154
  "use strict";
@@ -57079,6 +57191,8 @@ __webpack_require__.r(__webpack_exports__);
57079
57191
 
57080
57192
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "API_VERSIONS", function() { return _api__WEBPACK_IMPORTED_MODULE_9__["API_VERSIONS"]; });
57081
57193
 
57194
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CartoAPIError", function() { return _api__WEBPACK_IMPORTED_MODULE_9__["CartoAPIError"]; });
57195
+
57082
57196
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchLayerData", function() { return _api__WEBPACK_IMPORTED_MODULE_9__["fetchLayerData"]; });
57083
57197
 
57084
57198
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fetchMap", function() { return _api__WEBPACK_IMPORTED_MODULE_9__["fetchMap"]; });
@@ -57828,17 +57942,19 @@ _defineProperty(QuadbinLayer, "defaultProps", defaultProps);
57828
57942
  /*!******************************************!*\
57829
57943
  !*** ./src/layers/quadbin-tile-layer.ts ***!
57830
57944
  \******************************************/
57831
- /*! exports provided: default */
57945
+ /*! exports provided: renderSubLayers, default */
57832
57946
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
57833
57947
 
57834
57948
  "use strict";
57835
57949
  __webpack_require__.r(__webpack_exports__);
57950
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderSubLayers", function() { return renderSubLayers; });
57836
57951
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadbinTileLayer; });
57837
57952
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
57838
57953
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
57839
57954
  /* harmony import */ var _quadbin_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadbin-layer */ "./src/layers/quadbin-layer.ts");
57840
57955
  /* harmony import */ var _quadbin_tileset_2d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quadbin-tileset-2d */ "./src/layers/quadbin-tileset-2d.ts");
57841
57956
  /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.ts");
57957
+ /* harmony import */ var quadbin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! quadbin */ "../../node_modules/quadbin/dist/esm/index.js");
57842
57958
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
57843
57959
 
57844
57960
 
@@ -57851,11 +57967,11 @@ const renderSubLayers = props => {
57851
57967
  data
57852
57968
  } = props;
57853
57969
  if (!data || !data.length) return null;
57970
+ const isBigInt = typeof data[0].id === 'bigint';
57854
57971
  return new _quadbin_layer__WEBPACK_IMPORTED_MODULE_1__["default"](props, {
57855
- getQuadbin: d => d.id
57972
+ getQuadbin: isBigInt ? d => d.id : d => Object(quadbin__WEBPACK_IMPORTED_MODULE_4__["hexToBigInt"])(d.id)
57856
57973
  });
57857
57974
  };
57858
-
57859
57975
  const defaultProps = {
57860
57976
  aggregationResLevel: 6
57861
57977
  };
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.CartoAPIError = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
+
26
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
+
28
+ var CartoAPIError = function (_Error) {
29
+ (0, _inherits2.default)(CartoAPIError, _Error);
30
+
31
+ var _super = _createSuper(CartoAPIError);
32
+
33
+ function CartoAPIError(error, errorContext, response) {
34
+ var _this;
35
+
36
+ (0, _classCallCheck2.default)(this, CartoAPIError);
37
+ var responseString = 'Failed to connect';
38
+
39
+ if (response) {
40
+ responseString = 'Server returned: ';
41
+
42
+ if (response.status === 400) {
43
+ responseString += 'Bad request';
44
+ } else if (response.status === 401 || response.status === 403) {
45
+ responseString += 'Unauthorized access';
46
+ } else if (response.status === 404) {
47
+ responseString += 'Not found';
48
+ } else {
49
+ responseString += 'Error';
50
+ }
51
+
52
+ responseString += " (".concat(response.status, "):");
53
+ }
54
+
55
+ responseString += " ".concat(error.message || error);
56
+ var message = "".concat(errorContext.requestType, " API request failed");
57
+ message += "\n".concat(responseString);
58
+
59
+ for (var _i = 0, _Object$keys = Object.keys(errorContext); _i < _Object$keys.length; _i++) {
60
+ var key = _Object$keys[_i];
61
+ if (key === 'requestType') continue;
62
+ message += "\n".concat(formatErrorKey(key), ": ").concat(errorContext[key]);
63
+ }
64
+
65
+ message += '\n';
66
+ _this = _super.call(this, message);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "error", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "errorContext", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "response", void 0);
70
+ _this.name = 'CartoAPIError';
71
+ _this.response = response;
72
+ _this.error = error;
73
+ _this.errorContext = errorContext;
74
+ return _this;
75
+ }
76
+
77
+ return CartoAPIError;
78
+ }((0, _wrapNativeSuper2.default)(Error));
79
+
80
+ exports.CartoAPIError = CartoAPIError;
81
+
82
+ function formatErrorKey(key) {
83
+ return key.replace(/([A-Z])/g, ' $1').replace(/^./, function (s) {
84
+ return s.toUpperCase();
85
+ });
86
+ }
87
+ //# sourceMappingURL=carto-api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/carto-api-error.ts"],"names":["CartoAPIError","error","errorContext","response","responseString","status","message","requestType","Object","keys","key","formatErrorKey","name","Error","replace","s","toUpperCase"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBaA,a;;;;;AAUX,yBAAYC,KAAZ,EAA0BC,YAA1B,EAAyDC,QAAzD,EAA8E;AAAA;;AAAA;AAC5E,QAAIC,cAAc,GAAG,mBAArB;;AACA,QAAID,QAAJ,EAAc;AACZC,MAAAA,cAAc,GAAG,mBAAjB;;AACA,UAAID,QAAQ,CAACE,MAAT,KAAoB,GAAxB,EAA6B;AAC3BD,QAAAA,cAAc,IAAI,aAAlB;AACD,OAFD,MAEO,IAAID,QAAQ,CAACE,MAAT,KAAoB,GAApB,IAA2BF,QAAQ,CAACE,MAAT,KAAoB,GAAnD,EAAwD;AAC7DD,QAAAA,cAAc,IAAI,qBAAlB;AACD,OAFM,MAEA,IAAID,QAAQ,CAACE,MAAT,KAAoB,GAAxB,EAA6B;AAClCD,QAAAA,cAAc,IAAI,WAAlB;AACD,OAFM,MAEA;AACLA,QAAAA,cAAc,IAAI,OAAlB;AACD;;AAEDA,MAAAA,cAAc,gBAASD,QAAQ,CAACE,MAAlB,OAAd;AACD;;AACDD,IAAAA,cAAc,eAAQH,KAAK,CAACK,OAAN,IAAiBL,KAAzB,CAAd;AAEA,QAAIK,OAAO,aAAMJ,YAAY,CAACK,WAAnB,wBAAX;AACAD,IAAAA,OAAO,gBAASF,cAAT,CAAP;;AACA,oCAAkBI,MAAM,CAACC,IAAP,CAAYP,YAAZ,CAAlB,kCAA6C;AAAxC,UAAMQ,GAAG,mBAAT;AACH,UAAIA,GAAG,KAAK,aAAZ,EAA2B;AAC3BJ,MAAAA,OAAO,gBAASK,cAAc,CAACD,GAAD,CAAvB,eAAiCR,YAAY,CAACQ,GAAD,CAA7C,CAAP;AACD;;AACDJ,IAAAA,OAAO,IAAI,IAAX;AAEA,8BAAMA,OAAN;AA1B4E;AAAA;AAAA;AA4B5E,UAAKM,IAAL,GAAY,eAAZ;AACA,UAAKT,QAAL,GAAgBA,QAAhB;AACA,UAAKF,KAAL,GAAaA,KAAb;AACA,UAAKC,YAAL,GAAoBA,YAApB;AA/B4E;AAgC7E;;;iCA1CgCW,K;;;;AAgDnC,SAASF,cAAT,CAAwBD,GAAxB,EAA6B;AAC3B,SAAOA,GAAG,CAACI,OAAJ,CAAY,UAAZ,EAAwB,KAAxB,EAA+BA,OAA/B,CAAuC,IAAvC,EAA6C,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACC,WAAF,EAAJ;AAAA,GAA9C,CAAP;AACD","sourcesContent":["import {MapType, RequestType} from './maps-api-common';\n\nexport type APIErrorContext = {\n requestType: RequestType;\n mapId?: string;\n connection?: string;\n source?: string;\n type?: MapType;\n};\n\n/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n /** Source error from server */\n error: Error;\n\n /** Context (API call & parameters) in which error occured */\n errorContext: APIErrorContext;\n\n /** Response from server */\n response?: Response;\n\n constructor(error: Error, errorContext: APIErrorContext, response?: Response) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n } else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n } else if (response.status === 404) {\n responseString += 'Not found';\n } else {\n responseString += 'Error';\n }\n\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType') continue; // eslint-disable-line no-continue\n message += `\\n${formatErrorKey(key)}: ${errorContext[key]}`;\n }\n message += '\\n';\n\n super(message);\n\n this.name = 'CartoAPIError';\n this.response = response;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());\n}\n"],"file":"carto-api-error.js"}