@deck.gl/carto 8.6.3 → 8.7.0-alpha.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 (65) hide show
  1. package/dist/dist.dev.js +24441 -901
  2. package/dist/es5/api/index.js +6 -0
  3. package/dist/es5/api/index.js.map +1 -1
  4. package/dist/es5/api/layer-map.js +245 -0
  5. package/dist/es5/api/layer-map.js.map +1 -0
  6. package/dist/es5/api/maps-client.js +1 -1
  7. package/dist/es5/api/maps-client.js.map +1 -1
  8. package/dist/es5/api/maps-v3-client.js +152 -16
  9. package/dist/es5/api/maps-v3-client.js.map +1 -1
  10. package/dist/es5/api/parseMap.js +211 -0
  11. package/dist/es5/api/parseMap.js.map +1 -0
  12. package/dist/es5/config.js +11 -25
  13. package/dist/es5/config.js.map +1 -1
  14. package/dist/es5/index.js +6 -16
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/layers/carto-layer.js +26 -26
  17. package/dist/es5/layers/carto-layer.js.map +1 -1
  18. package/dist/es5/style/color-bins-style.js +4 -2
  19. package/dist/es5/style/color-bins-style.js.map +1 -1
  20. package/dist/es5/style/color-categories-style.js +4 -2
  21. package/dist/es5/style/color-categories-style.js.map +1 -1
  22. package/dist/es5/style/color-continuous-style.js +4 -2
  23. package/dist/es5/style/color-continuous-style.js.map +1 -1
  24. package/dist/es5/style/palette.js +4 -2
  25. package/dist/es5/style/palette.js.map +1 -1
  26. package/dist/esm/api/index.js +1 -1
  27. package/dist/esm/api/index.js.map +1 -1
  28. package/dist/esm/api/layer-map.js +220 -0
  29. package/dist/esm/api/layer-map.js.map +1 -0
  30. package/dist/esm/api/maps-client.js +1 -1
  31. package/dist/esm/api/maps-client.js.map +1 -1
  32. package/dist/esm/api/maps-v3-client.js +145 -16
  33. package/dist/esm/api/maps-v3-client.js.map +1 -1
  34. package/dist/esm/api/parseMap.js +195 -0
  35. package/dist/esm/api/parseMap.js.map +1 -0
  36. package/dist/esm/config.js +11 -26
  37. package/dist/esm/config.js.map +1 -1
  38. package/dist/esm/index.js +1 -3
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/layers/carto-layer.js +28 -28
  41. package/dist/esm/layers/carto-layer.js.map +1 -1
  42. package/dist/esm/style/color-bins-style.js.map +1 -1
  43. package/dist/esm/style/color-continuous-style.js.map +1 -1
  44. package/dist.min.js +278 -1
  45. package/package.json +7 -3
  46. package/src/api/index.js +1 -1
  47. package/src/api/layer-map.js +195 -0
  48. package/src/api/maps-client.js +3 -7
  49. package/src/api/maps-v3-client.js +114 -11
  50. package/src/api/parseMap.js +183 -0
  51. package/src/config.js +8 -39
  52. package/src/index.js +1 -2
  53. package/src/layers/carto-layer.js +17 -23
  54. package/src/style/color-bins-style.js +1 -3
  55. package/src/style/color-continuous-style.js +1 -3
  56. package/dist/es5/layers/carto-bqtiler-layer.js +0 -32
  57. package/dist/es5/layers/carto-bqtiler-layer.js.map +0 -1
  58. package/dist/es5/layers/carto-sql-layer.js +0 -33
  59. package/dist/es5/layers/carto-sql-layer.js.map +0 -1
  60. package/dist/esm/layers/carto-bqtiler-layer.js +0 -16
  61. package/dist/esm/layers/carto-bqtiler-layer.js.map +0 -1
  62. package/dist/esm/layers/carto-sql-layer.js +0 -17
  63. package/dist/esm/layers/carto-sql-layer.js.map +0 -1
  64. package/src/layers/carto-bqtiler-layer.js +0 -21
  65. package/src/layers/carto-sql-layer.js +0 -22
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "fetchLayerData", {
39
39
  return _mapsV3Client.fetchLayerData;
40
40
  }
41
41
  });
