@deck.gl/carto 9.0.0-alpha.6 → 9.0.0-beta.1

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 (118) hide show
  1. package/dist/cartoRasterTile-worker.js +4 -14
  2. package/dist/cartoSpatialTile-worker.js +4 -14
  3. package/dist/cartoVectorTile-worker.js +4 -14
  4. package/dist/dist.dev.js +50 -35
  5. package/dist/es5/api/endpoints.js +41 -20
  6. package/dist/es5/api/endpoints.js.map +1 -1
  7. package/dist/es5/api/fetch-map.js +16 -18
  8. package/dist/es5/api/fetch-map.js.map +1 -1
  9. package/dist/es5/api/layer-map.js +1 -1
  10. package/dist/es5/api/layer-map.js.map +1 -1
  11. package/dist/es5/api/query.js +10 -7
  12. package/dist/es5/api/query.js.map +1 -1
  13. package/dist/es5/api/request-with-parameters.js +1 -1
  14. package/dist/es5/api/request-with-parameters.js.map +1 -1
  15. package/dist/es5/layers/schema/carto-raster-tile-loader.js +1 -1
  16. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -1
  17. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +1 -1
  18. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  19. package/dist/es5/layers/schema/carto-vector-tile-loader.js +1 -1
  20. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
  21. package/dist/es5/layers/utils.js +1 -1
  22. package/dist/es5/layers/utils.js.map +1 -1
  23. package/dist/es5/sources/base-source.js.map +1 -1
  24. package/dist/esm/api/endpoints.js +30 -17
  25. package/dist/esm/api/endpoints.js.map +1 -1
  26. package/dist/esm/api/fetch-map.js +12 -14
  27. package/dist/esm/api/fetch-map.js.map +1 -1
  28. package/dist/esm/api/layer-map.js +1 -1
  29. package/dist/esm/api/layer-map.js.map +1 -1
  30. package/dist/esm/api/query.js +6 -4
  31. package/dist/esm/api/query.js.map +1 -1
  32. package/dist/esm/api/request-with-parameters.js +1 -1
  33. package/dist/esm/api/request-with-parameters.js.map +1 -1
  34. package/dist/esm/layers/schema/carto-raster-tile-loader.js +1 -1
  35. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -1
  36. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +1 -1
  37. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  38. package/dist/esm/layers/schema/carto-vector-tile-loader.js +1 -1
  39. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
  40. package/dist/esm/layers/utils.js +1 -1
  41. package/dist/esm/layers/utils.js.map +1 -1
  42. package/dist/esm/sources/base-source.js.map +1 -1
  43. package/dist.min.js +39 -39
  44. package/package.json +10 -10
  45. package/src/.DS_Store +0 -0
  46. package/src/api/endpoints.ts +48 -17
  47. package/src/api/fetch-map.ts +13 -18
  48. package/src/api/layer-map.ts +3 -1
  49. package/src/api/query.ts +8 -4
  50. package/src/api/request-with-parameters.ts +1 -1
  51. package/src/layers/utils.ts +1 -1
  52. package/src/sources/base-source.ts +0 -1
  53. package/src/sources/types.ts +87 -3
  54. package/typed/api/endpoints.d.ts +17 -6
  55. package/typed/api/endpoints.d.ts.map +1 -1
  56. package/typed/api/fetch-map.d.ts +2 -3
  57. package/typed/api/fetch-map.d.ts.map +1 -1
  58. package/typed/api/layer-map.d.ts +1 -1
  59. package/typed/api/layer-map.d.ts.map +1 -1
  60. package/typed/api/query.d.ts +1 -1
  61. package/typed/api/query.d.ts.map +1 -1
  62. package/typed/api/types.d.ts +19 -19
  63. package/typed/api/types.d.ts.map +1 -1
  64. package/typed/layers/h3-tile-layer.d.ts +2 -2
  65. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  66. package/typed/layers/h3-tileset-2d.d.ts +1 -1
  67. package/typed/layers/h3-tileset-2d.d.ts.map +1 -1
  68. package/typed/layers/point-label-layer.d.ts +2 -2
  69. package/typed/layers/point-label-layer.d.ts.map +1 -1
  70. package/typed/layers/quadbin-layer.d.ts +2 -2
  71. package/typed/layers/quadbin-layer.d.ts.map +1 -1
  72. package/typed/layers/quadbin-tile-layer.d.ts +2 -2
  73. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  74. package/typed/layers/quadbin-tileset-2d.d.ts +1 -1
  75. package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -1
  76. package/typed/layers/raster-layer.d.ts +2 -2
  77. package/typed/layers/raster-layer.d.ts.map +1 -1
  78. package/typed/layers/raster-tile-layer.d.ts +2 -2
  79. package/typed/layers/raster-tile-layer.d.ts.map +1 -1
  80. package/typed/layers/schema/carto-raster-tile-loader.d.ts +1 -1
  81. package/typed/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
  82. package/typed/layers/schema/spatialjson-utils.d.ts +8 -8
  83. package/typed/layers/schema/spatialjson-utils.d.ts.map +1 -1
  84. package/typed/layers/spatial-index-tile-layer.d.ts +2 -2
  85. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
  86. package/typed/layers/vector-tile-layer.d.ts +3 -3
  87. package/typed/layers/vector-tile-layer.d.ts.map +1 -1
  88. package/typed/sources/base-source.d.ts.map +1 -1
  89. package/typed/sources/boundary-query-source.d.ts +1 -1
  90. package/typed/sources/boundary-query-source.d.ts.map +1 -1
  91. package/typed/sources/boundary-table-source.d.ts +1 -1
  92. package/typed/sources/boundary-table-source.d.ts.map +1 -1
  93. package/typed/sources/h3-query-source.d.ts +1 -1
  94. package/typed/sources/h3-query-source.d.ts.map +1 -1
  95. package/typed/sources/h3-table-source.d.ts +1 -1
  96. package/typed/sources/h3-table-source.d.ts.map +1 -1
  97. package/typed/sources/h3-tileset-source.d.ts +1 -1
  98. package/typed/sources/h3-tileset-source.d.ts.map +1 -1
  99. package/typed/sources/quadbin-query-source.d.ts +1 -1
  100. package/typed/sources/quadbin-query-source.d.ts.map +1 -1
  101. package/typed/sources/quadbin-table-source.d.ts +1 -1
  102. package/typed/sources/quadbin-table-source.d.ts.map +1 -1
  103. package/typed/sources/quadbin-tileset-source.d.ts +1 -1
  104. package/typed/sources/quadbin-tileset-source.d.ts.map +1 -1
  105. package/typed/sources/raster-source.d.ts +1 -1
  106. package/typed/sources/raster-source.d.ts.map +1 -1
  107. package/typed/sources/types.d.ts +91 -16
  108. package/typed/sources/types.d.ts.map +1 -1
  109. package/typed/sources/vector-query-source.d.ts +1 -1
  110. package/typed/sources/vector-query-source.d.ts.map +1 -1
  111. package/typed/sources/vector-table-source.d.ts +1 -1
  112. package/typed/sources/vector-table-source.d.ts.map +1 -1
  113. package/typed/sources/vector-tileset-source.d.ts +1 -1
  114. package/typed/sources/vector-tileset-source.d.ts.map +1 -1
  115. package/typed/style/palette.d.ts +1 -1
  116. package/typed/style/palette.d.ts.map +1 -1
  117. package/typed/style/utils.d.ts +1 -1
  118. package/typed/style/utils.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { CartoAPIError } from './carto-api-error';
2
2
  import { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from './common';
3
- import { buildMapsUrlFromBase, buildStatsUrlFromBase } from './endpoints';
3
+ import { buildPublicMapUrl, buildStatsUrl } from './endpoints';
4
4
  import { h3QuerySource, h3TableSource, quadbinQuerySource, quadbinTableSource, vectorQuerySource, vectorTableSource, vectorTilesetSource } from '../sources';
5
5
  import { parseMap } from './parse-map';
6
6
  import { requestWithParameters } from './request-with-parameters';
@@ -103,7 +103,7 @@ async function _fetchMapDataset(dataset, accessToken, apiBaseUrl, clientId, head
103
103
 
104
104
  async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
105
105
  const {
106
- connectionName: connection,
106
+ connectionName,
107
107
  data,
108
108
  id,
109
109
  source,
@@ -112,7 +112,7 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
112
112
  } = dataset;
113
113
  const errorContext = {
114
114
  requestType: 'Tile stats',
115
- connection,
115
+ connection: connectionName,
116
116
  type,
117
117
  source
118
118
  };
@@ -121,15 +121,11 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
121
121
  throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);
122
122
  }
123
123
 
124
- const statsUrl = buildStatsUrlFromBase(apiBaseUrl);
125
- let baseUrl = `${statsUrl}/${connection}/`;
126
-
127
- if (type === 'query') {
128
- baseUrl += attribute;
129
- } else {
130
- baseUrl += `${source}/${attribute}`;
131
- }
132
-
124
+ const baseUrl = buildStatsUrl({
125
+ attribute,
126
+ apiBaseUrl,
127
+ ...dataset
128
+ });
133
129
  const headers = {
134
130
  Authorization: `Bearer ${accessToken}`
135
131
  };
