@deck.gl/carto 9.0.40 → 9.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/api/basemap.d.ts +2 -1
  2. package/dist/api/basemap.d.ts.map +1 -1
  3. package/dist/api/basemap.js +4 -0
  4. package/dist/api/basemap.js.map +1 -0
  5. package/dist/api/fetch-map.d.ts.map +1 -1
  6. package/dist/api/fetch-map.js +33 -28
  7. package/dist/api/fetch-map.js.map +1 -0
  8. package/dist/api/index.d.ts +1 -4
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +4 -2
  11. package/dist/api/index.js.map +1 -0
  12. package/dist/api/layer-map.d.ts.map +1 -1
  13. package/dist/api/layer-map.js +7 -3
  14. package/dist/api/layer-map.js.map +1 -0
  15. package/dist/api/parse-map.d.ts.map +1 -1
  16. package/dist/api/parse-map.js +4 -0
  17. package/dist/api/parse-map.js.map +1 -0
  18. package/dist/api/types.d.ts +0 -56
  19. package/dist/api/types.d.ts.map +1 -1
  20. package/dist/api/types.js +5 -20
  21. package/dist/api/types.js.map +1 -0
  22. package/dist/basemap.d.ts +2 -1
  23. package/dist/basemap.d.ts.map +1 -1
  24. package/dist/basemap.js +5 -1
  25. package/dist/basemap.js.map +1 -0
  26. package/dist/cartoRasterTile-worker.js +147 -18
  27. package/dist/cartoSpatialTile-worker.js +150 -19
  28. package/dist/cartoVectorTile-worker.js +151 -19
  29. package/dist/constants.d.ts +0 -3
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/constants.js +4 -3
  32. package/dist/constants.js.map +1 -0
  33. package/dist/dist.dev.js +4262 -3235
  34. package/dist/index.cjs +263 -555
  35. package/dist/index.cjs.map +4 -4
  36. package/dist/index.d.ts +20 -21
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +12 -7
  39. package/dist/index.js.map +1 -0
  40. package/dist/layers/cluster-tile-layer.d.ts +1 -1
  41. package/dist/layers/cluster-tile-layer.d.ts.map +1 -1
  42. package/dist/layers/cluster-tile-layer.js +5 -0
  43. package/dist/layers/cluster-tile-layer.js.map +1 -0
  44. package/dist/layers/cluster-utils.d.ts.map +1 -1
  45. package/dist/layers/cluster-utils.js +4 -0
  46. package/dist/layers/cluster-utils.js.map +1 -0
  47. package/dist/layers/h3-tile-layer.d.ts +1 -1
  48. package/dist/layers/h3-tile-layer.d.ts.map +1 -1
  49. package/dist/layers/h3-tile-layer.js +4 -0
  50. package/dist/layers/h3-tile-layer.js.map +1 -0
  51. package/dist/layers/h3-tileset-2d.d.ts.map +1 -1
  52. package/dist/layers/h3-tileset-2d.js +4 -0
  53. package/dist/layers/h3-tileset-2d.js.map +1 -0
  54. package/dist/layers/heatmap-tile-layer.d.ts +1 -1
  55. package/dist/layers/heatmap-tile-layer.d.ts.map +1 -1
  56. package/dist/layers/heatmap-tile-layer.js +24 -7
  57. package/dist/layers/heatmap-tile-layer.js.map +1 -0
  58. package/dist/layers/heatmap.d.ts +3 -3
  59. package/dist/layers/heatmap.d.ts.map +1 -1
  60. package/dist/layers/heatmap.js +70 -36
  61. package/dist/layers/heatmap.js.map +1 -0
  62. package/dist/layers/point-label-layer.d.ts.map +1 -1
  63. package/dist/layers/point-label-layer.js +6 -2
  64. package/dist/layers/point-label-layer.js.map +1 -0
  65. package/dist/layers/post-process-utils.d.ts +1 -1
  66. package/dist/layers/post-process-utils.d.ts.map +1 -1
  67. package/dist/layers/post-process-utils.js +11 -6
  68. package/dist/layers/post-process-utils.js.map +1 -0
  69. package/dist/layers/quadbin-layer.d.ts.map +1 -1
  70. package/dist/layers/quadbin-layer.js +4 -0
  71. package/dist/layers/quadbin-layer.js.map +1 -0
  72. package/dist/layers/quadbin-tile-layer.d.ts +1 -1
  73. package/dist/layers/quadbin-tile-layer.d.ts.map +1 -1
  74. package/dist/layers/quadbin-tile-layer.js +4 -0
  75. package/dist/layers/quadbin-tile-layer.js.map +1 -0
  76. package/dist/layers/quadbin-tileset-2d.d.ts.map +1 -1
  77. package/dist/layers/quadbin-tileset-2d.js +4 -0
  78. package/dist/layers/quadbin-tileset-2d.js.map +1 -0
  79. package/dist/layers/quadbin-utils.d.ts.map +1 -1
  80. package/dist/layers/quadbin-utils.js +4 -0
  81. package/dist/layers/quadbin-utils.js.map +1 -0
  82. package/dist/layers/raster-layer-vertex.glsl.d.ts +1 -1
  83. package/dist/layers/raster-layer-vertex.glsl.d.ts.map +1 -1
  84. package/dist/layers/raster-layer-vertex.glsl.js +21 -25
  85. package/dist/layers/raster-layer-vertex.glsl.js.map +1 -0
  86. package/dist/layers/raster-layer.d.ts +6 -6
  87. package/dist/layers/raster-layer.d.ts.map +1 -1
  88. package/dist/layers/raster-layer.js +7 -1
  89. package/dist/layers/raster-layer.js.map +1 -0
  90. package/dist/layers/raster-tile-layer.d.ts +1 -1
  91. package/dist/layers/raster-tile-layer.d.ts.map +1 -1
  92. package/dist/layers/raster-tile-layer.js +4 -0
  93. package/dist/layers/raster-tile-layer.js.map +1 -0
  94. package/dist/layers/schema/carto-properties-tile-loader.d.ts.map +1 -1
  95. package/dist/layers/schema/carto-properties-tile-loader.js +4 -0
  96. package/dist/layers/schema/carto-properties-tile-loader.js.map +1 -0
  97. package/dist/layers/schema/carto-properties-tile.d.ts.map +1 -1
  98. package/dist/layers/schema/carto-properties-tile.js +4 -0
  99. package/dist/layers/schema/carto-properties-tile.js.map +1 -0
  100. package/dist/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
  101. package/dist/layers/schema/carto-raster-tile-loader.js +6 -1
  102. package/dist/layers/schema/carto-raster-tile-loader.js.map +1 -0
  103. package/dist/layers/schema/carto-raster-tile.d.ts.map +1 -1
  104. package/dist/layers/schema/carto-raster-tile.js +4 -0
  105. package/dist/layers/schema/carto-raster-tile.js.map +1 -0
  106. package/dist/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  107. package/dist/layers/schema/carto-spatial-tile-loader.js +5 -1
  108. package/dist/layers/schema/carto-spatial-tile-loader.js.map +1 -0
  109. package/dist/layers/schema/carto-spatial-tile.d.ts.map +1 -1
  110. package/dist/layers/schema/carto-spatial-tile.js +4 -0
  111. package/dist/layers/schema/carto-spatial-tile.js.map +1 -0
  112. package/dist/layers/schema/carto-tile.d.ts.map +1 -1
  113. package/dist/layers/schema/carto-tile.js +4 -0
  114. package/dist/layers/schema/carto-tile.js.map +1 -0
  115. package/dist/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
  116. package/dist/layers/schema/carto-vector-tile-loader.js +5 -1
  117. package/dist/layers/schema/carto-vector-tile-loader.js.map +1 -0
  118. package/dist/layers/schema/fast-pbf.d.ts.map +1 -1
  119. package/dist/layers/schema/fast-pbf.js +4 -0
  120. package/dist/layers/schema/fast-pbf.js.map +1 -0
  121. package/dist/layers/schema/spatialjson-utils.d.ts.map +1 -1
  122. package/dist/layers/schema/spatialjson-utils.js +4 -0
  123. package/dist/layers/schema/spatialjson-utils.js.map +1 -0
  124. package/dist/layers/schema/tile-loader-utils.d.ts.map +1 -1
  125. package/dist/layers/schema/tile-loader-utils.js +4 -0
  126. package/dist/layers/schema/tile-loader-utils.js.map +1 -0
  127. package/dist/layers/spatial-index-tile-layer.d.ts.map +1 -1
  128. package/dist/layers/spatial-index-tile-layer.js +4 -0
  129. package/dist/layers/spatial-index-tile-layer.js.map +1 -0
  130. package/dist/layers/utils.d.ts +2 -2
  131. package/dist/layers/utils.d.ts.map +1 -1
  132. package/dist/layers/utils.js +4 -0
  133. package/dist/layers/utils.js.map +1 -0
  134. package/dist/layers/vector-tile-layer.d.ts +1 -1
  135. package/dist/layers/vector-tile-layer.d.ts.map +1 -1
  136. package/dist/layers/vector-tile-layer.js +4 -0
  137. package/dist/layers/vector-tile-layer.js.map +1 -0
  138. package/dist/style/color-bins-style.d.ts.map +1 -1
  139. package/dist/style/color-bins-style.js +4 -0
  140. package/dist/style/color-bins-style.js.map +1 -0
  141. package/dist/style/color-categories-style.d.ts.map +1 -1
  142. package/dist/style/color-categories-style.js +4 -0
  143. package/dist/style/color-categories-style.js.map +1 -0
  144. package/dist/style/color-continuous-style.d.ts.map +1 -1
  145. package/dist/style/color-continuous-style.js +4 -0
  146. package/dist/style/color-continuous-style.js.map +1 -0
  147. package/dist/style/palette.d.ts.map +1 -1
  148. package/dist/style/palette.js +4 -0
  149. package/dist/style/palette.js.map +1 -0
  150. package/dist/style/utils.d.ts.map +1 -1
  151. package/dist/style/utils.js +4 -0
  152. package/dist/style/utils.js.map +1 -0
  153. package/dist/utils.d.ts.map +1 -1
  154. package/dist/utils.js +4 -0
  155. package/dist/utils.js.map +1 -0
  156. package/dist/workers/cartoRasterTile.js +4 -0
  157. package/dist/workers/cartoRasterTile.js.map +1 -0
  158. package/dist/workers/cartoSpatialTile.js +4 -0
  159. package/dist/workers/cartoSpatialTile.js.map +1 -0
  160. package/dist/workers/cartoVectorTile.js +4 -0
  161. package/dist/workers/cartoVectorTile.js.map +1 -0
  162. package/dist.min.js +113 -73
  163. package/package.json +13 -11
  164. package/src/api/basemap.ts +6 -1
  165. package/src/api/fetch-map.ts +56 -61
  166. package/src/api/index.ts +5 -13
  167. package/src/api/layer-map.ts +7 -3
  168. package/src/api/parse-map.ts +4 -0
  169. package/src/api/types.ts +4 -75
  170. package/src/basemap.ts +6 -2
  171. package/src/constants.ts +4 -4
  172. package/src/index.ts +19 -18
  173. package/src/layers/cluster-tile-layer.ts +6 -1
  174. package/src/layers/cluster-utils.ts +4 -0
  175. package/src/layers/h3-tile-layer.ts +5 -1
  176. package/src/layers/h3-tileset-2d.ts +4 -0
  177. package/src/layers/heatmap-tile-layer.ts +29 -8
  178. package/src/layers/heatmap.ts +8 -2
  179. package/src/layers/point-label-layer.ts +6 -2
  180. package/src/layers/post-process-utils.ts +11 -6
  181. package/src/layers/quadbin-layer.ts +4 -0
  182. package/src/layers/quadbin-tile-layer.ts +5 -1
  183. package/src/layers/quadbin-tileset-2d.ts +4 -0
  184. package/src/layers/quadbin-utils.ts +4 -0
  185. package/src/layers/raster-layer-vertex.glsl.ts +21 -27
  186. package/src/layers/raster-layer.ts +7 -1
  187. package/src/layers/raster-tile-layer.ts +6 -2
  188. package/src/layers/schema/carto-properties-tile-loader.ts +4 -0
  189. package/src/layers/schema/carto-properties-tile.ts +4 -0
  190. package/src/layers/schema/carto-raster-tile-loader.ts +7 -1
  191. package/src/layers/schema/carto-raster-tile.ts +4 -0
  192. package/src/layers/schema/carto-spatial-tile-loader.ts +4 -0
  193. package/src/layers/schema/carto-spatial-tile.ts +4 -0
  194. package/src/layers/schema/carto-tile.ts +4 -0
  195. package/src/layers/schema/carto-vector-tile-loader.ts +4 -0
  196. package/src/layers/schema/fast-pbf.ts +4 -0
  197. package/src/layers/schema/spatialjson-utils.ts +4 -0
  198. package/src/layers/schema/tile-loader-utils.ts +4 -0
  199. package/src/layers/spatial-index-tile-layer.ts +4 -0
  200. package/src/layers/utils.ts +5 -1
  201. package/src/layers/vector-tile-layer.ts +5 -1
  202. package/src/style/color-bins-style.ts +4 -0
  203. package/src/style/color-categories-style.ts +4 -0
  204. package/src/style/color-continuous-style.ts +4 -0
  205. package/src/style/palette.ts +4 -0
  206. package/src/style/utils.ts +4 -0
  207. package/src/utils.ts +4 -0
  208. package/src/workers/cartoRasterTile.ts +4 -0
  209. package/src/workers/cartoSpatialTile.ts +4 -0
  210. package/src/workers/cartoVectorTile.ts +4 -0
  211. package/dist/api/carto-api-error.d.ts +0 -19
  212. package/dist/api/carto-api-error.d.ts.map +0 -1
  213. package/dist/api/carto-api-error.js +0 -48
  214. package/dist/api/common.d.ts +0 -5
  215. package/dist/api/common.d.ts.map +0 -1
  216. package/dist/api/common.js +0 -5
  217. package/dist/api/endpoints.d.ts +0 -23
  218. package/dist/api/endpoints.d.ts.map +0 -1
  219. package/dist/api/endpoints.js +0 -22
  220. package/dist/api/query.d.ts +0 -4
  221. package/dist/api/query.d.ts.map +0 -1
  222. package/dist/api/query.js +0 -26
  223. package/dist/api/request-with-parameters.d.ts +0 -9
  224. package/dist/api/request-with-parameters.d.ts.map +0 -1
  225. package/dist/api/request-with-parameters.js +0 -86
  226. package/dist/sources/base-source.d.ts +0 -5
  227. package/dist/sources/base-source.d.ts.map +0 -1
  228. package/dist/sources/base-source.js +0 -60
  229. package/dist/sources/boundary-query-source.d.ts +0 -10
  230. package/dist/sources/boundary-query-source.d.ts.map +0 -1
  231. package/dist/sources/boundary-query-source.js +0 -18
  232. package/dist/sources/boundary-table-source.d.ts +0 -8
  233. package/dist/sources/boundary-table-source.d.ts.map +0 -1
  234. package/dist/sources/boundary-table-source.js +0 -15
  235. package/dist/sources/h3-query-source.d.ts +0 -4
  236. package/dist/sources/h3-query-source.d.ts.map +0 -1
  237. package/dist/sources/h3-query-source.js +0 -22
  238. package/dist/sources/h3-table-source.d.ts +0 -4
  239. package/dist/sources/h3-table-source.d.ts.map +0 -1
  240. package/dist/sources/h3-table-source.js +0 -19
  241. package/dist/sources/h3-tileset-source.d.ts +0 -4
  242. package/dist/sources/h3-tileset-source.d.ts.map +0 -1
  243. package/dist/sources/h3-tileset-source.js +0 -6
  244. package/dist/sources/index.d.ts +0 -28
  245. package/dist/sources/index.d.ts.map +0 -1
  246. package/dist/sources/index.js +0 -13
  247. package/dist/sources/quadbin-query-source.d.ts +0 -4
  248. package/dist/sources/quadbin-query-source.d.ts.map +0 -1
  249. package/dist/sources/quadbin-query-source.js +0 -22
  250. package/dist/sources/quadbin-table-source.d.ts +0 -4
  251. package/dist/sources/quadbin-table-source.d.ts.map +0 -1
  252. package/dist/sources/quadbin-table-source.js +0 -19
  253. package/dist/sources/quadbin-tileset-source.d.ts +0 -4
  254. package/dist/sources/quadbin-tileset-source.d.ts.map +0 -1
  255. package/dist/sources/quadbin-tileset-source.js +0 -6
  256. package/dist/sources/raster-source.d.ts +0 -4
  257. package/dist/sources/raster-source.d.ts.map +0 -1
  258. package/dist/sources/raster-source.js +0 -9
  259. package/dist/sources/types.d.ts +0 -219
  260. package/dist/sources/types.d.ts.map +0 -1
  261. package/dist/sources/types.js +0 -1
  262. package/dist/sources/vector-query-source.d.ts +0 -4
  263. package/dist/sources/vector-query-source.d.ts.map +0 -1
  264. package/dist/sources/vector-query-source.js +0 -22
  265. package/dist/sources/vector-table-source.d.ts +0 -4
  266. package/dist/sources/vector-table-source.d.ts.map +0 -1
  267. package/dist/sources/vector-table-source.js +0 -19
  268. package/dist/sources/vector-tileset-source.d.ts +0 -4
  269. package/dist/sources/vector-tileset-source.d.ts.map +0 -1
  270. package/dist/sources/vector-tileset-source.js +0 -6
  271. package/src/api/carto-api-error.ts +0 -68
  272. package/src/api/common.ts +0 -6
  273. package/src/api/endpoints.ts +0 -69
  274. package/src/api/query.ts +0 -42
  275. package/src/api/request-with-parameters.ts +0 -117
  276. package/src/sources/base-source.ts +0 -79
  277. package/src/sources/boundary-query-source.ts +0 -39
  278. package/src/sources/boundary-table-source.ts +0 -33
  279. package/src/sources/h3-query-source.ts +0 -55
  280. package/src/sources/h3-table-source.ts +0 -51
  281. package/src/sources/h3-tileset-source.ts +0 -14
  282. package/src/sources/index.ts +0 -45
  283. package/src/sources/quadbin-query-source.ts +0 -56
  284. package/src/sources/quadbin-table-source.ts +0 -52
  285. package/src/sources/quadbin-tileset-source.ts +0 -14
  286. package/src/sources/raster-source.ts +0 -17
  287. package/src/sources/types.ts +0 -231
  288. package/src/sources/vector-query-source.ts +0 -57
  289. package/src/sources/vector-table-source.ts +0 -51
  290. package/src/sources/vector-tileset-source.ts +0 -14
