@deck.gl/carto 8.10.0-alpha.2 → 8.10.0-alpha.5

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 (296) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cartoRasterTile-worker.js +1084 -0
  3. package/dist/cartoSpatialTile-worker.js +1469 -0
  4. package/dist/cartoVectorTile-worker.js +1727 -0
  5. package/dist/dist.dev.js +2137 -1936
  6. package/dist/es5/api/carto-api-error.js +3 -7
  7. package/dist/es5/api/carto-api-error.js.map +1 -1
  8. package/dist/es5/api/layer-map.js +3 -7
  9. package/dist/es5/api/layer-map.js.map +1 -1
  10. package/dist/es5/api/maps-api-common.js +0 -1
  11. package/dist/es5/api/maps-api-common.js.map +1 -1
  12. package/dist/es5/api/maps-v3-client.js +5 -20
  13. package/dist/es5/api/maps-v3-client.js.map +1 -1
  14. package/dist/es5/index.js +74 -6
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/layers/carto-layer.js +196 -200
  17. package/dist/es5/layers/carto-layer.js.map +1 -1
  18. package/dist/es5/layers/h3-tile-layer.js +57 -79
  19. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  20. package/dist/es5/layers/h3-tileset-2d.js +62 -68
  21. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  22. package/dist/es5/layers/point-label-layer.js +160 -165
  23. package/dist/es5/layers/point-label-layer.js.map +1 -1
  24. package/dist/es5/layers/quadbin-layer.js +23 -27
  25. package/dist/es5/layers/quadbin-layer.js.map +1 -1
  26. package/dist/es5/layers/quadbin-tile-layer.js +39 -63
  27. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  28. package/dist/es5/layers/quadbin-tileset-2d.js +32 -38
  29. package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -1
  30. package/dist/es5/layers/raster-layer.js +94 -98
  31. package/dist/es5/layers/raster-layer.js.map +1 -1
  32. package/dist/es5/layers/raster-tile-layer.js +37 -58
  33. package/dist/es5/layers/raster-tile-layer.js.map +1 -1
  34. package/dist/es5/layers/schema/carto-raster-tile-loader.js +13 -4
  35. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -1
  36. package/dist/es5/layers/schema/carto-raster-tile.js +31 -39
  37. package/dist/es5/layers/schema/carto-raster-tile.js.map +1 -1
  38. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +14 -8
  39. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  40. package/dist/es5/layers/schema/carto-spatial-tile.js +36 -47
  41. package/dist/es5/layers/schema/carto-spatial-tile.js.map +1 -1
  42. package/dist/es5/layers/schema/carto-tile.js +161 -196
  43. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  44. package/dist/es5/layers/schema/carto-vector-tile-loader.js +64 -4
  45. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
  46. package/dist/es5/layers/spatial-index-tile-layer.js +67 -73
  47. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  48. package/dist/es5/layers/utils.js +29 -0
  49. package/dist/es5/layers/utils.js.map +1 -0
  50. package/dist/es5/layers/vector-tile-layer.js +163 -0
  51. package/dist/es5/layers/vector-tile-layer.js.map +1 -0
  52. package/dist/es5/sources/base-source.js +100 -0
  53. package/dist/es5/sources/base-source.js.map +1 -0
  54. package/dist/es5/sources/common.js +48 -0
  55. package/dist/es5/sources/common.js.map +1 -0
  56. package/dist/es5/sources/h3-query-source.js +58 -0
  57. package/dist/es5/sources/h3-query-source.js.map +1 -0
  58. package/dist/es5/sources/h3-table-source.js +58 -0
  59. package/dist/es5/sources/h3-table-source.js.map +1 -0
  60. package/dist/es5/sources/h3-tileset-source.js +43 -0
  61. package/dist/es5/sources/h3-tileset-source.js.map +1 -0
  62. package/dist/es5/sources/index.js +94 -0
  63. package/dist/es5/sources/index.js.map +1 -0
  64. package/dist/es5/sources/quadbin-query-source.js +58 -0
  65. package/dist/es5/sources/quadbin-query-source.js.map +1 -0
  66. package/dist/es5/sources/quadbin-table-source.js +58 -0
  67. package/dist/es5/sources/quadbin-table-source.js.map +1 -0
  68. package/dist/es5/sources/quadbin-tileset-source.js +43 -0
  69. package/dist/es5/sources/quadbin-tileset-source.js.map +1 -0
  70. package/dist/es5/sources/raster-source.js +43 -0
  71. package/dist/es5/sources/raster-source.js.map +1 -0
  72. package/dist/es5/sources/utils.js +136 -0
  73. package/dist/es5/sources/utils.js.map +1 -0
  74. package/dist/es5/sources/vector-query-source.js +52 -0
  75. package/dist/es5/sources/vector-query-source.js.map +1 -0
  76. package/dist/es5/sources/vector-table-source.js +52 -0
  77. package/dist/es5/sources/vector-table-source.js.map +1 -0
  78. package/dist/es5/sources/vector-tileset-source.js +43 -0
  79. package/dist/es5/sources/vector-tileset-source.js.map +1 -0
  80. package/dist/es5/utils.js +5 -0
  81. package/dist/es5/utils.js.map +1 -1
  82. package/dist/es5/workers/cartoRasterTile.js +10 -0
  83. package/dist/es5/workers/cartoRasterTile.js.map +1 -0
  84. package/dist/es5/workers/cartoSpatialTile.js +10 -0
  85. package/dist/es5/workers/cartoSpatialTile.js.map +1 -0
  86. package/dist/es5/workers/cartoVectorTile.js +10 -0
  87. package/dist/es5/workers/cartoVectorTile.js.map +1 -0
  88. package/dist/esm/api/carto-api-error.js +8 -13
  89. package/dist/esm/api/carto-api-error.js.map +1 -1
  90. package/dist/esm/api/layer-map.js +7 -11
  91. package/dist/esm/api/layer-map.js.map +1 -1
  92. package/dist/esm/api/maps-api-common.js +3 -4
  93. package/dist/esm/api/maps-api-common.js.map +1 -1
  94. package/dist/esm/api/maps-client.js +7 -7
  95. package/dist/esm/api/maps-client.js.map +1 -1
  96. package/dist/esm/api/maps-v3-client.js +14 -24
  97. package/dist/esm/api/maps-v3-client.js.map +1 -1
  98. package/dist/esm/api/parseMap.js +4 -4
  99. package/dist/esm/api/parseMap.js.map +1 -1
  100. package/dist/esm/config.js +3 -3
  101. package/dist/esm/config.js.map +1 -1
  102. package/dist/esm/index.js +5 -4
  103. package/dist/esm/index.js.map +1 -1
  104. package/dist/esm/layers/carto-layer.js +12 -15
  105. package/dist/esm/layers/carto-layer.js.map +1 -1
  106. package/dist/esm/layers/h3-tile-layer.js +24 -43
  107. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  108. package/dist/esm/layers/point-label-layer.js +6 -10
  109. package/dist/esm/layers/point-label-layer.js.map +1 -1
  110. package/dist/esm/layers/quadbin-layer.js +2 -5
  111. package/dist/esm/layers/quadbin-layer.js.map +1 -1
  112. package/dist/esm/layers/quadbin-tile-layer.js +21 -44
  113. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  114. package/dist/esm/layers/raster-layer-vertex.glsl.js +98 -1
  115. package/dist/esm/layers/raster-layer-vertex.glsl.js.map +1 -1
  116. package/dist/esm/layers/raster-layer.js +4 -8
  117. package/dist/esm/layers/raster-layer.js.map +1 -1
  118. package/dist/esm/layers/raster-tile-layer.js +21 -39
  119. package/dist/esm/layers/raster-tile-layer.js.map +1 -1
  120. package/dist/esm/layers/schema/carto-raster-tile-loader.js +12 -4
  121. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -1
  122. package/dist/esm/layers/schema/carto-raster-tile.js +1 -1
  123. package/dist/esm/layers/schema/carto-raster-tile.js.map +1 -1
  124. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +13 -8
  125. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  126. package/dist/esm/layers/schema/carto-tile.js +1 -1
  127. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  128. package/dist/esm/layers/schema/carto-vector-tile-loader.js +63 -4
  129. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
  130. package/dist/esm/layers/spatial-index-tile-layer.js +2 -5
  131. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  132. package/dist/esm/layers/utils.js +14 -0
  133. package/dist/esm/layers/utils.js.map +1 -0
  134. package/dist/esm/layers/{carto-tile-layer.js → vector-tile-layer.js} +39 -18
  135. package/dist/esm/layers/vector-tile-layer.js.map +1 -0
  136. package/dist/esm/sources/base-source.js +49 -0
  137. package/dist/esm/sources/base-source.js.map +1 -0
  138. package/dist/esm/sources/common.js +26 -0
  139. package/dist/esm/sources/common.js.map +1 -0
  140. package/dist/esm/sources/h3-query-source.js +32 -0
  141. package/dist/esm/sources/h3-query-source.js.map +1 -0
  142. package/dist/esm/sources/h3-table-source.js +32 -0
  143. package/dist/esm/sources/h3-table-source.js.map +1 -0
  144. package/dist/esm/sources/h3-tileset-source.js +14 -0
  145. package/dist/esm/sources/h3-tileset-source.js.map +1 -0
  146. package/dist/esm/sources/index.js +12 -0
  147. package/dist/esm/sources/index.js.map +1 -0
  148. package/dist/esm/sources/quadbin-query-source.js +32 -0
  149. package/dist/esm/sources/quadbin-query-source.js.map +1 -0
  150. package/dist/esm/sources/quadbin-table-source.js +32 -0
  151. package/dist/esm/sources/quadbin-table-source.js.map +1 -0
  152. package/dist/esm/sources/quadbin-tileset-source.js +14 -0
  153. package/dist/esm/sources/quadbin-tileset-source.js.map +1 -0
  154. package/dist/esm/sources/raster-source.js +14 -0
  155. package/dist/esm/sources/raster-source.js.map +1 -0
  156. package/dist/esm/sources/utils.js +69 -0
  157. package/dist/esm/sources/utils.js.map +1 -0
  158. package/dist/esm/sources/vector-query-source.js +25 -0
  159. package/dist/esm/sources/vector-query-source.js.map +1 -0
  160. package/dist/esm/sources/vector-table-source.js +25 -0
  161. package/dist/esm/sources/vector-table-source.js.map +1 -0
  162. package/dist/esm/sources/vector-tileset-source.js +14 -0
  163. package/dist/esm/sources/vector-tileset-source.js.map +1 -0
  164. package/dist/esm/style/palette.js +2 -2
  165. package/dist/esm/style/palette.js.map +1 -1
  166. package/dist/esm/style/utils.js +1 -1
  167. package/dist/esm/style/utils.js.map +1 -1
  168. package/dist/esm/utils.js +3 -0
  169. package/dist/esm/utils.js.map +1 -1
  170. package/dist/esm/workers/cartoRasterTile.js +4 -0
  171. package/dist/esm/workers/cartoRasterTile.js.map +1 -0
  172. package/dist/esm/workers/cartoSpatialTile.js +4 -0
  173. package/dist/esm/workers/cartoSpatialTile.js.map +1 -0
  174. package/dist/esm/workers/cartoVectorTile.js +4 -0
  175. package/dist/esm/workers/cartoVectorTile.js.map +1 -0
  176. package/dist.min.js +45 -24
  177. package/package.json +11 -9
  178. package/src/api/layer-map.ts +4 -8
  179. package/src/api/maps-api-common.ts +0 -1
  180. package/src/api/maps-v3-client.ts +6 -5
  181. package/src/index.ts +34 -5
  182. package/src/layers/h3-tile-layer.ts +22 -35
  183. package/src/layers/quadbin-tile-layer.ts +19 -33
  184. package/src/layers/raster-tile-layer.ts +22 -26
  185. package/src/layers/schema/carto-raster-tile-loader.ts +26 -6
  186. package/src/layers/schema/carto-spatial-tile-loader.ts +25 -11
  187. package/src/layers/schema/carto-tile.ts +1 -1
  188. package/src/layers/schema/carto-vector-tile-loader.ts +79 -9
  189. package/src/layers/utils.ts +11 -0
  190. package/src/layers/{carto-tile-layer.ts → vector-tile-layer.ts} +40 -21
  191. package/src/sources/base-source.ts +55 -0
  192. package/src/sources/common.ts +132 -0
  193. package/src/sources/h3-query-source.ts +45 -0
  194. package/src/sources/h3-table-source.ts +46 -0
  195. package/src/sources/h3-tileset-source.ts +16 -0
  196. package/src/sources/index.ts +32 -0
  197. package/src/sources/quadbin-query-source.ts +46 -0
  198. package/src/sources/quadbin-table-source.ts +46 -0
  199. package/src/sources/quadbin-tileset-source.ts +16 -0
  200. package/src/sources/raster-source.ts +16 -0
  201. package/src/sources/utils.ts +63 -0
  202. package/src/sources/vector-query-source.ts +23 -0
  203. package/src/sources/vector-table-source.ts +23 -0
  204. package/src/sources/vector-tileset-source.ts +16 -0
  205. package/src/utils.ts +6 -0
  206. package/src/workers/cartoRasterTile.ts +4 -0
  207. package/src/workers/cartoSpatialTile.ts +4 -0
  208. package/src/workers/cartoVectorTile.ts +4 -0
  209. package/typed/api/layer-map.d.ts +2 -3
  210. package/typed/api/layer-map.d.ts.map +1 -1
  211. package/typed/api/maps-api-common.d.ts +0 -1
  212. package/typed/api/maps-api-common.d.ts.map +1 -1
  213. package/typed/api/maps-v3-client.d.ts +0 -3
  214. package/typed/api/maps-v3-client.d.ts.map +1 -1
  215. package/typed/index.d.ts +6 -4
  216. package/typed/index.d.ts.map +1 -1
  217. package/typed/layers/h3-tile-layer.d.ts +5 -8
  218. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  219. package/typed/layers/quadbin-tile-layer.d.ts +5 -9
  220. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  221. package/typed/layers/raster-tile-layer.d.ts +6 -10
  222. package/typed/layers/raster-tile-layer.d.ts.map +1 -1
  223. package/typed/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
  224. package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  225. package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
  226. package/typed/layers/utils.d.ts +5 -0
  227. package/typed/layers/utils.d.ts.map +1 -0
  228. package/typed/layers/{carto-tile-layer.d.ts → vector-tile-layer.d.ts} +11 -7
  229. package/typed/layers/vector-tile-layer.d.ts.map +1 -0
  230. package/typed/sources/base-source.d.ts +4 -0
  231. package/typed/sources/base-source.d.ts.map +1 -0
  232. package/typed/sources/common.d.ts +116 -0
  233. package/typed/sources/common.d.ts.map +1 -0
  234. package/typed/sources/h3-query-source.d.ts +5 -0
  235. package/typed/sources/h3-query-source.d.ts.map +1 -0
  236. package/typed/sources/h3-table-source.d.ts +5 -0
  237. package/typed/sources/h3-table-source.d.ts.map +1 -0
  238. package/typed/sources/h3-tileset-source.d.ts +5 -0
  239. package/typed/sources/h3-tileset-source.d.ts.map +1 -0
  240. package/typed/sources/index.d.ts +23 -0
  241. package/typed/sources/index.d.ts.map +1 -0
  242. package/typed/sources/quadbin-query-source.d.ts +5 -0
  243. package/typed/sources/quadbin-query-source.d.ts.map +1 -0
  244. package/typed/sources/quadbin-table-source.d.ts +5 -0
  245. package/typed/sources/quadbin-table-source.d.ts.map +1 -0
  246. package/typed/sources/quadbin-tileset-source.d.ts +5 -0
  247. package/typed/sources/quadbin-tileset-source.d.ts.map +1 -0
  248. package/typed/sources/raster-source.d.ts +5 -0
  249. package/typed/sources/raster-source.d.ts.map +1 -0
  250. package/typed/sources/utils.d.ts +15 -0
  251. package/typed/sources/utils.d.ts.map +1 -0
  252. package/typed/sources/vector-query-source.d.ts +5 -0
  253. package/typed/sources/vector-query-source.d.ts.map +1 -0
  254. package/typed/sources/vector-table-source.d.ts +5 -0
  255. package/typed/sources/vector-table-source.d.ts.map +1 -0
  256. package/typed/sources/vector-tileset-source.d.ts +5 -0
  257. package/typed/sources/vector-tileset-source.d.ts.map +1 -0
  258. package/typed/utils.d.ts +1 -0
  259. package/typed/utils.d.ts.map +1 -1
  260. package/typed/workers/cartoRasterTile.d.ts +2 -0
  261. package/typed/workers/cartoRasterTile.d.ts.map +1 -0
  262. package/typed/workers/cartoSpatialTile.d.ts +2 -0
  263. package/typed/workers/cartoSpatialTile.d.ts.map +1 -0
  264. package/typed/workers/cartoVectorTile.d.ts +2 -0
  265. package/typed/workers/cartoVectorTile.d.ts.map +1 -0
  266. package/dist/es5/layers/carto-tile-layer.js +0 -145
  267. package/dist/es5/layers/carto-tile-layer.js.map +0 -1
  268. package/dist/esm/layers/carto-tile-layer.js.map +0 -1
  269. package/typed/api/index.js +0 -3
  270. package/typed/api/layer-map.js +0 -264
  271. package/typed/api/maps-api-common.js +0 -50
  272. package/typed/api/maps-client.js +0 -125
  273. package/typed/api/maps-v3-client.js +0 -304
  274. package/typed/api/parseMap.js +0 -178
  275. package/typed/basemap.js +0 -9
  276. package/typed/config.js +0 -35
  277. package/typed/index.js +0 -10
  278. package/typed/layers/carto-layer.js +0 -173
  279. package/typed/layers/carto-tile-layer.d.ts.map +0 -1
  280. package/typed/layers/carto-tile-layer.js +0 -105
  281. package/typed/layers/h3-tile-layer.js +0 -47
  282. package/typed/layers/h3-tileset-2d.js +0 -85
  283. package/typed/layers/quadkey-tile-layer.d.ts +0 -21
  284. package/typed/layers/quadkey-tile-layer.d.ts.map +0 -1
  285. package/typed/layers/quadkey-tile-layer.js +0 -42
  286. package/typed/layers/quadkey-tileset-2d.d.ts +0 -15
  287. package/typed/layers/quadkey-tileset-2d.d.ts.map +0 -1
  288. package/typed/layers/quadkey-tileset-2d.js +0 -36
  289. package/typed/layers/schema/carto-tile.js +0 -161
  290. package/typed/layers/spatial-index-tile-layer.js +0 -40
  291. package/typed/style/color-bins-style.js +0 -12
  292. package/typed/style/color-categories-style.js +0 -16
  293. package/typed/style/color-continuous-style.js +0 -12
  294. package/typed/style/palette.js +0 -62
  295. package/typed/style/utils.js +0 -15
  296. package/typed/utils.js +0 -4