42
+ Object.defineProperty(exports, "fetchMap", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _mapsV3Client.fetchMap;
46
+ }
47
+ });
42
48
  Object.defineProperty(exports, "getData", {
43
49
  enumerable: true,
44
50
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export {FORMATS, MAP_TYPES, API_VERSIONS} from './maps-api-common';\nexport {getDataV2, CONNECTIONS} from './maps-client';\nexport {fetchLayerData, getData, mapInstantiation} from './maps-v3-client';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/api/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export {FORMATS, MAP_TYPES, API_VERSIONS} from './maps-api-common';\nexport {getDataV2, CONNECTIONS} from './maps-client';\nexport {fetchLayerData, fetchMap, getData, mapInstantiation} from './maps-v3-client';\n"],"file":"index.js"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getColorAccessor = getColorAccessor;
9
+ exports.getSizeAccessor = getSizeAccessor;
10
+ exports.getTextAccessor = getTextAccessor;
11
+ exports.getTextPixelOffsetAccessor = getTextPixelOffsetAccessor;
12
+ exports.LAYER_MAP = void 0;
13
+
14
+ var _d3Array = require("d3-array");
15
+
16
+ var _d3Color = require("d3-color");
17
+
18
+ var _d3Scale = require("d3-scale");
19
+
20
+ var _d3Format = require("d3-format");
21
+
22
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
23
+
24
+ var _geoLayers = require("@deck.gl/geo-layers");
25
+
26
+ var _layers = require("@deck.gl/layers");
27
+
28
+ const SCALE_FUNCS = {
29
+ linear: _d3Scale.scaleLinear,
30
+ ordinal: _d3Scale.scaleOrdinal,
31
+ log: _d3Scale.scaleLog,
32
+ point: _d3Scale.scalePoint,
33
+ quantile: _d3Scale.scaleQuantile,
34
+ quantize: _d3Scale.scaleQuantize,
35
+ sqrt: _d3Scale.scaleSqrt
36
+ };
37
+ const sharedPropMap = {
38
+ color: 'getFillColor',
39
+ isVisible: 'visible',
40
+ label: 'cartoLabel',
41
+ textLabel: {
42
+ alignment: 'getTextAlignmentBaseline',
43
+ anchor: 'getTextAnchor',
44
+ color: 'getTextColor',
45
+ size: 'getTextSize'
46
+ },
47
+ visConfig: {
48
+ enable3d: 'extruded',
49
+ filled: 'filled',
50
+ opacity: 'opacity',
51
+ strokeColor: 'getLineColor',
52
+ stroked: 'stroked',
53
+ thickness: 'getLineWidth',
54
+ radius: 'getPointRadius',
55
+ wireframe: 'wireframe'
56
+ }
57
+ };
58
+ const RADIUS_DOWNSCALE = 0.2;
59
+ const defaultProps = {
60
+ lineMiterLimit: 2,
61
+ lineWidthUnits: 'pixels',
62
+ pointRadiusScale: RADIUS_DOWNSCALE,
63
+ pointRadiusUnits: 'pixels',
64
+ rounded: true,
65
+ wrapLongitude: false
66
+ };
67
+
68
+ function mergePropMaps(a, b) {
69
+ return { ...a,
70
+ ...b,
71
+ visConfig: { ...a.visConfig,
72
+ ...b.visConfig
73
+ }
74
+ };
75
+ }
76
+
77
+ const LAYER_MAP = {
78
+ point: {
79
+ Layer: _layers.GeoJsonLayer,
80
+ propMap: mergePropMaps(sharedPropMap, {
81
+ visConfig: {
82
+ outline: 'stroked'
83
+ }
84
+ }),
85
+ defaultProps
86
+ },
87
+ geojson: {
88
+ Layer: _layers.GeoJsonLayer,
89
+ propMap: sharedPropMap,
90
+ defaultProps: { ...defaultProps,
91
+ lineWidthScale: 2
92
+ }
93
+ },
94
+ hexagonId: {
95
+ Layer: _geoLayers.H3HexagonLayer,
96
+ propMap: mergePropMaps(sharedPropMap, {
97
+ visConfig: {
98
+ coverage: 'coverage',
99
+ elevationScale: 'elevationScale'
100
+ }
101
+ }),
102
+ defaultProps: { ...defaultProps,
103
+ getHexagon: d => d.h3
104
+ }
105
+ },
106
+ mvt: {
107
+ Layer: _geoLayers.MVTLayer,
108
+ propMap: sharedPropMap,
109
+ defaultProps: { ...defaultProps,
110
+ pointRadiusScale: 0.3,
111
+ lineWidthScale: 2
112
+ }
113
+ }
114
+ };
115
+ exports.LAYER_MAP = LAYER_MAP;
116
+
117
+ function domainFromAttribute(attribute, scaleType) {
118
+ if (scaleType === 'ordinal' || scaleType === 'point') {
119
+ return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);
120
+ }
121
+
122
+ let {
123
+ min
124
+ } = attribute;
125
+
126
+ if (scaleType === 'log' && min === 0) {
127
+ min = 1e-5;
128
+ }
129
+
130
+ return [min, attribute.max];
131
+ }
132
+
133
+ function domainFromValues(values, scaleType) {
134
+ if (scaleType === 'ordinal') {
135
+ return [...new Set(values)].sort();
136
+ }
137
+
138
+ return (0, _d3Array.extent)(values);
139
+ }
140
+
141
+ function calculateDomain(data, name, scaleType) {
142
+ if (data.tilestats) {
143
+ const {
144
+ attributes
145
+ } = data.tilestats.layers[0];
146
+ const attribute = attributes.find(a => a.attribute === name);
147
+ return domainFromAttribute(attribute, scaleType);
148
+ } else if (data.features) {
149
+ const values = data.features.map(({
150
+ properties
151
+ }) => properties[name]);
152
+ return domainFromValues(values, scaleType);
153
+ } else if (Array.isArray(data) && data[0][name] !== undefined) {
154
+ const values = data.map(properties => properties[name]);
155
+ return domainFromValues(values, scaleType);
156
+ }
157
+
158
+ return [0, 1];
159
+ }
160
+
161
+ function normalizeAccessor(accessor, data) {
162
+ if (data.features || data.tilestats) {
163
+ return ({
164
+ properties
165
+ }) => {
166
+ return accessor(properties);
167
+ };
168
+ }
169
+
170
+ return accessor;
171
+ }
172
+
173
+ function getColorAccessor({
174
+ name
175
+ }, scaleType, {
176
+ colors
177
+ }, opacity, data) {
178
+ const scale = SCALE_FUNCS[scaleType]();
179
+ scale.domain(calculateDomain(data, name, scaleType));
180
+ scale.range(colors);
181
+ const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
182
+
183
+ const accessor = properties => {
184
+ const rgba = (0, _d3Color.rgb)(scale(properties[name]));
185
+ return [rgba.r, rgba.g, rgba.b, alpha];
186
+ };
187
+
188
+ return normalizeAccessor(accessor, data);
189
+ }
190
+
191
+ function getSizeAccessor({
192
+ name
193
+ }, scaleType, range, data) {
194
+ const scale = SCALE_FUNCS[scaleType]();
195
+ scale.domain(calculateDomain(data, name, scaleType));
196
+ scale.range(range);
197
+
198
+ const accessor = properties => {
199
+ return scale(properties[name]);
200
+ };
201
+
202
+ return normalizeAccessor(accessor, data);
203
+ }
204
+
205
+ const FORMATS = {
206
+ date: s => _momentTimezone.default.utc(s).format('MM/DD/YY HH:mm:ssa'),
207
+ integer: (0, _d3Format.format)('i'),
208
+ float: (0, _d3Format.format)('.5f'),
209
+ timestamp: s => _momentTimezone.default.utc(s).format('X'),
210
+ default: String
211
+ };
212
+
213
+ function getTextAccessor({
214
+ name,
215
+ type
216
+ }, data) {
217
+ const format = FORMATS[type] || FORMATS.default;
218
+
219
+ const accessor = properties => {
220
+ return format(properties[name]);
221
+ };
222
+
223
+ return normalizeAccessor(accessor, data);
224
+ }
225
+
226
+ function getTextPixelOffsetAccessor({
227
+ alignment,
228
+ anchor,
229
+ size
230
+ }, radius) {
231
+ const padding = 20;
232
+ const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;
233
+ const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;
234
+ const sizeOffset = alignment === 'center' ? 0 : size;
235
+
236
+ const calculateOffset = r => {
237
+ r = RADIUS_DOWNSCALE * r;
238
+ return [signX * (r + padding), signY * (r + padding + sizeOffset)];
239
+ };
240
+
241
+ return typeof radius === 'function' ? d => {
242
+ return calculateOffset(radius(d));
243
+ } : calculateOffset(radius);
244
+ }
245
+ //# sourceMappingURL=layer-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/layer-map.js"],"names":["SCALE_FUNCS","linear","scaleLinear","ordinal","scaleOrdinal","log","scaleLog","point","scalePoint","quantile","scaleQuantile","quantize","scaleQuantize","sqrt","scaleSqrt","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","filled","opacity","strokeColor","stroked","thickness","radius","wireframe","RADIUS_DOWNSCALE","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusScale","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","b","LAYER_MAP","Layer","GeoJsonLayer","propMap","outline","geojson","lineWidthScale","hexagonId","H3HexagonLayer","coverage","elevationScale","getHexagon","d","h3","mvt","MVTLayer","domainFromAttribute","attribute","scaleType","categories","map","c","category","filter","undefined","min","max","domainFromValues","values","Set","sort","calculateDomain","data","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","accessor","getColorAccessor","colors","scale","domain","range","alpha","Math","round","pow","rgba","r","g","getSizeAccessor","FORMATS","date","s","moment","utc","format","integer","float","timestamp","default","String","getTextAccessor","type","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AASA;;AACA;;AACA;;AACA;;AAEA,MAAMA,WAAW,GAAG;AAClBC,EAAAA,MAAM,EAAEC,oBADU;AAElBC,EAAAA,OAAO,EAAEC,qBAFS;AAGlBC,EAAAA,GAAG,EAAEC,iBAHa;AAIlBC,EAAAA,KAAK,EAAEC,mBAJW;AAKlBC,EAAAA,QAAQ,EAAEC,sBALQ;AAMlBC,EAAAA,QAAQ,EAAEC,sBANQ;AAOlBC,EAAAA,IAAI,EAAEC;AAPY,CAApB;AAWA,MAAMC,aAAa,GAAG;AACpBC,EAAAA,KAAK,EAAE,cADa;AAEpBC,EAAAA,SAAS,EAAE,SAFS;AAGpBC,EAAAA,KAAK,EAAE,YAHa;AAIpBC,EAAAA,SAAS,EAAE;AACTC,IAAAA,SAAS,EAAE,0BADF;AAETC,IAAAA,MAAM,EAAE,eAFC;AAGTL,IAAAA,KAAK,EAAE,cAHE;AAITM,IAAAA,IAAI,EAAE;AAJG,GAJS;AAUpBC,EAAAA,SAAS,EAAE;AACTC,IAAAA,QAAQ,EAAE,UADD;AAETC,IAAAA,MAAM,EAAE,QAFC;AAGTC,IAAAA,OAAO,EAAE,SAHA;AAITC,IAAAA,WAAW,EAAE,cAJJ;AAKTC,IAAAA,OAAO,EAAE,SALA;AAMTC,IAAAA,SAAS,EAAE,cANF;AAOTC,IAAAA,MAAM,EAAE,gBAPC;AAQTC,IAAAA,SAAS,EAAE;AARF;AAVS,CAAtB;AAsBA,MAAMC,gBAAgB,GAAG,GAAzB;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,cAAc,EAAE,CADG;AAEnBC,EAAAA,cAAc,EAAE,QAFG;AAGnBC,EAAAA,gBAAgB,EAAEJ,gBAHC;AAInBK,EAAAA,gBAAgB,EAAE,QAJC;AAKnBC,EAAAA,OAAO,EAAE,IALU;AAMnBC,EAAAA,aAAa,EAAE;AANI,CAArB;;AASA,SAASC,aAAT,CAAuBC,CAAvB,EAA0BC,CAA1B,EAA6B;AAC3B,SAAO,EAAC,GAAGD,CAAJ;AAAO,OAAGC,CAAV;AAAanB,IAAAA,SAAS,EAAE,EAAC,GAAGkB,CAAC,CAAClB,SAAN;AAAiB,SAAGmB,CAAC,CAACnB;AAAtB;AAAxB,GAAP;AACD;;AAEM,MAAMoB,SAAS,GAAG;AACvBpC,EAAAA,KAAK,EAAE;AACLqC,IAAAA,KAAK,EAAEC,oBADF;AAELC,IAAAA,OAAO,EAAEN,aAAa,CAACzB,aAAD,EAAgB;AACpCQ,MAAAA,SAAS,EAAE;AAACwB,QAAAA,OAAO,EAAE;AAAV;AADyB,KAAhB,CAFjB;AAKLd,IAAAA;AALK,GADgB;AAQvBe,EAAAA,OAAO,EAAE;AACPJ,IAAAA,KAAK,EAAEC,oBADA;AAEPC,IAAAA,OAAO,EAAE/B,aAFF;AAGPkB,IAAAA,YAAY,EAAE,EAAC,GAAGA,YAAJ;AAAkBgB,MAAAA,cAAc,EAAE;AAAlC;AAHP,GARc;AAavBC,EAAAA,SAAS,EAAE;AACTN,IAAAA,KAAK,EAAEO,yBADE;AAETL,IAAAA,OAAO,EAAEN,aAAa,CAACzB,aAAD,EAAgB;AACpCQ,MAAAA,SAAS,EAAE;AAAC6B,QAAAA,QAAQ,EAAE,UAAX;AAAuBC,QAAAA,cAAc,EAAE;AAAvC;AADyB,KAAhB,CAFb;AAKTpB,IAAAA,YAAY,EAAE,EAAC,GAAGA,YAAJ;AAAkBqB,MAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAArC;AALL,GAbY;AAoBvBC,EAAAA,GAAG,EAAE;AACHb,IAAAA,KAAK,EAAEc,mBADJ;AAEHZ,IAAAA,OAAO,EAAE/B,aAFN;AAGHkB,IAAAA,YAAY,EAAE,EAAC,GAAGA,YAAJ;AAAkBG,MAAAA,gBAAgB,EAAE,GAApC;AAAyCa,MAAAA,cAAc,EAAE;AAAzD;AAHX;AApBkB,CAAlB;;;AA2BP,SAASU,mBAAT,CAA6BC,SAA7B,EAAwCC,SAAxC,EAAmD;AACjD,MAAIA,SAAS,KAAK,SAAd,IAA2BA,SAAS,KAAK,OAA7C,EAAsD;AACpD,WAAOD,SAAS,CAACE,UAAV,CAAqBC,GAArB,CAAyBC,CAAC,IAAIA,CAAC,CAACC,QAAhC,EAA0CC,MAA1C,CAAiDF,CAAC,IAAIA,CAAC,KAAKG,SAAN,IAAmBH,CAAC,KAAK,IAA/E,CAAP;AACD;;AAED,MAAI;AAACI,IAAAA;AAAD,MAAQR,SAAZ;;AACA,MAAIC,SAAS,KAAK,KAAd,IAAuBO,GAAG,KAAK,CAAnC,EAAsC;AACpCA,IAAAA,GAAG,GAAG,IAAN;AACD;;AACD,SAAO,CAACA,GAAD,EAAMR,SAAS,CAACS,GAAhB,CAAP;AACD;;AAED,SAASC,gBAAT,CAA0BC,MAA1B,EAAkCV,SAAlC,EAA6C;AAC3C,MAAIA,SAAS,KAAK,SAAlB,EAA6B;AAC3B,WAAO,CAAC,GAAG,IAAIW,GAAJ,CAAQD,MAAR,CAAJ,EAAqBE,IAArB,EAAP;AACD;;AACD,SAAO,qBAAOF,MAAP,CAAP;AACD;;AAED,SAASG,eAAT,CAAyBC,IAAzB,EAA+BC,IAA/B,EAAqCf,SAArC,EAAgD;AAC9C,MAAIc,IAAI,CAACE,SAAT,EAAoB;AAElB,UAAM;AAACC,MAAAA;AAAD,QAAeH,IAAI,CAACE,SAAL,CAAeE,MAAf,CAAsB,CAAtB,CAArB;AACA,UAAMnB,SAAS,GAAGkB,UAAU,CAACE,IAAX,CAAgBvC,CAAC,IAAIA,CAAC,CAACmB,SAAF,KAAgBgB,IAArC,CAAlB;AACA,WAAOjB,mBAAmB,CAACC,SAAD,EAAYC,SAAZ,CAA1B;AACD,GALD,MAKO,IAAIc,IAAI,CAACM,QAAT,EAAmB;AAExB,UAAMV,MAAM,GAAGI,IAAI,CAACM,QAAL,CAAclB,GAAd,CAAkB,CAAC;AAACmB,MAAAA;AAAD,KAAD,KAAkBA,UAAU,CAACN,IAAD,CAA9C,CAAf;AACA,WAAON,gBAAgB,CAACC,MAAD,EAASV,SAAT,CAAvB;AACD,GAJM,MAIA,IAAIsB,KAAK,CAACC,OAAN,CAAcT,IAAd,KAAuBA,IAAI,CAAC,CAAD,CAAJ,CAAQC,IAAR,MAAkBT,SAA7C,EAAwD;AAE7D,UAAMI,MAAM,GAAGI,IAAI,CAACZ,GAAL,CAASmB,UAAU,IAAIA,UAAU,CAACN,IAAD,CAAjC,CAAf;AACA,WAAON,gBAAgB,CAACC,MAAD,EAASV,SAAT,CAAvB;AACD;;AAED,SAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;;AAED,SAASwB,iBAAT,CAA2BC,QAA3B,EAAqCX,IAArC,EAA2C;AACzC,MAAIA,IAAI,CAACM,QAAL,IAAiBN,IAAI,CAACE,SAA1B,EAAqC;AACnC,WAAO,CAAC;AAACK,MAAAA;AAAD,KAAD,KAAkB;AACvB,aAAOI,QAAQ,CAACJ,UAAD,CAAf;AACD,KAFD;AAGD;;AACD,SAAOI,QAAP;AACD;;AAEM,SAASC,gBAAT,CAA0B;AAACX,EAAAA;AAAD,CAA1B,EAAkCf,SAAlC,EAA6C;AAAC2B,EAAAA;AAAD,CAA7C,EAAuD9D,OAAvD,EAAgEiD,IAAhE,EAAsE;AAC3E,QAAMc,KAAK,GAAGzF,WAAW,CAAC6D,SAAD,CAAX,EAAd;AACA4B,EAAAA,KAAK,CAACC,MAAN,CAAahB,eAAe,CAACC,IAAD,EAAOC,IAAP,EAAaf,SAAb,CAA5B;AACA4B,EAAAA,KAAK,CAACE,KAAN,CAAYH,MAAZ;AACA,QAAMI,KAAK,GAAGlE,OAAO,KAAKyC,SAAZ,GAAwB0B,IAAI,CAACC,KAAL,CAAW,MAAMD,IAAI,CAACE,GAAL,CAASrE,OAAT,EAAkB,IAAI,GAAtB,CAAjB,CAAxB,GAAuE,GAArF;;AAEA,QAAM4D,QAAQ,GAAGJ,UAAU,IAAI;AAC7B,UAAMc,IAAI,GAAG,kBAAIP,KAAK,CAACP,UAAU,CAACN,IAAD,CAAX,CAAT,CAAb;AACA,WAAO,CAACoB,IAAI,CAACC,CAAN,EAASD,IAAI,CAACE,CAAd,EAAiBF,IAAI,CAACtD,CAAtB,EAAyBkD,KAAzB,CAAP;AACD,GAHD;;AAIA,SAAOP,iBAAiB,CAACC,QAAD,EAAWX,IAAX,CAAxB;AACD;;AAEM,SAASwB,eAAT,CAAyB;AAACvB,EAAAA;AAAD,CAAzB,EAAiCf,SAAjC,EAA4C8B,KAA5C,EAAmDhB,IAAnD,EAAyD;AAC9D,QAAMc,KAAK,GAAGzF,WAAW,CAAC6D,SAAD,CAAX,EAAd;AACA4B,EAAAA,KAAK,CAACC,MAAN,CAAahB,eAAe,CAACC,IAAD,EAAOC,IAAP,EAAaf,SAAb,CAA5B;AACA4B,EAAAA,KAAK,CAACE,KAAN,CAAYA,KAAZ;;AAEA,QAAML,QAAQ,GAAGJ,UAAU,IAAI;AAC7B,WAAOO,KAAK,CAACP,UAAU,CAACN,IAAD,CAAX,CAAZ;AACD,GAFD;;AAGA,SAAOS,iBAAiB,CAACC,QAAD,EAAWX,IAAX,CAAxB;AACD;;AAED,MAAMyB,OAAO,GAAG;AACdC,EAAAA,IAAI,EAAEC,CAAC,IAAIC,wBAAOC,GAAP,CAAWF,CAAX,EAAcG,MAAd,CAAqB,oBAArB,CADG;AAEdC,EAAAA,OAAO,EAAE,sBAAS,GAAT,CAFK;AAGdC,EAAAA,KAAK,EAAE,sBAAS,KAAT,CAHO;AAIdC,EAAAA,SAAS,EAAEN,CAAC,IAAIC,wBAAOC,GAAP,CAAWF,CAAX,EAAcG,MAAd,CAAqB,GAArB,CAJF;AAKdI,EAAAA,OAAO,EAAEC;AALK,CAAhB;;AAQO,SAASC,eAAT,CAAyB;AAACnC,EAAAA,IAAD;AAAOoC,EAAAA;AAAP,CAAzB,EAAuCrC,IAAvC,EAA6C;AAClD,QAAM8B,MAAM,GAAGL,OAAO,CAACY,IAAD,CAAP,IAAiBZ,OAAO,CAACS,OAAxC;;AACA,QAAMvB,QAAQ,GAAGJ,UAAU,IAAI;AAC7B,WAAOuB,MAAM,CAACvB,UAAU,CAACN,IAAD,CAAX,CAAb;AACD,GAFD;;AAGA,SAAOS,iBAAiB,CAACC,QAAD,EAAWX,IAAX,CAAxB;AACD;;AAEM,SAASsC,0BAAT,CAAoC;AAAC7F,EAAAA,SAAD;AAAYC,EAAAA,MAAZ;AAAoBC,EAAAA;AAApB,CAApC,EAA+DQ,MAA/D,EAAuE;AAC5E,QAAMoF,OAAO,GAAG,EAAhB;AACA,QAAMC,KAAK,GAAG9F,MAAM,KAAK,QAAX,GAAsB,CAAtB,GAA0BA,MAAM,KAAK,OAAX,GAAqB,CAArB,GAAyB,CAAC,CAAlE;AACA,QAAM+F,KAAK,GAAGhG,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6BA,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6B,CAAC,CAAzE;AACA,QAAMiG,UAAU,GAAGjG,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6BE,IAAhD;;AAEA,QAAMgG,eAAe,GAAGrB,CAAC,IAAI;AAC3BA,IAAAA,CAAC,GAAGjE,gBAAgB,GAAGiE,CAAvB;AACA,WAAO,CAACkB,KAAK,IAAIlB,CAAC,GAAGiB,OAAR,CAAN,EAAwBE,KAAK,IAAInB,CAAC,GAAGiB,OAAJ,GAAcG,UAAlB,CAA7B,CAAP;AACD,GAHD;;AAKA,SAAO,OAAOvF,MAAP,KAAkB,UAAlB,GACHyB,CAAC,IAAI;AACH,WAAO+D,eAAe,CAACxF,MAAM,CAACyB,CAAD,CAAP,CAAtB;AACD,GAHE,GAIH+D,eAAe,CAACxF,MAAD,CAJnB;AAKD","sourcesContent":["import {extent} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n filled: 'filled',\n opacity: 'opacity',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst RADIUS_DOWNSCALE = 0.2;\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusScale: RADIUS_DOWNSCALE,\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a, b) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport const LAYER_MAP = {\n point: {\n Layer: GeoJsonLayer,\n propMap: mergePropMaps(sharedPropMap, {\n visConfig: {outline: 'stroked'}\n }),\n defaultProps\n },\n geojson: {\n Layer: GeoJsonLayer,\n propMap: sharedPropMap,\n defaultProps: {...defaultProps, lineWidthScale: 2}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: mergePropMaps(sharedPropMap, {\n visConfig: {coverage: 'coverage', elevationScale: 'elevationScale'}\n }),\n defaultProps: {...defaultProps, getHexagon: d => d.h3}\n },\n mvt: {\n Layer: MVTLayer,\n propMap: sharedPropMap,\n defaultProps: {...defaultProps, pointRadiusScale: 0.3, lineWidthScale: 2}\n }\n};\n\nfunction domainFromAttribute(attribute, scaleType) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType) {\n if (scaleType === 'ordinal') {\n return [...new Set(values)].sort();\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function getColorAccessor({name}, scaleType, {colors}, opacity, data) {\n const scale = SCALE_FUNCS[scaleType]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(colors);\n const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n\n const accessor = properties => {\n const rgba = rgb(scale(properties[name]));\n return [rgba.r, rgba.g, rgba.b, alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => {\n r = RADIUS_DOWNSCALE * r;\n return [signX * (r + padding), signY * (r + padding + sizeOffset)];\n };\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n"],"file":"layer-map.js"}
@@ -63,7 +63,7 @@ async function getDataV2({
63
63
  });
64
64
 
65
65
  default:
66
- throw new Error("Invalid maps API version. It shoud be ".concat(_mapsApiCommon.API_VERSIONS.V1, " or ").concat(_mapsApiCommon.API_VERSIONS.V2));
66
+ throw new Error("Invalid maps API version. It should be ".concat(_mapsApiCommon.API_VERSIONS.V1, " or ").concat(_mapsApiCommon.API_VERSIONS.V2));
67
67
  }
