@deck.gl/carto 8.7.0-beta.7 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -53845,12 +53845,14 @@ async function getData({
53845
53845
  /* global clearInterval, setInterval, URL */
53846
53846
 
53847
53847
  async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
53848
- // First fetch metadata
53849
53848
  const {
53850
53849
  connectionName: connection,
53850
+ columns,
53851
+ geoColumn,
53851
53852
  source,
53852
53853
  type
53853
- } = dataset;
53854
+ } = dataset; // First fetch metadata
53855
+
53854
53856
  const {
53855
53857
  url,
53856
53858
  mapFormat
@@ -53859,6 +53861,8 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
53859
53861
  accessToken
53860
53862
  },
53861
53863
  connection,
53864
+ columns,
53865
+ geoColumn,
53862
53866
  source,
53863
53867
  type,
53864
53868
  clientId
@@ -521,19 +521,21 @@ function _fetchMapDataset(_x8, _x9, _x10, _x11) {
521
521
 
522
522
  function _fetchMapDataset2() {
523
523
  _fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(dataset, accessToken, credentials, clientId) {
524
- var connection, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
524
+ var connection, columns, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
525
525
 
526
526
  return _regenerator.default.wrap(function _callee8$(_context8) {
527
527
  while (1) {
528
528
  switch (_context8.prev = _context8.next) {
529
529
  case 0:
530
- connection = dataset.connectionName, source = dataset.source, type = dataset.type;
530
+ connection = dataset.connectionName, columns = dataset.columns, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
531
531
  _context8.next = 3;
532
532
  return _fetchDataUrl({
533
533
  credentials: _objectSpread(_objectSpread({}, credentials), {}, {
534
534
  accessToken: accessToken
535
535
  }),
536
536
  connection: connection,
537
+ columns: columns,
538
+ geoColumn: geoColumn,
537
539
  source: source,
538
540
  type: type,
539
541
  clientId: clientId
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","MAP_TYPES","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","fetchLayerData","_fetchDataUrl","mapFormat","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","getData","log","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval"],"mappings":";;;;;;;;;;;;;;;;;;AAGA;;AACA;;AAUA;;AACA;;AACA;;;;;;AAEA,IAAMA,cAAc,GAAG,IAAvB;AACA,IAAMC,cAAc,GAAG,eAAvB;;SAYeC,O;;;;;uEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwBC,YAAAA,MAAxB,QAAwBA,MAAxB,EAAgCC,GAAhC,QAAgCA,GAAhC,EAAqCC,WAArC,QAAqCA,WAArC,EAAkDC,IAAlD,QAAkDA,IAAlD;AACQC,YAAAA,OADR,GAC0C;AACtCC,cAAAA,MAAM,EAAE;AAD8B,aAD1C;;AAKE,gBAAIH,WAAJ,EAAiB;AACfE,cAAAA,OAAO,CAACE,aAAR,oBAAkCJ,WAAlC;AACD;;AAED,gBAAIF,MAAM,KAAK,MAAf,EAAuB;AACrBI,cAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,kBAA1B;AACD;;AAXH;AAAA;AAAA,mBAeiBG,KAAK,CAACN,GAAD,EAAM;AACtBD,cAAAA,MAAM,EAANA,MADsB;AAEtBI,cAAAA,OAAO,EAAPA,OAFsB;AAGtBD,cAAAA,IAAI,EAAJA;AAHsB,aAAN,CAftB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,kBAqBU,IAAIK,KAAJ,uDArBV;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAyBeC,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACET,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEC,WAHF,SAGEA,WAHF,EAIEC,IAJF,SAIEA,IAJF;AAAA;AAAA,mBAMyBJ,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAD,CANhC;;AAAA;AAMQO,YAAAA,QANR;AAAA;AAAA,mBAOqBA,QAAQ,CAACC,IAAT,EAPrB;;AAAA;AAOQA,YAAAA,IAPR;;AASE,gBAAI,CAACD,QAAQ,CAACE,EAAd,EAAkB;AAChBC,cAAAA,aAAa,CAAC;AAACH,gBAAAA,QAAQ,EAARA,QAAD;AAAWI,gBAAAA,KAAK,EAAEH,IAAI,CAACG;AAAvB,eAAD,CAAb;AACD;;AAXH,8CAYSH,IAZT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAeeI,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACEf,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEC,WAHF,SAGEA,WAHF,EAIEc,MAJF,SAIEA,MAJF,EAKEb,IALF,SAKEA,IALF;;AAAA,kBASMa,MAAM,KAAKC,uBAAQC,MATzB;AAAA;AAAA;AAAA;;AAAA,8CAUWnB,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAD,CAVlB;;AAAA;AAAA;AAAA,mBAaqBM,WAAW,CAAM;AAACT,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAN,CAbhC;;AAAA;AAaQgB,YAAAA,IAbR;AAAA,8CAcSA,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAjB,GAAwBD,IAdjC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAoBA,SAASN,aAAT,QAAuF;AAAA,MAA/DH,QAA+D,SAA/DA,QAA+D;AAAA,MAArDI,KAAqD,SAArDA,KAAqD;;AACrF,UAAQJ,QAAQ,CAACW,MAAjB;AACE,SAAK,GAAL;AACE,YAAM,IAAIb,KAAJ,wBAA0BM,KAA1B,EAAN;;AACF,SAAK,GAAL;AACA,SAAK,GAAL;AACE,YAAM,IAAIN,KAAJ,gCAAkCM,KAAlC,EAAN;;AACF;AACE,YAAM,IAAIN,KAAJ,CAAUM,KAAV,CAAN;AAPJ;AASD;;AAiBD,SAASQ,aAAT,QAO6D;AAAA,MAN3DC,IAM2D,SAN3DA,IAM2D;AAAA,MAL3DC,MAK2D,SAL3DA,MAK2D;AAAA,MAJ3DC,SAI2D,SAJ3DA,SAI2D;AAAA,MAH3DC,OAG2D,SAH3DA,OAG2D;AAAA,MAF3DC,MAE2D,SAF3DA,MAE2D;AAAA,MAD3DC,QAC2D,SAD3DA,QAC2D;AAC3D,MAAMC,UAAU,GAAG,CAAC,oCAAgB,QAAhB,EAA0BD,QAAQ,IAAI9B,cAAtC,CAAD,CAAnB;;AACA,MAAI6B,MAAJ,EAAY;AACVE,IAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,QAAhB,EAA0B,IAA1B,CAAhB;AACD;;AAED,MAAMC,UAAU,GAAGR,IAAI,KAAKS,yBAAUC,KAAnB,GAA2B,GAA3B,GAAiC,MAApD;AACAJ,EAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgBC,UAAhB,EAA4BP,MAA5B,CAAhB;;AAEA,MAAID,IAAI,KAAKS,yBAAUE,KAAvB,EAA8B;AAC5B,QAAIT,SAAJ,EAAe;AACbI,MAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,YAAhB,EAA8BL,SAA9B,CAAhB;AACD;;AACD,QAAIC,OAAJ,EAAa;AACXG,MAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,SAAhB,EAA2BJ,OAAO,CAACS,IAAR,CAAa,GAAb,CAA3B,CAAhB;AACD;AACF;;AAED,SAAON,UAAU,CAACM,IAAX,CAAgB,GAAhB,CAAP;AACD;;SAEqBC,gB;;;;;gFAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLb,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLa,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLb,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLC,MAPK,SAOLA,MAPK,EAQLC,QARK,SAQLA,QARK;AAUCW,YAAAA,OAVD,aAUcD,WAAW,CAACE,OAV1B,cAUqCH,UAVrC,cAUmDd,IAVnD;AAWCtB,YAAAA,GAXD,aAWUsC,OAXV,cAWqBjB,aAAa,CAAC;AAACC,cAAAA,IAAI,EAAJA,IAAD;AAAOC,cAAAA,MAAM,EAANA,MAAP;AAAeC,cAAAA,SAAS,EAATA,SAAf;AAA0BC,cAAAA,OAAO,EAAPA,OAA1B;AAAmCC,cAAAA,MAAM,EAANA,MAAnC;AAA2CC,cAAAA,QAAQ,EAARA;AAA3C,aAAD,CAXlC;AAYE1B,YAAAA,WAZF,GAYiBoC,WAZjB,CAYEpC,WAZF;;AAAA,kBAcDD,GAAG,CAACwC,MAAJ,GAAa5C,cAAb,IAA+B0B,IAAI,KAAKS,yBAAUC,KAdjD;AAAA;AAAA;AAAA;;AAgBG9B,YAAAA,IAhBH,GAgBUuC,IAAI,CAACC,SAAL,CAAe;AAC1BC,cAAAA,CAAC,EAAEpB,MADuB;AAE1BqB,cAAAA,MAAM,EAAEjB,QAAQ,IAAI9B;AAFM,aAAf,CAhBV;AAAA;AAAA,mBAoBUW,WAAW,CAAC;AAACT,cAAAA,MAAM,EAAE,MAAT;AAAiBC,cAAAA,GAAG,EAAEsC,OAAtB;AAA+BrC,cAAAA,WAAW,EAAXA,WAA/B;AAA4CC,cAAAA,IAAI,EAAJA;AAA5C,aAAD,CApBrB;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAuBQM,WAAW,CAAC;AAACR,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA;AAAN,aAAD,CAvBnB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AA0BP,SAAS4C,kBAAT,CAA4BC,QAA5B,EAAwD/B,MAAxD,EAAuF;AACrF,MAAMgC,CAAC,GAAGD,QAAQ,CAAC/B,MAAD,CAAlB;;AAEA,MAAIgC,CAAC,IAAI,CAACA,CAAC,CAAClC,KAAR,IAAiBkC,CAAC,CAAC/C,GAAvB,EAA4B;AAC1B,WAAO+C,CAAC,CAAC/C,GAAF,CAAM,CAAN,CAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASgD,6BAAT,QAKyB;AAAA,MAJvB1B,IAIuB,SAJvBA,IAIuB;AAAA,MAHvBC,MAGuB,SAHvBA,MAGuB;AAAA,MAFvBa,UAEuB,SAFvBA,UAEuB;AAAA,MADvBC,WACuB,SADvBA,WACuB;AACvB,qBAAOD,UAAP,EAAmB,wBAAnB;AACA,qBAAOd,IAAP,EAAa,oBAAb;AACA,qBAAOC,MAAP,EAAe,sBAAf;AAEA,qBAAOc,WAAW,CAACY,UAAZ,KAA2BC,4BAAaC,EAA/C,EAAmD,8BAAnD;AACA,qBAAOd,WAAW,CAACe,UAAnB,EAA+B,wBAA/B;AACA,qBAAOf,WAAW,CAACpC,WAAnB,EAAgC,4BAAhC;AACD;;SAOqBoD,c;;;;;8EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACL/B,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLa,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLb,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLV,MAPK,SAOLA,MAPK,EAQLW,MARK,SAQLA,MARK,EASLC,QATK,SASLA,QATK;AAAA;AAAA,mBAaiD2B,aAAa,CAAC;AAClEhC,cAAAA,IAAI,EAAJA,IADkE;AAElEC,cAAAA,MAAM,EAANA,MAFkE;AAGlEa,cAAAA,UAAU,EAAVA,UAHkE;AAIlEC,cAAAA,WAAW,EAAXA,WAJkE;AAKlEb,cAAAA,SAAS,EAATA,SALkE;AAMlEC,cAAAA,OAAO,EAAPA,OANkE;AAOlEV,cAAAA,MAAM,EAANA,MAPkE;AAQlEW,cAAAA,MAAM,EAANA,MARkE;AASlEC,cAAAA,QAAQ,EAARA;AATkE,aAAD,CAb9D;;AAAA;AAAA;AAaE3B,YAAAA,GAbF,wBAaEA,GAbF;AAaOC,YAAAA,WAbP,wBAaOA,WAbP;AAaoBsD,YAAAA,SAbpB,wBAaoBA,SAbpB;AAa+BT,YAAAA,QAb/B,wBAa+BA,QAb/B;AAAA;AAAA,mBAyBchC,WAAW,CAAC;AAACd,cAAAA,GAAG,EAAHA,GAAD;AAAMe,cAAAA,MAAM,EAAEwC,SAAd;AAAyBtD,cAAAA,WAAW,EAAXA;AAAzB,aAAD,CAzBzB;;AAAA;AAyBCiB,YAAAA,IAzBD;AA0BCsC,YAAAA,MA1BD,GA0BgC;AAACtC,cAAAA,IAAI,EAAJA,IAAD;AAAOH,cAAAA,MAAM,EAAEwC;AAAf,aA1BhC;;AA2BL,gBAAI7B,MAAJ,EAAY;AACV8B,cAAAA,MAAM,CAAC9B,MAAP,GAAgBoB,QAAQ,CAACpB,MAAzB;AACD;;AA7BI,8CA+BE8B,MA/BF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAkCQF,a;;;;;6EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACEhC,YAAAA,IADF,SACEA,IADF,EAEEC,MAFF,SAEEA,MAFF,EAGEa,UAHF,SAGEA,UAHF,EAIEC,WAJF,SAIEA,WAJF,EAKEb,SALF,SAKEA,SALF,EAMEC,OANF,SAMEA,OANF,EAOEV,MAPF,SAOEA,MAPF,EAQEW,MARF,SAQEA,MARF,EASEC,QATF,SASEA,QATF;AAWQ8B,YAAAA,kBAXR,GAW6B,oCAX7B;AAcQC,YAAAA,UAdR,mCAeQD,kBAAkB,CAACR,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDM,kBAf7D,GAgBOpB,WAhBP;AAkBEW,YAAAA,6BAA6B,CAAC;AAAC1B,cAAAA,IAAI,EAAJA,IAAD;AAAOC,cAAAA,MAAM,EAANA,MAAP;AAAea,cAAAA,UAAU,EAAVA,UAAf;AAA2BC,cAAAA,WAAW,EAAEqB;AAAxC,aAAD,CAA7B;;AAEA,gBAAI,CAACA,UAAU,CAACnB,OAAhB,EAAyB;AACvBmB,cAAAA,UAAU,CAACnB,OAAX,GAAqB,kCAAqBmB,UAAU,CAACN,UAAhC,CAArB;AACD;;AAtBH;AAAA,mBAwByBjB,gBAAgB,CAAC;AACtCb,cAAAA,IAAI,EAAJA,IADsC;AAEtCC,cAAAA,MAAM,EAANA,MAFsC;AAGtCa,cAAAA,UAAU,EAAVA,UAHsC;AAItCC,cAAAA,WAAW,EAAEqB,UAJyB;AAKtClC,cAAAA,SAAS,EAATA,SALsC;AAMtCC,cAAAA,OAAO,EAAPA,OANsC;AAOtCC,cAAAA,MAAM,EAANA,MAPsC;AAQtCC,cAAAA,QAAQ,EAARA;AARsC,aAAD,CAxBzC;;AAAA;AAwBQmB,YAAAA,QAxBR;AAkCM9C,YAAAA,GAlCN,GAkC2B,IAlC3B;;AAAA,iBAqCMe,MArCN;AAAA;AAAA;AAAA;;AAsCIwC,YAAAA,SAAS,GAAGxC,MAAZ;AACAf,YAAAA,GAAG,GAAG6C,kBAAkB,CAACC,QAAD,EAAW/B,MAAX,CAAxB;AACA,+BAAOf,GAAP,mBAAsBe,MAAtB;AAxCJ;AAAA;;AAAA;AA2CU4C,YAAAA,kBA3CV,GA2C+B,CAAC3C,uBAAQ4C,OAAT,EAAkB5C,uBAAQyB,IAA1B,EAAgCzB,uBAAQC,MAAxC,EAAgDD,uBAAQ6C,QAAxD,CA3C/B;AAAA,0CA4CoBF,kBA5CpB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AA4CeG,YAAAA,CA5Cf;AA6CM9D,YAAAA,GAAG,GAAG6C,kBAAkB,CAACC,QAAD,EAAWgB,CAAX,CAAxB;;AA7CN,iBA8CU9D,GA9CV;AAAA;AAAA;AAAA;;AA+CQuD,YAAAA,SAAS,GAAGO,CAAZ;AA/CR;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAmDI,+BAAO9D,GAAG,IAAIuD,SAAd,EAAyB,iDAAzB;;AAnDJ;AAsDStD,YAAAA,WAtDT,GAsDwByD,UAtDxB,CAsDSzD,WAtDT;AAAA,8CAuDS;AAACD,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA,WAAN;AAAmBsD,cAAAA,SAAS,EAATA,SAAnB;AAA8BT,cAAAA,QAAQ,EAARA;AAA9B,aAvDT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA0DsBiB,O;;;;;uEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLzC,YAAAA,IADK,UACLA,IADK,EAELC,MAFK,UAELA,MAFK,EAGLa,UAHK,UAGLA,UAHK,EAILC,WAJK,UAILA,WAJK,EAKLb,SALK,UAKLA,SALK,EAMLC,OANK,UAMLA,OANK,EAOLV,MAPK,UAOLA,MAPK,EAQLY,QARK,UAQLA,QARK;;AAULqC,sBAAIC,UAAJ,CAAe,SAAf,EAA0B,gBAA1B;;AAVK;AAAA,mBAWmBZ,cAAc,CAAC;AACrC/B,cAAAA,IAAI,EAAJA,IADqC;AAErCC,cAAAA,MAAM,EAANA,MAFqC;AAGrCa,cAAAA,UAAU,EAAVA,UAHqC;AAIrCC,cAAAA,WAAW,EAAXA,WAJqC;AAKrCb,cAAAA,SAAS,EAATA,SALqC;AAMrCC,cAAAA,OAAO,EAAPA,OANqC;AAOrCV,cAAAA,MAAM,EAANA,MAPqC;AAQrCW,cAAAA,MAAM,EAAE,KAR6B;AASrCC,cAAAA,QAAQ,EAARA;AATqC,aAAD,CAXjC;;AAAA;AAWCuC,YAAAA,SAXD;AAAA,8CAsBEA,SAAS,CAAChD,IAtBZ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA0BQiD,gB;;;;;gFAAf,kBACEC,OADF,EAEEnE,WAFF,EAGEoC,WAHF,EAIEV,QAJF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAOyBS,YAAAA,UAPzB,GAOqDgC,OAPrD,CAOSC,cAPT,EAOqC9C,MAPrC,GAOqD6C,OAPrD,CAOqC7C,MAPrC,EAO6CD,IAP7C,GAOqD8C,OAPrD,CAO6C9C,IAP7C;AAAA;AAAA,mBAQiCgC,aAAa,CAAC;AAC3CjB,cAAAA,WAAW,kCAAMA,WAAN;AAAmBpC,gBAAAA,WAAW,EAAXA;AAAnB,gBADgC;AAE3CmC,cAAAA,UAAU,EAAVA,UAF2C;AAG3Cb,cAAAA,MAAM,EAANA,MAH2C;AAI3CD,cAAAA,IAAI,EAAJA,IAJ2C;AAK3CK,cAAAA,QAAQ,EAARA;AAL2C,aAAD,CAR9C;;AAAA;AAAA;AAQS3B,YAAAA,GART,yBAQSA,GART;AAQcuD,YAAAA,SARd,yBAQcA,SARd;AAiBQe,YAAAA,KAjBR,GAiBgBC,QAAQ,CAAC,IAAIC,GAAJ,CAAQxE,GAAR,EAAayE,YAAb,CAA0BC,GAA1B,CAA8B,OAA9B,KAA0C,EAA3C,EAA+C,EAA/C,CAjBxB;;AAAA,kBAkBMJ,KAAK,IAAIF,OAAO,CAACE,KAAR,KAAkBA,KAlBjC;AAAA;AAAA;AAAA;;AAAA,8CAmBW,KAnBX;;AAAA;AAqBEF,YAAAA,OAAO,CAACE,KAAR,GAAgBA,KAAhB;AArBF;AAAA,mBAwBuBxD,WAAW,CAAC;AAACd,cAAAA,GAAG,EAAHA,GAAD;AAAMe,cAAAA,MAAM,EAAEwC,SAAd;AAAyBtD,cAAAA,WAAW,EAAXA;AAAzB,aAAD,CAxBlC;;AAAA;AAwBEmE,YAAAA,OAAO,CAAClD,IAxBV;AAAA,8CA0BS,IA1BT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA6BeyD,iB;;;;;iFAAf,0BAEEhD,QAFF,EAGEU,WAHF;AAAA;AAAA;AAAA;AAAA;AAAA;AACGuC,YAAAA,QADH,UACGA,QADH,EACaC,KADb,UACaA,KADb;AAKQC,YAAAA,QALR,GAKmBF,QAAQ,CAACG,GAAT,CAAa,UAAAX,OAAO;AAAA,qBAAID,gBAAgB,CAACC,OAAD,EAAUS,KAAV,EAAiBxC,WAAjB,EAA8BV,QAA9B,CAApB;AAAA,aAApB,CALnB;AAAA;AAAA,mBAMeqD,OAAO,CAACC,GAAR,CAAYH,QAAZ,CANf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SASsBI,Q;;;;;wEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLC,YAAAA,UADK,UACLA,UADK,EAELxD,QAFK,UAELA,QAFK,EAGLU,WAHK,UAGLA,WAHK,EAIL+C,WAJK,UAILA,WAJK,EAKLC,SALK,UAKLA,SALK;AAaC5B,YAAAA,kBAbD,GAasB,oCAbtB;AAcCC,YAAAA,UAdD,mCAeCD,kBAAkB,CAACR,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDM,kBAftD,GAgBApB,WAhBA;AAkBEpC,YAAAA,WAlBF,GAkBiByD,UAlBjB,CAkBEzD,WAlBF;AAoBL,+BAAOkF,UAAP,EAAmB,oEAAnB;AAEA,+BAAOzB,UAAU,CAACT,UAAX,KAA0BC,4BAAaC,EAA9C,EAAkD,8BAAlD;AACA,+BAAOO,UAAU,CAACN,UAAlB,EAA8B,wBAA9B;;AACA,gBAAI,CAACM,UAAU,CAACnB,OAAhB,EAAyB;AACvBmB,cAAAA,UAAU,CAACnB,OAAX,GAAqB,kCAAqBmB,UAAU,CAACN,UAAhC,CAArB;AACD;;AAED,gBAAIgC,WAAW,IAAIC,SAAnB,EAA8B;AAC5B,iCAAOA,SAAP,EAAkB,gDAAlB;AACA,iCAAO,OAAOA,SAAP,KAAqB,UAA5B,EAAwC,gCAAxC;AACA,iCACE,OAAOD,WAAP,KAAuB,QAAvB,IAAmCA,WAAW,GAAG,CADnD,EAEE,yCAFF;AAID;;AAEKpF,YAAAA,GArCD,aAqCU0D,UAAU,CAACnB,OArCrB,qBAqCuC4C,UArCvC;AAAA;AAAA,mBAsCa3E,WAAW,CAAM;AAACR,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA;AAAN,aAAN,CAtCxB;;AAAA;AAsCC8E,YAAAA,GAtCD;;AA2CL,gBAAIK,WAAJ,EAAiB;AAETE,cAAAA,UAFS,GAEIC,WAAW,2DAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BACPZ,iBAAiB,CAACI,GAAD,EAAMpD,QAAN,EAAgB+B,UAAhB,CADV;;AAAA;AACvB8B,wBAAAA,OADuB;;AAE7B,4BAAIH,SAAS,IAAIG,OAAO,CAACC,IAAR,CAAa,UAAAC,CAAC;AAAA,iCAAIA,CAAC,KAAK,IAAV;AAAA,yBAAd,CAAjB,EAAgD;AAC9CL,0BAAAA,SAAS,CAAC,wBAASN,GAAT,CAAD,CAAT;AACD;;AAJ4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAD,IAK3BK,WAAW,GAAG,IALa,CAFf;;AAQfO,cAAAA,eAAe,GAAG,2BAAM;AACtBC,gBAAAA,aAAa,CAACN,UAAD,CAAb;AACD,eAFD;AAGD;;AAtDI;AAAA,mBAyDCX,iBAAiB,CAACI,GAAD,EAAMpD,QAAN,EAAgB+B,UAAhB,CAzDlB;;AAAA;AAAA,+EA2DA,wBAASqB,GAAT,CA3DA,GA4DA;AAACY,cAAAA,eAAe,EAAfA;AAAD,aA5DA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n encodeParameter,\n Format,\n FORMATS,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\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 clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {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 clientId\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, credentials: 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 clientId\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\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 clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\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 clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","MAP_TYPES","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","fetchLayerData","_fetchDataUrl","mapFormat","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","getData","log","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n encodeParameter,\n Format,\n FORMATS,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\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 clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {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 clientId\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, credentials: 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 clientId\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\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 clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n columns,\n geoColumn,\n source,\n type,\n clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
@@ -338,6 +338,8 @@ export async function getData({
338
338
  async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
339
339
  const {
340
340
  connectionName: connection,
341
+ columns,
342
+ geoColumn,
341
343
  source,
342
344
  type
343
345
  } = dataset;
@@ -349,6 +351,8 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
349
351
  accessToken
350
352
  },
351
353
  connection,
354
+ columns,
355
+ geoColumn,
352
356
  source,
353
357
  type,
354
358
  clientId
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","error","Error","requestJson","response","json","ok","dealWithError","requestData","format","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","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, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n encodeParameter,\n Format,\n FORMATS,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\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 clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {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 clientId\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, credentials: 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 clientId\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\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 clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\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 clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","encodeParameter","FORMATS","MAP_TYPES","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","error","Error","requestJson","response","json","ok","dealWithError","requestData","format","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","QUERY","TABLE","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","fetchLayerData","mapFormat","_fetchDataUrl","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","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, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n encodeParameter,\n Format,\n FORMATS,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\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 clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {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 clientId\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, credentials: 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 clientId\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\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 clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n columns,\n geoColumn,\n source,\n type,\n clientId\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}