@@ -47,7 +47,7 @@ export async function getDataV2({
47
47
  });
48
48
 
49
49
  default:
50
- throw new Error("Invalid maps API version. It should be ".concat(API_VERSIONS.V1, " or ").concat(API_VERSIONS.V2));
50
+ throw new Error(`Invalid maps API version. It should be ${API_VERSIONS.V1} or ${API_VERSIONS.V2}`);
51
51
  }
52
52
  }
53
53
 
@@ -64,7 +64,7 @@ async function request({
64
64
  }
65
65
  });
66
66
  } catch (error) {
67
- throw new Error("Failed to connect to Maps API: ".concat(error));
67
+ throw new Error(`Failed to connect to Maps API: ${error}`);
68
68
  }
69
69
 
70
70
  const json = await response.json();
@@ -87,10 +87,10 @@ function dealWithError({
87
87
  }) {
88
88
  switch (response.status) {
89
89
  case 401:
90
- throw new Error("Unauthorized access to Maps API: invalid combination of user ('".concat(credentials.username, "') and apiKey ('").concat(credentials.apiKey, "')"));
90
+ throw new Error(`Unauthorized access to Maps API: invalid combination of user ('${credentials.username}') and apiKey ('${credentials.apiKey}')`);
91
91
 
92
92
  case 403:
93
- throw new Error("Unauthorized access to dataset: the provided apiKey('".concat(credentials.apiKey, "') doesn't provide access to the requested data"));
93
+ throw new Error(`Unauthorized access to dataset: the provided apiKey('${credentials.apiKey}') doesn't provide access to the requested data`);
94
94
 
95
95
  default:
96
96
  const e = credentials.apiVersion === API_VERSIONS.V1 ? JSON.stringify(json.errors) : json.error;
@@ -110,7 +110,7 @@ function buildURLMapsAPIv1({
110
110
  }) {
111
111
  const parameters = initURLParameters(credentials);
112
112
  const cfg = JSON.stringify(mapConfig);
113
- return "".concat(mapsUrl(credentials), "?").concat(parameters.join('&'), "&").concat(encodeParameter('config', cfg));
113
+ return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;
114
114
  }
115
115
 
116
116
  function buildURLMapsAPIv2({
@@ -121,8 +121,8 @@ function buildURLMapsAPIv2({
121
121
  }) {
122
122
  const parameters = initURLParameters(credentials);
123
123
  const mapsApiType = type === MAP_TYPES.QUERY ? 'sql' : type;
124
- let url = "".concat(mapsUrl(credentials), "/").concat(connection, "/").concat(mapsApiType, "?");
125
- url += "".concat(encodeParameter('source', source), "&format=tilejson&").concat(parameters.join('&'));
124
+ let url = `${mapsUrl(credentials)}/${connection}/${mapsApiType}?`;
125
+ url += `${encodeParameter('source', source)}&format=tilejson&${parameters.join('&')}`;
126
126
  return url;
127
127
  }
128
128
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-client.ts"],"names":["defaultClassicCredentials","defaultCloudNativeCredentials","getDefaultCredentials","API_VERSIONS","DEFAULT_MAPS_URL_FORMAT","DEFAULT_REGION_COMPONENT_IN_URL","DEFAULT_USER_COMPONENT_IN_URL","encodeParameter","MAP_TYPES","CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","V3","mapsUrl","url","connection","TILESET","V1","mapConfig","createMapConfig","buildURLMapsAPIv1","layergroup","request","metadata","tilejson","vector","V2","buildURLMapsAPIv2","Error","response","fetch","headers","Accept","error","json","ok","dealWithError","status","username","apiKey","e","JSON","stringify","errors","initURLParameters","encodedApiKey","encodedClient","parameters","cfg","join","mapsApiType","QUERY","replace","region","sql","version","buffersize","mvt","layers","options","vector_extent"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Maps API v1 and Maps API v2\n */\nimport {\n ClassicCredentials,\n defaultClassicCredentials,\n defaultCloudNativeCredentials,\n getDefaultCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n DEFAULT_MAPS_URL_FORMAT,\n DEFAULT_REGION_COMPONENT_IN_URL,\n DEFAULT_USER_COMPONENT_IN_URL,\n encodeParameter,\n MapType,\n MAP_TYPES\n} from './maps-api-common';\n\nexport const CONNECTIONS = {\n BIGQUERY: 'bigquery',\n CARTO: 'carto'\n};\n\nconst BUFFER_SIZE = 16;\nconst TILE_EXTENT = 4096;\n\n/**\n * Obtain a TileJson from Maps API v1 and v2\n */\nexport async function getDataV2({\n type,\n source,\n credentials\n}: {\n type: MapType;\n source: string;\n credentials?: Partial<ClassicCredentials>;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const apiVersion = credentials?.apiVersion || defaultCredentials.apiVersion;\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(apiVersion === API_VERSIONS.V3 ? defaultCloudNativeCredentials : defaultClassicCredentials),\n mapsUrl: DEFAULT_MAPS_URL_FORMAT[apiVersion],\n ...(defaultCredentials.apiVersion === apiVersion && defaultCredentials),\n ...credentials\n } as unknown as Required<ClassicCredentials>;\n\n let url: string;\n\n const connection = type === MAP_TYPES.TILESET ? CONNECTIONS.BIGQUERY : CONNECTIONS.CARTO;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n // Maps API v1\n const mapConfig = createMapConfig(source);\n url = buildURLMapsAPIv1({mapConfig, credentials: localCreds});\n const layergroup = await request({url, credentials: localCreds});\n return layergroup.metadata.tilejson.vector;\n\n case API_VERSIONS.V2:\n // Maps API v2\n url = buildURLMapsAPIv2({connection, type, source, credentials: localCreds});\n return await request({url, credentials: localCreds});\n\n default:\n throw new Error(\n `Invalid maps API version. It should be ${API_VERSIONS.V1} or ${API_VERSIONS.V2}`\n );\n }\n}\n\n/**\n * Request against Maps API\n */\nasync function request({url, credentials}: {url: string; credentials: ClassicCredentials}) {\n let response;\n\n try {\n /* global fetch */\n response = await fetch(url, {\n headers: {\n Accept: 'application/json'\n }\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, json, credentials});\n }\n\n return json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({\n response,\n json,\n credentials\n}: {\n response: Response;\n json: any;\n credentials: ClassicCredentials;\n}) {\n switch (response.status) {\n case 401:\n throw new Error(\n `Unauthorized access to Maps API: invalid combination of user ('${credentials.username}') and apiKey ('${credentials.apiKey}')`\n );\n case 403:\n throw new Error(\n `Unauthorized access to dataset: the provided apiKey('${credentials.apiKey}') doesn't provide access to the requested data`\n );\n\n default:\n const e =\n credentials.apiVersion === API_VERSIONS.V1 ? JSON.stringify(json.errors) : json.error;\n throw new Error(e);\n }\n}\n\nfunction initURLParameters(credentials: ClassicCredentials): string[] {\n const encodedApiKey = encodeParameter('api_key', credentials.apiKey);\n const encodedClient = encodeParameter('client', 'deck-gl-carto');\n return [encodedApiKey, encodedClient];\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction buildURLMapsAPIv1({\n mapConfig,\n credentials\n}: {\n mapConfig: unknown;\n credentials: Required<ClassicCredentials>;\n}): string {\n const parameters = initURLParameters(credentials);\n const cfg = JSON.stringify(mapConfig);\n return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;\n}\n\nfunction buildURLMapsAPIv2({\n connection,\n type,\n source,\n credentials\n}: {\n connection: string;\n type: MapType;\n source: string;\n credentials: Required<ClassicCredentials>;\n}): string {\n const parameters = initURLParameters(credentials);\n // Query type is mapped to 'sql' at maps api v1\n const mapsApiType = type === MAP_TYPES.QUERY ? 'sql' : type;\n let url = `${mapsUrl(credentials)}/${connection}/${mapsApiType}?`;\n url += `${encodeParameter('source', source)}&format=tilejson&${parameters.join('&')}`;\n return url;\n}\n\n/**\n * Prepare a url valid for the specified user\n */\nfunction mapsUrl(credentials: Required<ClassicCredentials>) {\n return credentials.mapsUrl\n .replace(DEFAULT_USER_COMPONENT_IN_URL, credentials.username)\n .replace(DEFAULT_REGION_COMPONENT_IN_URL, credentials.region);\n}\n\nfunction createMapConfig(sql: string) {\n return {\n version: '1.3.1',\n buffersize: {\n mvt: BUFFER_SIZE\n },\n layers: [\n {\n type: 'mapnik',\n options: {\n sql,\n // eslint-disable-next-line camelcase\n vector_extent: TILE_EXTENT\n }\n }\n ]\n };\n}\n"],"file":"maps-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-client.ts"],"names":["defaultClassicCredentials","defaultCloudNativeCredentials","getDefaultCredentials","API_VERSIONS","DEFAULT_MAPS_URL_FORMAT","DEFAULT_REGION_COMPONENT_IN_URL","DEFAULT_USER_COMPONENT_IN_URL","encodeParameter","MAP_TYPES","CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","V3","mapsUrl","url","connection","TILESET","V1","mapConfig","createMapConfig","buildURLMapsAPIv1","layergroup","request","metadata","tilejson","vector","V2","buildURLMapsAPIv2","Error","response","fetch","headers","Accept","error","json","ok","dealWithError","status","username","apiKey","e","JSON","stringify","errors","initURLParameters","encodedApiKey","encodedClient","parameters","cfg","join","mapsApiType","QUERY","replace","region","sql","version","buffersize","mvt","layers","options","vector_extent"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Maps API v1 and Maps API v2\n */\nimport {\n ClassicCredentials,\n defaultClassicCredentials,\n defaultCloudNativeCredentials,\n getDefaultCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n DEFAULT_MAPS_URL_FORMAT,\n DEFAULT_REGION_COMPONENT_IN_URL,\n DEFAULT_USER_COMPONENT_IN_URL,\n encodeParameter,\n MapType,\n MAP_TYPES\n} from './maps-api-common';\n\nexport const CONNECTIONS = {\n BIGQUERY: 'bigquery',\n CARTO: 'carto'\n};\n\nconst BUFFER_SIZE = 16;\nconst TILE_EXTENT = 4096;\n\n/**\n * Obtain a TileJson from Maps API v1 and v2\n */\nexport async function getDataV2({\n type,\n source,\n credentials\n}: {\n type: MapType;\n source: string;\n credentials?: Partial<ClassicCredentials>;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const apiVersion = credentials?.apiVersion || defaultCredentials.apiVersion;\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(apiVersion === API_VERSIONS.V3 ? defaultCloudNativeCredentials : defaultClassicCredentials),\n mapsUrl: DEFAULT_MAPS_URL_FORMAT[apiVersion],\n ...(defaultCredentials.apiVersion === apiVersion && defaultCredentials),\n ...credentials\n } as unknown as Required<ClassicCredentials>;\n\n let url: string;\n\n const connection = type === MAP_TYPES.TILESET ? CONNECTIONS.BIGQUERY : CONNECTIONS.CARTO;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n // Maps API v1\n const mapConfig = createMapConfig(source);\n url = buildURLMapsAPIv1({mapConfig, credentials: localCreds});\n const layergroup = await request({url, credentials: localCreds});\n return layergroup.metadata.tilejson.vector;\n\n case API_VERSIONS.V2:\n // Maps API v2\n url = buildURLMapsAPIv2({connection, type, source, credentials: localCreds});\n return await request({url, credentials: localCreds});\n\n default:\n throw new Error(\n `Invalid maps API version. It should be ${API_VERSIONS.V1} or ${API_VERSIONS.V2}`\n );\n }\n}\n\n/**\n * Request against Maps API\n */\nasync function request({url, credentials}: {url: string; credentials: ClassicCredentials}) {\n let response;\n\n try {\n /* global fetch */\n response = await fetch(url, {\n headers: {\n Accept: 'application/json'\n }\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, json, credentials});\n }\n\n return json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({\n response,\n json,\n credentials\n}: {\n response: Response;\n json: any;\n credentials: ClassicCredentials;\n}) {\n switch (response.status) {\n case 401:\n throw new Error(\n `Unauthorized access to Maps API: invalid combination of user ('${credentials.username}') and apiKey ('${credentials.apiKey}')`\n );\n case 403:\n throw new Error(\n `Unauthorized access to dataset: the provided apiKey('${credentials.apiKey}') doesn't provide access to the requested data`\n );\n\n default:\n const e =\n credentials.apiVersion === API_VERSIONS.V1 ? JSON.stringify(json.errors) : json.error;\n throw new Error(e);\n }\n}\n\nfunction initURLParameters(credentials: ClassicCredentials): string[] {\n const encodedApiKey = encodeParameter('api_key', credentials.apiKey);\n const encodedClient = encodeParameter('client', 'deck-gl-carto');\n return [encodedApiKey, encodedClient];\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction buildURLMapsAPIv1({\n mapConfig,\n credentials\n}: {\n mapConfig: unknown;\n credentials: Required<ClassicCredentials>;\n}): string {\n const parameters = initURLParameters(credentials);\n const cfg = JSON.stringify(mapConfig);\n return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;\n}\n\nfunction buildURLMapsAPIv2({\n connection,\n type,\n source,\n credentials\n}: {\n connection: string;\n type: MapType;\n source: string;\n credentials: Required<ClassicCredentials>;\n}): string {\n const parameters = initURLParameters(credentials);\n // Query type is mapped to 'sql' at maps api v1\n const mapsApiType = type === MAP_TYPES.QUERY ? 'sql' : type;\n let url = `${mapsUrl(credentials)}/${connection}/${mapsApiType}?`;\n url += `${encodeParameter('source', source)}&format=tilejson&${parameters.join('&')}`;\n return url;\n}\n\n/**\n * Prepare a url valid for the specified user\n */\nfunction mapsUrl(credentials: Required<ClassicCredentials>) {\n return credentials.mapsUrl\n .replace(DEFAULT_USER_COMPONENT_IN_URL, credentials.username)\n .replace(DEFAULT_REGION_COMPONENT_IN_URL, credentials.region);\n}\n\nfunction createMapConfig(sql: string) {\n return {\n version: '1.3.1',\n buffersize: {\n mvt: BUFFER_SIZE\n },\n layers: [\n {\n type: 'mapnik',\n options: {\n sql,\n // eslint-disable-next-line camelcase\n vector_extent: TILE_EXTENT\n }\n }\n ]\n };\n}\n"],"file":"maps-client.js"}
@@ -6,7 +6,7 @@ import { log } from '@deck.gl/core';
6
6
  import { assert } from '../utils';
7
7
  const MAX_GET_LENGTH = 8192;
8
8
  const DEFAULT_CLIENT = 'deck-gl-carto';
9
- const V3_MINOR_VERSION = '3.1';
9
+ const V3_MINOR_VERSION = '3.2';
10
10
 
11
11
  async function request({
12
12
  method,
@@ -21,7 +21,7 @@ async function request({
21
21
  };
22
22
 
23
23
  if (accessToken) {
24
- headers.Authorization = "Bearer ".concat(accessToken);
24
+ headers.Authorization = `Bearer ${accessToken}`;
25
25
  }
26
26
 
27
27
  if (method === 'POST') {
@@ -80,16 +80,6 @@ async function requestData({
80
80
  body,
81
81
  errorContext
82
82
  }) {
83
- if (format === FORMATS.NDJSON) {
84
- return request({
85
- method,
86
- url,
87
- accessToken,
88
- body,
89
- errorContext
90
- });
91
- }
92
-
93
83
  const data = await requestJson({
94
84
  method,
95
85
  url,
@@ -160,7 +150,7 @@ export async function mapInstantiation({
160
150
  aggregationResLevel,
161
151
  queryParameters
162
152
  }) {
163
- const baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
153
+ const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;
164
154
  const parameters = getParameters({
165
155
  type,
166
156
  source,
@@ -178,7 +168,7 @@ export async function mapInstantiation({
178
168
 
179
169
  return encodeParameter(key, value);
180
170
  });
181
- const url = "".concat(baseUrl, "?").concat(encodedParameters.join('&'));
171
+ const url = `${baseUrl}?${encodedParameters.join('&')}`;
182
172
  const {
183
173
  accessToken
184
174
  } = credentials;
@@ -236,11 +226,11 @@ function checkFetchLayerDataParameters({
236
226
  assert(credentials.accessToken, 'Must define an accessToken');
237
227
 
238
228
  if (columns) {
239
- assert(COLUMNS_SUPPORT.includes(type), "The columns parameter is not supported by type ".concat(type));
229
+ assert(COLUMNS_SUPPORT.includes(type), `The columns parameter is not supported by type ${type}`);
240
230
  }
241
231
 
242
232
  if (geoColumn) {
243
- assert(GEO_COLUMN_SUPPORT.includes(type), "The geoColumn parameter is not supported by type ".concat(type));
233
+ assert(GEO_COLUMN_SUPPORT.includes(type), `The geoColumn parameter is not supported by type ${type}`);
244
234
  } else {
245
235
  assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
246
236
  assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
@@ -355,9 +345,9 @@ async function _fetchDataUrl({
355
345
  if (format) {
356
346
  mapFormat = format;
357
347
  url = getUrlFromMetadata(metadata, format);
358
- assert(url, "Format ".concat(format, " not available"));
348
+ assert(url, `Format ${format} not available`);
359
349
  } else {
360
- const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];
350
+ const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.TILEJSON];
361
351
 
362
352
  for (const f of prioritizedFormats) {
363
353
  url = getUrlFromMetadata(metadata, f);
@@ -372,8 +362,8 @@ async function _fetchDataUrl({
372
362
  }
373
363
 
374
364
  if (format === FORMATS.TILEJSON && formatTiles) {
375
- log.assert(Object.values(TILE_FORMATS).includes(formatTiles), "Invalid value for formatTiles: ".concat(formatTiles, ". Use value from TILE_FORMATS"));
376
- url += "&".concat(encodeParameter('formatTiles', formatTiles));
365
+ log.assert(Object.values(TILE_FORMATS).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
366
+ url += `&${encodeParameter('formatTiles', formatTiles)}`;
377
367
  }
378
368
 
379
369
  const {
@@ -447,12 +437,12 @@ async function _fetchTilestats(attribute, dataset, accessToken, credentials) {
447
437
  type
448
438
  } = dataset;
449
439
  const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);
450
- let baseUrl = "".concat(statsUrl, "/").concat(connection, "/");
440
+ let baseUrl = `${statsUrl}/${connection}/`;
451
441
 
452
442
  if (type === MAP_TYPES.QUERY) {
453
443
  baseUrl += attribute;
454
444
  } else {
455
- baseUrl += "".concat(source, "/").concat(attribute);
445
+ baseUrl += `${source}/${attribute}`;
456
446
  }
457
447
 
458
448
  const errorContext = {
@@ -464,7 +454,7 @@ async function _fetchTilestats(attribute, dataset, accessToken, credentials) {
464
454
  let url = baseUrl;
465
455
 
466
456
  if (type === MAP_TYPES.QUERY) {
467
- url += "?".concat(encodeParameter('q', source));
457
+ url += `?${encodeParameter('q', source)}`;
468
458
  }
469
459
 
470
460
  let stats;
@@ -579,7 +569,7 @@ export async function fetchMap({
579
569
  assert(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');
580
570
  }
581
571
 
582
- const url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
572
+ const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;
583
573
  const errorContext = {
584
574
  requestType: REQUEST_TYPES.PUBLIC_MAP,
585
575
  mapId: cartoMapId
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","buildStatsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","REQUEST_TYPES","TILE_FORMATS","CartoAPIError","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","headers","customHeaders","accessToken","body","errorContext","Accept","Authorization","fetch","error","requestJson","response","json","ok","requestData","format","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","values","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","q","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","keys","visualChannels","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","stopAutoRefresh","intervalId","setInterval","changed","some","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n /* eslint-disable-next-line camelcase */\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n /* eslint-disable-next-line camelcase */\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\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\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","buildStatsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","REQUEST_TYPES","TILE_FORMATS","CartoAPIError","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","headers","customHeaders","accessToken","body","errorContext","Accept","Authorization","fetch","error","requestJson","response","json","ok","requestData","format","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","values","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","q","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","keys","visualChannels","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","stopAutoRefresh","intervalId","setInterval","changed","some","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.2';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n // if (format === FORMATS.NDJSON) {\n // return request({method, url, accessToken, body, errorContext});\n // }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n /* eslint-disable-next-line camelcase */\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n /* eslint-disable-next-line camelcase */\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\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\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
@@ -40,11 +40,11 @@ export function parseMap(json) {
40
40
  dataId
41
41
  } = config;
42
42
  const dataset = datasets.find(d => d.id === dataId);
43
- assert(dataset, "No dataset matching dataId: ".concat(dataId));
43
+ assert(dataset, `No dataset matching dataId: ${dataId}`);
44
44
  const {
45
45
  data
46
46
  } = dataset;
47
- assert(data, "No data loaded for dataId: ".concat(dataId));
47
+ assert(data, `No data loaded for dataId: ${dataId}`);
48
48
  const {
49
49
  Layer,
50
50
  propMap,
@@ -296,7 +296,7 @@ function createChannelProps(id, type, config, visualChannels, data) {
296
296
  } = secondaryLabel || {};
297
297
  result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);
298
298
  const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);
299
- result.pointType = "".concat(result.pointType, "+text");
299
+ result.pointType = `${result.pointType}+text`;
300
300
  result.textCharacterSet = 'auto';
301
301
  result.textFontFamily = 'Inter, sans';
302
302
  result.textFontSettings = {
@@ -333,7 +333,7 @@ function createLoadOptions(accessToken) {
333
333
  loadOptions: {
334
334
  fetch: {
335
335
  headers: {
336
- Authorization: "Bearer ".concat(accessToken)
336
+ Authorization: `Bearer ${accessToken}`
337
337
  }
338
338
  }
339
339
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["AGGREGATION","getLayer","getColorAccessor","getColorValueAccessor","getSizeAccessor","getTextAccessor","OPACITY_MAP","opacityToAlpha","getIconUrlAccessor","negateAccessor","getMaxMarkerSize","PointLabelLayer","log","CollisionFilterExtension","assert","collisionFilterExtension","parseMap","json","keplerMapConfig","datasets","token","version","mapState","mapStyle","config","layers","layerBlending","interactionConfig","visState","id","title","description","createdAt","updatedAt","initialViewState","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","styleProps","createStyleProps","createInteractionProps","createChannelProps","createParametersProp","parameters","createLoadOptions","e","error","message","undefined","blendFunc","blendEquation","Object","keys","length","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","key","value","entries","result","stroked","getLineColor","getFillColor","colorAccessor","Array","isArray","color","opacityKey","opacity","visConfig","highlightColor","enable3d","colorField","colorScale","radiusField","radiusScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabel","colorScaleType","colorAggregation","getColorValue","getColorWeight","name","aggregation","colorRange","range","altitude","columns","dataTransform","features","forEach","geometry","properties","coordinates","getPointRadius","sizeAggregation","radiusRange","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","customMarkers","maxIconSize","customMarkersUrl","customMarkersRange","filled","useMaskedIcons","pointType","getIcon","customMarkersField","fallbackUrl","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","field","mainLabel","secondaryLabel","collisionGroup","alignment","getTextAlignmentBaseline","anchor","getTextAnchor","getTextColor","outlineColor","textOutlineColor","size","textSizeScale","getSecondaryColor","secondaryField","secondaryOutlineColor","secondarySizeScale","getText","getSecondaryText","textCharacterSet","textFontFamily","textFontSettings","sdf","textFontWeight","textOutlineWidth","extensions","collisionEnabled","getRadius","radius","accessToken","fetch","headers","Authorization"],"mappings":"AACA,SACEA,WADF,EAEEC,QAFF,EAGEC,gBAHF,EAIEC,qBAJF,EAKEC,eALF,EAMEC,eANF,EAOEC,WAPF,EAQEC,cARF,EASEC,kBATF,EAUEC,cAVF,EAWEC,gBAXF,QAYO,aAZP;AAaA,OAAOC,eAAP,MAA4B,6BAA5B;AACA,SAAQC,GAAR,QAAkB,eAAlB;AACA,SAAQC,wBAAR,QAAuC,qBAAvC;AACA,SAAQC,MAAR,QAAqB,UAArB;AAGA,MAAMC,wBAAwB,GAAG,IAAIF,wBAAJ,EAAjC;AAEA,OAAO,SAASG,QAAT,CAAkBC,IAAlB,EAAwB;AAC7B,QAAM;AAACC,IAAAA,eAAD;AAAkBC,IAAAA,QAAlB;AAA4BC,IAAAA;AAA5B,MAAqCH,IAA3C;AACAH,EAAAA,MAAM,CAACI,eAAe,CAACG,OAAhB,KAA4B,IAA7B,EAAmC,wBAAnC,CAAN;AACA,QAAM;AAACC,IAAAA,QAAD;AAAWC,IAAAA;AAAX,MAAuBL,eAAe,CAACM,MAA7C;AACA,QAAM;AAACC,IAAAA,MAAD;AAASC,IAAAA,aAAT;AAAwBC,IAAAA;AAAxB,MAA6CT,eAAe,CAACM,MAAhB,CAAuBI,QAA1E;AAEA,SAAO;AACLC,IAAAA,EAAE,EAAEZ,IAAI,CAACY,EADJ;AAELC,IAAAA,KAAK,EAAEb,IAAI,CAACa,KAFP;AAGLC,IAAAA,WAAW,EAAEd,IAAI,CAACc,WAHb;AAILC,IAAAA,SAAS,EAAEf,IAAI,CAACe,SAJX;AAKLC,IAAAA,SAAS,EAAEhB,IAAI,CAACgB,SALX;AAMLC,IAAAA,gBAAgB,EAAEZ,QANb;AAOLC,IAAAA,QAPK;AAQLH,IAAAA,KARK;AASLK,IAAAA,MAAM,EAAEA,MAAM,CAACU,OAAP,GAAiBC,GAAjB,CAAqB,CAAC;AAACP,MAAAA,EAAD;AAAKQ,MAAAA,IAAL;AAAWb,MAAAA,MAAX;AAAmBc,MAAAA;AAAnB,KAAD,KAAwC;AACnE,UAAI;AACF,cAAM;AAACC,UAAAA;AAAD,YAAWf,MAAjB;AACA,cAAMgB,OAA0B,GAAGrB,QAAQ,CAACsB,IAAT,CAAcC,CAAC,IAAIA,CAAC,CAACb,EAAF,KAASU,MAA5B,CAAnC;AACAzB,QAAAA,MAAM,CAAC0B,OAAD,wCAAyCD,MAAzC,EAAN;AACA,cAAM;AAACI,UAAAA;AAAD,YAASH,OAAf;AACA1B,QAAAA,MAAM,CAAC6B,IAAD,uCAAqCJ,MAArC,EAAN;AACA,cAAM;AAACK,UAAAA,KAAD;AAAQC,UAAAA,OAAR;AAAiBC,UAAAA;AAAjB,YAAiC7C,QAAQ,CAACoC,IAAD,EAAOb,MAAP,EAAegB,OAAf,CAA/C;AACA,cAAMO,UAAU,GAAGC,gBAAgB,CAACxB,MAAD,EAASqB,OAAT,CAAnC;AACA,eAAO,IAAID,KAAJ,CAAU;AACff,UAAAA,EADe;AAEfc,UAAAA,IAFe;AAGf,aAAGG,YAHY;AAIf,aAAGG,sBAAsB,CAACtB,iBAAD,CAJV;AAKf,aAAGoB,UALY;AAMf,aAAGG,kBAAkB,CAACrB,EAAD,EAAKQ,IAAL,EAAWb,MAAX,EAAmBc,cAAnB,EAAmCK,IAAnC,CANN;AAOf,aAAGQ,oBAAoB,CAACzB,aAAD,EAAgBqB,UAAU,CAACK,UAAX,IAAyB,EAAzC,CAPR;AAQf,aAAGC,iBAAiB,CAACjC,KAAD;AARL,SAAV,CAAP;AAUD,OAlBD,CAkBE,OAAOkC,CAAP,EAAe;AACf1C,QAAAA,GAAG,CAAC2C,KAAJ,CAAUD,CAAC,CAACE,OAAZ;AACA,eAAOC,SAAP;AACD;AACF,KAvBO;AATH,GAAP;AAkCD;;AAED,SAASN,oBAAT,CAA8BzB,aAA9B,EAA6C0B,UAA7C,EAA8E;AAC5E,MAAI1B,aAAa,KAAK,UAAtB,EAAkC;AAChC0B,IAAAA,UAAU,CAACM,SAAX,GAAuB,UAAvB;AACAN,IAAAA,UAAU,CAACO,aAAX;AACD,GAHD,MAGO,IAAIjC,aAAa,KAAK,aAAtB,EAAqC;AAC1C0B,IAAAA,UAAU,CAACM,SAAX,GAAuB,kBAAvB;AACAN,IAAAA,UAAU,CAACO,aAAX,GAA2B,cAA3B;AACD;;AAED,SAAOC,MAAM,CAACC,IAAP,CAAYT,UAAZ,EAAwBU,MAAxB,GAAiC;AAACV,IAAAA;AAAD,GAAjC,GAAgD,EAAvD;AACD;;AAED,SAASH,sBAAT,CAAgCtB,iBAAhC,EAAmD;AACjD,QAAMoC,QAAQ,GAAGpC,iBAAiB,IAAIA,iBAAiB,CAACqC,OAAlB,CAA0BC,OAAhE;AACA,SAAO;AACLC,IAAAA,aAAa,EAAEH,QADV;AAELA,IAAAA;AAFK,GAAP;AAID;;AAED,SAASI,QAAT,CAAkBC,MAAlB,EAA0BC,MAA1B,EAAkCC,OAAlC,EAA2C;AACzC,OAAK,MAAMC,SAAX,IAAwBD,OAAxB,EAAiC;AAC/B,UAAME,WAAW,GAAGJ,MAAM,CAACG,SAAD,CAA1B;AACA,UAAME,SAAS,GAAGH,OAAO,CAACC,SAAD,CAAzB;;AACA,QAAIC,WAAW,KAAKf,SAApB,EAA+B;AAE7B;AACD;;AACD,QAAI,OAAOgB,SAAP,KAAqB,QAAzB,EAAmC;AACjCJ,MAAAA,MAAM,CAACI,SAAD,CAAN,GAAoBD,WAApB;AACD,KAFD,MAEO,IAAI,OAAOC,SAAP,KAAqB,UAAzB,EAAqC;AAC1C,YAAM,CAACC,GAAD,EAAMC,KAAN,IAAef,MAAM,CAACgB,OAAP,CAAeH,SAAS,CAACD,WAAD,CAAxB,EAAuC,CAAvC,CAArB;AACAH,MAAAA,MAAM,CAACK,GAAD,CAAN,GAAcC,KAAd;AACD,KAHM,MAGA,IAAI,OAAOF,SAAP,KAAqB,QAAzB,EAAmC;AAExCN,MAAAA,QAAQ,CAACK,WAAD,EAAcH,MAAd,EAAsBI,SAAtB,CAAR;AACD;AACF;AACF;;AAED,SAASzB,gBAAT,CAA0BxB,MAA1B,EAAkD8C,OAAlD,EAA2D;AACzD,QAAMO,MAA2B,GAAG,EAApC;AACAV,EAAAA,QAAQ,CAAC3C,MAAD,EAASqD,MAAT,EAAiBP,OAAjB,CAAR;;AAIA,MAAIO,MAAM,CAACC,OAAP,IAAkB,CAACD,MAAM,CAACE,YAA9B,EAA4C;AAC1CF,IAAAA,MAAM,CAACE,YAAP,GAAsBF,MAAM,CAACG,YAA7B;AACD;;AAED,OAAK,MAAMC,aAAX,IAA4B3E,WAA5B,EAAyC;AACvC,QAAI4E,KAAK,CAACC,OAAN,CAAcN,MAAM,CAACI,aAAD,CAApB,CAAJ,EAA0C;AACxC,YAAMG,KAAK,GAAG,CAAC,GAAGP,MAAM,CAACI,aAAD,CAAV,CAAd;AACA,YAAMI,UAAU,GAAG/E,WAAW,CAAC2E,aAAD,CAA9B;AACA,YAAMK,OAAO,GAAG9D,MAAM,CAAC+D,SAAP,CAAiBF,UAAjB,CAAhB;AACAD,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAW7E,cAAc,CAAC+E,OAAD,CAAzB;AACAT,MAAAA,MAAM,CAACI,aAAD,CAAN,GAAwBG,KAAxB;AACD;AACF;;AAEDP,EAAAA,MAAM,CAACW,cAAP,GAAwBhE,MAAM,CAAC+D,SAAP,CAAiBE,QAAjB,GAA4B,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,EAAhB,CAA5B,GAAkD,CAAC,GAAD,EAAM,GAAN,EAAW,EAAX,EAAe,GAAf,CAA1E;AACA,SAAOZ,MAAP;AACD;;AAGD,SAAS3B,kBAAT,CACErB,EADF,EAEEQ,IAFF,EAGEb,MAHF,EAIEc,cAJF,EAKEK,IALF,EAME;AACA,QAAM;AACJ+C,IAAAA,UADI;AAEJC,IAAAA,UAFI;AAGJC,IAAAA,WAHI;AAIJC,IAAAA,WAJI;AAKJC,IAAAA,SALI;AAMJC,IAAAA,SANI;AAOJC,IAAAA,gBAPI;AAQJC,IAAAA;AARI,MASF3D,cATJ;AAUA,MAAI;AAAC4D,IAAAA,WAAD;AAAcC,IAAAA;AAAd,MAA6B7D,cAAjC;;AACA,MAAID,IAAI,KAAK,WAAb,EAA0B;AACxB6D,IAAAA,WAAW,GAAGJ,SAAd;AACAK,IAAAA,WAAW,GAAGJ,SAAd;AACD;;AACD,QAAM;AAACK,IAAAA,SAAD;AAAYb,IAAAA;AAAZ,MAAyB/D,MAA/B;AACA,QAAMqD,MAA2B,GAAG,EAApC;;AAEA,MAAIxC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,SAAhC,EAA2C;AACzCwC,IAAAA,MAAM,CAACwB,cAAP,GAAwBV,UAAxB;;AACA,QAAID,UAAJ,EAAgB;AACd,YAAM;AAACY,QAAAA;AAAD,UAAqB9E,MAAM,CAAC+D,SAAlC;;AACA,UAAI,CAACvF,WAAW,CAACsG,gBAAD,CAAhB,EAAoC;AAClCzB,QAAAA,MAAM,CAAC0B,aAAP,GAAuBpG,qBAAqB,CAACuF,UAAD,EAAaY,gBAAb,EAA+B3D,IAA/B,CAA5C;AACD,OAFD,MAEO;AACLkC,QAAAA,MAAM,CAAC2B,cAAP,GAAwB9D,CAAC,IAAIA,CAAC,CAACgD,UAAU,CAACe,IAAZ,CAA9B;AACD;AACF;AACF,GAVD,MAUO,IAAIf,UAAJ,EAAgB;AACrB,UAAM;AAACY,MAAAA,gBAAgB,EAAEI,WAAnB;AAAgCC,MAAAA,UAAU,EAAEC;AAA5C,QAAqDrB,SAA3D;AACAV,IAAAA,MAAM,CAACG,YAAP,GAAsB9E,gBAAgB,CACpCwF,UADoC,EAGpCC,UAHoC,EAIpC;AAACe,MAAAA,WAAD;AAAcE,MAAAA;AAAd,KAJoC,EAKpCrB,SAAS,CAACD,OAL0B,EAMpC3C,IANoC,CAAtC;AAQD;;AAED,MAAIN,IAAI,KAAK,OAAb,EAAsB;AAAA;;AACpB,UAAMwE,QAAQ,sBAAGrF,MAAM,CAACsF,OAAV,oDAAG,gBAAgBD,QAAjC;;AACA,QAAIA,QAAJ,EAAc;AACZhC,MAAAA,MAAM,CAACkC,aAAP,GAAuBpE,IAAI,IAAI;AAC7BA,QAAAA,IAAI,CAACqE,QAAL,CAAcC,OAAd,CAAsB,CAAC;AAACC,UAAAA,QAAD;AAAWC,UAAAA;AAAX,SAAD,KAA4B;AAChD,gBAAM;AAAC9E,YAAAA,IAAD;AAAO+E,YAAAA;AAAP,cAAsBF,QAA5B;;AACA,cAAI7E,IAAI,KAAK,OAAb,EAAsB;AACpB+E,YAAAA,WAAW,CAAC,CAAD,CAAX,GAAiBD,UAAU,CAACN,QAAD,CAA3B;AACD;AACF,SALD;AAMA,eAAOlE,IAAP;AACD,OARD;AASD;AACF;;AAED,MAAIiD,WAAW,IAAIE,SAAnB,EAA8B;AAC5BjB,IAAAA,MAAM,CAACwC,cAAP,GAAwBjH,eAAe,CAErCwF,WAAW,IAAIE,SAFsB,EAIrCD,WAAW,IAAIE,SAJsB,EAKrCR,SAAS,CAAC+B,eAL2B,EAMrC/B,SAAS,CAACgC,WAAV,IAAyBhC,SAAS,CAACiC,SANE,EAOrC7E,IAPqC,CAAvC;AASD;;AAED,MAAIqD,gBAAJ,EAAsB;AACpB,UAAMyB,eAAe,GAAGpF,IAAI,KAAK,OAAT,GAAmBkD,SAAS,CAACD,OAA7B,GAAuC,CAA/D;AACA,UAAMA,OAAO,GACXC,SAAS,CAACmC,aAAV,KAA4BjE,SAA5B,GAAwC8B,SAAS,CAACmC,aAAlD,GAAkED,eADpE;AAEA,UAAM;AAACE,MAAAA,sBAAsB,EAAEjB,WAAzB;AAAsCkB,MAAAA,gBAAgB,EAAEhB;AAAxD,QAAiErB,SAAvE;AACAV,IAAAA,MAAM,CAACE,YAAP,GAAsB7E,gBAAgB,CACpC8F,gBADoC,EAGpCC,gBAHoC,EAKpC;AAACS,MAAAA,WAAD;AAAcE,MAAAA;AAAd,KALoC,EAMpCtB,OANoC,EAOpC3C,IAPoC,CAAtC;AASD;;AAED,MAAIuD,WAAW,IAAIX,SAAS,CAACE,QAA7B,EAAuC;AACrCZ,IAAAA,MAAM,CAACgD,YAAP,GAAsBzH,eAAe,CACnC8F,WADmC,EAGnCC,WAHmC,EAInCZ,SAAS,CAACuC,iBAJyB,EAKnCvC,SAAS,CAACwC,WAAV,IAAyBxC,SAAS,CAACiC,SALA,EAMnC7E,IANmC,CAArC;AAQD;;AAED,MAAI4C,SAAS,CAACyC,aAAd,EAA6B;AAC3B,UAAMC,WAAW,GAAGvH,gBAAgB,CAAC6E,SAAD,EAAYjD,cAAZ,CAApC;AACA,UAAM;AAAC+E,MAAAA,cAAD;AAAiBrC,MAAAA;AAAjB,QAAiCH,MAAvC;AACA,UAAM;AAACqD,MAAAA,gBAAD;AAAmBC,MAAAA,kBAAnB;AAAuCC,MAAAA,MAAM,EAAEC;AAA/C,QAAiE9C,SAAvE;AAEAV,IAAAA,MAAM,CAACyD,SAAP,GAAmB,MAAnB;AACAzD,IAAAA,MAAM,CAAC0D,OAAP,GAAiB/H,kBAAkB,CACjC8B,cAAc,CAACkG,kBADkB,EAEjCL,kBAFiC,EAGjC;AAACM,MAAAA,WAAW,EAAEP,gBAAd;AAAgCD,MAAAA,WAAhC;AAA6CI,MAAAA;AAA7C,KAHiC,EAIjC1F,IAJiC,CAAnC;AAMAkC,IAAAA,MAAM,CAAC6D,cAAP,GAAwB;AACtB,qBAAe;AACbC,QAAAA,WAAW,EAAE;AACXC,UAAAA,KAAK,EAAE;AACLvG,YAAAA,IAAI,EAAE;AADD,WADI;AAIXwG,UAAAA,WAAW,EAAE;AACXC,YAAAA,WAAW,EAAEb,WADF;AAEXc,YAAAA,YAAY,EAAEd,WAFH;AAGXe,YAAAA,aAAa,EAAE;AAHJ;AAJF;AADA;AADO,KAAxB;;AAeA,QAAIhE,YAAY,IAAIqD,cAApB,EAAoC;AAClCxD,MAAAA,MAAM,CAACoE,YAAP,GAAsBjE,YAAtB;AACD;;AAED,QAAIqC,cAAJ,EAAoB;AAClBxC,MAAAA,MAAM,CAACqE,WAAP,GAAqB7B,cAArB;AACD;;AAED,QAAI/E,cAAc,CAAC6G,aAAnB,EAAkC;AAChCtE,MAAAA,MAAM,CAACuE,YAAP,GAAsB3I,cAAc,CAClCL,eAAe,CAACkC,cAAc,CAAC6G,aAAhB,EAA+B1F,SAA/B,EAA0C,IAA1C,EAAgDA,SAAhD,EAA2Dd,IAA3D,CADmB,CAApC;AAGD;AACF,GAxCD,MAwCO,IAAIN,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,SAAjC,EAA4C;AACjDwC,IAAAA,MAAM,CAACyD,SAAP,GAAmB,QAAnB;AACD;;AAED,MAAIlC,SAAS,IAAIA,SAAS,CAACtC,MAAvB,IAAiCsC,SAAS,CAAC,CAAD,CAAT,CAAaiD,KAAlD,EAAyD;AACvD,UAAM,CAACC,SAAD,EAAYC,cAAZ,IAA8BnD,SAApC;AACA,UAAMoD,cAAc,GAAG3H,EAAvB;AAEA,KAAC;AACC4H,MAAAA,SAAS,EAAE5E,MAAM,CAAC6E,wBADnB;AAECC,MAAAA,MAAM,EAAE9E,MAAM,CAAC+E,aAFhB;AAGCxE,MAAAA,KAAK,EAAEP,MAAM,CAACgF,YAHf;AAICC,MAAAA,YAAY,EAAEjF,MAAM,CAACkF,gBAJtB;AAKCC,MAAAA,IAAI,EAAEnF,MAAM,CAACoF;AALd,QAMGX,SANJ;AAOA,UAAM;AACJlE,MAAAA,KAAK,EAAE8E,iBADH;AAEJb,MAAAA,KAAK,EAAEc,cAFH;AAGJL,MAAAA,YAAY,EAAEM,qBAHV;AAIJJ,MAAAA,IAAI,EAAEK;AAJF,QAKFd,cAAc,IAAI,EALtB;AAOA1E,IAAAA,MAAM,CAACyF,OAAP,GAAiBhB,SAAS,CAACD,KAAV,IAAmBhJ,eAAe,CAACiJ,SAAS,CAACD,KAAX,EAAkB1G,IAAlB,CAAnD;AACA,UAAM4H,gBAAgB,GAAGJ,cAAc,IAAI9J,eAAe,CAAC8J,cAAD,EAAiBxH,IAAjB,CAA1D;AAEAkC,IAAAA,MAAM,CAACyD,SAAP,aAAsBzD,MAAM,CAACyD,SAA7B;AACAzD,IAAAA,MAAM,CAAC2F,gBAAP,GAA0B,MAA1B;AACA3F,IAAAA,MAAM,CAAC4F,cAAP,GAAwB,aAAxB;AACA5F,IAAAA,MAAM,CAAC6F,gBAAP,GAA0B;AAACC,MAAAA,GAAG,EAAE;AAAN,KAA1B;AACA9F,IAAAA,MAAM,CAAC+F,cAAP,GAAwB,GAAxB;AACA/F,IAAAA,MAAM,CAACgG,gBAAP,GAA0B,CAA1B;AAEAhG,IAAAA,MAAM,CAAC6D,cAAP,GAAwB,EACtB,GAAG7D,MAAM,CAAC6D,cADY;AAEtB,qBAAe;AACbrG,QAAAA,IAAI,EAAE1B,eADO;AAEbmK,QAAAA,UAAU,EAAE,CAAC/J,wBAAD,CAFC;AAGbgK,QAAAA,gBAAgB,EAAE,IAHL;AAIbvB,QAAAA,cAJa;AAOb,YAAI3E,MAAM,CAACwC,cAAP,GACA;AAAC2D,UAAAA,SAAS,EAAEnG,MAAM,CAACwC;AAAnB,SADA,GAEA;AAACxB,UAAAA,WAAW,EAAEN,SAAS,CAAC0F;AAAxB,SAFJ,CAPa;AAWb,YAAId,cAAc,IAAI;AACpBI,UAAAA,gBADoB;AAEpBL,UAAAA,iBAFoB;AAGpBG,UAAAA,kBAHoB;AAIpBD,UAAAA;AAJoB,SAAtB;AAXa;AAFO,KAAxB;AAqBD;;AAED,SAAOvF,MAAP;AACD;;AAED,SAASxB,iBAAT,CAA2B6H,WAA3B,EAAgD;AAC9C,SAAO;AACLvC,IAAAA,WAAW,EAAE;AAACwC,MAAAA,KAAK,EAAE;AAACC,QAAAA,OAAO,EAAE;AAACC,UAAAA,aAAa,mBAAYH,WAAZ;AAAd;AAAV;AAAR;AADR,GAAP;AAGD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize\n} from './layer-map';\nimport PointLabelLayer from '../layers/point-label-layer';\nimport {log} from '@deck.gl/core';\nimport {CollisionFilterExtension} from '@deck.gl/extensions';\nimport {assert} from '../utils';\nimport {MapDataset, MapLayerConfig, VisualChannels} from './types';\n\nconst collisionFilterExtension = new CollisionFilterExtension();\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets, token} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n token,\n layers: layers.reverse().map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset: MapDataset | null = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction createParametersProp(layerBlending, parameters: Record<string, any>) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = GL.FUNC_ADD;\n } else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = [GL.FUNC_SUBTRACT, GL.FUNC_ADD];\n }\n\n return Object.keys(parameters).length ? {parameters} : {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config: MapLayerConfig, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(\n id: string,\n type: string,\n config: MapLayerConfig,\n visualChannels: VisualChannels,\n data\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n strokeColorScale\n } = visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({geometry, properties}) => {\n const {type, coordinates} = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n\n if (heightField && visConfig.enable3d) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n const {customMarkersUrl, customMarkersRange, filled: useMaskedIcons} = visConfig;\n\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n {fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons},\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data)\n );\n }\n } else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const {\n color: getSecondaryColor,\n field: secondaryField,\n outlineColor: secondaryOutlineColor,\n size: secondarySizeScale\n } = secondaryLabel || {};\n\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = {sdf: true};\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n type: PointLabelLayer,\n extensions: [collisionFilterExtension],\n collisionEnabled: true,\n collisionGroup,\n\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? {getRadius: result.getPointRadius}\n : {radiusScale: visConfig.radius}),\n\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n })\n }\n };\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}}\n };\n}\n"],"file":"parseMap.js"}
1
+ {"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["AGGREGATION","getLayer","getColorAccessor","getColorValueAccessor","getSizeAccessor","getTextAccessor","OPACITY_MAP","opacityToAlpha","getIconUrlAccessor","negateAccessor","getMaxMarkerSize","PointLabelLayer","log","CollisionFilterExtension","assert","collisionFilterExtension","parseMap","json","keplerMapConfig","datasets","token","version","mapState","mapStyle","config","layers","layerBlending","interactionConfig","visState","id","title","description","createdAt","updatedAt","initialViewState","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","styleProps","createStyleProps","createInteractionProps","createChannelProps","createParametersProp","parameters","createLoadOptions","e","error","message","undefined","blendFunc","blendEquation","Object","keys","length","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","key","value","entries","result","stroked","getLineColor","getFillColor","colorAccessor","Array","isArray","color","opacityKey","opacity","visConfig","highlightColor","enable3d","colorField","colorScale","radiusField","radiusScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabel","colorScaleType","colorAggregation","getColorValue","getColorWeight","name","aggregation","colorRange","range","altitude","columns","dataTransform","features","forEach","geometry","properties","coordinates","getPointRadius","sizeAggregation","radiusRange","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","customMarkers","maxIconSize","customMarkersUrl","customMarkersRange","filled","useMaskedIcons","pointType","getIcon","customMarkersField","fallbackUrl","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","field","mainLabel","secondaryLabel","collisionGroup","alignment","getTextAlignmentBaseline","anchor","getTextAnchor","getTextColor","outlineColor","textOutlineColor","size","textSizeScale","getSecondaryColor","secondaryField","secondaryOutlineColor","secondarySizeScale","getText","getSecondaryText","textCharacterSet","textFontFamily","textFontSettings","sdf","textFontWeight","textOutlineWidth","extensions","collisionEnabled","getRadius","radius","accessToken","fetch","headers","Authorization"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize\n} from './layer-map';\nimport PointLabelLayer from '../layers/point-label-layer';\nimport {log} from '@deck.gl/core';\nimport {CollisionFilterExtension} from '@deck.gl/extensions';\nimport {assert} from '../utils';\nimport {MapDataset, MapLayerConfig, VisualChannels} from './types';\n\nconst collisionFilterExtension = new CollisionFilterExtension();\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets, token} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n token,\n layers: layers.reverse().map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset: MapDataset | null = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction createParametersProp(layerBlending, parameters: Record<string, any>) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = GL.FUNC_ADD;\n } else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = [GL.FUNC_SUBTRACT, GL.FUNC_ADD];\n }\n\n return Object.keys(parameters).length ? {parameters} : {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config: MapLayerConfig, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(\n id: string,\n type: string,\n config: MapLayerConfig,\n visualChannels: VisualChannels,\n data\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n strokeColorScale\n } = visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({geometry, properties}) => {\n const {type, coordinates} = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n\n if (heightField && visConfig.enable3d) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n const {customMarkersUrl, customMarkersRange, filled: useMaskedIcons} = visConfig;\n\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n {fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons},\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data)\n );\n }\n } else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const {\n color: getSecondaryColor,\n field: secondaryField,\n outlineColor: secondaryOutlineColor,\n size: secondarySizeScale\n } = secondaryLabel || {};\n\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = {sdf: true};\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n type: PointLabelLayer,\n extensions: [collisionFilterExtension],\n collisionEnabled: true,\n collisionGroup,\n\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? {getRadius: result.getPointRadius}\n : {radiusScale: visConfig.radius}),\n\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n })\n }\n };\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}}\n };\n}\n"],"file":"parseMap.js"}
@@ -34,7 +34,7 @@ export function setDefaultCredentials({
34
34
  break;
35
35
 
36
36
  default:
37
- throw new Error("Invalid API version ".concat(apiVersion, ". Use API_VERSIONS enum."));
37
+ throw new Error(`Invalid API version ${apiVersion}. Use API_VERSIONS enum.`);
38
38
  }
39
39
  }
40
40
  export function getDefaultCredentials() {
@@ -42,13 +42,13 @@ export function getDefaultCredentials() {
42
42
  }
43
43
 
44
44
  function buildUrlFromBase(apiBaseUrl, endpoint) {
45
- let suffix = "/v3/".concat(endpoint);
45
+ let suffix = `/v3/${endpoint}`;
46
46
 
47
47
  if (apiBaseUrl.endsWith('/')) {
48
48
  suffix = suffix.substring(1);
49
49
  }
50
50
 
51
- return "".concat(apiBaseUrl).concat(suffix);
51
+ return `${apiBaseUrl}${suffix}`;
52
52
  }
53
53
 
54
54
  export function buildMapsUrlFromBase(apiBaseUrl) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config.ts"],"names":["API_VERSIONS","defaultClassicCredentials","apiKey","region","username","defaultCloudNativeCredentials","apiBaseUrl","credentials","setDefaultCredentials","apiVersion","rest","V3","V1","V2","Error","getDefaultCredentials","buildUrlFromBase","endpoint","suffix","endsWith","substring","buildMapsUrlFromBase","buildStatsUrlFromBase"],"mappings":"AAAA,SAAQA,YAAR,QAA2B,uBAA3B;AAEA,OAAO,MAAMC,yBAAyB,GAAG;AACvCC,EAAAA,MAAM,EAAE,gBAD+B;AAEvCC,EAAAA,MAAM,EAAE,IAF+B;AAGvCC,EAAAA,QAAQ,EAAE;AAH6B,CAAlC;AAMP,OAAO,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,UAAU,EAAE;AAD+B,CAAtC;AAoBP,IAAIC,WAAwB,GAAG,EAA/B;AAEAC,qBAAqB,CAAC,EAAD,CAArB;AAEA,OAAO,SAASA,qBAAT,CAA+B;AAACC,EAAAA,UAAD;AAAa,KAAGC;AAAhB,CAA/B,EAA4E;AACjFD,EAAAA,UAAU,GAAGA,UAAU,IAAIT,YAAY,CAACW,EAAxC;;AAEA,UAAQF,UAAR;AACE,SAAKT,YAAY,CAACY,EAAlB;AACA,SAAKZ,YAAY,CAACa,EAAlB;AACEN,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGR,yBAAhB;AAA2C,WAAGS;AAA9C,OAAd;AACA;;AACF,SAAKV,YAAY,CAACW,EAAlB;AACEJ,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGJ,6BAAhB;AAA+C,WAAGK;AAAlD,OAAd;AACA;;AACF;AACE,YAAM,IAAII,KAAJ,+BAAiCL,UAAjC,8BAAN;AATJ;AAWD;AAED,OAAO,SAASM,qBAAT,GAA8C;AACnD,SAAOR,WAAP;AACD;;AAID,SAASS,gBAAT,CAA0BV,UAA1B,EAA8CW,QAA9C,EAAoE;AAClE,MAAIC,MAAM,iBAAUD,QAAV,CAAV;;AACA,MAAIX,UAAU,CAACa,QAAX,CAAoB,GAApB,CAAJ,EAA8B;AAC5BD,IAAAA,MAAM,GAAGA,MAAM,CAACE,SAAP,CAAiB,CAAjB,CAAT;AACD;;AAED,mBAAUd,UAAV,SAAuBY,MAAvB;AACD;;AAED,OAAO,SAASG,oBAAT,CAA8Bf,UAA9B,EAA0D;AAC/D,SAAOU,gBAAgB,CAACV,UAAD,EAAa,MAAb,CAAvB;AACD;AAED,OAAO,SAASgB,qBAAT,CAA+BhB,UAA/B,EAA2D;AAChE,SAAOU,gBAAgB,CAACV,UAAD,EAAa,OAAb,CAAvB;AACD","sourcesContent":["import {API_VERSIONS} from './api/maps-api-common';\n\nexport const defaultClassicCredentials = {\n apiKey: 'default_public',\n region: 'us',\n username: 'public'\n} as const;\n\nexport const defaultCloudNativeCredentials = {\n apiBaseUrl: 'https://gcp-us-east1.api.carto.com'\n} as const;\n\nexport interface ClassicCredentials {\n apiVersion: 'v1' | 'v2';\n apiKey: string;\n region: string;\n username: string;\n mapsUrl?: string;\n}\n\nexport interface CloudNativeCredentials {\n apiVersion: 'v3';\n apiBaseUrl: string;\n accessToken?: string;\n mapsUrl?: string;\n}\n\nexport type Credentials = ClassicCredentials | CloudNativeCredentials;\nlet credentials: Credentials = {} as Credentials;\n\nsetDefaultCredentials({});\n\nexport function setDefaultCredentials({apiVersion, ...rest}: Partial<Credentials>) {\n apiVersion = apiVersion || API_VERSIONS.V3;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n case API_VERSIONS.V2:\n credentials = {apiVersion, ...defaultClassicCredentials, ...rest};\n break;\n case API_VERSIONS.V3:\n credentials = {apiVersion, ...defaultCloudNativeCredentials, ...rest};\n break;\n default:\n throw new Error(`Invalid API version ${apiVersion}. Use API_VERSIONS enum.`);\n }\n}\n\nexport function getDefaultCredentials(): Credentials {\n return credentials;\n}\n\nexport type V3Endpoint = 'maps' | 'stats';\n\nfunction buildUrlFromBase(apiBaseUrl: string, endpoint: V3Endpoint) {\n let suffix = `/v3/${endpoint}`;\n if (apiBaseUrl.endsWith('/')) {\n suffix = suffix.substring(1);\n }\n\n return `${apiBaseUrl}${suffix}`;\n}\n\nexport function buildMapsUrlFromBase(apiBaseUrl: string): string {\n return buildUrlFromBase(apiBaseUrl, 'maps');\n}\n\nexport function buildStatsUrlFromBase(apiBaseUrl: string): string {\n return buildUrlFromBase(apiBaseUrl, 'stats');\n}\n"],"file":"config.js"}
1
+ {"version":3,"sources":["../../src/config.ts"],"names":["API_VERSIONS","defaultClassicCredentials","apiKey","region","username","defaultCloudNativeCredentials","apiBaseUrl","credentials","setDefaultCredentials","apiVersion","rest","V3","V1","V2","Error","getDefaultCredentials","buildUrlFromBase","endpoint","suffix","endsWith","substring","buildMapsUrlFromBase","buildStatsUrlFromBase"],"mappings":"AAAA,SAAQA,YAAR,QAA2B,uBAA3B;AAEA,OAAO,MAAMC,yBAAyB,GAAG;AACvCC,EAAAA,MAAM,EAAE,gBAD+B;AAEvCC,EAAAA,MAAM,EAAE,IAF+B;AAGvCC,EAAAA,QAAQ,EAAE;AAH6B,CAAlC;AAMP,OAAO,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,UAAU,EAAE;AAD+B,CAAtC;AAoBP,IAAIC,WAAwB,GAAG,EAA/B;AAEAC,qBAAqB,CAAC,EAAD,CAArB;AAEA,OAAO,SAASA,qBAAT,CAA+B;AAACC,EAAAA,UAAD;AAAa,KAAGC;AAAhB,CAA/B,EAA4E;AACjFD,EAAAA,UAAU,GAAGA,UAAU,IAAIT,YAAY,CAACW,EAAxC;;AAEA,UAAQF,UAAR;AACE,SAAKT,YAAY,CAACY,EAAlB;AACA,SAAKZ,YAAY,CAACa,EAAlB;AACEN,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGR,yBAAhB;AAA2C,WAAGS;AAA9C,OAAd;AACA;;AACF,SAAKV,YAAY,CAACW,EAAlB;AACEJ,MAAAA,WAAW,GAAG;AAACE,QAAAA,UAAD;AAAa,WAAGJ,6BAAhB;AAA+C,WAAGK;AAAlD,OAAd;AACA;;AACF;AACE,YAAM,IAAII,KAAJ,CAAW,uBAAsBL,UAAW,0BAA5C,CAAN;AATJ;AAWD;AAED,OAAO,SAASM,qBAAT,GAA8C;AACnD,SAAOR,WAAP;AACD;;AAID,SAASS,gBAAT,CAA0BV,UAA1B,EAA8CW,QAA9C,EAAoE;AAClE,MAAIC,MAAM,GAAI,OAAMD,QAAS,EAA7B;;AACA,MAAIX,UAAU,CAACa,QAAX,CAAoB,GAApB,CAAJ,EAA8B;AAC5BD,IAAAA,MAAM,GAAGA,MAAM,CAACE,SAAP,CAAiB,CAAjB,CAAT;AACD;;AAED,SAAQ,GAAEd,UAAW,GAAEY,MAAO,EAA9B;AACD;;AAED,OAAO,SAASG,oBAAT,CAA8Bf,UAA9B,EAA0D;AAC/D,SAAOU,gBAAgB,CAACV,UAAD,EAAa,MAAb,CAAvB;AACD;AAED,OAAO,SAASgB,qBAAT,CAA+BhB,UAA/B,EAA2D;AAChE,SAAOU,gBAAgB,CAACV,UAAD,EAAa,OAAb,CAAvB;AACD","sourcesContent":["import {API_VERSIONS} from './api/maps-api-common';\n\nexport const defaultClassicCredentials = {\n apiKey: 'default_public',\n region: 'us',\n username: 'public'\n} as const;\n\nexport const defaultCloudNativeCredentials = {\n apiBaseUrl: 'https://gcp-us-east1.api.carto.com'\n} as const;\n\nexport interface ClassicCredentials {\n apiVersion: 'v1' | 'v2';\n apiKey: string;\n region: string;\n username: string;\n mapsUrl?: string;\n}\n\nexport interface CloudNativeCredentials {\n apiVersion: 'v3';\n apiBaseUrl: string;\n accessToken?: string;\n mapsUrl?: string;\n}\n\nexport type Credentials = ClassicCredentials | CloudNativeCredentials;\nlet credentials: Credentials = {} as Credentials;\n\nsetDefaultCredentials({});\n\nexport function setDefaultCredentials({apiVersion, ...rest}: Partial<Credentials>) {\n apiVersion = apiVersion || API_VERSIONS.V3;\n\n switch (apiVersion) {\n case API_VERSIONS.V1:\n case API_VERSIONS.V2:\n credentials = {apiVersion, ...defaultClassicCredentials, ...rest};\n break;\n case API_VERSIONS.V3:\n credentials = {apiVersion, ...defaultCloudNativeCredentials, ...rest};\n break;\n default:\n throw new Error(`Invalid API version ${apiVersion}. Use API_VERSIONS enum.`);\n }\n}\n\nexport function getDefaultCredentials(): Credentials {\n return credentials;\n}\n\nexport type V3Endpoint = 'maps' | 'stats';\n\nfunction buildUrlFromBase(apiBaseUrl: string, endpoint: V3Endpoint) {\n let suffix = `/v3/${endpoint}`;\n if (apiBaseUrl.endsWith('/')) {\n suffix = suffix.substring(1);\n }\n\n return `${apiBaseUrl}${suffix}`;\n}\n\nexport function buildMapsUrlFromBase(apiBaseUrl: string): string {\n return buildUrlFromBase(apiBaseUrl, 'maps');\n}\n\nexport function buildStatsUrlFromBase(apiBaseUrl: string): string {\n return buildUrlFromBase(apiBaseUrl, 'stats');\n}\n"],"file":"config.js"}