68
68
  }
69
69
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-client.js"],"names":["CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","defaultClassicCredentials","mapsUrl","DEFAULT_MAPS_URL_FORMAT","url","connection","API_VERSIONS","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","MAP_TYPES","QUERY","replace","DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","region","sql","version","buffersize","mvt","layers","options","vector_extent"],"mappings":";;;;;;;;AAGA;;AACA;;AASO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,QAAQ,EAAE,UADe;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAApB;;AAKP,MAAMC,WAAW,GAAG,EAApB;AACA,MAAMC,WAAW,GAAG,IAApB;;AAKO,eAAeC,SAAf,CAAyB;AAACC,EAAAA,IAAD;AAAOC,EAAAA,MAAP;AAAeC,EAAAA;AAAf,CAAzB,EAAsD;AAC3D,QAAMC,kBAAkB,GAAG,oCAA3B;AACA,QAAMC,UAAU,GAAIF,WAAW,IAAIA,WAAW,CAACE,UAA5B,IAA2CD,kBAAkB,CAACC,UAAjF;AAGA,QAAMC,UAAU,GAAG,EACjB,GAAGC,iCADc;AAEjB,QAAIH,kBAAkB,CAACC,UAAnB,KAAkCA,UAAlC,IAAgDD,kBAApD,CAFiB;AAGjB,OAAGD;AAHc,GAAnB;;AAMA,MAAI,CAACG,UAAU,CAACE,OAAhB,EAAyB;AACvBF,IAAAA,UAAU,CAACE,OAAX,GAAqBC,uCAAwBJ,UAAxB,CAArB;AACD;;AAED,MAAIK,GAAJ;AAEA,QAAMC,UAAU,GAAGV,IAAI,KAAK,SAAT,GAAqBN,WAAW,CAACC,QAAjC,GAA4CD,WAAW,CAACE,KAA3E;;AAEA,UAAQQ,UAAR;AACE,SAAKO,4BAAaC,EAAlB;AAEE,YAAMC,SAAS,GAAGC,eAAe,CAACb,MAAD,CAAjC;AACAQ,MAAAA,GAAG,GAAGM,iBAAiB,CAAC;AAACF,QAAAA,SAAD;AAAYX,QAAAA,WAAW,EAAEG;AAAzB,OAAD,CAAvB;AACA,YAAMW,UAAU,GAAG,MAAMC,OAAO,CAAC;AAACR,QAAAA,GAAD;AAAMP,QAAAA,WAAW,EAAEG;AAAnB,OAAD,CAAhC;AACA,aAAOW,UAAU,CAACE,QAAX,CAAoBC,QAApB,CAA6BC,MAApC;;AAEF,SAAKT,4BAAaU,EAAlB;AAEEZ,MAAAA,GAAG,GAAGa,iBAAiB,CAAC;AAACZ,QAAAA,UAAD;AAAaV,QAAAA,IAAb;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA,WAAW,EAAEG;AAAxC,OAAD,CAAvB;AACA,aAAO,MAAMY,OAAO,CAAC;AAACR,QAAAA,GAAD;AAAMP,QAAAA,WAAW,EAAEG;AAAnB,OAAD,CAApB;;AAEF;AACE,YAAM,IAAIkB,KAAJ,iDACqCZ,4BAAaC,EADlD,iBAC2DD,4BAAaU,EADxE,EAAN;AAdJ;AAkBD;;AAKD,eAAeJ,OAAf,CAAuB;AAACR,EAAAA,GAAD;AAAMP,EAAAA;AAAN,CAAvB,EAA2C;AACzC,MAAIsB,QAAJ;;AAEA,MAAI;AAGFA,IAAAA,QAAQ,GAAG,MAAMC,KAAK,CAAChB,GAAD,EAAM;AAC1BiB,MAAAA,OAAO,EAAE;AACPC,QAAAA,MAAM,EAAE;AADD;AADiB,KAAN,CAAtB;AAKD,GARD,CAQE,OAAOC,KAAP,EAAc;AACd,UAAM,IAAIL,KAAJ,0CAA4CK,KAA5C,EAAN;AACD;;AAED,QAAMC,IAAI,GAAG,MAAML,QAAQ,CAACK,IAAT,EAAnB;;AAEA,MAAI,CAACL,QAAQ,CAACM,EAAd,EAAkB;AAChBC,IAAAA,aAAa,CAAC;AAACP,MAAAA,QAAD;AAAWK,MAAAA,IAAX;AAAiB3B,MAAAA;AAAjB,KAAD,CAAb;AACD;;AAED,SAAO2B,IAAP;AACD;;AAKD,SAASE,aAAT,CAAuB;AAACP,EAAAA,QAAD;AAAWK,EAAAA,IAAX;AAAiB3B,EAAAA;AAAjB,CAAvB,EAAsD;AACpD,UAAQsB,QAAQ,CAACQ,MAAjB;AACE,SAAK,GAAL;AACE,YAAM,IAAIT,KAAJ,0EAEFrB,WAAW,CAAC+B,QAFV,6BAGe/B,WAAW,CAACgC,MAH3B,QAAN;;AAKF,SAAK,GAAL;AACE,YAAM,IAAIX,KAAJ,gEAEFrB,WAAW,CAACgC,MAFV,qDAAN;;AAMF;AACE,YAAMC,CAAC,GACLjC,WAAW,CAACE,UAAZ,KAA2BO,4BAAaC,EAAxC,GAA6CwB,IAAI,CAACC,SAAL,CAAeR,IAAI,CAACS,MAApB,CAA7C,GAA2ET,IAAI,CAACD,KADlF;AAEA,YAAM,IAAIL,KAAJ,CAAUY,CAAV,CAAN;AAjBJ;AAmBD;;AAED,SAASI,iBAAT,CAA2BrC,WAA3B,EAAwC;AACtC,QAAMsC,aAAa,GAAG,oCAAgB,SAAhB,EAA2BtC,WAAW,CAACgC,MAAvC,CAAtB;AACA,QAAMO,aAAa,GAAG,oCAAgB,QAAhB,kBAAtB;AACA,SAAO,CAACD,aAAD,EAAgBC,aAAhB,CAAP;AACD;;AAKD,SAAS1B,iBAAT,CAA2B;AAACF,EAAAA,SAAD;AAAYX,EAAAA;AAAZ,CAA3B,EAAqD;AACnD,QAAMwC,UAAU,GAAGH,iBAAiB,CAACrC,WAAD,CAApC;AACA,QAAMyC,GAAG,GAAGP,IAAI,CAACC,SAAL,CAAexB,SAAf,CAAZ;AACA,mBAAUN,OAAO,CAACL,WAAD,CAAjB,cAAkCwC,UAAU,CAACE,IAAX,CAAgB,GAAhB,CAAlC,cAA0D,oCAAgB,QAAhB,EAA0BD,GAA1B,CAA1D;AACD;;AAED,SAASrB,iBAAT,CAA2B;AAACZ,EAAAA,UAAD;AAAaV,EAAAA,IAAb;AAAmBC,EAAAA,MAAnB;AAA2BC,EAAAA;AAA3B,CAA3B,EAAoE;AAClE,QAAMwC,UAAU,GAAGH,iBAAiB,CAACrC,WAAD,CAApC;AAEA,QAAM2C,WAAW,GAAG7C,IAAI,KAAK8C,yBAAUC,KAAnB,GAA2B,KAA3B,GAAmC/C,IAAvD;AACA,MAAIS,GAAG,aAAMF,OAAO,CAACL,WAAD,CAAb,cAA8BQ,UAA9B,cAA4CmC,WAA5C,MAAP;AACApC,EAAAA,GAAG,cAAO,oCAAgB,QAAhB,EAA0BR,MAA1B,CAAP,8BAA4DyC,UAAU,CAACE,IAAX,CAAgB,GAAhB,CAA5D,CAAH;AACA,SAAOnC,GAAP;AACD;;AAKD,SAASF,OAAT,CAAiBL,WAAjB,EAA8B;AAC5B,SAAOA,WAAW,CAACK,OAAZ,CACJyC,OADI,CACIC,4CADJ,EACmC/C,WAAW,CAAC+B,QAD/C,EAEJe,OAFI,CAEIE,8CAFJ,EAEqChD,WAAW,CAACiD,MAFjD,CAAP;AAGD;;AAED,SAASrC,eAAT,CAAyBsC,GAAzB,EAA8B;AAC5B,SAAO;AACLC,IAAAA,OAAO,EAAE,OADJ;AAELC,IAAAA,UAAU,EAAE;AACVC,MAAAA,GAAG,EAAE1D;AADK,KAFP;AAKL2D,IAAAA,MAAM,EAAE,CACN;AACExD,MAAAA,IAAI,EAAE,QADR;AAEEyD,MAAAA,OAAO,EAAE;AACPL,QAAAA,GADO;AAEPM,QAAAA,aAAa,EAAE5D;AAFR;AAFX,KADM;AALH,GAAP;AAeD","sourcesContent":["/**\n * Maps API Client for Maps API v1 and Maps API v2\n */\nimport {defaultClassicCredentials, getDefaultCredentials} 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 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({type, source, credentials}) {\n const defaultCredentials = getDefaultCredentials();\n const apiVersion = (credentials && credentials.apiVersion) || defaultCredentials.apiVersion;\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...defaultClassicCredentials,\n ...(defaultCredentials.apiVersion === apiVersion && defaultCredentials),\n ...credentials\n };\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = DEFAULT_MAPS_URL_FORMAT[apiVersion];\n }\n\n let url;\n\n const connection = type === '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 shoud be ${API_VERSIONS.V1} or ${API_VERSIONS.V2}`\n );\n }\n}\n\n/**\n * Request against Maps API\n */\nasync function request({url, credentials}) {\n let response;\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\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({response, json, credentials}) {\n switch (response.status) {\n case 401:\n throw new Error(\n `Unauthorized access to Maps API: invalid combination of user ('${\n credentials.username\n }') and apiKey ('${credentials.apiKey}')`\n );\n case 403:\n throw new Error(\n `Unauthorized access to dataset: the provided apiKey('${\n credentials.apiKey\n }') 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) {\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({mapConfig, credentials}) {\n const parameters = initURLParameters(credentials);\n const cfg = JSON.stringify(mapConfig);\n return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;\n}\n\nfunction buildURLMapsAPIv2({connection, type, source, credentials}) {\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) {\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) {\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 vector_extent: TILE_EXTENT\n }\n }\n ]\n };\n}\n"],"file":"maps-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-client.js"],"names":["CONNECTIONS","BIGQUERY","CARTO","BUFFER_SIZE","TILE_EXTENT","getDataV2","type","source","credentials","defaultCredentials","apiVersion","localCreds","defaultClassicCredentials","mapsUrl","DEFAULT_MAPS_URL_FORMAT","url","connection","API_VERSIONS","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","MAP_TYPES","QUERY","replace","DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","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 {defaultClassicCredentials, getDefaultCredentials} 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 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({type, source, credentials}) {\n const defaultCredentials = getDefaultCredentials();\n const apiVersion = (credentials && credentials.apiVersion) || defaultCredentials.apiVersion;\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...defaultClassicCredentials,\n ...(defaultCredentials.apiVersion === apiVersion && defaultCredentials),\n ...credentials\n };\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = DEFAULT_MAPS_URL_FORMAT[apiVersion];\n }\n\n let url;\n\n const connection = type === '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}) {\n let response;\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\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({response, json, credentials}) {\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) {\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({mapConfig, credentials}) {\n const parameters = initURLParameters(credentials);\n const cfg = JSON.stringify(mapConfig);\n return `${mapsUrl(credentials)}?${parameters.join('&')}&${encodeParameter('config', cfg)}`;\n}\n\nfunction buildURLMapsAPIv2({connection, type, source, credentials}) {\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) {\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) {\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 vector_extent: TILE_EXTENT\n }\n }\n ]\n };\n}\n"],"file":"maps-client.js"}
@@ -6,11 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.mapInstantiation = mapInstantiation;
7
7
  exports.fetchLayerData = fetchLayerData;