@@ -1,219 +0,0 @@
1
- import type { Feature } from 'geojson';
2
- import type { Filters, Format, MapInstantiation, QueryParameters } from "../api/types.js";
3
- export type SourceRequiredOptions = {
4
- /** Carto platform access token. */
5
- accessToken: string;
6
- /** Data warehouse connection name in Carto platform. */
7
- connectionName: string;
8
- };
9
- export type SourceOptionalOptions = {
10
- /**
11
- * Base URL of the CARTO Maps API.
12
- *
13
- * Example for account located in EU-west region: `https://gcp-eu-west1.api.carto.com`
14
- *
15
- * @default https://gcp-us-east1.api.carto.com
16
- */
17
- apiBaseUrl: string;
18
- /**
19
- * Custom HTTP headers added to map instantiation and data requests.
20
- */
21
- headers: Record<string, string>;
22
- /**
23
- * Cache buster value returned by map instantiation.
24
- *
25
- * Carto source saves `cache` value of map instantiation response in `cache.value`, so it can be used to
26
- * check if underlying map data has changed between distinct source requests.
27
- */
28
- cache?: {
29
- value?: number;
30
- };
31
- clientId: string;
32
- /** @deprecated use `query` instead **/
33
- format: Format;
34
- /**
35
- * Maximum URL character length. Above this limit, requests use POST.
36
- * Used to avoid browser and CDN limits.
37
- * @default {@link DEFAULT_MAX_LENGTH_URL}
38
- */
39
- maxLengthURL?: number;
40
- };
41
- export type SourceOptions = SourceRequiredOptions & Partial<SourceOptionalOptions>;
42
- export type AggregationOptions = {
43
- /**
44
- * Defines the aggregation expressions that will be calculated from the resulting columns on each grid cell.
45
- *
46
- * Example:
47
- *
48
- * sum(pop) as total_population, avg(rev) as average_revenue
49
- */
50
- aggregationExp: string;
51
- /**
52
- * Defines the tile aggregation resolution.
53
- *
54
- * @default 6 for quadbin and 4 for h3 sources
55
- */
56
- aggregationResLevel?: number;
57
- };
58
- export type FilterOptions = {
59
- /**
60
- * Filters to apply to the data source on the server
61
- */
62
- filters?: Filters;
63
- };
64
- export type QuerySourceOptions = {
65
- /**
66
- * The column name and the type of geospatial support.
67
- *
68
- * If not present, defaults to `'geom'` for generic queries, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
69
- */
70
- spatialDataColumn?: string;
71
- /** SQL query. */
72
- sqlQuery: string;
73
- /**
74
- * Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
75
- * quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
76
- * the quantization grid proportionately.
77
- *
78
- * Supported `tileResolution` values, with corresponding grid sizes:
79
- *
80
- * - 0.25: 256x256
81
- * - 0.5: 512x512
82
- * - 1: 1024x1024
83
- * - 2: 2048x2048
84
- * - 4: 4096x4096
85
- */
86
- tileResolution?: TileResolution;
87
- /**
88
- * Values for named or positional paramteres in the query.
89
- *
90
- * The way query parameters are determined by data warehouse.
91
- *
92
- * * BigQuery has named query parameters, specified with a dictionary, and referenced by key (`@key`)
93
- *
94
- * ```
95
- * sqlQuery: "SELECT * FROM carto-demo-data.demo_tables.retail_stores WHERE storetype = ⁣@type AND revenue > ⁣@minRevenue"
96
- * queryParameters: { type: 'Supermarket', minRevenue: 1000000 }
97
- * ```
98
- * * Snowflake supports positional parameters, in the form `:1`, `:2`, etc.
99
- *
100
- * ```
101
- * sqlQuery: "SELECT * FROM demo_db.public.import_retail_stores WHERE storetype = :2 AND revenue > :1
102
- * queryParameters: [100000, "Supermarket"]
103
- * ```
104
- * * Postgres and Redhisft supports positional parameters, but in the form `$1`, `$2`, etc.
105
- *
106
- * ```
107
- * sqlQuery: "SELECT * FROM carto_demo_data.demo_tables.retail_stores WHERE storetype = $2 AND revenue > $1
108
- * queryParameters: [100000, "Supermarket"]
109
- * ```
110
- */
111
- queryParameters?: QueryParameters;
112
- };
113
- export type TableSourceOptions = {
114
- /**
115
- * Fully qualified name of table.
116
- */
117
- tableName: string;
118
- /**
119
- * The column name and the type of geospatial support.
120
- *
121
- * If not present, defaults to `'geom'` for generic tables, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
122
- */
123
- spatialDataColumn?: string;
124
- /**
125
- * Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
126
- * quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
127
- * the quantization grid proportionately.
128
- *
129
- * Supported `tileResolution` values, with corresponding grid sizes:
130
- *
131
- * - 0.25: 256x256
132
- * - 0.5: 512x512
133
- * - 1: 1024x1024
134
- * - 2: 2048x2048
135
- * - 4: 4096x4096
136
- */
137
- tileResolution?: TileResolution;
138
- };
139
- export type TilesetSourceOptions = {
140
- /**
141
- * Fully qualified name of tileset.
142
- */
143
- tableName: string;
144
- };
145
- export type ColumnsOption = {
146
- /**
147
- * Columns to retrieve from the table.
148
- *
149
- * If not present, all columns are returned.
150
- */
151
- columns?: string[];
152
- };
153
- export type SpatialDataType = 'geo' | 'h3' | 'quadbin';
154
- export type TilejsonMapInstantiation = MapInstantiation & {
155
- tilejson: {
156
- url: string[];
157
- };
158
- };
159
- export type TileResolution = 0.25 | 0.5 | 1 | 2 | 4;
160
- export interface Tilejson {
161
- tilejson: string;
162
- name: string;
163
- description: string;
164
- version: string;
165
- attribution: string;
166
- scheme: string;
167
- tiles: string[];
168
- properties_tiles: string[];
169
- minresolution: number;
170
- maxresolution: number;
171
- minzoom: number;
172
- maxzoom: number;
173
- bounds: [number, number, number, number];
174
- center: [number, number, number];
175
- vector_layers: VectorLayer[];
176
- tilestats: Tilestats;
177
- tileResolution?: TileResolution;
178
- }
179
- export interface Tilestats {
180
- layerCount: number;
181
- layers: Layer[];
182
- }
183
- export interface Layer {
184
- layer: string;
185
- count: number;
186
- attributeCount: number;
187
- attributes: Attribute[];
188
- }
189
- export interface Attribute {
190
- attribute: string;
191
- type: string;
192
- }
193
- export interface VectorLayer {
194
- id: string;
195
- minzoom: number;
196
- maxzoom: number;
197
- fields: Record<string, string>;
198
- }
199
- export type TilejsonResult = Tilejson & {
200
- accessToken: string;
201
- };
202
- export type GeojsonResult = {
203
- type: 'FeatureCollection';
204
- features: Feature[];
205
- };
206
- export type JsonResult = any[];
207
- export type QueryResult = {
208
- meta: {
209
- cacheHit: boolean;
210
- location: string;
211
- totalBytesProcessed: string;
212
- };
213
- rows: Record<string, any>[];
214
- schema: {
215
- name: string;
216
- type: string;
217
- }[];
218
- };
219
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,4 +0,0 @@
1
- import type { FilterOptions, SourceOptions, QuerySourceOptions, TilejsonResult, ColumnsOption } from "./types.js";
2
- export type VectorQuerySourceOptions = SourceOptions & QuerySourceOptions & FilterOptions & ColumnsOption;
3
- export declare const vectorQuerySource: (options: VectorQuerySourceOptions) => Promise<TilejsonResult>;
4
- //# sourceMappingURL=vector-query-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-query-source.d.ts","sourceRoot":"","sources":["../../src/sources/vector-query-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EAElB,cAAc,EACd,aAAa,EACd,mBAAgB;AAEjB,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAClD,kBAAkB,GAClB,aAAa,GACb,aAAa,CAAC;AAYhB,eAAO,MAAM,iBAAiB,YACnB,wBAAwB,KAChC,QAAQ,cAAc,CA2BxB,CAAC"}
@@ -1,22 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import { DEFAULT_TILE_RESOLUTION } from "../constants.js";
3
- import { baseSource } from "./base-source.js";
4
- export const vectorQuerySource = async function (options) {
5
- const { columns, filters, spatialDataColumn = 'geom', sqlQuery, tileResolution = DEFAULT_TILE_RESOLUTION, queryParameters } = options;
6
- const urlParameters = {
7
- spatialDataColumn,
8
- spatialDataType: 'geo',
9
- tileResolution: tileResolution.toString(),
10
- q: sqlQuery
11
- };
12
- if (columns) {
13
- urlParameters.columns = columns.join(',');
14
- }
15
- if (filters) {
16
- urlParameters.filters = filters;
17
- }
18
- if (queryParameters) {
19
- urlParameters.queryParameters = queryParameters;
20
- }
21
- return baseSource('query', options, urlParameters);
22
- };
@@ -1,4 +0,0 @@
1
- import type { FilterOptions, ColumnsOption, SourceOptions, TableSourceOptions, TilejsonResult } from "./types.js";
2
- export type VectorTableSourceOptions = SourceOptions & TableSourceOptions & FilterOptions & ColumnsOption;
3
- export declare const vectorTableSource: (options: VectorTableSourceOptions) => Promise<TilejsonResult>;
4
- //# sourceMappingURL=vector-table-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-table-source.d.ts","sourceRoot":"","sources":["../../src/sources/vector-table-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EAEb,kBAAkB,EAClB,cAAc,EACf,mBAAgB;AAEjB,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAClD,kBAAkB,GAClB,aAAa,GACb,aAAa,CAAC;AAUhB,eAAO,MAAM,iBAAiB,YACnB,wBAAwB,KAChC,QAAQ,cAAc,CAuBxB,CAAC"}
@@ -1,19 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import { DEFAULT_TILE_RESOLUTION } from "../constants.js";
3
- import { baseSource } from "./base-source.js";
4
- export const vectorTableSource = async function (options) {
5
- const { columns, filters, spatialDataColumn = 'geom', tableName, tileResolution = DEFAULT_TILE_RESOLUTION } = options;
6
- const urlParameters = {
7
- name: tableName,
8
- spatialDataColumn,
9
- spatialDataType: 'geo',
10
- tileResolution: tileResolution.toString()
11
- };
12
- if (columns) {
13
- urlParameters.columns = columns.join(',');
14
- }
15
- if (filters) {
16
- urlParameters.filters = filters;
17
- }
18
- return baseSource('table', options, urlParameters);
19
- };
@@ -1,4 +0,0 @@
1
- import type { SourceOptions, TilesetSourceOptions, TilejsonResult } from "./types.js";
2
- export type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;
3
- export declare const vectorTilesetSource: (options: VectorTilesetSourceOptions) => Promise<TilejsonResult>;
4
- //# sourceMappingURL=vector-tileset-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-tileset-source.d.ts","sourceRoot":"","sources":["../../src/sources/vector-tileset-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAC,mBAAgB;AAEjF,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG,oBAAoB,CAAC;AAG9E,eAAO,MAAM,mBAAmB,YACrB,0BAA0B,KAClC,QAAQ,cAAc,CAKxB,CAAC"}
@@ -1,6 +0,0 @@
1
- import { baseSource } from "./base-source.js";
2
- export const vectorTilesetSource = async function (options) {
3
- const { tableName } = options;
4
- const urlParameters = { name: tableName };
5
- return baseSource('tileset', options, urlParameters);
6
- };
@@ -1,68 +0,0 @@
1
- import type {APIErrorContext} from './types';
2
-
3
- /**
4
- *
5
- * Custom error for reported errors in CARTO Maps API.
6
- * Provides useful debugging information in console and context for applications.
7
- *
8
- */
9
- export class CartoAPIError extends Error {
10
- /** Source error from server */
11
- error: Error;
12
-
13
- /** Context (API call & parameters) in which error occured */
14
- errorContext: APIErrorContext;
15
-
16
- /** Response from server */
17
- response?: Response;
18
-
19
- /** JSON Response from server */
20
- responseJson?: any;
21
-
22
- constructor(
23
- error: Error,
24
- errorContext: APIErrorContext,
25
- response?: Response,
26
- responseJson?: any
27
- ) {
28
- let responseString = 'Failed to connect';
29
- if (response) {
30
- responseString = 'Server returned: ';
31
- if (response.status === 400) {
32
- responseString += 'Bad request';
33
- } else if (response.status === 401 || response.status === 403) {
34
- responseString += 'Unauthorized access';
35
- } else if (response.status === 404) {
36
- responseString += 'Not found';
37
- } else {
38
- responseString += 'Error';
39
- }
40
-
41
- responseString += ` (${response.status}):`;
42
- }
43
- responseString += ` ${error.message || error}`;
44
-
45
- let message = `${errorContext.requestType} API request failed`;
46
- message += `\n${responseString}`;
47
- for (const key of Object.keys(errorContext)) {
48
- if (key === 'requestType') continue; // eslint-disable-line no-continue
49
- message += `\n${formatErrorKey(key)}: ${errorContext[key]}`;
50
- }
51
- message += '\n';
52
-
53
- super(message);
54
-
55
- this.name = 'CartoAPIError';
56
- this.response = response;
57
- this.responseJson = responseJson;
58
- this.error = error;
59
- this.errorContext = errorContext;
60
- }
61
- }
62
-
63
- /**
64
- * Converts camelCase to Camel Case
65
- */
66
- function formatErrorKey(key) {
67
- return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());
68
- }
package/src/api/common.ts DELETED
@@ -1,6 +0,0 @@
1
- export const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';
2
- export const DEFAULT_CLIENT = 'deck-gl-carto';
3
- export const V3_MINOR_VERSION = '3.4';
4
-
5
- // Fastly default limit is 8192; leave some padding.
6
- export const DEFAULT_MAX_LENGTH_URL = 7000;
@@ -1,69 +0,0 @@
1
- import {MapType} from './types';
2
-
3
- export type V3Endpoint = 'maps' | 'stats' | 'sql';
4
-
5
- function joinPath(...args: string[]): string {
6
- return args.map(part => (part.endsWith('/') ? part.slice(0, -1) : part)).join('/');
7
- }
8
-
9
- function buildV3Path(
10
- apiBaseUrl: string,
11
- version: 'v3',
12
- endpoint: V3Endpoint,
13
- ...rest: string[]
14
- ): string {
15
- return joinPath(apiBaseUrl, version, endpoint, ...rest);
16
- }
17
-
18
- export function buildPublicMapUrl({
19
- apiBaseUrl,
20
- cartoMapId
21
- }: {
22
- apiBaseUrl: string;
23
- cartoMapId: string;
24
- }): string {
25
- return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);
26
- }
27
-
28
- export function buildStatsUrl({
29
- attribute,
30
- apiBaseUrl,
31
- connectionName,
32
- source,
33
- type
34
- }: {
35
- attribute: string;
36
- apiBaseUrl: string;
37
- connectionName: string;
38
- source: string;
39
- type: MapType;
40
- }): string {
41
- if (type === 'query') {
42
- return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);
43
- }
44
-
45
- // type === 'table'
46
- return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, source, attribute);
47
- }
48
-
49
- export function buildSourceUrl({
50
- apiBaseUrl,
51
- connectionName,
52
- endpoint
53
- }: {
54
- apiBaseUrl: string;
55
- connectionName: string;
56
- endpoint: MapType;
57
- }): string {
58
- return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);
59
- }
60
-
61
- export function buildQueryUrl({
62
- apiBaseUrl,
63
- connectionName
64
- }: {
65
- apiBaseUrl: string;
66
- connectionName: string;
67
- }): string {
68
- return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');
69
- }
package/src/api/query.ts DELETED
@@ -1,42 +0,0 @@
1
- import {SOURCE_DEFAULTS} from '../sources/index';
2
- import type {SourceOptions, QuerySourceOptions, QueryResult} from '../sources/types';
3
- import {buildQueryUrl} from './endpoints';
4
- import {requestWithParameters} from './request-with-parameters';
5
- import {APIErrorContext} from './types';
6
-
7
- export type QueryOptions = SourceOptions & Omit<QuerySourceOptions, 'spatialDataColumn'>;
8
- type UrlParameters = {q: string; queryParameters?: string};
9
-
10
- export const query = async function (options: QueryOptions): Promise<QueryResult> {
11
- const {
12
- apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,
13
- clientId = SOURCE_DEFAULTS.clientId,
14
- maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,
15
- connectionName,
16
- sqlQuery,
17
- queryParameters
18
- } = options;
19
- const urlParameters: UrlParameters = {q: sqlQuery};
20
-
21
- if (queryParameters) {
22
- urlParameters.queryParameters = JSON.stringify(queryParameters);
23
- }
24
-
25
- const baseUrl = buildQueryUrl({apiBaseUrl, connectionName});
26
- const headers = {Authorization: `Bearer ${options.accessToken}`, ...options.headers};
27
- const parameters = {client: clientId, ...urlParameters};
28
-
29
- const errorContext: APIErrorContext = {
30
- requestType: 'SQL',
31
- connection: options.connectionName,
32
- type: 'query',
33
- source: JSON.stringify(parameters, undefined, 2)
34
- };
35
- return await requestWithParameters<QueryResult>({
36
- baseUrl,
37
- parameters,
38
- headers,
39
- errorContext,
40
- maxLengthURL
41
- });
42
- };
@@ -1,117 +0,0 @@
1
- import {VERSION} from '@deck.gl/core';
2
- import {isPureObject} from '../utils';
3
- import {CartoAPIError} from './carto-api-error';
4
- import {DEFAULT_MAX_LENGTH_URL, V3_MINOR_VERSION} from './common';
5
- import type {APIErrorContext} from './types';
6
-
7
- /**
8
- * Parameters added to all requests issued with `requestWithParameters()`.
9
- * These parameters override parameters already in the base URL, but not
10
- * user-provided parameters.
11
- */
12
- const DEFAULT_PARAMETERS = {
13
- v: V3_MINOR_VERSION,
14
- deckglVersion: VERSION
15
- };
16
-
17
- const DEFAULT_HEADERS = {
18
- Accept: 'application/json',
19
- 'Content-Type': 'application/json'
20
- };
21
-
22
- const REQUEST_CACHE = new Map<string, Promise<unknown>>();
23
-
24
- export async function requestWithParameters<T = any>({
25
- baseUrl,
26
- parameters = {},
27
- headers: customHeaders = {},
28
- errorContext,
29
- maxLengthURL = DEFAULT_MAX_LENGTH_URL
30
- }: {
31
- baseUrl: string;
32
- parameters?: Record<string, unknown>;
33
- headers?: Record<string, string>;
34
- errorContext: APIErrorContext;
35
- maxLengthURL?: number;
36
- }): Promise<T> {
37
- parameters = {...DEFAULT_PARAMETERS, ...parameters};
38
- baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));
39
- const key = createCacheKey(baseUrl, parameters, customHeaders);
40
- if (REQUEST_CACHE.has(key)) {
41
- return REQUEST_CACHE.get(key) as Promise<T>;
42
- }
43
-
44
- const url = createURLWithParameters(baseUrl, parameters);
45
- const headers = {...DEFAULT_HEADERS, ...customHeaders};
46
-
47
- /* global fetch */
48
- const fetchPromise =
49
- url.length > maxLengthURL
50
- ? fetch(baseUrl, {method: 'POST', body: JSON.stringify(parameters), headers})
51
- : fetch(url, {headers});
52
-
53
- let response: Response | undefined;
54
- let responseJson;
55
- const jsonPromise: Promise<T> = fetchPromise
56
- .then((_response: Response) => {
57
- response = _response;
58
- return response.json();
59
- })
60
- .then((json: any) => {
61
- responseJson = json;
62
- if (!response || !response.ok) {
63
- throw new Error(json.error);
64
- }
65
- return json;
66
- })
67
- .catch((error: Error) => {
68
- REQUEST_CACHE.delete(key);
69
- throw new CartoAPIError(error, errorContext, response, responseJson);
70
- });
71
-
72
- REQUEST_CACHE.set(key, jsonPromise);
73
- return jsonPromise;
74
- }
75
-
76
- function createCacheKey(
77
- baseUrl: string,
78
- parameters: Record<string, unknown>,
79
- headers: Record<string, string>
80
- ): string {
81
- const parameterEntries = Object.entries(parameters).sort(([a], [b]) => (a > b ? 1 : -1));
82
- const headerEntries = Object.entries(headers).sort(([a], [b]) => (a > b ? 1 : -1));
83
- return JSON.stringify({baseUrl, parameters: parameterEntries, headers: headerEntries});
84
- }
85
-
86
- /**
87
- * Appends query string parameters to a URL. Existing URL parameters are kept,
88
- * unless there is a conflict, in which case the new parameters override
89
- * those already in the URL.
90
- */
91
- function createURLWithParameters(
92
- baseUrlString: string,
93
- parameters: Record<string, unknown>
94
- ): string {
95
- const baseUrl = new URL(baseUrlString);
96
- for (const [key, value] of Object.entries(parameters)) {
97
- if (isPureObject(value) || Array.isArray(value)) {
98
- baseUrl.searchParams.set(key, JSON.stringify(value));
99
- } else {
100
- baseUrl.searchParams.set(key, (value as string | boolean | number).toString());
101
- }
102
- }
103
- return baseUrl.toString();
104
- }
105
-
106
- /**
107
- * Deletes query string parameters from a URL.
108
- */
109
- function excludeURLParameters(baseUrlString: string, parameters: string[]) {
110
- const baseUrl = new URL(baseUrlString);
111
- for (const param of parameters) {
112
- if (baseUrl.searchParams.has(param)) {
113
- baseUrl.searchParams.delete(param);
114
- }
115
- }
116
- return baseUrl.toString();
117
- }