@@ -217,7 +213,6 @@ export async function fetchMap({
217
213
  cartoMapId,
218
214
  clientId = DEFAULT_CLIENT,
219
215
  headers = {},
220
- mapsUrl,
221
216
  autoRefresh,
222
217
  onNewData
223
218
  }) {
@@ -230,7 +225,10 @@ export async function fetchMap({
230
225
  assert(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');
231
226
  }
232
227
 
233
- const baseUrl = `${mapsUrl || buildMapsUrlFromBase(apiBaseUrl)}/public/${cartoMapId}`;
228
+ const baseUrl = buildPublicMapUrl({
229
+ apiBaseUrl,
230
+ cartoMapId
231
+ });
234
232
  const errorContext = {
235
233
  requestType: 'Public map',
236
234
  mapId: cartoMapId
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/fetch-map.ts"],"names":["CartoAPIError","DEFAULT_API_BASE_URL","DEFAULT_CLIENT","buildMapsUrlFromBase","buildStatsUrlFromBase","h3QuerySource","h3TableSource","quadbinQuerySource","quadbinTableSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","parseMap","requestWithParameters","assert","_fetchMapDataset","dataset","accessToken","apiBaseUrl","clientId","headers","aggregationExp","aggregationResLevel","connectionName","columns","format","geoColumn","source","type","queryParameters","cache","globalOptions","data","tableName","spatialDataType","spatialDataColumn","split","options","sqlQuery","cacheChanged","value","_fetchTilestats","attribute","connection","id","errorContext","requestType","Error","statsUrl","baseUrl","Authorization","parameters","q","JSON","stringify","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","Object","keys","visualChannels","name","find","dataId","push","filteredAttributes","a","fetchMap","cartoMapId","mapsUrl","autoRefresh","onNewData","mapId","stopAutoRefresh","intervalId","setInterval","changed","Date","toUTCString","some","v","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","includes","geojson","out","textLayers","pointType","props","length","window","FontFace","document","fonts","check","font","load","then","f","add"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_API_BASE_URL, DEFAULT_CLIENT} from './common';\nimport {buildMapsUrlFromBase, buildStatsUrlFromBase} from './endpoints';\nimport {\n GeojsonResult,\n JsonResult,\n TilejsonResult,\n h3QuerySource,\n h3TableSource,\n quadbinQuerySource,\n quadbinTableSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n} from '../sources';\nimport {parseMap} from './parse-map';\nimport {requestWithParameters} from './request-with-parameters';\nimport {assert} from '../utils';\nimport type {APIErrorContext, Format, MapType, QueryParameters} from './types';\n\ntype Dataset = {\n id: string;\n type: MapType;\n source: string;\n cache?: number;\n connectionName: string;\n geoColumn: string;\n data: TilejsonResult | GeojsonResult | JsonResult;\n columns: string[];\n format: Format;\n aggregationExp: string;\n aggregationResLevel: number;\n queryParameters: QueryParameters;\n};\n\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string,\n clientId?: string,\n headers?: Record<string, string>\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n\n const cache: {value?: number} = {};\n const globalOptions: any = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({...globalOptions, tableName: source});\n } else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = {...globalOptions, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await vectorTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await vectorQuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'h3') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await h3TableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await h3QuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'quadbin') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await quadbinTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await quadbinQuerySource({...options, sqlQuery: source, queryParameters});\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n\n return cacheChanged;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string\n) {\n const {connectionName: connection, data, id, source, type, queryParameters} = dataset;\n const errorContext: APIErrorContext = {requestType: 'Tile stats', connection, type, source};\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n\n const statsUrl = buildStatsUrlFromBase(apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === 'query') {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const headers = {Authorization: `Bearer ${accessToken}`};\n const parameters: Record<string, string> = {};\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext\n });\n\n // Replace tilestats for attribute with value from API\n const {attributes} = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token}: {datasets: Dataset[]; token: string},\n clientId: string,\n apiBaseUrl: string,\n headers?: Record<string, string>\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token}: {datasets: Dataset[]; keplerMapConfig: any; token: string},\n apiBaseUrl: string\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset && dataset.type !== 'tileset' && (dataset.data as TilejsonResult).tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, apiBaseUrl)\n );\n return await Promise.all(promises);\n}\n\nexport type FetchMapOptions = {\n apiBaseUrl?: string;\n cartoMapId: string;\n clientId?: string;\n headers?: Record<string, string>;\n mapsUrl?: string;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n};\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId = DEFAULT_CLIENT,\n headers = {},\n mapsUrl,\n autoRefresh,\n onNewData\n}: FetchMapOptions) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\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 baseUrl = `${mapsUrl || buildMapsUrlFromBase(apiBaseUrl)}/public/${cartoMapId}`;\n const errorContext: APIErrorContext = {requestType: 'Public map', mapId: cartoMapId};\n const map = await requestWithParameters({baseUrl, headers, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, apiBaseUrl, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"fetch-map.js"}
1
+ {"version":3,"sources":["../../../src/api/fetch-map.ts"],"names":["CartoAPIError","DEFAULT_API_BASE_URL","DEFAULT_CLIENT","buildPublicMapUrl","buildStatsUrl","h3QuerySource","h3TableSource","quadbinQuerySource","quadbinTableSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","parseMap","requestWithParameters","assert","_fetchMapDataset","dataset","accessToken","apiBaseUrl","clientId","headers","aggregationExp","aggregationResLevel","connectionName","columns","format","geoColumn","source","type","queryParameters","cache","globalOptions","data","tableName","spatialDataType","spatialDataColumn","split","options","sqlQuery","cacheChanged","value","_fetchTilestats","attribute","id","errorContext","requestType","connection","Error","baseUrl","Authorization","parameters","q","JSON","stringify","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","Object","keys","visualChannels","name","find","dataId","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","mapId","stopAutoRefresh","intervalId","setInterval","changed","Date","toUTCString","some","v","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","includes","geojson","out","textLayers","pointType","props","length","window","FontFace","document","fonts","check","font","load","then","f","add"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_API_BASE_URL, DEFAULT_CLIENT} from './common';\nimport {buildPublicMapUrl, buildStatsUrl} from './endpoints';\nimport {\n GeojsonResult,\n JsonResult,\n TilejsonResult,\n h3QuerySource,\n h3TableSource,\n quadbinQuerySource,\n quadbinTableSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n} from '../sources';\nimport {parseMap} from './parse-map';\nimport {requestWithParameters} from './request-with-parameters';\nimport {assert} from '../utils';\nimport type {APIErrorContext, Format, MapType, QueryParameters} from './types';\n\ntype Dataset = {\n id: string;\n type: MapType;\n source: string;\n cache?: number;\n connectionName: string;\n geoColumn: string;\n data: TilejsonResult | GeojsonResult | JsonResult;\n columns: string[];\n format: Format;\n aggregationExp: string;\n aggregationResLevel: number;\n queryParameters: QueryParameters;\n};\n\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string,\n clientId?: string,\n headers?: Record<string, string>\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n\n const cache: {value?: number} = {};\n const globalOptions: any = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({...globalOptions, tableName: source});\n } else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = {...globalOptions, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await vectorTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await vectorQuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'h3') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await h3TableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await h3QuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'quadbin') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await quadbinTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await quadbinQuerySource({...options, sqlQuery: source, queryParameters});\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n\n return cacheChanged;\n}\n\nasync function _fetchTilestats(\n attribute: string,\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string\n) {\n const {connectionName, data, id, source, type, queryParameters} = dataset;\n const errorContext: APIErrorContext = {\n requestType: 'Tile stats',\n connection: connectionName,\n type,\n source\n };\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n\n const baseUrl = buildStatsUrl({attribute, apiBaseUrl, ...dataset});\n const headers = {Authorization: `Bearer ${accessToken}`};\n const parameters: Record<string, string> = {};\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext\n });\n\n // Replace tilestats for attribute with value from API\n const {attributes} = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token}: {datasets: Dataset[]; token: string},\n clientId: string,\n apiBaseUrl: string,\n headers?: Record<string, string>\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token}: {datasets: Dataset[]; keplerMapConfig: any; token: string},\n apiBaseUrl: string\n) {\n const attributes: {attribute: string; dataset: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset && dataset.type !== 'tileset' && (dataset.data as TilejsonResult).tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute: string; dataset: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, apiBaseUrl)\n );\n return await Promise.all(promises);\n}\n\nexport type FetchMapOptions = {\n apiBaseUrl?: string;\n cartoMapId: string;\n clientId?: string;\n headers?: Record<string, string>;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n};\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId = DEFAULT_CLIENT,\n headers = {},\n autoRefresh,\n onNewData\n}: FetchMapOptions) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\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 baseUrl = buildPublicMapUrl({apiBaseUrl, cartoMapId});\n const errorContext: APIErrorContext = {requestType: 'Public map', mapId: cartoMapId};\n const map = await requestWithParameters({baseUrl, headers, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, apiBaseUrl, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"fetch-map.js"}
@@ -253,7 +253,7 @@ function domainFromAttribute(attribute, scaleType, scaleLength) {
253
253
  }
254
254
 
255
255
  if (scaleType === 'quantile' && attribute.quantiles) {
256
- return attribute.quantiles[scaleLength];
256
+ return attribute.quantiles.global ? attribute.quantiles.global[scaleLength] : attribute.quantiles[scaleLength];
257
257
  }
258
258
 
259
259
  let {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","scaleThreshold","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","H3TileLayer","QuadbinTileLayer","RasterTileLayer","VectorTileLayer","assert","createBinaryProxy","scaleIdentity","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","custom","identity","v","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","length","mode","pop","stddev","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","customMarkersPropsMap","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","basePropMap","customMarkers","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layerTypeDefs","Layer","propMap","altitude","parameters","depthTest","Boolean","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","layer","layerFromTileDataset","scheme","aggregationExp","aggregationResLevel","data","uniqueIdProperty","domainFromAttribute","attribute","scaleType","scaleLength","categories","category","filter","undefined","quantiles","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","object","info","__source","index","proxy","opacityToAlpha","Math","round","pow","getAccessorKeys","aggregation","keys","concat","toUpperCase","findAccessorKey","key","Error","getColorValueAccessor","aggregator","p","getColorAccessor","colorColumn","range","scale","calculateLayerScale","alpha","accessorKeys","propertyValue","domain","scaleColor","colorMap","forEach","value","push","slice","unknown","FALLBACK_ICON","getIconUrlAccessor","field","fallbackUrl","maxIconSize","useMaskedIcons","urlToUnpackedIcon","url","id","width","height","mask","unknownValue","othersMarker","unknownIcon","mapping","markerUrl","markerMap","getMaxMarkerSize","visualChannels","radiusRange","radiusField","sizeField","ceil","negateAccessor","i","getSizeAccessor","FORMATS","date","s","utc","integer","float","timestamp","default","String","getTextAccessor","_domainFromValues"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {Accessor, Layer, _ConstructorOf as ConstructorOf} from '@deck.gl/core';\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\n\nimport H3TileLayer from '../layers/h3-tile-layer';\nimport QuadbinTileLayer from '../layers/quadbin-tile-layer';\nimport RasterTileLayer from '../layers/raster-tile-layer';\nimport VectorTileLayer from '../layers/vector-tile-layer';\nimport {MapType} from './types';\nimport {assert, createBinaryProxy, scaleIdentity} from '../utils';\nimport {\n CustomMarkersRange,\n MapDataset,\n MapTextSubLayerConfig,\n VisConfig,\n VisualChannelField,\n VisualChannels\n} from './types';\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 custom: scaleThreshold,\n identity: scaleIdentity\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nfunction identity<T>(v: T): T {\n return v;\n}\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a: Record<string, any> = {}, b: Record<string, any> = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config: MapTextSubLayerConfig,\n dataset: MapDataset\n): {Layer: ConstructorOf<Layer>; propMap: any; defaultProps: any} {\n let basePropMap: any = sharedPropMap;\n\n if (config.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);\n }\n if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {\n return getTileLayer(dataset, basePropMap);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n\n const layerTypeDefs: Record<\n string,\n {Layer: ConstructorOf<Layer>; propMap?: any; defaultProps?: any}\n > = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {\n columns: {\n altitude: x => ({parameters: {depthTest: Boolean(x)}})\n },\n visConfig: {outline: 'stroked'}\n }\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n };\n\n const layer = layerTypeDefs[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n return {\n ...layer,\n propMap: mergePropMaps(basePropMap, layer.propMap),\n defaultProps: {...defaultProps, ...layer.defaultProps}\n };\n}\n\nexport function layerFromTileDataset(\n scheme: string,\n type?: MapType\n): typeof VectorTileLayer | typeof H3TileLayer | typeof QuadbinTileLayer {\n if (type === 'raster') {\n return RasterTileLayer;\n }\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n\n return VectorTileLayer;\n}\n\nfunction getTileLayer(dataset: MapDataset, basePropMap) {\n const {\n aggregationExp,\n aggregationResLevel,\n data: {scheme}\n } = dataset;\n\n return {\n Layer: layerFromTileDataset(scheme),\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && {aggregationExp}),\n ...(aggregationResLevel && {aggregationResLevel}),\n uniqueIdProperty: 'geoid'\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE, scaleLength: number) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles[scaleLength];\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: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType, scaleLength?) {\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, scaleLength);\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 (object, info) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n\n const {data, index} = info;\n const proxy = createBinaryProxy(data, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity?: number) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nfunction getAccessorKeys(name: string, aggregation?: string | undefined): string[] {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\n\nfunction findAccessorKey(keys: string[], properties): string[] {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n\n throw new Error(`Could not find property for any accessor key: ${keys}`);\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name, colorColumn}: VisualChannelField,\n scaleType: SCALE_TYPE,\n {aggregation, range},\n opacity: number | undefined,\n data: any\n) {\n const scale = calculateLayerScale(colorColumn || name, scaleType, range, data);\n const alpha = opacityToAlpha(opacity);\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nfunction calculateLayerScale(name, scaleType, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (scaleType !== 'identity') {\n const {colorMap, colors} = range;\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n\n return scale;\n}\n\nconst FALLBACK_ICON =\n 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\n\nexport function getIconUrlAccessor(\n field: VisualChannelField | null | undefined,\n range: CustomMarkersRange | null | undefined,\n {fallbackUrl, maxIconSize, useMaskedIcons},\n data: any\n) {\n const urlToUnpackedIcon = (url: string) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n\n const mapping: Record<string, any> = {};\n for (const {value, markerUrl} of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n\n const accessor = properties => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getMaxMarkerSize(visConfig: VisConfig, visualChannels: VisualChannels): number {\n const {radiusRange, radius} = visConfig;\n const {radiusField, sizeField} = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\n\nexport function negateAccessor<T>(accessor: Accessor<T, number>): Accessor<T, number> {\n return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;\n}\n\nexport function getSizeAccessor(\n {name},\n scaleType: SCALE_TYPE | undefined,\n aggregation,\n range: Iterable<Range> | undefined,\n data: any\n) {\n const scale = scaleType ? SCALE_FUNCS[scaleType as any]() : identity;\n if (scaleType) {\n if (aggregation !== 'count') {\n scale.domain(calculateDomain(data, name, scaleType));\n }\n scale.range(range);\n }\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\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}: VisualChannelField, 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 {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
1
+ {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","scaleThreshold","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","H3TileLayer","QuadbinTileLayer","RasterTileLayer","VectorTileLayer","assert","createBinaryProxy","scaleIdentity","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","custom","identity","v","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","length","mode","pop","stddev","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","customMarkersPropsMap","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","basePropMap","customMarkers","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layerTypeDefs","Layer","propMap","altitude","parameters","depthTest","Boolean","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","layer","layerFromTileDataset","scheme","aggregationExp","aggregationResLevel","data","uniqueIdProperty","domainFromAttribute","attribute","scaleType","scaleLength","categories","category","filter","undefined","quantiles","global","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","object","info","__source","index","proxy","opacityToAlpha","Math","round","pow","getAccessorKeys","aggregation","keys","concat","toUpperCase","findAccessorKey","key","Error","getColorValueAccessor","aggregator","p","getColorAccessor","colorColumn","range","scale","calculateLayerScale","alpha","accessorKeys","propertyValue","domain","scaleColor","colorMap","forEach","value","push","slice","unknown","FALLBACK_ICON","getIconUrlAccessor","field","fallbackUrl","maxIconSize","useMaskedIcons","urlToUnpackedIcon","url","id","width","height","mask","unknownValue","othersMarker","unknownIcon","mapping","markerUrl","markerMap","getMaxMarkerSize","visualChannels","radiusRange","radiusField","sizeField","ceil","negateAccessor","i","getSizeAccessor","FORMATS","date","s","utc","integer","float","timestamp","default","String","getTextAccessor","_domainFromValues"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {Accessor, Layer, _ConstructorOf as ConstructorOf} from '@deck.gl/core';\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\n\nimport H3TileLayer from '../layers/h3-tile-layer';\nimport QuadbinTileLayer from '../layers/quadbin-tile-layer';\nimport RasterTileLayer from '../layers/raster-tile-layer';\nimport VectorTileLayer from '../layers/vector-tile-layer';\nimport {MapType} from './types';\nimport {assert, createBinaryProxy, scaleIdentity} from '../utils';\nimport {\n CustomMarkersRange,\n MapDataset,\n MapTextSubLayerConfig,\n VisConfig,\n VisualChannelField,\n VisualChannels\n} from './types';\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 custom: scaleThreshold,\n identity: scaleIdentity\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nfunction identity<T>(v: T): T {\n return v;\n}\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a: Record<string, any> = {}, b: Record<string, any> = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config: MapTextSubLayerConfig,\n dataset: MapDataset\n): {Layer: ConstructorOf<Layer>; propMap: any; defaultProps: any} {\n let basePropMap: any = sharedPropMap;\n\n if (config.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);\n }\n if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {\n return getTileLayer(dataset, basePropMap);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n\n const layerTypeDefs: Record<\n string,\n {Layer: ConstructorOf<Layer>; propMap?: any; defaultProps?: any}\n > = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {\n columns: {\n altitude: x => ({parameters: {depthTest: Boolean(x)}})\n },\n visConfig: {outline: 'stroked'}\n }\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n };\n\n const layer = layerTypeDefs[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n return {\n ...layer,\n propMap: mergePropMaps(basePropMap, layer.propMap),\n defaultProps: {...defaultProps, ...layer.defaultProps}\n };\n}\n\nexport function layerFromTileDataset(\n scheme: string,\n type?: MapType\n): typeof VectorTileLayer | typeof H3TileLayer | typeof QuadbinTileLayer {\n if (type === 'raster') {\n return RasterTileLayer;\n }\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n\n return VectorTileLayer;\n}\n\nfunction getTileLayer(dataset: MapDataset, basePropMap) {\n const {\n aggregationExp,\n aggregationResLevel,\n data: {scheme}\n } = dataset;\n\n return {\n Layer: layerFromTileDataset(scheme),\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && {aggregationExp}),\n ...(aggregationResLevel && {aggregationResLevel}),\n uniqueIdProperty: 'geoid'\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE, scaleLength: number) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles.global\n ? attribute.quantiles.global[scaleLength]\n : attribute.quantiles[scaleLength];\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: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType, scaleLength?) {\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, scaleLength);\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 (object, info) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n\n const {data, index} = info;\n const proxy = createBinaryProxy(data, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity?: number) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nfunction getAccessorKeys(name: string, aggregation?: string | undefined): string[] {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\n\nfunction findAccessorKey(keys: string[], properties): string[] {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n\n throw new Error(`Could not find property for any accessor key: ${keys}`);\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name, colorColumn}: VisualChannelField,\n scaleType: SCALE_TYPE,\n {aggregation, range},\n opacity: number | undefined,\n data: any\n) {\n const scale = calculateLayerScale(colorColumn || name, scaleType, range, data);\n const alpha = opacityToAlpha(opacity);\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nfunction calculateLayerScale(name, scaleType, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (scaleType !== 'identity') {\n const {colorMap, colors} = range;\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n\n return scale;\n}\n\nconst FALLBACK_ICON =\n 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\n\nexport function getIconUrlAccessor(\n field: VisualChannelField | null | undefined,\n range: CustomMarkersRange | null | undefined,\n {fallbackUrl, maxIconSize, useMaskedIcons},\n data: any\n) {\n const urlToUnpackedIcon = (url: string) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n\n const mapping: Record<string, any> = {};\n for (const {value, markerUrl} of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n\n const accessor = properties => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getMaxMarkerSize(visConfig: VisConfig, visualChannels: VisualChannels): number {\n const {radiusRange, radius} = visConfig;\n const {radiusField, sizeField} = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\n\nexport function negateAccessor<T>(accessor: Accessor<T, number>): Accessor<T, number> {\n return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;\n}\n\nexport function getSizeAccessor(\n {name},\n scaleType: SCALE_TYPE | undefined,\n aggregation,\n range: Iterable<Range> | undefined,\n data: any\n) {\n const scale = scaleType ? SCALE_FUNCS[scaleType as any]() : identity;\n if (scaleType) {\n if (aggregation !== 'count') {\n scale.domain(calculateDomain(data, name, scaleType));\n }\n scale.range(range);\n }\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\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}: VisualChannelField, 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 {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
@@ -1,9 +1,9 @@
1
1
  import { SOURCE_DEFAULTS } from '../sources';
2
- import { buildQueryUrlFromBase } from './endpoints';
2
+ import { buildQueryUrl } from './endpoints';
3
3
  import { requestWithParameters } from './request-with-parameters';
4
4
  export const query = async function (options) {
5
5
  const {
6
- apiBaseUrl,
6
+ apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,
7
7
  connectionName,
8
8
  sqlQuery,
9
9
  queryParameters
@@ -16,8 +16,10 @@ export const query = async function (options) {
16
16
  urlParameters.queryParameters = JSON.stringify(queryParameters);
17
17
  }
18
18
 
19
- const queryUrl = buildQueryUrlFromBase(apiBaseUrl || SOURCE_DEFAULTS.apiBaseUrl);
20
- const baseUrl = `${queryUrl}/${connectionName}/query`;
19
+ const baseUrl = buildQueryUrl({
20
+ apiBaseUrl,
21
+ connectionName
22
+ });
21
23
  const headers = {
22
24
  Authorization: `Bearer ${options.accessToken}`,
23
25
  ...options.headers
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/query.ts"],"names":["SOURCE_DEFAULTS","buildQueryUrlFromBase","requestWithParameters","query","options","apiBaseUrl","connectionName","sqlQuery","queryParameters","urlParameters","q","JSON","stringify","queryUrl","baseUrl","headers","Authorization","accessToken","errorContext","requestType","connection","type","source","undefined","parameters"],"mappings":"AAAA,SAAQA,eAAR,QAA8B,YAA9B;AAEA,SAAQC,qBAAR,QAAoC,aAApC;AACA,SAAQC,qBAAR,QAAoC,2BAApC;AAMA,OAAO,MAAMC,KAAK,GAAG,gBAAgBC,OAAhB,EAA6D;AAChF,QAAM;AAACC,IAAAA,UAAD;AAAaC,IAAAA,cAAb;AAA6BC,IAAAA,QAA7B;AAAuCC,IAAAA;AAAvC,MAA0DJ,OAAhE;AACA,QAAMK,aAA4B,GAAG;AAACC,IAAAA,CAAC,EAAEH;AAAJ,GAArC;;AAEA,MAAIC,eAAJ,EAAqB;AACnBC,IAAAA,aAAa,CAACD,eAAd,GAAgCG,IAAI,CAACC,SAAL,CAAeJ,eAAf,CAAhC;AACD;;AAED,QAAMK,QAAQ,GAAGZ,qBAAqB,CAACI,UAAU,IAAIL,eAAe,CAACK,UAA/B,CAAtC;AACA,QAAMS,OAAO,GAAI,GAAED,QAAS,IAAGP,cAAe,QAA9C;AACA,QAAMS,OAAO,GAAG;AAACC,IAAAA,aAAa,EAAG,UAASZ,OAAO,CAACa,WAAY,EAA9C;AAAiD,OAAGb,OAAO,CAACW;AAA5D,GAAhB;AAEA,QAAMG,YAA6B,GAAG;AACpCC,IAAAA,WAAW,EAAE,KADuB;AAEpCC,IAAAA,UAAU,EAAEhB,OAAO,CAACE,cAFgB;AAGpCe,IAAAA,IAAI,EAAE,OAH8B;AAIpCC,IAAAA,MAAM,EAAEX,IAAI,CAACC,SAAL,CAAeH,aAAf,EAA8Bc,SAA9B,EAAyC,CAAzC;AAJ4B,GAAtC;AAMA,SAAO,MAAMrB,qBAAqB,CAAc;AAC9CY,IAAAA,OAD8C;AAE9CU,IAAAA,UAAU,EAAEf,aAFkC;AAG9CM,IAAAA,OAH8C;AAI9CG,IAAAA;AAJ8C,GAAd,CAAlC;AAMD,CAxBM","sourcesContent":["import {SOURCE_DEFAULTS} from '../sources';\nimport type {SourceOptions, QuerySourceOptions, QueryResult} from '../sources/types';\nimport {buildQueryUrlFromBase} from './endpoints';\nimport {requestWithParameters} from './request-with-parameters';\nimport {APIErrorContext} from './types';\n\nexport type QueryOptions = SourceOptions & Omit<QuerySourceOptions, 'spatialDataColumn'>;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (options: QueryOptions): Promise<QueryResult> {\n const {apiBaseUrl, connectionName, sqlQuery, queryParameters} = options;\n const urlParameters: UrlParameters = {q: sqlQuery};\n\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n\n const queryUrl = buildQueryUrlFromBase(apiBaseUrl || SOURCE_DEFAULTS.apiBaseUrl);\n const baseUrl = `${queryUrl}/${connectionName}/query`;\n const headers = {Authorization: `Bearer ${options.accessToken}`, ...options.headers};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(urlParameters, undefined, 2)\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters: urlParameters,\n headers,\n errorContext\n });\n};\n"],"file":"query.js"}
1
+ {"version":3,"sources":["../../../src/api/query.ts"],"names":["SOURCE_DEFAULTS","buildQueryUrl","requestWithParameters","query","options","apiBaseUrl","connectionName","sqlQuery","queryParameters","urlParameters","q","JSON","stringify","baseUrl","headers","Authorization","accessToken","errorContext","requestType","connection","type","source","undefined","parameters"],"mappings":"AAAA,SAAQA,eAAR,QAA8B,YAA9B;AAEA,SAAQC,aAAR,QAA4B,aAA5B;AACA,SAAQC,qBAAR,QAAoC,2BAApC;AAMA,OAAO,MAAMC,KAAK,GAAG,gBAAgBC,OAAhB,EAA6D;AAChF,QAAM;AACJC,IAAAA,UAAU,GAAGL,eAAe,CAACK,UADzB;AAEJC,IAAAA,cAFI;AAGJC,IAAAA,QAHI;AAIJC,IAAAA;AAJI,MAKFJ,OALJ;AAMA,QAAMK,aAA4B,GAAG;AAACC,IAAAA,CAAC,EAAEH;AAAJ,GAArC;;AAEA,MAAIC,eAAJ,EAAqB;AACnBC,IAAAA,aAAa,CAACD,eAAd,GAAgCG,IAAI,CAACC,SAAL,CAAeJ,eAAf,CAAhC;AACD;;AAED,QAAMK,OAAO,GAAGZ,aAAa,CAAC;AAACI,IAAAA,UAAD;AAAaC,IAAAA;AAAb,GAAD,CAA7B;AACA,QAAMQ,OAAO,GAAG;AAACC,IAAAA,aAAa,EAAG,UAASX,OAAO,CAACY,WAAY,EAA9C;AAAiD,OAAGZ,OAAO,CAACU;AAA5D,GAAhB;AAEA,QAAMG,YAA6B,GAAG;AACpCC,IAAAA,WAAW,EAAE,KADuB;AAEpCC,IAAAA,UAAU,EAAEf,OAAO,CAACE,cAFgB;AAGpCc,IAAAA,IAAI,EAAE,OAH8B;AAIpCC,IAAAA,MAAM,EAAEV,IAAI,CAACC,SAAL,CAAeH,aAAf,EAA8Ba,SAA9B,EAAyC,CAAzC;AAJ4B,GAAtC;AAMA,SAAO,MAAMpB,qBAAqB,CAAc;AAC9CW,IAAAA,OAD8C;AAE9CU,IAAAA,UAAU,EAAEd,aAFkC;AAG9CK,IAAAA,OAH8C;AAI9CG,IAAAA;AAJ8C,GAAd,CAAlC;AAMD,CA5BM","sourcesContent":["import {SOURCE_DEFAULTS} from '../sources';\nimport type {SourceOptions, QuerySourceOptions, QueryResult} from '../sources/types';\nimport {buildQueryUrl} from './endpoints';\nimport {requestWithParameters} from './request-with-parameters';\nimport {APIErrorContext} from './types';\n\nexport type QueryOptions = SourceOptions & Omit<QuerySourceOptions, 'spatialDataColumn'>;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (options: QueryOptions): Promise<QueryResult> {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n connectionName,\n sqlQuery,\n queryParameters\n } = options;\n const urlParameters: UrlParameters = {q: sqlQuery};\n\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n\n const baseUrl = buildQueryUrl({apiBaseUrl, connectionName});\n const headers = {Authorization: `Bearer ${options.accessToken}`, ...options.headers};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(urlParameters, undefined, 2)\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters: urlParameters,\n headers,\n errorContext\n });\n};\n"],"file":"query.js"}
@@ -43,7 +43,7 @@ export async function requestWithParameters({
43
43
  let response;
44
44
 
45
45
  if (url.length > MAX_GET_LENGTH) {
46
- response = await fetch(url, {
46
+ response = await fetch(baseUrl, {
47
47
  method: 'POST',
48
48
  body: JSON.stringify(parameters),
49
49
  headers
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/request-with-parameters.ts"],"names":["CartoAPIError","DEFAULT_HEADERS","DEFAULT_PARAMETERS","MAX_GET_LENGTH","encodeParameter","name","value","encodeURIComponent","REQUEST_CACHE","Map","requestWithParameters","accessToken","baseUrl","parameters","headers","customHeaders","errorContext","key","JSON","stringify","has","get","url","allParameters","encodedParameters","Object","entries","map","join","response","length","fetch","method","body","json","error","ok","delete","set"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,eAAR,EAAyBC,kBAAzB,EAA6CC,cAA7C,QAAkE,UAAlE;;AAMA,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AAC/E,SAAQ,GAAED,IAAK,IAAGE,kBAAkB,CAACD,KAAD,CAAQ,EAA5C;AACD;;AAED,MAAME,aAAa,GAAG,IAAIC,GAAJ,EAAtB;AACA,OAAO,eAAeC,qBAAf,CAA8C;AACnDC,EAAAA,WADmD;AAEnDC,EAAAA,OAFmD;AAGnDC,EAAAA,UAHmD;AAInDC,EAAAA,OAAO,EAAEC,aAJ0C;AAKnDC,EAAAA;AALmD,CAA9C,EAYQ;AACb,QAAMC,GAAG,GAAGC,IAAI,CAACC,SAAL,CAAe;AAACP,IAAAA,OAAD;AAAUC,IAAAA,UAAV;AAAsBE,IAAAA;AAAtB,GAAf,CAAZ;;AACA,MAAIP,aAAa,CAACY,GAAd,CAAkBH,GAAlB,CAAJ,EAA4B;AAC1B,WAAOT,aAAa,CAACa,GAAd,CAAkBJ,GAAlB,CAAP;AACD;;AAED,MAAIK,GAAG,GAAGV,OAAV;;AACA,MAAIC,UAAJ,EAAgB;AACd,UAAMU,aAAa,GAAG,EAAC,GAAGrB,kBAAJ;AAAwB,SAAGW;AAA3B,KAAtB;AACA,UAAMW,iBAAiB,GAAGC,MAAM,CAACC,OAAP,CAAeH,aAAf,EAA8BI,GAA9B,CAAkC,CAAC,CAACV,GAAD,EAAMX,KAAN,CAAD,KAAkB;AAC5E,aAAOF,eAAe,CAACa,GAAD,EAAMX,KAAN,CAAtB;AACD,KAFyB,CAA1B;AAGAgB,IAAAA,GAAG,IAAK,IAAGE,iBAAiB,CAACI,IAAlB,CAAuB,GAAvB,CAA4B,EAAvC;AACD;;AAED,QAAMd,OAAO,GAAG,EAAC,GAAGb,eAAJ;AAAqB,OAAGc;AAAxB,GAAhB;;AACA,MAAI;AAEF,QAAIc,QAAJ;;AACA,QAAIP,GAAG,CAACQ,MAAJ,GAAa3B,cAAjB,EAAiC;AAC/B0B,MAAAA,QAAQ,GAAG,MAAME,KAAK,CAACT,GAAD,EAAM;AAACU,QAAAA,MAAM,EAAE,MAAT;AAAiBC,QAAAA,IAAI,EAAEf,IAAI,CAACC,SAAL,CAAeN,UAAf,CAAvB;AAAmDC,QAAAA;AAAnD,OAAN,CAAtB;AACD,KAFD,MAEO;AACLe,MAAAA,QAAQ,GAAG,MAAME,KAAK,CAACT,GAAD,EAAM;AAACR,QAAAA;AAAD,OAAN,CAAtB;AACD;;AACD,QAAIoB,IAAJ;;AACA,QAAI;AACFA,MAAAA,IAAI,GAAG,MAAML,QAAQ,CAACK,IAAT,EAAb;;AACA,UAAIvB,WAAJ,EAAiB;AACfuB,QAAAA,IAAI,CAACvB,WAAL,GAAmBA,WAAnB;AACD;AACF,KALD,CAKE,MAAM;AACNuB,MAAAA,IAAI,GAAG;AAACC,QAAAA,KAAK,EAAE;AAAR,OAAP;AACD;;AACD,QAAI,CAACN,QAAQ,CAACO,EAAd,EAAkB;AAChB5B,MAAAA,aAAa,CAAC6B,MAAd,CAAqBpB,GAArB;AACA,YAAM,IAAIjB,aAAJ,CAAkBkC,IAAI,CAACC,KAAvB,EAA8BnB,YAA9B,EAA4Ca,QAA5C,CAAN;AACD;;AAEDrB,IAAAA,aAAa,CAAC8B,GAAd,CAAkBrB,GAAlB,EAAuBiB,IAAvB;AACA,WAAOA,IAAP;AACD,GAxBD,CAwBE,OAAOC,KAAP,EAAc;AACd,UAAM,IAAInC,aAAJ,CAAkBmC,KAAlB,EAAkCnB,YAAlC,CAAN;AACD;AACF","sourcesContent":["import {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_HEADERS, DEFAULT_PARAMETERS, MAX_GET_LENGTH} from './common';\nimport type {APIErrorContext} from './types';\n\n/**\n * Simple encode parameter\n */\nfunction encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n\nconst REQUEST_CACHE = new Map();\nexport async function requestWithParameters<T = any>({\n accessToken,\n baseUrl,\n parameters,\n headers: customHeaders,\n errorContext\n}: {\n accessToken?: string;\n baseUrl: string;\n parameters?: Record<string, string>;\n headers: Record<string, string>;\n errorContext: APIErrorContext;\n}): Promise<T> {\n const key = JSON.stringify({baseUrl, parameters, customHeaders});\n if (REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n\n let url = baseUrl;\n if (parameters) {\n const allParameters = {...DEFAULT_PARAMETERS, ...parameters};\n const encodedParameters = Object.entries(allParameters).map(([key, value]) => {\n return encodeParameter(key, value);\n });\n url += `?${encodedParameters.join('&')}`;\n }\n\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n try {\n /* global fetch */\n let response: Response;\n if (url.length > MAX_GET_LENGTH) {\n response = await fetch(url, {method: 'POST', body: JSON.stringify(parameters), headers});\n } else {\n response = await fetch(url, {headers});\n }\n let json: any;\n try {\n json = await response.json();\n if (accessToken) {\n json.accessToken = accessToken;\n }\n } catch {\n json = {error: ''};\n }\n if (!response.ok) {\n REQUEST_CACHE.delete(key);\n throw new CartoAPIError(json.error, errorContext, response);\n }\n\n REQUEST_CACHE.set(key, json);\n return json;\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n"],"file":"request-with-parameters.js"}
1
+ {"version":3,"sources":["../../../src/api/request-with-parameters.ts"],"names":["CartoAPIError","DEFAULT_HEADERS","DEFAULT_PARAMETERS","MAX_GET_LENGTH","encodeParameter","name","value","encodeURIComponent","REQUEST_CACHE","Map","requestWithParameters","accessToken","baseUrl","parameters","headers","customHeaders","errorContext","key","JSON","stringify","has","get","url","allParameters","encodedParameters","Object","entries","map","join","response","length","fetch","method","body","json","error","ok","delete","set"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,eAAR,EAAyBC,kBAAzB,EAA6CC,cAA7C,QAAkE,UAAlE;;AAMA,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AAC/E,SAAQ,GAAED,IAAK,IAAGE,kBAAkB,CAACD,KAAD,CAAQ,EAA5C;AACD;;AAED,MAAME,aAAa,GAAG,IAAIC,GAAJ,EAAtB;AACA,OAAO,eAAeC,qBAAf,CAA8C;AACnDC,EAAAA,WADmD;AAEnDC,EAAAA,OAFmD;AAGnDC,EAAAA,UAHmD;AAInDC,EAAAA,OAAO,EAAEC,aAJ0C;AAKnDC,EAAAA;AALmD,CAA9C,EAYQ;AACb,QAAMC,GAAG,GAAGC,IAAI,CAACC,SAAL,CAAe;AAACP,IAAAA,OAAD;AAAUC,IAAAA,UAAV;AAAsBE,IAAAA;AAAtB,GAAf,CAAZ;;AACA,MAAIP,aAAa,CAACY,GAAd,CAAkBH,GAAlB,CAAJ,EAA4B;AAC1B,WAAOT,aAAa,CAACa,GAAd,CAAkBJ,GAAlB,CAAP;AACD;;AAED,MAAIK,GAAG,GAAGV,OAAV;;AACA,MAAIC,UAAJ,EAAgB;AACd,UAAMU,aAAa,GAAG,EAAC,GAAGrB,kBAAJ;AAAwB,SAAGW;AAA3B,KAAtB;AACA,UAAMW,iBAAiB,GAAGC,MAAM,CAACC,OAAP,CAAeH,aAAf,EAA8BI,GAA9B,CAAkC,CAAC,CAACV,GAAD,EAAMX,KAAN,CAAD,KAAkB;AAC5E,aAAOF,eAAe,CAACa,GAAD,EAAMX,KAAN,CAAtB;AACD,KAFyB,CAA1B;AAGAgB,IAAAA,GAAG,IAAK,IAAGE,iBAAiB,CAACI,IAAlB,CAAuB,GAAvB,CAA4B,EAAvC;AACD;;AAED,QAAMd,OAAO,GAAG,EAAC,GAAGb,eAAJ;AAAqB,OAAGc;AAAxB,GAAhB;;AACA,MAAI;AAEF,QAAIc,QAAJ;;AACA,QAAIP,GAAG,CAACQ,MAAJ,GAAa3B,cAAjB,EAAiC;AAC/B0B,MAAAA,QAAQ,GAAG,MAAME,KAAK,CAACnB,OAAD,EAAU;AAACoB,QAAAA,MAAM,EAAE,MAAT;AAAiBC,QAAAA,IAAI,EAAEf,IAAI,CAACC,SAAL,CAAeN,UAAf,CAAvB;AAAmDC,QAAAA;AAAnD,OAAV,CAAtB;AACD,KAFD,MAEO;AACLe,MAAAA,QAAQ,GAAG,MAAME,KAAK,CAACT,GAAD,EAAM;AAACR,QAAAA;AAAD,OAAN,CAAtB;AACD;;AACD,QAAIoB,IAAJ;;AACA,QAAI;AACFA,MAAAA,IAAI,GAAG,MAAML,QAAQ,CAACK,IAAT,EAAb;;AACA,UAAIvB,WAAJ,EAAiB;AACfuB,QAAAA,IAAI,CAACvB,WAAL,GAAmBA,WAAnB;AACD;AACF,KALD,CAKE,MAAM;AACNuB,MAAAA,IAAI,GAAG;AAACC,QAAAA,KAAK,EAAE;AAAR,OAAP;AACD;;AACD,QAAI,CAACN,QAAQ,CAACO,EAAd,EAAkB;AAChB5B,MAAAA,aAAa,CAAC6B,MAAd,CAAqBpB,GAArB;AACA,YAAM,IAAIjB,aAAJ,CAAkBkC,IAAI,CAACC,KAAvB,EAA8BnB,YAA9B,EAA4Ca,QAA5C,CAAN;AACD;;AAEDrB,IAAAA,aAAa,CAAC8B,GAAd,CAAkBrB,GAAlB,EAAuBiB,IAAvB;AACA,WAAOA,IAAP;AACD,GAxBD,CAwBE,OAAOC,KAAP,EAAc;AACd,UAAM,IAAInC,aAAJ,CAAkBmC,KAAlB,EAAkCnB,YAAlC,CAAN;AACD;AACF","sourcesContent":["import {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_HEADERS, DEFAULT_PARAMETERS, MAX_GET_LENGTH} from './common';\nimport type {APIErrorContext} from './types';\n\n/**\n * Simple encode parameter\n */\nfunction encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n\nconst REQUEST_CACHE = new Map();\nexport async function requestWithParameters<T = any>({\n accessToken,\n baseUrl,\n parameters,\n headers: customHeaders,\n errorContext\n}: {\n accessToken?: string;\n baseUrl: string;\n parameters?: Record<string, string>;\n headers: Record<string, string>;\n errorContext: APIErrorContext;\n}): Promise<T> {\n const key = JSON.stringify({baseUrl, parameters, customHeaders});\n if (REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n\n let url = baseUrl;\n if (parameters) {\n const allParameters = {...DEFAULT_PARAMETERS, ...parameters};\n const encodedParameters = Object.entries(allParameters).map(([key, value]) => {\n return encodeParameter(key, value);\n });\n url += `?${encodedParameters.join('&')}`;\n }\n\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n try {\n /* global fetch */\n let response: Response;\n if (url.length > MAX_GET_LENGTH) {\n response = await fetch(baseUrl, {method: 'POST', body: JSON.stringify(parameters), headers});\n } else {\n response = await fetch(url, {headers});\n }\n let json: any;\n try {\n json = await response.json();\n if (accessToken) {\n json.accessToken = accessToken;\n }\n } catch {\n json = {error: ''};\n }\n if (!response.ok) {\n REQUEST_CACHE.delete(key);\n throw new CartoAPIError(json.error, errorContext, response);\n }\n\n REQUEST_CACHE.set(key, json);\n return json;\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n"],"file":"request-with-parameters.js"}
@@ -1,7 +1,7 @@
1
1
  import { TileReader } from './carto-raster-tile';
2
2
  import { parsePbf } from './tile-loader-utils';
3
3
  import { getWorkerUrl } from '../../utils';
4
- const VERSION = typeof "9.0.0-alpha.6" !== 'undefined' ? "9.0.0-alpha.6" : 'latest';
4
+ const VERSION = typeof "9.0.0-beta.1" !== 'undefined' ? "9.0.0-beta.1" : 'latest';
5
5
  const id = 'cartoRasterTile';
6
6
  const DEFAULT_OPTIONS = {
7
7
  cartoRasterTile: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":["TileReader","parsePbf","getWorkerUrl","VERSION","id","DEFAULT_OPTIONS","cartoRasterTile","workerUrl","CartoRasterTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoRasterTile","parseSync","worker","tile","bands","blockHeight","blockWidth","numericProps","i","length","data","cells","properties"],"mappings":"AAEA,SAAQA,UAAR,QAAyB,qBAAzB;AACA,SAAQC,QAAR,QAAuB,qBAAvB;AACA,SAAQC,YAAR,QAA2B,aAA3B;AAGA,MAAMC,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AACA,MAAMC,EAAE,GAAG,iBAAX;AAQA,MAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAEL,YAAY,CAACE,EAAD,EAAKD,OAAL;AADR;AADmC,CAAtD;AAMA,MAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CATwB;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,IAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAwBA,SAASa,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGiB;AACf,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMK,IAAI,GAAGpB,QAAQ,CAACe,WAAD,EAAchB,UAAd,CAArB;AACA,QAAM;AAACsB,IAAAA,KAAD;AAAQC,IAAAA,WAAR;AAAqBC,IAAAA;AAArB,MAAmCH,IAAzC;AACA,QAAMI,YAAY,GAAG,EAArB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACK,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAM;AAACjB,MAAAA,IAAD;AAAOmB,MAAAA;AAAP,QAAeN,KAAK,CAACI,CAAD,CAA1B;AACAD,IAAAA,YAAY,CAAChB,IAAD,CAAZ,GAAqBmB,IAArB;AACD;;AACD,SAAO;AAACJ,IAAAA,UAAD;AAAaD,IAAAA,WAAb;AAA0BM,IAAAA,KAAK,EAAE;AAACJ,MAAAA,YAAD;AAAeK,MAAAA,UAAU,EAAE;AAA3B;AAAjC,GAAP;AACD;;AAED,eAAetB,qBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {TileReader} from './carto-raster-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {NumericProps, Properties} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoRasterTile';\n\ntype CartoRasterTileLoaderOptions = LoaderOptions & {\n cartoRasterTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoRasterTileLoaderOptions = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoRasterTileLoader: LoaderWithParser = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoRasterTileLoaderOptions) =>\n parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nexport type Raster = {\n blockWidth: number;\n blockHeight: number;\n cells: {\n numericProps: NumericProps;\n properties: Properties[];\n };\n};\n\nfunction parseCartoRasterTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoRasterTileLoaderOptions\n): Raster | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const {bands, blockHeight, blockWidth} = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const {name, data} = bands[i];\n numericProps[name] = data;\n }\n return {blockWidth, blockHeight, cells: {numericProps, properties: []}};\n}\n\nexport default CartoRasterTileLoader;\n"],"file":"carto-raster-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":["TileReader","parsePbf","getWorkerUrl","VERSION","id","DEFAULT_OPTIONS","cartoRasterTile","workerUrl","CartoRasterTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoRasterTile","parseSync","worker","tile","bands","blockHeight","blockWidth","numericProps","i","length","data","cells","properties"],"mappings":"AAEA,SAAQA,UAAR,QAAyB,qBAAzB;AACA,SAAQC,QAAR,QAAuB,qBAAvB;AACA,SAAQC,YAAR,QAA2B,aAA3B;AAGA,MAAMC,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AACA,MAAMC,EAAE,GAAG,iBAAX;AAQA,MAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAEL,YAAY,CAACE,EAAD,EAAKD,OAAL;AADR;AADmC,CAAtD;AAMA,MAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CATwB;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,IAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAwBA,SAASa,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGiB;AACf,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMK,IAAI,GAAGpB,QAAQ,CAACe,WAAD,EAAchB,UAAd,CAArB;AACA,QAAM;AAACsB,IAAAA,KAAD;AAAQC,IAAAA,WAAR;AAAqBC,IAAAA;AAArB,MAAmCH,IAAzC;AACA,QAAMI,YAAY,GAAG,EAArB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACK,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAM;AAACjB,MAAAA,IAAD;AAAOmB,MAAAA;AAAP,QAAeN,KAAK,CAACI,CAAD,CAA1B;AACAD,IAAAA,YAAY,CAAChB,IAAD,CAAZ,GAAqBmB,IAArB;AACD;;AACD,SAAO;AAACJ,IAAAA,UAAD;AAAaD,IAAAA,WAAb;AAA0BM,IAAAA,KAAK,EAAE;AAACJ,MAAAA,YAAD;AAAeK,MAAAA,UAAU,EAAE;AAA3B;AAAjC,GAAP;AACD;;AAED,eAAetB,qBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {TileReader} from './carto-raster-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {NumericProps, Properties} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoRasterTile';\n\ntype CartoRasterTileLoaderOptions = LoaderOptions & {\n cartoRasterTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoRasterTileLoaderOptions = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoRasterTileLoader: LoaderWithParser = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoRasterTileLoaderOptions) =>\n parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nexport type Raster = {\n blockWidth: number;\n blockHeight: number;\n cells: {\n numericProps: NumericProps;\n properties: Properties[];\n };\n};\n\nfunction parseCartoRasterTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoRasterTileLoaderOptions\n): Raster | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const {bands, blockHeight, blockWidth} = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const {name, data} = bands[i];\n numericProps[name] = data;\n }\n return {blockWidth, blockHeight, cells: {numericProps, properties: []}};\n}\n\nexport default CartoRasterTileLoader;\n"],"file":"carto-raster-tile-loader.js"}
@@ -2,7 +2,7 @@ import { TileReader } from './carto-spatial-tile';
2
2
  import { parsePbf } from './tile-loader-utils';
3
3
  import { getWorkerUrl } from '../../utils';
4
4
  import { binaryToSpatialjson } from './spatialjson-utils';
5
- const VERSION = typeof "9.0.0-alpha.6" !== 'undefined' ? "9.0.0-alpha.6" : 'latest';
5
+ const VERSION = typeof "9.0.0-beta.1" !== 'undefined' ? "9.0.0-beta.1" : 'latest';
6
6
  const id = 'cartoSpatialTile';
7
7
  const DEFAULT_OPTIONS = {
8
8
  cartoSpatialTile: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["TileReader","parsePbf","getWorkerUrl","binaryToSpatialjson","VERSION","id","DEFAULT_OPTIONS","cartoSpatialTile","scheme","workerUrl","CartoSpatialTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","worker","tile","cells","data"],"mappings":"AAEA,SAAcA,UAAd,QAA+B,sBAA/B;AACA,SAAQC,QAAR,QAAuB,qBAAvB;AACA,SAAQC,YAAR,QAA2B,aAA3B;AACA,SAAqBC,mBAArB,QAA4D,qBAA5D;AAEA,MAAMC,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AACA,MAAMC,EAAE,GAAG,kBAAX;AASA,MAAMC,eAA8C,GAAG;AACrDC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,MAAM,EAAE,SADQ;AAEhBC,IAAAA,SAAS,EAAEP,YAAY,CAACG,EAAD,EAAKD,OAAL;AAFP;AADmC,CAAvD;AAOA,MAAMM,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAER,OAFsC;AAG/CC,EAAAA,EAH+C;AAI/CQ,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KACLC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CATwB;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CE,EAAAA,MAAM,EAAE,IAXuC;AAY/CH,EAAAA,OAAO,EAAEb;AAZsC,CAAjD;;AAeA,SAASc,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AAAA;;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMK,IAAU,GAAGtB,QAAQ,CAACiB,WAAD,EAAclB,UAAd,CAA3B;AAEA,QAAM;AAACwB,IAAAA;AAAD,MAAUD,IAAhB;AACA,QAAMf,MAAM,GAAGW,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEZ,gBAAZ,0DAAG,sBAA2BC,MAA1C;AACA,QAAMiB,IAAI,GAAG;AAACD,IAAAA,KAAD;AAAQhB,IAAAA;AAAR,GAAb;AAEA,SAAOL,mBAAmB,CAACsB,IAAD,CAA1B;AACD;;AAED,eAAef,sBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {IndexScheme, binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoSpatialTile';\n\ntype CartoSpatialTileLoaderOptions = LoaderOptions & {\n cartoSpatialTile?: {\n scheme: IndexScheme;\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoSpatialTileLoaderOptions = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoSpatialTileLoaderOptions) =>\n parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoSpatialTileLoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = {cells, scheme};\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["TileReader","parsePbf","getWorkerUrl","binaryToSpatialjson","VERSION","id","DEFAULT_OPTIONS","cartoSpatialTile","scheme","workerUrl","CartoSpatialTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","worker","tile","cells","data"],"mappings":"AAEA,SAAcA,UAAd,QAA+B,sBAA/B;AACA,SAAQC,QAAR,QAAuB,qBAAvB;AACA,SAAQC,YAAR,QAA2B,aAA3B;AACA,SAAqBC,mBAArB,QAA4D,qBAA5D;AAEA,MAAMC,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AACA,MAAMC,EAAE,GAAG,kBAAX;AASA,MAAMC,eAA8C,GAAG;AACrDC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,MAAM,EAAE,SADQ;AAEhBC,IAAAA,SAAS,EAAEP,YAAY,CAACG,EAAD,EAAKD,OAAL;AAFP;AADmC,CAAvD;AAOA,MAAMM,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAER,OAFsC;AAG/CC,EAAAA,EAH+C;AAI/CQ,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KACLC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CATwB;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CE,EAAAA,MAAM,EAAE,IAXuC;AAY/CH,EAAAA,OAAO,EAAEb;AAZsC,CAAjD;;AAeA,SAASc,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AAAA;;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,QAAMK,IAAU,GAAGtB,QAAQ,CAACiB,WAAD,EAAclB,UAAd,CAA3B;AAEA,QAAM;AAACwB,IAAAA;AAAD,MAAUD,IAAhB;AACA,QAAMf,MAAM,GAAGW,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEZ,gBAAZ,0DAAG,sBAA2BC,MAA1C;AACA,QAAMiB,IAAI,GAAG;AAACD,IAAAA,KAAD;AAAQhB,IAAAA;AAAR,GAAb;AAEA,SAAOL,mBAAmB,CAACsB,IAAD,CAA1B;AACD;;AAED,eAAef,sBAAf","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {IndexScheme, binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoSpatialTile';\n\ntype CartoSpatialTileLoaderOptions = LoaderOptions & {\n cartoSpatialTile?: {\n scheme: IndexScheme;\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoSpatialTileLoaderOptions = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoSpatialTileLoaderOptions) =>\n parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoSpatialTileLoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = {cells, scheme};\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
@@ -2,7 +2,7 @@ import earcut from 'earcut';
2
2
  import { TileReader } from './carto-tile';
3
3
  import { parsePbf } from './tile-loader-utils';
4
4
  import { getWorkerUrl } from '../../utils';
5
- const VERSION = typeof "9.0.0-alpha.6" !== 'undefined' ? "9.0.0-alpha.6" : 'latest';
5
+ const VERSION = typeof "9.0.0-beta.1" !== 'undefined' ? "9.0.0-beta.1" : 'latest';
6
6
  const id = 'cartoVectorTile';
7
7
  const DEFAULT_OPTIONS = {
8
8
  cartoVectorTile: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-vector-tile-loader.ts"],"names":["earcut","TileReader","parsePbf","getWorkerUrl","VERSION","id","DEFAULT_OPTIONS","cartoVectorTile","workerUrl","CartoVectorTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoVectorTile","parseSync","worker","triangulatePolygon","polygons","target","startPosition","endPosition","indices","coordLength","positions","size","start","end","polygonPositions","value","subarray","holes","slice","map","n","triangles","t","tl","length","push","triangulate","polygonIndices","primitivePolygonIndices","rangeStart","i","rangeEnd","indexOf","Uint32Array","tile"],"mappings":"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","sourcesContent":["import earcut from 'earcut';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatureCollection, BinaryPolygonFeature, TypedArray} from '@loaders.gl/schema';\n\nimport {TileReader} from './carto-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoVectorTile';\n\ntype CartoVectorTileLoaderOptions = LoaderOptions & {\n cartoVectorTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoVectorTileLoaderOptions = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoVectorTileLoader: LoaderWithParser = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoVectorTileLoaderOptions) =>\n parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction triangulatePolygon(\n polygons: BinaryPolygonFeature,\n target: number[],\n {\n startPosition,\n endPosition,\n indices\n }: {startPosition: number; endPosition: number; indices: TypedArray}\n): void {\n const coordLength = polygons.positions.size;\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.value.subarray(start, end);\n\n // Holes are referenced relative to outer polygon\n const holes = indices.slice(1).map((n: number) => n - startPosition);\n\n // Compute triangulation\n const triangles = earcut(polygonPositions, holes, coordLength);\n\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n target.push(startPosition + triangles[t]);\n }\n}\n\nfunction triangulate(polygons: BinaryPolygonFeature) {\n const {polygonIndices, primitivePolygonIndices} = polygons;\n const triangles = [];\n\n let rangeStart = 0;\n for (let i = 0; i < polygonIndices.value.length - 1; i++) {\n const startPosition = polygonIndices.value[i];\n const endPosition = polygonIndices.value[i + 1];\n\n // Extract hole indices between start & end position\n const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);\n const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);\n rangeStart = rangeEnd;\n\n triangulatePolygon(polygons, triangles, {startPosition, endPosition, indices});\n }\n\n polygons.triangles = {value: new Uint32Array(triangles), size: 1};\n}\n\nfunction parseCartoVectorTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoVectorTileLoaderOptions\n): BinaryFeatureCollection | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n\n if (tile.polygons && !tile.polygons.triangles) {\n triangulate(tile.polygons);\n }\n\n return tile;\n}\n\nexport default CartoVectorTileLoader;\n"],"file":"carto-vector-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-vector-tile-loader.ts"],"names":["earcut","TileReader","parsePbf","getWorkerUrl","VERSION","id","DEFAULT_OPTIONS","cartoVectorTile","workerUrl","CartoVectorTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoVectorTile","parseSync","worker","triangulatePolygon","polygons","target","startPosition","endPosition","indices","coordLength","positions","size","start","end","polygonPositions","value","subarray","holes","slice","map","n","triangles","t","tl","length","push","triangulate","polygonIndices","primitivePolygonIndices","rangeStart","i","rangeEnd","indexOf","Uint32Array","tile"],"mappings":"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","sourcesContent":["import earcut from 'earcut';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatureCollection, BinaryPolygonFeature, TypedArray} from '@loaders.gl/schema';\n\nimport {TileReader} from './carto-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoVectorTile';\n\ntype CartoVectorTileLoaderOptions = LoaderOptions & {\n cartoVectorTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoVectorTileLoaderOptions = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoVectorTileLoader: LoaderWithParser = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoVectorTileLoaderOptions) =>\n parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction triangulatePolygon(\n polygons: BinaryPolygonFeature,\n target: number[],\n {\n startPosition,\n endPosition,\n indices\n }: {startPosition: number; endPosition: number; indices: TypedArray}\n): void {\n const coordLength = polygons.positions.size;\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.value.subarray(start, end);\n\n // Holes are referenced relative to outer polygon\n const holes = indices.slice(1).map((n: number) => n - startPosition);\n\n // Compute triangulation\n const triangles = earcut(polygonPositions, holes, coordLength);\n\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n target.push(startPosition + triangles[t]);\n }\n}\n\nfunction triangulate(polygons: BinaryPolygonFeature) {\n const {polygonIndices, primitivePolygonIndices} = polygons;\n const triangles = [];\n\n let rangeStart = 0;\n for (let i = 0; i < polygonIndices.value.length - 1; i++) {\n const startPosition = polygonIndices.value[i];\n const endPosition = polygonIndices.value[i + 1];\n\n // Extract hole indices between start & end position\n const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);\n const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);\n rangeStart = rangeEnd;\n\n triangulatePolygon(polygons, triangles, {startPosition, endPosition, indices});\n }\n\n polygons.triangles = {value: new Uint32Array(triangles), size: 1};\n}\n\nfunction parseCartoVectorTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoVectorTileLoaderOptions\n): BinaryFeatureCollection | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n\n if (tile.polygons && !tile.polygons.triangles) {\n triangulate(tile.polygons);\n }\n\n return tile;\n}\n\nexport default CartoVectorTileLoader;\n"],"file":"carto-vector-tile-loader.js"}
@@ -21,7 +21,7 @@ export function mergeBoundaryData(geometry, properties) {
21
21
  ...rest
22
22
  } of properties.properties) {
23
23
  if (geoid in mapping) {
24
- log.warn(`Duplicate geoid key in boundary mapping, using first occurance`)();
24
+ log.warn('Duplicate geoid key in boundary mapping, using first occurance')();
25
25
  } else {
26
26
  mapping[geoid] = rest;
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/utils.ts"],"names":["log","_deepEqual","deepEqual","injectAccessToken","loadOptions","accessToken","fetch","headers","Authorization","mergeBoundaryData","geometry","properties","mapping","geoid","rest","warn","type","geom","positions","value","length","map","globalFeatureIds","indices","pathIndices","polygonIndices","size","key","numericProps","sourceProp","TypedArray","constructor","destProp","i","featureId","startIndex","endIndex","fill","TilejsonPropType","validate","propType","optional","Array","isArray","tiles","every","url","equal","value1","value2","async"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Tile as PropertiesTile} from './schema/carto-properties-tile';\nimport {Tile as VectorTile} from './schema/carto-tile';\nimport {_deepEqual as deepEqual} from '@deck.gl/core';\nimport type {TilejsonResult} from '../sources/types';\n\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions: any, accessToken: string): void {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: {...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}`}\n };\n }\n}\n\nexport function mergeBoundaryData(geometry: VectorTile, properties: PropertiesTile): VectorTile {\n const mapping = {};\n for (const {geoid, ...rest} of properties.properties) {\n if (geoid in mapping) {\n log.warn(`Duplicate geoid key in boundary mapping, using first occurance`)();\n } else {\n mapping[geoid] = rest;\n }\n }\n\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n\n geom.properties = geom.properties.map(({geoid}) => mapping[geoid]);\n\n // numericProps need to be filled to match length of positions buffer\n const {positions, globalFeatureIds} = geom;\n let indices: Uint16Array | Uint32Array | null = null;\n if (type === 'lines') indices = geom.pathIndices.value;\n if (type === 'polygons') indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor as\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = {value: destProp, size: 1};\n\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n } else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n\n return geometry;\n}\n\nexport const TilejsonPropType = {\n type: 'object' as const,\n value: null as null | TilejsonResult,\n validate: (value: TilejsonResult, propType) =>\n (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../../../src/layers/utils.ts"],"names":["log","_deepEqual","deepEqual","injectAccessToken","loadOptions","accessToken","fetch","headers","Authorization","mergeBoundaryData","geometry","properties","mapping","geoid","rest","warn","type","geom","positions","value","length","map","globalFeatureIds","indices","pathIndices","polygonIndices","size","key","numericProps","sourceProp","TypedArray","constructor","destProp","i","featureId","startIndex","endIndex","fill","TilejsonPropType","validate","propType","optional","Array","isArray","tiles","every","url","equal","value1","value2","async"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Tile as PropertiesTile} from './schema/carto-properties-tile';\nimport {Tile as VectorTile} from './schema/carto-tile';\nimport {_deepEqual as deepEqual} from '@deck.gl/core';\nimport type {TilejsonResult} from '../sources/types';\n\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions: any, accessToken: string): void {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: {...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}`}\n };\n }\n}\n\nexport function mergeBoundaryData(geometry: VectorTile, properties: PropertiesTile): VectorTile {\n const mapping = {};\n for (const {geoid, ...rest} of properties.properties) {\n if (geoid in mapping) {\n log.warn('Duplicate geoid key in boundary mapping, using first occurance')();\n } else {\n mapping[geoid] = rest;\n }\n }\n\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n\n geom.properties = geom.properties.map(({geoid}) => mapping[geoid]);\n\n // numericProps need to be filled to match length of positions buffer\n const {positions, globalFeatureIds} = geom;\n let indices: Uint16Array | Uint32Array | null = null;\n if (type === 'lines') indices = geom.pathIndices.value;\n if (type === 'polygons') indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor as\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = {value: destProp, size: 1};\n\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n } else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n\n return geometry;\n}\n\nexport const TilejsonPropType = {\n type: 'object' as const,\n value: null as null | TilejsonResult,\n validate: (value: TilejsonResult, propType) =>\n (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n"],"file":"utils.js"}