8
8
  exports.getData = getData;
9
+ exports.fetchMap = fetchMap;
9
10
 
10
11
  var _config = require("../config");
11
12
 
12
13
  var _mapsApiCommon = require("./maps-api-common");
13
14
 
15
+ var _parseMap = require("./parseMap");
16
+
14
17
  var _core = require("@deck.gl/core");
15
18
 
16
19
  const MAX_GET_LENGTH = 2048;
@@ -160,7 +163,7 @@ function getUrlFromMetadata(metadata, format) {
160
163
  return null;
161
164
  }
162
165
 
163
- function checkGetLayerDataParameters({
166
+ function checkFetchLayerDataParameters({
164
167
  type,
165
168
  source,
166
169
  connection,
@@ -188,12 +191,54 @@ async function fetchLayerData({
188
191
  columns,
189
192
  format,
190
193
  schema
194
+ }) {
195
+ const {
196
+ url,
197
+ accessToken,
198
+ mapFormat,
199
+ metadata
200
+ } = await _fetchDataUrl({
201
+ type,
202
+ source,
203
+ connection,
204
+ credentials,
205
+ geoColumn,
206
+ columns,
207
+ format,
208
+ schema
209
+ });
210
+ const data = await request({
211
+ url,
212
+ format: mapFormat,
213
+ accessToken
214
+ });
215
+ const result = {
216
+ data,
217
+ format: mapFormat
218
+ };
219
+
220
+ if (schema) {
221
+ result.schema = metadata.schema;
222
+ }
223
+
224
+ return result;
225
+ }
226
+
227
+ async function _fetchDataUrl({
228
+ type,
229
+ source,
230
+ connection,
231
+ credentials,
232
+ geoColumn,
233
+ columns,
234
+ format,
235
+ schema
191
236
  }) {
192
237
  const defaultCredentials = (0, _config.getDefaultCredentials)();
193
238
  const localCreds = { ...(defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials),
194
239
  ...credentials
195
240
  };
196
- checkGetLayerDataParameters({
241
+ checkFetchLayerDataParameters({
197
242
  type,
198
243
  source,
199
244
  connection,
@@ -222,7 +267,7 @@ async function fetchLayerData({
222
267
 
223
268
  _core.log.assert(url, "Format ".concat(format, " not available"));
224
269
  } else {
225
- const prioritizedFormats = [_mapsApiCommon.FORMATS.GEOJSON, _mapsApiCommon.FORMATS.NDJSON, _mapsApiCommon.FORMATS.TILEJSON];
270
+ const prioritizedFormats = [_mapsApiCommon.FORMATS.GEOJSON, _mapsApiCommon.FORMATS.JSON, _mapsApiCommon.FORMATS.NDJSON, _mapsApiCommon.FORMATS.TILEJSON];
226
271
 
227
272
  for (const f of prioritizedFormats) {
228
273
  url = getUrlFromMetadata(metadata, f);
@@ -237,21 +282,12 @@ async function fetchLayerData({
237
282
  const {
238
283
  accessToken
239
284
  } = localCreds;
240
- const data = await request({
285
+ return {
241
286
  url,
242
- format: mapFormat,
243
- accessToken
244
- });
245
- const result = {
246
- data,
247
- format: mapFormat
287
+ accessToken,
288
+ mapFormat,
289
+ metadata
248
290
  };
249
-
250
- if (schema) {
251
- result.schema = metadata.schema;
252
- }
253
-
254
- return result;
255
291
  }
256
292
 
257
293
  async function getData({
@@ -263,6 +299,8 @@ async function getData({
263
299
  columns,
264
300
  format
265
301
  }) {
302
+ _core.log.deprecated('getData', 'fetchLayerData')();
303
+
266
304
  const layerData = await fetchLayerData({
267
305
  type,
268
306
  source,
@@ -275,4 +313,102 @@ async function getData({
275
313
  });
276
314
  return layerData.data;
277
315
  }
316
+
317
+ async function _fetchMapDataset(dataset, accessToken, credentials) {
318
+ const {
319
+ connectionName: connection,
320
+ source,
321
+ type
322
+ } = dataset;
323
+ const {
324
+ url,
325
+ mapFormat
326
+ } = await _fetchDataUrl({
327
+ credentials: { ...credentials,
328
+ accessToken
329
+ },
330
+ connection,
331
+ source,
332
+ type
333
+ });
334
+ const cache = parseInt(new URLSearchParams(url).get('cache'), 10);
335
+
336
+ if (cache && dataset.cache === cache) {
337
+ return false;
338
+ }
339
+
340
+ dataset.cache = cache;
341
+ const data = await request({
342
+ url,
343
+ format: mapFormat,
344
+ accessToken
345
+ });
346
+ dataset.data = data;
347
+ return true;
348
+ }
349
+
350
+ async function fillInMapDatasets({
351
+ datasets,
352
+ token
353
+ }, credentials) {
354
+ const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials));
355
+ return await Promise.all(promises);
356
+ }
357
+
358
+ async function fetchMap({
359
+ cartoMapId,
360
+ credentials,
361
+ autoRefresh,
362
+ onNewData
363
+ }) {
364
+ const defaultCredentials = (0, _config.getDefaultCredentials)();
365
+ const localCreds = { ...(defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials),
366
+ ...credentials
367
+ };
368
+
369
+ _core.log.assert(cartoMapId, "Must define CARTO map id: fetchMap({cartoMapId: 'XXXX-XXXX-XXXX'})");
370
+
371
+ _core.log.assert(localCreds.apiVersion === _mapsApiCommon.API_VERSIONS.V3, 'Method only available for v3');
372
+
373
+ _core.log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');
374
+
375
+ if (!localCreds.mapsUrl) {
376
+ localCreds.mapsUrl = (0, _config.buildMapsUrlFromBase)(localCreds.apiBaseUrl);
377
+ }
378
+
379
+ if (autoRefresh || onNewData) {
380
+ _core.log.assert(onNewData, 'Must define `onNewData` when using autoRefresh');
381
+
382
+ _core.log.assert(typeof onNewData === 'function', '`onNewData` must be a function');
383
+
384
+ _core.log.assert(autoRefresh > 0, '`autoRefresh` must be a positive number');
385
+ }
386
+
387
+ const url = "".concat(localCreds.mapsUrl, "/public/").concat(cartoMapId);
388
+ const map = await request({
389
+ url
390
+ });
391
+ let stopAutoRefresh;
392
+
393
+ if (autoRefresh) {
394
+ const intervalId = setInterval(async () => {
395
+ const changed = await fillInMapDatasets(map, credentials);
396
+
397
+ if (changed.some(v => v === true)) {
398
+ onNewData((0, _parseMap.parseMap)(map));
399
+ }
400
+ }, autoRefresh * 1000);
401
+
402
+ stopAutoRefresh = () => {
403
+ clearInterval(intervalId);
404
+ };
405
+ }
406
+
407
+ await fillInMapDatasets(map, credentials);
408
+ return { ...(0, _parseMap.parseMap)(map),
409
+ ...{
410
+ stopAutoRefresh
411
+ }
412
+ };
413
+ }
278
414
  //# sourceMappingURL=maps-v3-client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["MAX_GET_LENGTH","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","FORMATS","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","schema","parameters","push","sourceName","MAP_TYPES","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkGetLayerDataParameters","localCreds","log","assert","apiVersion","API_VERSIONS","V3","apiBaseUrl","fetchLayerData","defaultCredentials","mapFormat","prioritizedFormats","GEOJSON","TILEJSON","f","data","result","getData","layerData"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\n response = await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns, schema}) {\n const parameters = [encodeParameter('client', 'deck-gl-carto')];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema\n}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkGetLayerDataParameters({type, source, connection, localCreds}) {\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n}\n\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema\n}) {\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 checkGetLayerDataParameters({type, source, connection, localCreds});\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema\n });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n }\n\n const {accessToken} = localCreds;\n\n const data = await request({url, format: mapFormat, accessToken});\n const result = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nexport async function getData({type, source, connection, credentials, geoColumn, columns, format}) {\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false\n });\n return layerData.data;\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.js"],"names":["MAX_GET_LENGTH","request","method","url","format","accessToken","body","response","headers","Accept","Authorization","fetch","error","Error","FORMATS","NDJSON","json","ok","dealWithError","rows","status","getParameters","type","source","geoColumn","columns","schema","parameters","push","sourceName","MAP_TYPES","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","localCreds","log","assert","apiVersion","API_VERSIONS","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","data","result","defaultCredentials","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URLSearchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","clearInterval"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase} from '../config';\nimport {API_VERSIONS, encodeParameter, FORMATS, MAP_TYPES} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\n\nconst MAX_GET_LENGTH = 2048;\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, format, accessToken, body}) {\n let response;\n\n const headers = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n /* eslint no-undef: \"error\" */\n response = await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n\n if (format === FORMATS.NDJSON) {\n return response;\n }\n\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n\n return json.rows ? json.rows : json;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}) {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({type, source, geoColumn, columns, schema}) {\n const parameters = [encodeParameter('client', 'deck-gl-carto')];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema\n}) {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema})}`;\n const {accessToken} = credentials;\n\n const format = 'json';\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: 'deck-gl-carto'\n });\n return await request({method: 'POST', url: baseUrl, format, accessToken, body});\n }\n\n return await request({url, format, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata, format) {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({type, source, connection, localCreds}) {\n log.assert(connection, 'Must define connection');\n log.assert(type, 'Must define a type');\n log.assert(source, 'Must define a source');\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n log.assert(localCreds.accessToken, 'Must define an accessToken');\n}\n\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema\n}) {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema\n });\n\n const data = await request({url, format: mapFormat, accessToken});\n const result = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema\n}) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, localCreds});\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema\n });\n let url;\n let mapFormat;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n log.assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({type, source, connection, credentials, geoColumn, columns, format}) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URLSearchParams */\nasync function _fetchMapDataset(dataset, accessToken, credentials) {\n // First fetch metadata\n const {connectionName: connection, source, type} = dataset;\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n source,\n type\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URLSearchParams(url).get('cache'), 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const data = await request({url, format: mapFormat, accessToken});\n dataset.data = data;\n return true;\n}\n\nasync function fillInMapDatasets({datasets, token}, credentials) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({cartoMapId, credentials, autoRefresh, onNewData}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n\n log.assert(cartoMapId, `Must define CARTO map id: fetchMap({cartoMapId: 'XXXX-XXXX-XXXX'})`);\n\n log.assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n log.assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n log.assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n log.assert(typeof onNewData === 'function', '`onNewData` must be a function');\n log.assert(autoRefresh > 0, '`autoRefresh` must be a positive number');\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await request({url});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh;\n if (autoRefresh) {\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, credentials);\n if (changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, credentials);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}