@carto/api-client 0.5.0-alpha.3 → 0.5.0-alpha.4

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 (106) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/api/carto-api-error.d.ts +1 -1
  3. package/build/api/query.d.ts +1 -1
  4. package/build/api/request-with-parameters.d.ts +2 -2
  5. package/build/api-client.cjs +2324 -2188
  6. package/build/api-client.cjs.map +1 -1
  7. package/build/api-client.modern.js +2196 -2055
  8. package/build/api-client.modern.js.map +1 -1
  9. package/build/client.d.ts +2 -2
  10. package/build/constants-internal.d.ts +5 -5
  11. package/build/constants.d.ts +6 -6
  12. package/build/deck/get-data-filter-extension-props.d.ts +18 -0
  13. package/build/deck/index.d.ts +1 -0
  14. package/build/filters/Filter.d.ts +15 -3
  15. package/build/filters/FilterTypes.d.ts +1 -1
  16. package/build/filters/geosjonFeatures.d.ts +2 -2
  17. package/build/filters/tileFeatures.d.ts +8 -8
  18. package/build/filters/tileFeaturesRaster.d.ts +3 -3
  19. package/build/filters.d.ts +2 -2
  20. package/build/geo.d.ts +1 -1
  21. package/build/index.d.ts +1 -0
  22. package/build/models/common.d.ts +4 -3
  23. package/build/models/model.d.ts +2 -2
  24. package/build/operations/aggregation.d.ts +5 -5
  25. package/build/operations/applySorting.d.ts +3 -3
  26. package/build/operations/groupBy.d.ts +4 -4
  27. package/build/operations/groupByDate.d.ts +1 -1
  28. package/build/operations/histogram.d.ts +3 -3
  29. package/build/operations/scatterPlot.d.ts +3 -3
  30. package/build/sources/base-source.d.ts +2 -2
  31. package/build/sources/boundary-query-source.d.ts +1 -1
  32. package/build/sources/boundary-table-source.d.ts +1 -1
  33. package/build/sources/h3-query-source.d.ts +2 -2
  34. package/build/sources/h3-table-source.d.ts +2 -2
  35. package/build/sources/h3-tileset-source.d.ts +2 -2
  36. package/build/sources/index.d.ts +26 -26
  37. package/build/sources/quadbin-query-source.d.ts +2 -2
  38. package/build/sources/quadbin-table-source.d.ts +2 -2
  39. package/build/sources/quadbin-tileset-source.d.ts +2 -2
  40. package/build/sources/raster-source.d.ts +2 -2
  41. package/build/sources/types.d.ts +3 -3
  42. package/build/sources/vector-query-source.d.ts +1 -1
  43. package/build/sources/vector-table-source.d.ts +1 -1
  44. package/build/sources/vector-tileset-source.d.ts +2 -2
  45. package/build/spatial-index.d.ts +3 -3
  46. package/build/types-internal.d.ts +5 -5
  47. package/build/types.d.ts +15 -15
  48. package/build/utils/makeIntervalComplete.d.ts +1 -1
  49. package/build/utils.d.ts +3 -3
  50. package/build/widget-sources/types.d.ts +4 -2
  51. package/build/widget-sources/widget-query-source.d.ts +2 -1
  52. package/build/widget-sources/widget-remote-source.d.ts +3 -0
  53. package/build/widget-sources/widget-source.d.ts +3 -3
  54. package/build/widget-sources/widget-table-source.d.ts +2 -1
  55. package/build/widget-sources/widget-tileset-source.d.ts +22 -24
  56. package/package.json +36 -30
  57. package/src/api/carto-api-error.ts +1 -1
  58. package/src/api/query.ts +5 -5
  59. package/src/api/request-with-parameters.ts +6 -6
  60. package/src/client.ts +3 -3
  61. package/src/constants-internal.ts +5 -5
  62. package/src/constants.ts +6 -6
  63. package/src/deck/get-data-filter-extension-props.ts +146 -0
  64. package/src/deck/index.ts +1 -0
  65. package/src/filters/Filter.ts +18 -8
  66. package/src/filters/FilterTypes.ts +2 -2
  67. package/src/filters/geosjonFeatures.ts +2 -2
  68. package/src/filters/tileFeatures.ts +13 -19
  69. package/src/filters/tileFeaturesRaster.ts +7 -7
  70. package/src/filters.ts +4 -4
  71. package/src/geo.ts +12 -14
  72. package/src/index.ts +1 -0
  73. package/src/models/common.ts +9 -7
  74. package/src/models/model.ts +3 -4
  75. package/src/operations/aggregation.ts +5 -5
  76. package/src/operations/applySorting.ts +4 -4
  77. package/src/operations/groupBy.ts +4 -4
  78. package/src/operations/groupByDate.ts +1 -1
  79. package/src/operations/histogram.ts +4 -4
  80. package/src/operations/scatterPlot.ts +4 -4
  81. package/src/sources/base-source.ts +8 -8
  82. package/src/sources/boundary-query-source.ts +2 -2
  83. package/src/sources/boundary-table-source.ts +2 -2
  84. package/src/sources/h3-query-source.ts +7 -5
  85. package/src/sources/h3-table-source.ts +7 -5
  86. package/src/sources/h3-tileset-source.ts +4 -4
  87. package/src/sources/index.ts +26 -26
  88. package/src/sources/quadbin-query-source.ts +7 -5
  89. package/src/sources/quadbin-table-source.ts +7 -5
  90. package/src/sources/quadbin-tileset-source.ts +4 -4
  91. package/src/sources/raster-source.ts +8 -4
  92. package/src/sources/types.ts +3 -3
  93. package/src/sources/vector-query-source.ts +2 -3
  94. package/src/sources/vector-table-source.ts +2 -3
  95. package/src/sources/vector-tileset-source.ts +5 -5
  96. package/src/spatial-index.ts +4 -4
  97. package/src/types-internal.ts +5 -5
  98. package/src/types.ts +15 -15
  99. package/src/utils/makeIntervalComplete.ts +1 -1
  100. package/src/utils.ts +3 -3
  101. package/src/widget-sources/types.ts +5 -3
  102. package/src/widget-sources/widget-query-source.ts +6 -2
  103. package/src/widget-sources/widget-remote-source.ts +31 -16
  104. package/src/widget-sources/widget-source.ts +13 -4
  105. package/src/widget-sources/widget-table-source.ts +6 -2
  106. package/src/widget-sources/widget-tileset-source.ts +132 -81
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils.ts","../src/filters.ts","../src/geo.ts","../src/constants-internal.ts","../src/api/endpoints.ts","../src/api/carto-api-error.ts","../src/api/request-with-parameters.ts","../src/sources/base-source.ts","../src/sources/boundary-query-source.ts","../src/sources/boundary-table-source.ts","../src/spatial-index.ts","../src/widget-sources/widget-source.ts","../src/models/common.ts","../src/models/model.ts","../src/widget-sources/widget-remote-source.ts","../src/widget-sources/widget-query-source.ts","../src/utils/makeIntervalComplete.ts","../src/filters/FilterTypes.ts","../src/filters/Filter.ts","../src/filters/geosjonFeatures.ts","../node_modules/@math.gl/core/dist/lib/common.js","../node_modules/@math.gl/web-mercator/dist/assert.js","../node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js","../src/utils/transformToTileCoords.ts","../src/utils/transformTileCoordsToWGS84.ts","../src/filters/tileFeaturesGeometries.ts","../src/filters/tileFeaturesSpatialIndex.ts","../src/filters/tileFeaturesRaster.ts","../src/filters/tileFeatures.ts","../src/operations/aggregation.ts","../node_modules/thenby/thenBy.module.js","../src/operations/applySorting.ts","../src/operations/groupBy.ts","../src/utils/dateUtils.ts","../src/operations/groupByDate.ts","../src/operations/histogram.ts","../src/operations/scatterPlot.ts","../src/widget-sources/widget-tileset-source.ts","../src/widget-sources/widget-raster-source.ts","../src/widget-sources/widget-table-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.ts","../src/utils/getTileFormat.ts","../src/sources/h3-tileset-source.ts","../src/sources/raster-source.ts","../src/sources/quadbin-query-source.ts","../src/sources/quadbin-table-source.ts","../src/sources/quadbin-tileset-source.ts","../src/sources/vector-query-source.ts","../src/sources/vector-table-source.ts","../src/sources/vector-tileset-source.ts","../src/api/query.ts"],"sourcesContent":["/**\n * @internal\n * @internalRemarks Source: @carto/react-core, @carto/constants, @deck.gl/carto\n */\nlet client = 'deck-gl-carto';\n\n/**\n * Returns current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @internalRemarks Source: @carto/react-core\n */\nexport function getClient() {\n return client;\n}\n\n/**\n * Sets current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @internalRemarks Source: @carto/react-core\n */\nexport function setClient(c: string) {\n client = c;\n}\n","/**\n * Defines a comparator used when matching a column's values against given filter values.\n *\n * Example:\n *\n * ```javascript\n * import { FilterType } from '@carto/api-client';\n * const filters = {\n * column_name: { [FilterType.IN]: { values: ['a', 'b', 'c'] } }\n * };\n * ```\n *\n * @internalRemarks Source: @carto/react-api, @deck.gl/carto\n */\nexport enum FilterType {\n IN = 'in',\n /** [a, b] both are included. */\n BETWEEN = 'between',\n /** [a, b) a is included, b is not. */\n CLOSED_OPEN = 'closed_open',\n TIME = 'time',\n STRING_SEARCH = 'stringSearch',\n}\n\n/** @internalRemarks Source: @carto/constants */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\n/** @internalRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/** @internalRemarks Source: @carto/react-core */\nexport enum TileFormat {\n MVT = 'mvt',\n JSON = 'json',\n GEOJSON = 'geojson',\n BINARY = 'binary',\n}\n\n/** @internalRemarks Source: @carto/react-core */\nexport enum SpatialIndex {\n H3 = 'h3',\n S2 = 's2',\n QUADBIN = 'quadbin',\n}\n\n/** @internalRemarks Source: @carto/react-core */\nexport enum Provider {\n BIGQUERY = 'bigquery',\n REDSHIFT = 'redshift',\n POSTGRES = 'postgres',\n SNOWFLAKE = 'snowflake',\n DATABRICKS = 'databricks',\n DATABRICKS_REST = 'databricksRest',\n}\n","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\n\nconst FILTER_TYPES = new Set(Object.values(FilterType));\nconst isFilterType = (type: string): type is FilterType =>\n FILTER_TYPES.has(type as FilterType);\n\n/**\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function getApplicableFilters(\n owner?: string,\n filters?: Record<string, Filter>\n): Record<string, Filter> {\n if (!filters) return {};\n\n const applicableFilters: Record<string, Filter> = {};\n\n for (const column in filters) {\n for (const type in filters[column]) {\n if (!isFilterType(type)) continue;\n\n const filter = filters[column][type];\n const isApplicable = !owner || !filter?.owner || filter?.owner !== owner;\n if (filter && isApplicable) {\n applicableFilters[column] ||= {};\n (applicableFilters[column][type] as typeof filter) = filter;\n }\n }\n }\n\n return applicableFilters;\n}\n\ntype Row<T> = Record<string, T> | Record<string, T>[] | T[] | T;\n\n/**\n * Due to each data warehouse having its own behavior with columns,\n * we need to normalize them and transform every key to lowercase.\n *\n * @internalRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function normalizeObjectKeys<T, R extends Row<T>>(el: R): R {\n if (Array.isArray(el)) {\n return el.map((value) => normalizeObjectKeys(value)) as R;\n } else if (typeof el !== 'object') {\n return el;\n }\n\n return Object.entries(el as Record<string, T>).reduce(\n (acc, [key, value]) => {\n acc[key.toLowerCase()] =\n typeof value === 'object' && value ? normalizeObjectKeys(value) : value;\n return acc;\n },\n {} as Record<string, T>\n ) as R;\n}\n\n/** @internalRemarks Source: @carto/react-core */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * @internalRemarks Source: @carto/react-core\n * @internal\n */\nexport class InvalidColumnError extends Error {\n protected static readonly NAME = 'InvalidColumnError';\n\n constructor(message: string) {\n super(`${InvalidColumnError.NAME}: ${message}`);\n this.name = InvalidColumnError.NAME;\n }\n\n static is(error: unknown) {\n return (\n error instanceof InvalidColumnError ||\n (error as Error).message?.includes(InvalidColumnError.NAME)\n );\n }\n}\n\nexport function isEmptyObject(object: object): boolean {\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n/** @internal */\nexport const isObject: (x: unknown) => boolean = (x) =>\n x !== null && typeof x === 'object';\n\n/** @internal */\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\n","import {FilterType} from './constants';\nimport {Filter} from './types';\nimport {isEmptyObject} from './utils';\n\ntype FilterTypeOptions<T extends FilterType> = {\n type: T;\n column: string;\n} & Filter[T];\n\nexport type AddFilterOptions =\n | FilterTypeOptions<FilterType.IN>\n | FilterTypeOptions<FilterType.BETWEEN>\n | FilterTypeOptions<FilterType.CLOSED_OPEN>\n | FilterTypeOptions<FilterType.TIME>\n | FilterTypeOptions<FilterType.STRING_SEARCH>;\n\n/**\n * Adds a {@link Filter} to the filter set. Any previous filters with the same\n * `column` and `type` will be replaced.\n */\nexport function addFilter(\n filters: Record<string, Filter>,\n {column, type, values, owner}: AddFilterOptions\n): Record<string, Filter> {\n if (!filters[column]) {\n filters[column] = {};\n }\n\n const filter = {values, owner} as FilterTypeOptions<typeof type>;\n (filters[column][type] as FilterTypeOptions<typeof type>) = filter;\n\n return filters;\n}\n\nexport type RemoveFilterOptions = {\n column: string;\n owner?: string;\n};\n\n/**\n * Removes one or more {@link Filter filters} from the filter set. If only\n * `column` is specified, then all filters on that column are removed. If both\n * `column` and `owner` are specified, then only filters for that column\n * associated with the owner are removed.\n */\nexport function removeFilter(\n filters: Record<string, Filter>,\n {column, owner}: RemoveFilterOptions\n): Record<string, Filter> {\n const filter = filters[column];\n if (!filter) {\n return filters;\n }\n\n if (owner) {\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n delete filter[type as FilterType];\n }\n }\n }\n\n if (!owner || isEmptyObject(filter)) {\n delete filters[column];\n }\n\n return filters;\n}\n\n/**\n * Clears all {@link Filter filters} from the filter set.\n */\nexport function clearFilters(\n filters: Record<string, Filter>\n): Record<string, Filter> {\n for (const column of Object.keys(filters)) {\n delete filters[column];\n }\n return filters;\n}\n\nexport type HasFilterOptions = {\n column: string;\n owner?: string;\n};\n\nexport function hasFilter(\n filters: Record<string, Filter>,\n {column, owner}: HasFilterOptions\n): boolean {\n const filter = filters[column];\n if (!filter) {\n return false;\n }\n\n if (!owner) {\n return true;\n }\n\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n return true;\n }\n }\n\n return false;\n}\n\nexport type GetFilterOptions<T extends FilterType> = {\n column: string;\n type: T;\n owner?: string;\n};\n\nexport function getFilter<T extends FilterType>(\n filters: Record<string, Filter>,\n {column, type, owner}: GetFilterOptions<T>\n): Filter[T] | null {\n const filter = filters[column];\n if (!filter) {\n return null;\n }\n\n if (!owner || owner === filter[type as FilterType]?.owner) {\n return filter[type] || null;\n }\n\n return null;\n}\n","import bboxClip from '@turf/bbox-clip';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport union from '@turf/union';\nimport {getType} from '@turf/invariant';\nimport {polygon, multiPolygon, feature, featureCollection} from '@turf/helpers';\nimport type {BBox, Geometry, MultiPolygon, Polygon, Position} from 'geojson';\nimport {SpatialFilter} from './types';\n\n/**\n * Returns a {@link SpatialFilter} for a given viewport, typically obtained\n * from deck.gl's `viewport.getBounds()` method ([west, south, east, north]).\n * If the viewport covers the entire world (to some margin of error in Web\n * Mercator space), `undefined` is returned instead.\n *\n * If the viewport extends beyond longitude range [-180, +180], the polygon\n * may be reformatted for compatibility with CARTO APIs.\n */\nexport function createViewportSpatialFilter(\n viewport: BBox\n): SpatialFilter | undefined {\n if (_isGlobalViewport(viewport)) {\n return;\n }\n return createPolygonSpatialFilter(bboxPolygon(viewport).geometry);\n}\n\n/**\n * Returns a {@link SpatialFilter} for a given {@link Polygon} or\n * {@link MultiPolygon}. If the polygon(s) extend outside longitude\n * range [-180, +180], the result may be reformatted for compatibility\n * with CARTO APIs.\n */\nexport function createPolygonSpatialFilter(\n spatialFilter: Polygon | MultiPolygon\n): SpatialFilter | undefined {\n return (spatialFilter && _normalizeGeometry(spatialFilter)) || undefined;\n}\n\n/**\n * Check if a viewport is large enough to represent a global coverage.\n * In this case the spatial filter parameter for widget calculation is removed.\n *\n * @internalRemarks Source: @carto/react-core\n */\nfunction _isGlobalViewport(viewport: BBox) {\n const [minx, miny, maxx, maxy] = viewport;\n return maxx - minx > 179.5 * 2 && maxy - miny > 85.05 * 2;\n}\n\n/**\n * Normalized a geometry, coming from a mask or a viewport. The parts\n * spanning outside longitude range [-180, +180] are clipped and \"folded\"\n * back to the valid range and unioned to the polygons inide that range.\n *\n * It results in a Polygon or MultiPolygon strictly inside the validity range.\n *\n * @internalRemarks Source: @carto/react-core\n */\nfunction _normalizeGeometry(\n geometry: Polygon | MultiPolygon\n): Polygon | MultiPolygon | null {\n const WORLD = [-180, -90, +180, +90] as BBox;\n const worldClip = _clean(\n bboxClip(geometry, WORLD).geometry as Polygon | MultiPolygon\n );\n\n const geometryTxWest = _tx(geometry, 360);\n const geometryTxEast = _tx(geometry, -360);\n\n let result: Polygon | MultiPolygon | null = worldClip;\n\n if (result && geometryTxWest) {\n const worldWestClip = _clean(\n bboxClip(geometryTxWest, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldWestClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldWestClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n if (result && geometryTxEast) {\n const worldEastClip = _clean(\n bboxClip(geometryTxEast, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldEastClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldEastClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n return result;\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _cleanPolygonCoords(cc: Position[][]) {\n const coords = cc.filter((c) => c.length > 0);\n return coords.length > 0 ? coords : null;\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _cleanMultiPolygonCoords(ccc: Position[][][]) {\n const coords = ccc.map(_cleanPolygonCoords).filter((cc) => cc);\n return coords.length > 0 ? coords : null;\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _clean(\n geometry: Polygon | MultiPolygon | null\n): Polygon | MultiPolygon | null {\n if (!geometry) {\n return null;\n }\n\n if (_isPolygon(geometry)) {\n const coords = _cleanPolygonCoords((geometry as Polygon).coordinates);\n return coords ? polygon(coords).geometry : null;\n }\n\n if (_isMultiPolygon(geometry)) {\n const coords = _cleanMultiPolygonCoords(\n (geometry as MultiPolygon).coordinates\n );\n return coords ? multiPolygon(coords as Position[][][]).geometry : null;\n }\n\n return null;\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _txContourCoords(cc: Position[], distance: number) {\n return cc.map((c) => [c[0] + distance, c[1]]);\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _txPolygonCoords(ccc: Position[][], distance: number) {\n return ccc.map((cc) => _txContourCoords(cc, distance));\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _txMultiPolygonCoords(cccc: Position[][][], distance: number) {\n return cccc.map((ccc) => _txPolygonCoords(ccc, distance));\n}\n\n/** @internalRemarks Source: @carto/react-core */\nfunction _tx(geometry: Polygon | MultiPolygon, distance: number) {\n if (geometry && getType(geometry) === 'Polygon') {\n const coords = _txPolygonCoords(\n (geometry as Polygon).coordinates,\n distance\n );\n return polygon(coords).geometry;\n } else if (geometry && getType(geometry) === 'MultiPolygon') {\n const coords = _txMultiPolygonCoords(\n (geometry as MultiPolygon).coordinates,\n distance\n );\n return multiPolygon(coords).geometry;\n } else {\n return null;\n }\n}\n\nfunction _isPolygon(geometry: Geometry): geometry is Polygon {\n return getType(geometry) === 'Polygon';\n}\n\nfunction _isMultiPolygon(geometry: Geometry): geometry is MultiPolygon {\n return getType(geometry) === 'MultiPolygon';\n}\n","/**\n * Current version of @carto/api-client.\n * @internal\n */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\n\n/** @internal */\nexport const V3_MINOR_VERSION = '3.4';\n\n/** @internalRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/**\n * Fastly default limit is 8192; leave some padding.\n * @internalRemarks Source: @deck.gl/carto\n */\nexport const DEFAULT_MAX_LENGTH_URL = 7000;\n\n/** @internalRemarks Source: @deck.gl/carto */\nexport const DEFAULT_TILE_RESOLUTION = 0.5;\n\n/**\n * @internalRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\n\n/**\n * @internalRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type V3Endpoint = 'maps' | 'stats' | 'sql';\n\nfunction joinPath(...args: string[]): string {\n return args\n .map((part) => (part.endsWith('/') ? part.slice(0, -1) : part))\n .join('/');\n}\n\nfunction buildV3Path(\n apiBaseUrl: string,\n version: 'v3',\n endpoint: V3Endpoint,\n ...rest: string[]\n): string {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildPublicMapUrl({\n apiBaseUrl,\n cartoMapId,\n}: {\n apiBaseUrl: string;\n cartoMapId: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildStatsUrl({\n attribute,\n apiBaseUrl,\n connectionName,\n source,\n type,\n}: {\n attribute: string;\n apiBaseUrl: string;\n connectionName: string;\n source: string;\n type: MapType;\n}): string {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n\n // type === 'table'\n return buildV3Path(\n apiBaseUrl,\n 'v3',\n 'stats',\n connectionName,\n source,\n attribute\n );\n}\n\nexport function buildSourceUrl({\n apiBaseUrl,\n connectionName,\n endpoint,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n endpoint: MapType;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\n\nexport function buildQueryUrl({\n apiBaseUrl,\n connectionName,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types';\n\nexport type APIRequestType =\n | 'Map data'\n | 'Map instantiation'\n | 'Public map'\n | 'Tile stats'\n | 'SQL'\n | 'Basemap style';\n\nexport type APIErrorContext = {\n requestType: APIRequestType;\n mapId?: string;\n connection?: string;\n source?: string;\n type?: MapType;\n};\n\n/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n /** Source error from server */\n error: Error;\n\n /** Context (API call & parameters) in which error occured */\n errorContext: APIErrorContext;\n\n /** Response from server */\n response?: Response;\n\n /** JSON Response from server */\n responseJson?: any;\n\n constructor(\n error: Error,\n errorContext: APIErrorContext,\n response?: Response,\n responseJson?: any\n ) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n } else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n } else if (response.status === 404) {\n responseString += 'Not found';\n } else {\n responseString += 'Error';\n }\n\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType') continue;\n message += `\\n${formatErrorKey(key)}: ${(errorContext as any)[key]}`;\n }\n message += '\\n';\n\n super(message);\n\n this.name = 'CartoAPIError';\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key: string) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase());\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {isPureObject} from '../utils';\nimport {CartoAPIError, APIErrorContext} from './carto-api-error';\nimport {V3_MINOR_VERSION} from '../constants-internal';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal';\nimport {getClient} from '../client';\nimport {LocalCacheOptions} from '../sources/types';\n\nconst DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\n\nconst DEFAULT_REQUEST_CACHE = new Map<string, Promise<unknown>>();\n\nexport async function requestWithParameters<T = any>({\n baseUrl,\n parameters = {},\n headers: customHeaders = {},\n errorContext,\n maxLengthURL = DEFAULT_MAX_LENGTH_URL,\n localCache,\n}: {\n baseUrl: string;\n parameters?: Record<string, unknown>;\n headers?: Record<string, string>;\n errorContext: APIErrorContext;\n maxLengthURL?: number;\n localCache?: LocalCacheOptions;\n}): Promise<T> {\n // Parameters added to all requests issued with `requestWithParameters()`.\n // These parameters override parameters already in the base URL, but not\n // user-provided parameters.\n parameters = {\n v: V3_MINOR_VERSION,\n client: getClient(),\n ...(typeof deck !== 'undefined' &&\n deck.VERSION && {deckglVersion: deck.VERSION}),\n ...parameters,\n };\n\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n\n const {\n cache: REQUEST_CACHE,\n canReadCache,\n canStoreInCache,\n } = getCacheSettings(localCache);\n\n if (canReadCache && REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key) as Promise<T>;\n }\n\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n\n /* global fetch */\n const fetchPromise =\n url.length > maxLengthURL\n ? fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(parameters),\n headers,\n })\n : fetch(url, {headers});\n\n let response: Response | undefined;\n let responseJson: unknown;\n const jsonPromise: Promise<T> = fetchPromise\n .then((_response: Response) => {\n response = _response;\n return response.json();\n })\n .then((json: any) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n })\n .catch((error: Error) => {\n if (canStoreInCache) {\n REQUEST_CACHE.delete(key);\n }\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n\n if (canStoreInCache) {\n REQUEST_CACHE.set(key, jsonPromise);\n }\n return jsonPromise;\n}\n\nfunction getCacheSettings(localCache: LocalCacheOptions | undefined) {\n const canReadCache = localCache?.cacheControl?.includes('no-cache')\n ? false\n : true;\n const canStoreInCache = localCache?.cacheControl?.includes('no-store')\n ? false\n : true;\n const cache = localCache?.cache || DEFAULT_REQUEST_CACHE;\n\n return {\n cache,\n canReadCache,\n canStoreInCache,\n };\n}\n\nfunction createCacheKey(\n baseUrl: string,\n parameters: Record<string, unknown>,\n headers: Record<string, string>\n): string {\n const parameterEntries = Object.entries(parameters).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n const headerEntries = Object.entries(headers).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n return JSON.stringify({\n baseUrl,\n parameters: parameterEntries,\n headers: headerEntries,\n });\n}\n\n/**\n * Appends query string parameters to a URL. Existing URL parameters are kept,\n * unless there is a conflict, in which case the new parameters override\n * those already in the URL.\n */\nfunction createURLWithParameters(\n baseUrlString: string,\n parameters: Record<string, unknown>\n): string {\n const baseUrl = new URL(baseUrlString);\n for (const [key, value] of Object.entries(parameters)) {\n if (isPureObject(value) || Array.isArray(value)) {\n baseUrl.searchParams.set(key, JSON.stringify(value));\n } else {\n baseUrl.searchParams.set(\n key,\n (value as string | boolean | number).toString()\n );\n }\n }\n return baseUrl.toString();\n}\n\n/**\n * Deletes query string parameters from a URL.\n */\nfunction excludeURLParameters(baseUrlString: string, parameters: string[]) {\n const baseUrl = new URL(baseUrlString);\n for (const param of parameters) {\n if (baseUrl.searchParams.has(param)) {\n baseUrl.searchParams.delete(param);\n }\n }\n return baseUrl.toString();\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_API_BASE_URL} from '../constants';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal';\nimport {buildSourceUrl} from '../api/endpoints';\nimport {requestWithParameters} from '../api/request-with-parameters';\nimport type {\n GeojsonResult,\n JsonResult,\n SourceOptionalOptions,\n SourceRequiredOptions,\n TilejsonMapInstantiation,\n TilejsonResult,\n} from './types';\nimport {MapType} from '../types';\nimport {APIErrorContext} from '../api';\nimport {getClient} from '../client';\n\nexport const SOURCE_DEFAULTS: SourceOptionalOptions = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n format: 'tilejson',\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL,\n};\n\nexport async function baseSource<UrlParameters extends Record<string, unknown>>(\n endpoint: MapType,\n options: Partial<SourceOptionalOptions> & SourceRequiredOptions,\n urlParameters: UrlParameters\n): Promise<TilejsonResult | GeojsonResult | JsonResult> {\n const {accessToken, connectionName, cache, ...optionalOptions} = options;\n const mergedOptions = {\n ...SOURCE_DEFAULTS,\n accessToken,\n connectionName,\n endpoint,\n };\n for (const key in optionalOptions) {\n if (optionalOptions[key as keyof typeof optionalOptions]) {\n (mergedOptions as any)[key] =\n optionalOptions[key as keyof typeof optionalOptions];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const {clientId, maxLengthURL, format, localCache} = mergedOptions;\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2),\n };\n const mapInstantiation =\n await requestWithParameters<TilejsonMapInstantiation>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(\n new URL(dataUrl).searchParams.get('cache') || '',\n 10\n );\n }\n errorContext.requestType = 'Map data';\n\n if (format === 'tilejson') {\n const json = await requestWithParameters<TilejsonResult>({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n return json;\n }\n\n return await requestWithParameters<GeojsonResult | JsonResult>({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {QueryParameters} from '../types.js';\nimport {baseSource} from './base-source';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types';\n\nexport type BoundaryQuerySourceOptions = SourceOptions &\n FilterOptions & {\n columns?: string[];\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: QueryParameters;\n };\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: Record<string, unknown> | unknown[];\n};\n\nexport type BoundaryQuerySourceResponse = TilejsonResult;\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<BoundaryQuerySourceResponse> {\n const {\n columns,\n filters,\n tilesetTableName,\n propertiesSqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesSqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryQuerySourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types';\n\nexport type BoundaryTableSourceOptions = SourceOptions &\n FilterOptions & {\n tilesetTableName: string;\n columns?: string[];\n propertiesTableName: string;\n };\ntype UrlParameters = {\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n columns?: string;\n propertiesTableName: string;\n};\n\nexport type BoundaryTableSourceResponse = TilejsonResult;\n\nexport const boundaryTableSource = async function (\n options: BoundaryTableSourceOptions\n): Promise<BoundaryTableSourceResponse> {\n const {filters, tilesetTableName, columns, propertiesTableName} = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesTableName,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryTableSourceResponse>;\n};\n","import {\n DEFAULT_AGGREGATION_RES_LEVEL_H3,\n DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n} from './constants-internal';\nimport type {ModelSource} from './models/model';\nimport type {AggregationOptions} from './sources/types';\nimport type {ViewState} from './widget-sources';\n\nconst DEFAULT_TILE_SIZE = 512;\nconst QUADBIN_ZOOM_MAX_OFFSET = 4;\n\nexport function getSpatialFiltersResolution(\n source: Partial<ModelSource & AggregationOptions>,\n viewState: ViewState\n): number | undefined {\n const dataResolution = source.dataResolution ?? Number.MAX_VALUE;\n\n const aggregationResLevel =\n source.aggregationResLevel ??\n (source.spatialDataType === 'h3'\n ? DEFAULT_AGGREGATION_RES_LEVEL_H3\n : DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN);\n\n const aggregationResLevelOffset = Math.max(\n 0,\n Math.floor(aggregationResLevel)\n );\n\n const currentZoomInt = Math.ceil(viewState.zoom);\n if (source.spatialDataType === 'h3') {\n const tileSize = DEFAULT_TILE_SIZE;\n const maxResolutionForZoom =\n maxH3SpatialFiltersResolutions.find(\n ([zoom]) => zoom === currentZoomInt\n )?.[1] ?? Math.max(0, currentZoomInt - 3);\n\n const maxSpatialFiltersResolution = maxResolutionForZoom\n ? Math.min(dataResolution, maxResolutionForZoom)\n : dataResolution;\n\n const hexagonResolution =\n _getHexagonResolution(viewState, tileSize) + aggregationResLevelOffset;\n\n return Math.min(hexagonResolution, maxSpatialFiltersResolution);\n }\n\n if (source.spatialDataType === 'quadbin') {\n const maxResolutionForZoom = currentZoomInt + QUADBIN_ZOOM_MAX_OFFSET;\n const maxSpatialFiltersResolution = Math.min(\n dataResolution,\n maxResolutionForZoom\n );\n\n const quadsResolution =\n Math.floor(viewState.zoom) + aggregationResLevelOffset;\n return Math.min(quadsResolution, maxSpatialFiltersResolution);\n }\n\n return undefined;\n}\n\nconst maxH3SpatialFiltersResolutions = [\n [20, 14],\n [19, 13],\n [18, 12],\n [17, 11],\n [16, 10],\n [15, 9],\n [14, 8],\n [13, 7],\n [12, 7],\n [11, 7],\n [10, 6],\n [9, 6],\n [8, 5],\n [7, 4],\n [6, 4],\n [5, 3],\n [4, 2],\n [3, 1],\n [2, 1],\n [1, 0],\n];\n\n// stolen from https://github.com/visgl/deck.gl/blob/master/modules/carto/src/layers/h3-tileset-2d.ts\n\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\n\n/**\n * Resolution conversion function. Takes a WebMercatorViewport and returns\n * a H3 resolution such that the screen space size of the hexagons is\n * \"similar\" to the given tileSize on screen. Intended for use with deck.gl.\n * @internal\n */\nexport function _getHexagonResolution(\n viewport: {zoom: number; latitude: number},\n tileSize: number\n): number {\n // Difference in given tile size compared to deck's internal 512px tile size,\n // expressed as an offset to the viewport zoom.\n const zoomOffset = Math.log2(tileSize / DEFAULT_TILE_SIZE);\n const hexagonScaleFactor = (2 / 3) * (viewport.zoom - zoomOffset);\n const latitudeScaleFactor = Math.log(\n 1 / Math.cos((Math.PI * viewport.latitude) / 180)\n );\n\n // Clip and bias\n return Math.max(\n 0,\n Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS)\n );\n}\n","import {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n ViewState,\n} from './types.js';\nimport {FilterLogicalOperator, Filter, SpatialFilter} from '../types.js';\nimport {getApplicableFilters} from '../utils.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\nimport {SourceOptions} from '../sources/index.js';\nimport {ApiVersion, DEFAULT_API_BASE_URL} from '../constants.js';\nimport {getSpatialFiltersResolution} from '../spatial-index.js';\nimport {AggregationOptions} from '../sources/types.js';\n\nexport interface WidgetSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetSource<Props extends WidgetSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetSourceProps> = {\n apiVersion: ApiVersion.V3,\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n filters: {},\n filtersLogicalOperator: 'and',\n };\n\n constructor(props: Props) {\n this.props = {...WidgetSource.defaultProps, ...props};\n }\n\n /**\n * Subclasses of {@link WidgetRemoteSource} must implement this method, calling\n * {@link WidgetRemoteSource.prototype._getModelSource} for common source\n * properties, and adding additional required properties including 'type' and\n * 'data'.\n */\n protected abstract getModelSource(owner: string | undefined): ModelSource;\n\n protected _getModelSource(\n owner?: string\n ): Omit<ModelSource, 'type' | 'data'> {\n const props = this.props;\n return {\n apiVersion: props.apiVersion as ApiVersion,\n apiBaseUrl: props.apiBaseUrl as string,\n clientId: props.clientId as string,\n accessToken: props.accessToken,\n connectionName: props.connectionName,\n filters: getApplicableFilters(owner, props.filters),\n filtersLogicalOperator: props.filtersLogicalOperator,\n spatialDataType: props.spatialDataType,\n spatialDataColumn: props.spatialDataColumn,\n dataResolution: (props as Partial<AggregationOptions>).dataResolution,\n };\n }\n\n protected _getSpatialFiltersResolution(\n source: Omit<ModelSource, 'type' | 'data'>,\n spatialFilter?: SpatialFilter,\n referenceViewState?: ViewState\n ): number | undefined {\n // spatialFiltersResolution applies only to spatial index sources.\n if (!spatialFilter || source.spatialDataType === 'geo') {\n return;\n }\n\n if (!referenceViewState) {\n throw new Error(\n 'Missing required option, \"spatialIndexReferenceViewState\".'\n );\n }\n\n return getSpatialFiltersResolution(source, referenceViewState);\n }\n\n /**\n * Returns a list of labeled datapoints for categorical data. Suitable for\n * charts including grouped bar charts, pie charts, and tree charts.\n */\n abstract getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse>;\n\n /**\n * Given a list of feature IDs (as found in `_carto_feature_id`) returns all\n * matching features. In datasets containing features with duplicate geometries,\n * feature IDs may be duplicated (IDs are a hash of geometry) and so more\n * results may be returned than IDs in the request.\n * @internal\n * @experimental\n */\n abstract getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse>;\n\n /**\n * Returns a scalar numerical statistic over all matching data. Suitable\n * for 'headline' or 'scorecard' figures such as counts and sums.\n */\n abstract getFormula(options: FormulaRequestOptions): Promise<FormulaResponse>;\n\n /**\n * Returns a list of labeled datapoints for 'bins' of data defined as ticks\n * over a numerical range. Suitable for histogram charts.\n */\n abstract getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse>;\n\n /**\n * Returns a range (min and max) for a numerical column of matching rows.\n * Suitable for displaying certain 'headline' or 'scorecard' statistics,\n * or rendering a range slider UI for filtering.\n */\n abstract getRange(options: RangeRequestOptions): Promise<RangeResponse>;\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\n */\n abstract getScatter(options: ScatterRequestOptions): Promise<ScatterResponse>;\n\n /**\n * Returns a list of arbitrary data rows, with support for pagination and\n * sorting. Suitable for displaying tables and lists.\n */\n abstract getTable(options: TableRequestOptions): Promise<TableResponse>;\n\n /**\n * Returns a series of labeled numerical values, grouped into equally-sized\n * time intervals. Suitable for rendering time series charts.\n */\n abstract getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse>;\n}\n","import {InvalidColumnError} from '../utils.js';\n\n/** @internalRemarks Source: @carto/react-api */\nexport interface ModelRequestOptions {\n method: 'GET' | 'POST';\n abortController?: AbortController;\n otherOptions?: Record<string, unknown>;\n body?: string;\n}\n\ninterface ModelErrorResponse {\n error?: string | string[];\n hint?: string;\n column_name?: string;\n}\n\n/**\n * Return more descriptive error from API\n * @internalRemarks Source: @carto/react-api\n */\nexport function dealWithApiError({\n response,\n data,\n}: {\n response: Response;\n data: ModelErrorResponse;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (\n typeof data.error === 'string' &&\n data.error?.includes('Missing columns')\n ) {\n throw new InvalidColumnError(data.error);\n }\n\n switch (response.status) {\n case 401:\n throw new Error('Unauthorized access. Invalid credentials');\n case 403:\n throw new Error('Forbidden access to the requested data');\n default:\n const msg =\n data && data.error && typeof data.error === 'string'\n ? data.error\n : JSON.stringify(data?.hint || data.error?.[0]);\n throw new Error(msg);\n }\n}\n\n/** @internalRemarks Source: @carto/react-api */\nexport async function makeCall({\n url,\n accessToken,\n opts,\n}: {\n url: string;\n accessToken: string;\n opts: ModelRequestOptions;\n}) {\n let response;\n let data;\n const isPost = opts?.method === 'POST';\n try {\n response = await fetch(url.toString(), {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...(isPost && {'Content-Type': 'application/json'}),\n },\n ...(isPost && {\n method: opts?.method,\n body: opts?.body,\n }),\n signal: opts?.abortController?.signal,\n ...opts?.otherOptions,\n });\n data = await response.json();\n } catch (error) {\n if ((error as Error).name === 'AbortError') throw error;\n\n throw new Error(`Failed request: ${error}`);\n }\n\n if (!response.ok) {\n dealWithApiError({response, data});\n }\n\n return data;\n}\n","import {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n MapType,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {$TODO} from '../types-internal.js';\nimport {assert, isPureObject} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\nimport {ApiVersion} from '../constants.js';\nimport {SpatialDataType, SpatialFilterPolyfillMode} from '../sources/types.js';\n\n/** @internalRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\n 'pick',\n 'timeseries',\n 'range',\n 'scatterplot',\n 'table',\n] as const;\n\nexport type Model = (typeof AVAILABLE_MODELS)[number];\n\nexport interface ModelSource {\n type: MapType;\n apiVersion: ApiVersion;\n apiBaseUrl: string;\n accessToken: string;\n clientId: string;\n connectionName: string;\n data: string;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\n spatialDataColumn?: string;\n spatialDataType?: SpatialDataType;\n spatialFiltersResolution?: number;\n spatialFiltersMode?: SpatialFilterPolyfillMode;\n /** original resolution of the spatial index data as stored in the DW */\n dataResolution?: number;\n}\n\nconst {V3} = ApiVersion;\nconst REQUEST_GET_MAX_URL_LENGTH = 2048;\n\n/**\n * Execute a SQL model request.\n * @internalRemarks Source: @carto/react-api\n */\nexport function executeModel(props: {\n model: Model;\n source: ModelSource;\n params: Record<string, unknown>;\n opts?: Partial<ModelRequestOptions>;\n}) {\n assert(props.source, 'executeModel: missing source');\n assert(props.model, 'executeModel: missing model');\n assert(props.params, 'executeModel: missing params');\n\n assert(\n AVAILABLE_MODELS.includes(props.model),\n `executeModel: model provided isn't valid. Available models: ${AVAILABLE_MODELS.join(\n ', '\n )}`\n );\n\n const {model, source, params, opts} = props;\n const {type, apiVersion, apiBaseUrl, accessToken, connectionName, clientId} =\n source;\n\n assert(apiBaseUrl, 'executeModel: missing apiBaseUrl');\n assert(accessToken, 'executeModel: missing accessToken');\n assert(apiVersion === V3, 'executeModel: SQL Model API requires CARTO 3+');\n assert(type !== 'tileset', 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {\n data,\n filters,\n filtersLogicalOperator = 'and',\n spatialDataType = 'geo',\n spatialFiltersMode = 'intersects',\n spatialFiltersResolution = 0,\n } = source;\n\n const queryParams: Record<string, unknown> = {\n type,\n client: clientId,\n source: data,\n params,\n queryParameters: source.queryParameters || '',\n filters,\n filtersLogicalOperator,\n };\n\n const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;\n\n // Picking Model API requires 'spatialDataColumn'.\n if (model === 'pick') {\n queryParams.spatialDataColumn = spatialDataColumn;\n }\n\n // API supports multiple filters, we apply it only to spatialDataColumn\n const spatialFilters = source.spatialFilter\n ? {[spatialDataColumn]: source.spatialFilter}\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters;\n queryParams.spatialDataColumn = spatialDataColumn;\n queryParams.spatialDataType = spatialDataType;\n }\n\n if (spatialDataType !== 'geo') {\n if (spatialFiltersResolution > 0) {\n queryParams.spatialFiltersResolution = spatialFiltersResolution;\n }\n queryParams.spatialFiltersMode = spatialFiltersMode;\n }\n\n const urlWithSearchParams =\n url + '?' + objectToURLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n }\n return makeCall({\n url,\n accessToken: source.accessToken,\n opts: {\n ...opts,\n method: isGet ? 'GET' : 'POST',\n ...(!isGet && {body: JSON.stringify(queryParams)}),\n },\n });\n}\n\nfunction objectToURLSearchParams(object: Record<string, unknown>) {\n const params = new URLSearchParams();\n for (const key in object) {\n if (isPureObject(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (Array.isArray(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (object[key] === null) {\n params.append(key, 'null');\n } else if (object[key] !== undefined) {\n params.append(key, String(object[key]));\n }\n }\n return params;\n}\n","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {normalizeObjectKeys} from '../utils.js';\nimport {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\n\nexport type WidgetRemoteSourceProps = WidgetSourceProps;\n\n/**\n * Source for Widget API requests.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetRemoteSource<\n Props extends WidgetRemoteSourceProps,\n> extends WidgetSource<Props> {\n async getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column, operation, operationColumn} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n operation,\n operationColumn: operationColumn || column,\n },\n opts: {abortController},\n }).then((res: CategoriesModelResponse) => normalizeObjectKeys(res.rows));\n }\n\n async getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {columns, dataType, featureIds, z, limit, tileResolution} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type FeaturesModelResponse = {rows: Record<string, unknown>[]};\n\n return executeModel({\n model: 'pick',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n columns,\n dataType,\n featureIds,\n z,\n limit: limit || 1000,\n tileResolution: tileResolution || DEFAULT_TILE_RESOLUTION,\n },\n opts: {abortController},\n // Avoid `normalizeObjectKeys()`, which changes column names.\n }).then(({rows}: FeaturesModelResponse) => ({rows}));\n }\n\n async getFormula(options: FormulaRequestOptions): Promise<FormulaResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: column ?? '*',\n operation: operation ?? 'count',\n operationExp,\n },\n opts: {abortController},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column, operation, ticks} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column, operation, ticks},\n opts: {abortController},\n }).then((res: HistogramModelResponse) => normalizeObjectKeys(res.rows));\n\n if (data.length) {\n // Given N ticks the API returns up to N+1 bins, omitting any empty bins. Bins\n // include 1 bin below the lowest tick, N-1 between ticks, and 1 bin above the highest tick.\n const result = Array(ticks.length + 1).fill(0);\n data.forEach(\n ({tick, value}: {tick: number; value: number}) => (result[tick] = value)\n );\n return result;\n }\n\n return [];\n }\n\n async getRange(options: RangeRequestOptions): Promise<RangeResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column},\n opts: {abortController},\n }).then((res: RangeModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getScatter(options: ScatterRequestOptions): Promise<ScatterResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\n\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n // Make sure this is sync with the same constant in cloud-native/maps-api\n const HARD_LIMIT = 500;\n\n type ScatterModelResponse = {rows: {x: number; y: number}[]};\n\n return executeModel({\n model: 'scatterplot',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n xAxisColumn,\n xAxisJoinOperation,\n yAxisColumn,\n yAxisJoinOperation,\n limit: HARD_LIMIT,\n },\n opts: {abortController},\n })\n .then((res: ScatterModelResponse) => normalizeObjectKeys(res.rows))\n .then((res) => res.map(({x, y}: {x: number; y: number}) => [x, y]));\n }\n\n async getTable(options: TableRequestOptions): Promise<TableResponse> {\n const {\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset,\n },\n opts: {abortController},\n }).then((res: TableModelResponse) => ({\n // Avoid `normalizeObjectKeys()`, which changes column names.\n rows: res.rows ?? (res as any).ROWS,\n totalCount: res.metadata?.total ?? (res as any).METADATA?.TOTAL,\n }));\n }\n\n async getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse> {\n const {\n filterOwner,\n abortController,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n ...params\n } = options;\n const {\n column,\n operationColumn,\n joinOperation,\n operation,\n stepSize,\n stepMultiplier,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n } = params;\n\n const source = this.getModelSource(filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n stepSize,\n stepMultiplier,\n operationColumn: operationColumn || column,\n joinOperation,\n operation,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n },\n opts: {abortController},\n }).then((res: TimeSeriesModelResponse) => ({\n rows: normalizeObjectKeys(res.rows),\n categories: res.metadata?.categories,\n }));\n }\n}\n","import {\n H3QuerySourceOptions,\n QuadbinQuerySourceOptions,\n VectorQuerySourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\n\ntype LayerQuerySourceOptions =\n | Omit<VectorQuerySourceOptions, 'filters'>\n | Omit<H3QuerySourceOptions, 'filters'>\n | Omit<QuadbinQuerySourceOptions, 'filters'>;\n\nexport type WidgetQuerySourceResult = {widgetSource: WidgetQuerySource};\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorQuerySource}, {@link h3QuerySource}, or {@link quadbinQuerySource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorQuerySource } from '@carto/api-client';\n *\n * const data = vectorQuerySource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * sqlQuery: 'SELECT * FROM carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetQuerySource extends WidgetRemoteSource<\n LayerQuerySourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(owner: string): ModelSource {\n return {\n ...super._getModelSource(owner),\n type: 'query',\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {FilterInterval, FilterIntervalComplete} from '../types';\n\nexport function makeIntervalComplete(\n intervals: FilterInterval[]\n): FilterIntervalComplete[] {\n return intervals.map((val) => {\n if (val[0] === undefined || val[0] === null) {\n return [Number.MIN_SAFE_INTEGER, val[1]];\n }\n\n if (val[1] === undefined || val[1] === null) {\n return [val[0], Number.MAX_SAFE_INTEGER];\n }\n\n return val;\n }) as FilterIntervalComplete[];\n}\n","import {FilterType} from '../constants';\nimport {FilterInterval, StringSearchOptions} from '../types';\nimport {makeIntervalComplete} from '../utils/makeIntervalComplete.js';\n\nexport type FilterFunction = (\n filterValues: unknown[],\n featureValue: unknown,\n params?: Record<string, unknown>\n) => boolean;\n\nexport const filterFunctions: Record<FilterType, FilterFunction> = {\n [FilterType.IN]: filterIn,\n [FilterType.BETWEEN]: filterBetween,\n [FilterType.TIME]: filterTime,\n [FilterType.CLOSED_OPEN]: filterClosedOpen,\n [FilterType.STRING_SEARCH]: filterStringSearch,\n};\n\nfunction filterIn(filterValues: unknown[], featureValue: unknown): boolean {\n return filterValues.includes(featureValue);\n}\n\n// FilterTypes.BETWEEN\nfunction filterBetween(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) <= upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as FilterInterval[]).some(\n checkRange\n );\n}\n\nfunction filterTime(filterValues: unknown[], featureValue: unknown) {\n const featureValueAsTimestamp = new Date(featureValue as number).getTime();\n if (isFinite(featureValueAsTimestamp)) {\n return filterBetween(filterValues, featureValueAsTimestamp);\n } else {\n throw new Error(`Column used to filter by time isn't well formatted.`);\n }\n}\n\n// FilterTypes.CLOSED_OPEN\nfunction filterClosedOpen(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) < upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as [number, number][]).some(\n checkRange\n );\n}\n\n// FilterTypes.STRING_SEARCH\nfunction filterStringSearch(\n filterValues: unknown[],\n featureValue: unknown,\n params: StringSearchOptions = {}\n): boolean {\n const normalizedFeatureValue = normalize(featureValue, params);\n const stringRegExp = params.useRegExp\n ? filterValues\n : filterValues.map((filterValue) => {\n let stringRegExp = escapeRegExp(normalize(filterValue, params));\n\n if (params.mustStart) stringRegExp = `^${stringRegExp}`;\n if (params.mustEnd) stringRegExp = `${stringRegExp}$`;\n\n return stringRegExp;\n });\n\n const regex = new RegExp(\n stringRegExp.join('|'),\n params.caseSensitive ? 'g' : 'gi'\n );\n return !!normalizedFeatureValue.match(regex);\n}\n\n// Aux\nconst specialCharRegExp = /[.*+?^${}()|[\\]\\\\]/g;\nconst normalizeRegExp = /\\p{Diacritic}/gu;\n\nfunction escapeRegExp(value: string) {\n return value.replace(specialCharRegExp, '\\\\$&');\n}\n\nfunction normalize(data: unknown, params: StringSearchOptions) {\n let normalizedData = String(data);\n if (!params.keepSpecialCharacters)\n normalizedData = normalizedData\n .normalize('NFD')\n .replace(normalizeRegExp, '');\n\n return normalizedData;\n}\n","import {filterFunctions} from './FilterTypes';\nimport {Filter, FilterLogicalOperator, Filters} from '../types';\nimport {Feature} from 'geojson';\nimport {FilterType} from '../constants';\nimport {FeatureData} from '../types-internal';\nimport {BinaryFeature} from '@loaders.gl/schema';\n\nconst LOGICAL_OPERATOR_METHODS: Record<\n FilterLogicalOperator,\n 'every' | 'some'\n> = {\n and: 'every',\n or: 'some',\n};\n\nfunction passesFilter(\n columns: string[],\n filters: Filters,\n feature: FeatureData,\n filtersLogicalOperator: FilterLogicalOperator\n): boolean {\n const method = LOGICAL_OPERATOR_METHODS[filtersLogicalOperator];\n return columns[method]((column) => {\n const columnFilters = filters[column];\n const columnFilterTypes = Object.keys(columnFilters) as FilterType[];\n\n if (!feature || feature[column] === null || feature[column] === undefined) {\n return false;\n }\n\n return columnFilterTypes.every((filter) => {\n const filterFunction = filterFunctions[filter];\n\n if (!filterFunction) {\n throw new Error(`\"${filter}\" filter is not implemented.`);\n }\n\n return filterFunction(\n columnFilters[filter]!.values,\n feature[column],\n (columnFilters[filter] as Filter[FilterType.STRING_SEARCH])!.params\n );\n });\n });\n}\n\nexport function buildFeatureFilter({\n filters = {},\n type = 'boolean',\n filtersLogicalOperator = 'and',\n}: {\n filters?: Filters;\n type?: 'number' | 'boolean';\n filtersLogicalOperator?: FilterLogicalOperator;\n}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => (type === 'number' ? 1 : true);\n }\n\n return (feature: Feature | FeatureData) => {\n const f = feature.properties || feature;\n const featurePassesFilter = passesFilter(\n columns,\n filters,\n f as FeatureData,\n filtersLogicalOperator\n );\n\n return type === 'number'\n ? Number(featurePassesFilter)\n : featurePassesFilter;\n };\n}\n\n// Apply certain filters to a collection of features\nexport function applyFilters(\n features: FeatureData[],\n filters: Filters,\n filtersLogicalOperator: FilterLogicalOperator\n) {\n return Object.keys(filters).length\n ? features.filter(buildFeatureFilter({filters, filtersLogicalOperator}))\n : features;\n}\n\n// Binary\nexport function buildBinaryFeatureFilter({filters = {}}: {filters: Filters}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => 1;\n }\n\n return (featureIdIdx: number, binaryData: BinaryFeature) =>\n passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData);\n}\n\nfunction getValueFromNumericProps(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n return binaryData.numericProps?.[column]?.value[featureIdIdx];\n}\n\nfunction getValueFromProperties(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n const propertyIdx = binaryData.featureIds.value[featureIdIdx];\n return (binaryData.properties[propertyIdx] as Record<string, unknown>)?.[\n column\n ];\n}\n\nconst GET_VALUE_BY_BINARY_PROP = {\n properties: getValueFromProperties,\n numericProps: getValueFromNumericProps,\n};\n\nfunction getBinaryPropertyByFilterValues(filterValues: unknown[]) {\n return typeof filterValues.flat()[0] === 'string'\n ? 'properties'\n : 'numericProps';\n}\n\nfunction getFeatureValue(\n featureIdIdx: number,\n binaryData: any,\n filter: {type: FilterType; column: string; values: unknown[]}\n) {\n const {column, values} = filter;\n const binaryProp = getBinaryPropertyByFilterValues(values);\n const getFeatureValueFn = GET_VALUE_BY_BINARY_PROP[binaryProp];\n return getFeatureValueFn(featureIdIdx, binaryData, {column});\n}\n\nfunction passesFilterUsingBinary(\n columns: string[],\n filters: Filters,\n featureIdIdx: number,\n binaryData: BinaryFeature\n) {\n return columns.every((column) => {\n const columnFilters = filters[column];\n\n return Object.entries(columnFilters).every(([type, {values}]) => {\n const filterFn = filterFunctions[type as FilterType];\n if (!filterFn) {\n throw new Error(`\"${type}\" filter is not implemented.`);\n }\n\n if (!values) return 0;\n\n const featureValue = getFeatureValue(featureIdIdx, binaryData, {\n type: type as FilterType,\n column,\n values,\n });\n\n if (featureValue === undefined || featureValue === null) return 0;\n\n return filterFn(values, featureValue);\n });\n });\n}\n","import intersects from '@turf/boolean-intersects';\nimport {FeatureCollection} from 'geojson';\nimport {SpatialFilter} from '..';\nimport {FeatureData} from '../types-internal';\n\nexport function geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n}: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n}): FeatureData[] {\n let uniqueIdx = 0;\n const map = new Map();\n\n if (!spatialFilter) {\n return [];\n }\n\n for (const feature of geojson.features) {\n const uniqueId = uniqueIdProperty\n ? feature.properties![uniqueIdProperty]\n : ++uniqueIdx;\n if (!map.has(uniqueId) && intersects(spatialFilter, feature)) {\n map.set(uniqueId, feature.properties);\n }\n }\n\n return Array.from(map.values());\n}\n","// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\nconst DEFAULT_CONFIG = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true,\n _cartographicRadians: false\n};\n// Configuration is truly global as of v3.6 to ensure single config even if multiple copies of math.gl\n// Multiple copies of config can be quite tricky to debug...\nglobalThis.mathgl = globalThis.mathgl || { config: { ...DEFAULT_CONFIG } };\nexport const config = globalThis.mathgl.config;\nexport function configure(options) {\n // Only copy existing keys\n Object.assign(config, options);\n return config;\n}\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(value, { precision = config.precision } = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n * @note isTypedArray and isNumericArray are often more useful in TypeScript\n */\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\nexport function clone(array) {\n return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n return radians(degrees);\n}\nexport function toDegrees(radians) {\n return degrees(radians);\n}\nexport function radians(degrees, result) {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians, result) {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians, result) {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians, result) {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians, result) {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians, result) {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians, result) {\n return map(radians, (angle) => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n/* eslint-disable */\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n }\n finally {\n config.EPSILON = oldEpsilon;\n }\n}\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n/* eslint-enable */\nexport function withEpsilon(epsilon, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n }\n finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n// HELPERS\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n // @ts-expect-error We check for math.gl class methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return array.clone ? array.clone() : new Array(array.length);\n}\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n const array = value;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n const val = typeof value === 'number' ? value : value[i];\n result[i] = func(val, i, result);\n }\n return result;\n }\n return func(value);\n}\n//# sourceMappingURL=common.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\nimport { createMat4, transformVector, clamp, log2 } from \"./math-utils.js\";\nimport { mat4, vec2, vec3 } from '@math.gl/core';\nimport { assert } from \"./assert.js\";\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options) {\n const { latitude } = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options) {\n const { latitude, longitude, highPrecision = false } = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n // eslint-disable-next-line no-shadow\n const { unitsPerMeter, unitsPerMeter2 } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options) {\n const { \n // Viewport props\n height, pitch, bearing, altitude, \n // Pre-calculated parameters\n scale, center } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n return vm;\n}\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options) {\n const { width, height, altitude, pitch = 0, offset, center, scale, nearZMultiplier = 1, farZMultiplier = 1 } = options;\n let { fovy = altitudeToFovy(DEFAULT_ALTITUDE) } = options;\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance = (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options) {\n const { fov, aspect, near, far } = getProjectionParameters(options);\n const projectionMatrix = mat4.perspective([], fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n return projectionMatrix;\n}\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import {lngLatToWorld} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform WGS84 coordinates to tile coords.\n * It's the inverse of deck.gl coordinate-transform (https://github.com/visgl/deck.gl/blob/master/modules/geo-layers/src/mvt-layer/coordinate-transform.js)\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformToTileCoords<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = projectFlat([west, north]);\n const se = projectFlat([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = inverseLerp(nw[0], se[0], pointX);\n const y = inverseLerp(nw[1], se[1], pointY);\n\n return [x, y];\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(projectFlat(g), bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n\nfunction projectFlat(xyz: Position): Position {\n return lngLatToWorld(xyz);\n}\n\nfunction inverseLerp(a: number, b: number, x: number): number {\n return (x - a) / (b - a);\n}\n","import {lerp} from '@math.gl/core';\nimport {lngLatToWorld, worldToLngLat} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform tile coords to WGS84 coordinates.\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformTileCoordsToWGS84<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = lngLatToWorld([west, north]);\n const se = lngLatToWorld([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return worldToLngLat([x, y]);\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(g, bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n","import bboxPolygon from '@turf/bbox-polygon';\nimport intersects from '@turf/boolean-intersects';\nimport booleanWithin from '@turf/boolean-within';\nimport intersect from '@turf/intersect';\nimport {transformToTileCoords} from '../utils/transformToTileCoords.js';\nimport {transformTileCoordsToWGS84} from '../utils/transformTileCoordsToWGS84.js';\nimport {TileFormat} from '../constants.js';\nimport {\n BBox,\n Feature,\n Geometry,\n LineString,\n MultiPolygon,\n Point,\n Polygon,\n Position,\n} from 'geojson';\nimport {SpatialFilter, Tile} from '../types.js';\nimport {TileFeatureExtractOptions} from './tileFeatures.js';\nimport {featureCollection} from '@turf/helpers';\nimport {FeatureData} from '../types-internal.js';\nimport {\n BinaryAttribute,\n BinaryFeature,\n BinaryGeometryType,\n BinaryPointFeature,\n TypedArrayConstructor,\n} from '@loaders.gl/schema';\n\nexport const FEATURE_GEOM_PROPERTY = '__geomValue';\n\ntype TileMap = Map<unknown, unknown>;\n\ntype TileDataInternal = {\n uniqueId: string | number | undefined;\n properties: any;\n numericProps: Record<string, number>;\n};\n\nexport function tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n}: {\n tiles: Tile[];\n tileFormat?: TileFormat;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: {storeGeometry?: boolean};\n}): FeatureData[] {\n const map = new Map();\n\n for (const tile of tiles) {\n // Discard if it's not a visible tile (only check false value, not undefined)\n // or tile has not data\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n const bbox = [\n tile.bbox.west,\n tile.bbox.south,\n tile.bbox.east,\n tile.bbox.north,\n ] as BBox;\n const bboxToGeom = bboxPolygon(bbox);\n const tileIsFullyVisible = booleanWithin(bboxToGeom, spatialFilter);\n\n // Clip the geometry to intersect with the tile\n const spatialFilterFeature: Feature<Polygon | MultiPolygon> = {\n type: 'Feature',\n geometry: spatialFilter,\n properties: {},\n };\n const clippedGeometryToIntersect = intersect(\n featureCollection([bboxToGeom, spatialFilterFeature])\n );\n\n if (!clippedGeometryToIntersect) {\n continue;\n }\n\n // We assume that MVT tileFormat uses local coordinates so we transform the geometry to intersect to tile coordinates [0..1],\n // while in the case of 'geojson' or binary, the geometries are already in WGS84\n const transformedGeometryToIntersect =\n tileFormat === TileFormat.MVT\n ? transformToTileCoords(clippedGeometryToIntersect.geometry, bbox)\n : clippedGeometryToIntersect.geometry;\n\n createIndicesForPoints(tile.data.points!);\n\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.points!,\n type: 'Point',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.lines!,\n type: 'LineString',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.polygons!,\n type: 'Polygon',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n return Array.from(map.values());\n}\n\nfunction processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n}: {\n map: TileMap;\n data: BinaryFeature;\n startIndex: number;\n endIndex: number;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n storeGeometry: boolean;\n geometryIntersection?: Geometry;\n}) {\n const tileProps = getPropertiesFromTile(data, startIndex);\n const uniquePropertyValue = getUniquePropertyValue(\n tileProps,\n uniqueIdProperty,\n map\n );\n\n if (!uniquePropertyValue || map.has(uniquePropertyValue)) {\n return;\n }\n let geometry: Geometry | null = null;\n\n // Only calculate geometry if necessary\n if (storeGeometry || geometryIntersection) {\n const {positions} = data;\n const ringCoordinates = getRingCoordinatesFor(\n startIndex,\n endIndex,\n positions\n );\n geometry = getFeatureByType(ringCoordinates, type);\n }\n\n // If intersection is required, check before proceeding\n if (\n geometry &&\n geometryIntersection &&\n !intersects(geometry, geometryIntersection)\n ) {\n return;\n }\n\n const properties = parseProperties(tileProps);\n\n // Only save geometry if necessary\n if (storeGeometry && geometry) {\n properties[FEATURE_GEOM_PROPERTY] =\n tileFormat === TileFormat.MVT\n ? transformTileCoordsToWGS84(geometry, bbox)\n : geometry;\n }\n map.set(uniquePropertyValue, properties);\n}\n\nfunction addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n geometryIntersection: Geometry;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n });\n }\n}\n\nfunction getIndices(data: BinaryFeature) {\n let indices: BinaryAttribute;\n switch (data.type) {\n case 'Point':\n // @ts-expect-error Missing or changed types?\n indices = data.pointIndices;\n break;\n case 'LineString':\n indices = data.pathIndices;\n break;\n case 'Polygon':\n indices = data.primitivePolygonIndices;\n break;\n default:\n throw new Error(`Unexpected type, \"${(data as BinaryFeature).type}\"`);\n }\n return indices.value;\n}\n\nfunction getFeatureId(data: BinaryFeature, startIndex: number) {\n return data.featureIds.value[startIndex];\n}\n\nfunction getPropertiesFromTile(data: BinaryFeature, startIndex: number) {\n const featureId = getFeatureId(data, startIndex);\n const {properties, numericProps, fields} = data;\n const result: TileDataInternal = {\n uniqueId: (fields?.[featureId] as {id: string | number})?.id,\n properties: properties[featureId],\n numericProps: {},\n };\n\n for (const key in numericProps) {\n result.numericProps[key] = numericProps[key].value[startIndex];\n }\n\n return result;\n}\n\nfunction parseProperties(tileProps: TileDataInternal) {\n const {properties, numericProps} = tileProps;\n return Object.assign({}, properties, numericProps);\n}\n\nfunction getUniquePropertyValue(\n tileProps: TileDataInternal,\n uniqueIdProperty: string | undefined,\n map: TileMap\n) {\n if (uniqueIdProperty) {\n return getValueFromTileProps(tileProps, uniqueIdProperty);\n }\n\n if (tileProps.uniqueId) {\n return tileProps.uniqueId;\n }\n\n const artificialId = map.size + 1; // a counter, assumed as a valid new id\n return (\n getValueFromTileProps(tileProps, 'cartodb_id') ||\n getValueFromTileProps(tileProps, 'geoid') ||\n artificialId\n );\n}\n\nfunction getValueFromTileProps(\n tileProps: TileDataInternal,\n propertyName: string\n) {\n const {properties, numericProps} = tileProps;\n return numericProps[propertyName] || properties[propertyName];\n}\n\nfunction getFeatureByType(\n coordinates: Position[],\n type: BinaryGeometryType\n): Polygon | LineString | Point {\n switch (type) {\n case 'Polygon':\n return {type: 'Polygon', coordinates: [coordinates]};\n case 'LineString':\n return {type: 'LineString', coordinates};\n case 'Point':\n return {type: 'Point', coordinates: coordinates[0]};\n default:\n throw new Error('Invalid geometry type');\n }\n}\n\nfunction getRingCoordinatesFor(\n startIndex: number,\n endIndex: number,\n positions: BinaryAttribute\n) {\n const ringCoordinates = [];\n\n for (let j = startIndex; j < endIndex; j++) {\n ringCoordinates.push(\n Array.from(\n positions.value.subarray(j * positions.size, (j + 1) * positions.size)\n )\n );\n }\n\n return ringCoordinates;\n}\n\nfunction calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n tileIsFullyVisible: boolean;\n geometryIntersection: SpatialFilter;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n if (!data?.properties.length) {\n return;\n }\n\n if (tileIsFullyVisible) {\n addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n } else {\n addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n}\n\nfunction addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n });\n }\n}\n\nfunction createIndicesForPoints(data: BinaryPointFeature) {\n const featureIds = data.featureIds.value;\n const lastFeatureId = featureIds[featureIds.length - 1];\n const PointIndicesArray = featureIds.constructor as TypedArrayConstructor;\n\n const pointIndices: BinaryAttribute = {\n value: new PointIndicesArray(featureIds.length + 1),\n size: 1,\n };\n pointIndices.value.set(featureIds);\n pointIndices.value.set([lastFeatureId + 1], featureIds.length);\n\n // @ts-expect-error Missing or changed types?\n data.pointIndices = pointIndices;\n}\n","import {SpatialIndex} from '../constants.js';\nimport {getResolution as quadbinGetResolution, geometryToCells} from 'quadbin';\nimport bboxClip from '@turf/bbox-clip';\nimport {SpatialFilter, SpatialIndexTile} from '../types.js';\nimport {BBox, Feature} from 'geojson';\nimport {getResolution as h3GetResolution, polygonToCells} from 'h3-js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\nexport type TileFeaturesSpatialIndexOptions = {\n tiles: SpatialIndexTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n};\n\nexport function tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n}: TileFeaturesSpatialIndexOptions): FeatureData[] {\n const map = new Map();\n const spatialIndex = getSpatialIndex(spatialDataType);\n const resolution = getResolution(tiles, spatialIndex);\n const spatialIndexIDName = spatialDataColumn\n ? spatialDataColumn\n : spatialIndex;\n\n if (!resolution) {\n return [];\n }\n const cells = getCellsCoverGeometry(spatialFilter, spatialIndex, resolution);\n\n if (!cells?.length) {\n return [];\n }\n\n // We transform cells to Set to improve the performace\n const cellsSet = new Set<bigint | string>(cells);\n\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n tile.data.forEach((d: Feature) => {\n if (cellsSet.has(d.id as bigint | string)) {\n map.set(d.id, {...d.properties, [spatialIndexIDName]: d.id});\n }\n });\n }\n return Array.from(map.values());\n}\n\nfunction getResolution(\n tiles: SpatialIndexTile[],\n spatialIndex: SpatialIndex\n): number | undefined {\n const data = tiles.find((tile) => tile.data?.length)?.data;\n\n if (!data) {\n return;\n }\n\n if (spatialIndex === SpatialIndex.QUADBIN) {\n return Number(quadbinGetResolution(data[0].id));\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n return h3GetResolution(data[0].id);\n }\n}\n\nconst bboxWest: BBox = [-180, -90, 0, 90];\nconst bboxEast: BBox = [0, -90, 180, 90];\n\nfunction getCellsCoverGeometry(\n geometry: SpatialFilter,\n spatialIndex: SpatialIndex,\n resolution: number\n) {\n if (spatialIndex === SpatialIndex.QUADBIN) {\n // @ts-expect-error TODO: Probably ought to be stricter about number vs. bigint types in this file.\n return geometryToCells(geometry, resolution);\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n // The current H3 polyfill algorithm can't deal with polygon segments of greater than 180 degrees longitude\n // so we clip the geometry to be sure that none of them is greater than 180 degrees\n // https://github.com/uber/h3-js/issues/24#issuecomment-431893796\n return polygonToCells(\n bboxClip(geometry, bboxWest).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n ).concat(\n polygonToCells(\n bboxClip(geometry, bboxEast).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n )\n );\n }\n}\n\nfunction getSpatialIndex(spatialDataType: SpatialDataType): SpatialIndex {\n switch (spatialDataType) {\n case 'h3':\n return SpatialIndex.H3;\n case 'quadbin':\n return SpatialIndex.QUADBIN;\n default:\n throw new Error('Unexpected spatial data type');\n }\n}\n","import {\n cellToChildren as _cellToChildren,\n cellToTile,\n geometryToCells,\n getResolution,\n} from 'quadbin';\nimport {RasterTile, SpatialFilter, Tile} from '../types';\nimport {FeatureData} from '../types-internal';\nimport {\n RasterMetadata,\n RasterMetadataBand,\n SpatialDataType,\n} from '../sources/types';\n\nexport type TileFeaturesRasterOptions = {\n tiles: RasterTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n rasterMetadata: RasterMetadata;\n};\n\nexport function tileFeaturesRaster({\n tiles,\n ...options\n}: TileFeaturesRasterOptions): FeatureData[] {\n // Cache band metadata for faster lookup while iterating over pixels.\n const bandMetadataByName: Record<string, RasterMetadataBand> = {};\n for (const band of options.rasterMetadata.bands) {\n bandMetadataByName[band.name] = band;\n }\n\n // Omit empty and invisible tiles for simpler processing and types.\n tiles = tiles.filter(isRasterTileVisible);\n if (tiles.length === 0) return [];\n\n // Raster tiles, and all pixels, are quadbin cells. Resolution of a pixel is\n // the resolution of the tile, plus the number of subdivisions. Block size\n // must be square, N x N, where N is a power of two.\n const tileResolution = getResolution(tiles[0].index.q as bigint);\n const tileBlockSize = tiles[0].data!.blockSize;\n const cellResolution = tileResolution + BigInt(Math.log2(tileBlockSize));\n\n // Compute covering cells for the spatial filter, at same resolution as the\n // raster pixels, to be used as a mask.\n const spatialFilterCells = new Set(\n geometryToCells(options.spatialFilter, cellResolution)\n );\n\n const data = new Map<bigint, FeatureData>();\n\n for (const tile of tiles as Required<RasterTile>[]) {\n const parent = tile.index.q as bigint;\n\n const children = cellToChildrenSorted(parent, cellResolution);\n\n // For each pixel/cell within the spatial filter, create a FeatureData.\n // Order is row-major, starting from NW and ending at SE.\n for (let i = 0; i < children.length; i++) {\n if (!spatialFilterCells.has(children[i])) continue;\n\n const cellData: FeatureData = {};\n let cellDataExists = false;\n\n for (const band in tile.data.cells.numericProps) {\n const value = tile.data.cells.numericProps[band].value[i];\n // TODO(cleanup): nodata should be a number, not a string.\n if (Number(bandMetadataByName[band].nodata) !== value) {\n cellData[band] = tile.data!.cells.numericProps[band].value[i];\n cellDataExists = true;\n }\n }\n\n if (cellDataExists) {\n data.set(children[i], cellData);\n }\n }\n }\n\n return Array.from(data.values());\n}\n\n/**\n * Detects whether a given {@link Tile} is a {@link RasterTile}.\n * @privateRemarks Method of detection is arbitrary, and may be changed.\n */\nexport function isRasterTile(tile: Tile): tile is RasterTile {\n return tile.data ? tile.data.hasOwnProperty('cells') : false;\n}\n\nfunction isRasterTileVisible(tile: RasterTile): tile is Required<RasterTile> {\n return !!(tile.isVisible && tile.data?.cells?.numericProps);\n}\n\n/**\n * For the raster format, children are sorted in row-major order, starting from\n * NW and ending at SE. Order returned by quadbin's cellToChildren() is not\n * defined (and not related to the raster format), so sort explicitly here.\n */\nfunction cellToChildrenSorted(parent: bigint, resolution: bigint): bigint[] {\n return _cellToChildren(parent, resolution).sort(\n (cellA: bigint, cellB: bigint) => {\n const tileA = cellToTile(cellA);\n const tileB = cellToTile(cellB);\n if (tileA.y !== tileB.y) {\n return tileA.y > tileB.y ? 1 : -1;\n }\n return tileA.x > tileB.x ? 1 : -1;\n }\n );\n}\n","import {RasterTile, SpatialFilter, SpatialIndexTile, Tile} from '../types';\nimport {tileFeaturesGeometries} from './tileFeaturesGeometries';\nimport {tileFeaturesSpatialIndex} from './tileFeaturesSpatialIndex';\nimport {TileFormat} from '../constants';\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal';\nimport {FeatureData} from '../types-internal';\nimport {RasterMetadata, SpatialDataType} from '../sources/types';\nimport {isRasterTile, tileFeaturesRaster} from './tileFeaturesRaster';\nimport {assert} from '../utils';\n\n/** @internalRemarks Source: @carto/react-core */\nexport type TileFeatures = {\n tiles: Tile[];\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n spatialFilter?: SpatialFilter;\n uniqueIdProperty?: string;\n rasterMetadata?: RasterMetadata;\n options?: TileFeatureExtractOptions;\n};\n\n/** @internalRemarks Source: @carto/react-core */\nexport type TileFeatureExtractOptions = {\n storeGeometry?: boolean;\n};\n\n/** @internalRemarks Source: @carto/react-core */\nexport function tileFeatures({\n tiles,\n spatialFilter,\n uniqueIdProperty,\n tileFormat,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialDataType,\n rasterMetadata,\n options = {},\n}: TileFeatures): FeatureData[] {\n // TODO(cleanup): Is an empty response the expected result when spatialFilter\n // is omitted? Why not make the parameter required, or return the full input?\n if (!spatialFilter) {\n return [];\n }\n\n if (spatialDataType === 'geo') {\n return tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n });\n }\n\n if (tiles.some(isRasterTile)) {\n assert(rasterMetadata, 'Missing raster metadata');\n return tileFeaturesRaster({\n tiles: tiles as RasterTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n rasterMetadata,\n });\n }\n\n return tileFeaturesSpatialIndex({\n tiles: tiles as SpatialIndexTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n });\n}\n","import {AggregationType} from '../types';\nimport {FeatureData} from '../types-internal';\n\n/** @internalRemarks Source: @carto/react-core */\nexport type AggregationFunction = (\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n) => number;\n\n/** @internalRemarks Source: @carto/react-core */\nexport const aggregationFunctions: Record<\n Exclude<AggregationType, 'custom'>,\n AggregationFunction\n> = {\n count: (values) => values.length,\n min: (...args) => applyAggregationFunction(min, ...args),\n max: (...args) => applyAggregationFunction(max, ...args),\n sum: (...args) => applyAggregationFunction(sum, ...args),\n avg: (...args) => applyAggregationFunction(avg, ...args),\n};\n\n/** @internalRemarks Source: @carto/react-core */\nexport function aggregate(\n feature: FeatureData,\n keys?: string[],\n operation?: AggregationType\n): unknown {\n if (!keys?.length) {\n throw new Error('Cannot aggregate a feature without having keys');\n } else if (keys.length === 1) {\n const value = feature[keys[0]];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n }\n\n const aggregationFn =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (!aggregationFn) {\n throw new Error(`${operation} isn't a valid aggregation function`);\n }\n\n return aggregationFn(\n keys.map((column) => {\n const value = feature[column];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n })\n );\n}\n\n/*\n * Forced casting to Number (just of non empty strings) allows to work-around\n * some specific situations, where a big numeric field is transformed into a string when generating the tileset(eg.PG)\n */\nfunction isPotentiallyValidNumber(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nconst applyAggregationFunction = (\n aggFn: AggregationFunction,\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n operation?: AggregationType\n) => {\n const normalizedKeys = normalizeKeys(keys);\n const elements =\n (normalizedKeys?.length || 0) <= 1\n ? filterFalsyElements(values as unknown[], normalizedKeys || [])\n : values;\n return aggFn(elements, keys, operation);\n};\n\nfunction filterFalsyElements(\n values: unknown[] | FeatureData[],\n keys: string[]\n) {\n const filterFn = (value: unknown) => value !== null && value !== undefined;\n\n if (!keys?.length) {\n return values.filter(filterFn);\n }\n\n return (values as FeatureData[]).filter((v) => filterFn(v[keys[0]]));\n}\n\n// Aggregation functions\nfunction avg(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n return sum(values, keys, joinOperation) / (values.length || 1);\n}\n\nfunction sum(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) => a + (aggregate(b, normalizedKeys, joinOperation) as number),\n 0\n );\n }\n\n return values.reduce((a: number, b: unknown) => a + (b as number), 0);\n}\n\nfunction min(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.min(a, aggregate(b, normalizedKeys, joinOperation) as number),\n Infinity\n );\n }\n return Math.min(...(values as number[]));\n}\n\nfunction max(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.max(a, aggregate(b, normalizedKeys, joinOperation) as number),\n -Infinity\n );\n }\n return Math.max(...(values as number[]));\n}\n\n// Aux\n\n// Keys can come as a string (one column) or a strings array (multiple column)\n// Use always an array to make the code easier\nfunction normalizeKeys(keys: unknown): string[] | undefined {\n return Array.isArray(keys)\n ? keys\n : typeof keys === 'string'\n ? [keys]\n : undefined;\n}\n","/***\n Copyright 2013 Teun Duynstee\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nmodule.exports = (function() {\n\n function identity(v){return v;}\n\n function ignoreCase(v){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\n\n function makeCompareFunction(f, opt){\n opt = typeof(opt)===\"object\" ? opt : {direction:opt};\n \n if(typeof(f)!=\"function\"){\n var prop = f;\n // make unary function\n f = function(v1){return !!v1[prop] ? v1[prop] : \"\";}\n }\n if(f.length === 1) {\n // f is a unary function mapping a single item to its sort score\n var uf = f;\n var preprocess = opt.ignoreCase?ignoreCase:identity;\n var cmp = opt.cmp || function(v1,v2) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\n f = function(v1,v2) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\n }\n const descTokens = {\"-1\":'', desc:''};\n if(opt.direction in descTokens) return function(v1,v2){return -f(v1,v2)};\n return f;\n }\n\n /* adds a secondary compare function to the target function (`this` context)\n which is applied in case the first one returns 0 (equal)\n returns a new compare function, which has a `thenBy` method as well */\n function tb(func, opt) {\n /* should get value false for the first call. This can be done by calling the \n exported function, or the firstBy property on it (for es6 module compatibility)\n */\n var x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a,b) || y(a,b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n})();\n","import {firstBy} from 'thenby';\nimport {SortDirection} from '../types';\nimport {FeatureData} from '../types-internal';\n\n// TODO(cleanup): Could this be simplified?\ntype SortColumns = string | string[] | object[];\n\ninterface SortOptions {\n sortBy?: SortColumns;\n sortByDirection?: SortDirection;\n sortByColumnType?: 'number' | 'string' | 'date';\n}\n\n/**\n * Apply sort structure to a collection of features\n * @param features\n * @param [sortOptions]\n * @param [sortOptions.sortBy] - One or more columns to sort by\n * @param [sortOptions.sortByDirection] - Direction by the columns will be sorted\n * @param [sortOptions.sortByColumnType] - Column type\n * @internal\n * @internalRemarks Source: @carto/react-core\n */\nexport function applySorting(\n features: FeatureData[],\n {\n sortBy,\n sortByDirection = 'asc',\n sortByColumnType = 'string',\n }: SortOptions = {}\n): FeatureData[] {\n // If sortBy is undefined, pass all features\n if (sortBy === undefined) {\n return features;\n }\n\n // sortOptions exists, but are bad formatted\n const isValidSortBy =\n (Array.isArray(sortBy) && sortBy.length) || // sortBy can be an array of columns\n typeof sortBy === 'string'; // or just one column\n\n if (!isValidSortBy) {\n throw new Error('Sorting options are bad formatted');\n }\n const sortFn = createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType: sortByColumnType || 'string',\n });\n return features.sort(sortFn);\n}\n\n// Aux\nfunction createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const [firstSortOption, ...othersSortOptions] = normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n }) as Parameters<typeof firstBy>[];\n\n let sortFn = firstBy(...firstSortOption);\n for (let sortOptions of othersSortOptions) {\n sortFn = sortFn.thenBy(...sortOptions);\n }\n\n return sortFn;\n}\n\nfunction normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const numberFormat = sortByColumnType === 'number' && {\n cmp: (a: number, b: number) => a - b,\n };\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((sortByEl) => {\n // sortByEl is 'column'\n if (typeof sortByEl === 'string') {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n if (Array.isArray(sortByEl)) {\n // sortBy is ['column']\n if (sortByEl[1] === undefined) {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n // sortBy is ['column', { ... }]\n if (typeof sortByEl[1] === 'object') {\n const othersSortOptions = numberFormat\n ? {...numberFormat, ...sortByEl[1]}\n : sortByEl[1];\n return [\n sortByEl[0],\n {direction: sortByDirection, ...othersSortOptions},\n ];\n }\n }\n return sortByEl;\n });\n}\n","import {aggregationFunctions, aggregate} from './aggregation.js';\nimport {AggregationType} from '../types';\nimport {FeatureData} from '../types-internal';\n\n/** @internalRemarks Source: @carto/react-core */\nexport type GroupByFeature = {\n name: string;\n value: number;\n}[];\n\n/** @internalRemarks Source: @carto/react-core */\nexport function groupValuesByColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: AggregationType;\n keysColumn: string;\n operation: AggregationType;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n const groups = data.reduce((accumulator, item) => {\n const group = item[keysColumn];\n\n const values = accumulator.get(group) || [];\n accumulator.set(group, values);\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid =\n (operation === 'count' ? true : aggregatedValue !== null) &&\n aggregatedValue !== undefined;\n\n if (isValid) {\n values.push(aggregatedValue);\n accumulator.set(group, values);\n }\n\n return accumulator;\n }, new Map()); // We use a map to be able to maintain the type in the key value\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (targetOperation) {\n return Array.from(groups).map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }));\n }\n\n return [];\n}\n","/**\n * Returns midnight (local time) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getDay();\n const diff = dateCp.getDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setDate(diff);\n dateCp.setHours(0, 0, 0, 0);\n return dateCp.getTime();\n}\n\n/**\n * Returns midnight (UTC) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getUTCMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getUTCDay();\n const diff = dateCp.getUTCDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setUTCDate(diff);\n return Date.UTC(\n dateCp.getUTCFullYear(),\n dateCp.getUTCMonth(),\n dateCp.getUTCDate()\n );\n}\n","import {AggregationType, GroupDateType} from '../types.js';\nimport {getUTCMonday} from '../utils/dateUtils.js';\nimport {aggregate, aggregationFunctions} from './aggregation.js';\nimport {GroupByFeature} from './groupBy.js';\n\nconst GROUP_KEY_FN_MAPPING: Record<GroupDateType, (date: Date) => number> = {\n year: (date: Date) => Date.UTC(date.getUTCFullYear()),\n month: (date: Date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth()),\n week: (date: Date) => getUTCMonday(date),\n day: (date: Date) =>\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n hour: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours()\n ),\n minute: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes()\n ),\n second: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n ),\n};\n\n/** @internalRemarks Source: @carto/react-core */\nexport function groupValuesByDateColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n groupType,\n operation,\n}: {\n data: Record<string, unknown>[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n keysColumn: string;\n groupType: GroupDateType;\n operation?: Exclude<AggregationType, 'custom'>;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n\n const groupKeyFn = GROUP_KEY_FN_MAPPING[groupType];\n\n if (!groupKeyFn) {\n return null;\n }\n\n const groups = data.reduce((acc, item) => {\n const value = item[keysColumn];\n const formattedValue = new Date(value as number);\n const groupKey = groupKeyFn(formattedValue);\n\n if (!isNaN(groupKey)) {\n let groupedValues = acc.get(groupKey);\n if (!groupedValues) {\n groupedValues = [];\n acc.set(groupKey, groupedValues);\n }\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid = aggregatedValue !== null && aggregatedValue !== undefined;\n\n if (isValid) {\n groupedValues.push(aggregatedValue);\n acc.set(groupKey, groupedValues);\n }\n }\n\n return acc;\n }, new Map());\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n return [...groups.entries()]\n .map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }))\n .sort((a, b) => a.name - b.name);\n}\n","import {aggregate, aggregationFunctions} from './aggregation';\nimport {AggregationType} from '../types';\nimport {FeatureData} from '../types-internal';\n\n/**\n * Histogram computation.\n * @internalRemarks Source: @carto/react-core\n */\nexport function histogram({\n data,\n valuesColumns,\n joinOperation,\n ticks,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n ticks: number[];\n operation: Exclude<AggregationType, 'custom'>;\n}): number[] {\n if (Array.isArray(data) && data.length === 0) {\n return [];\n }\n\n const binsContainer = [Number.MIN_SAFE_INTEGER, ...ticks].map(\n (tick, index, arr) => ({\n bin: index,\n start: tick,\n end: index === arr.length - 1 ? Number.MAX_SAFE_INTEGER : arr[index + 1],\n values: [] as number[],\n })\n );\n\n data.forEach((feature) => {\n const featureValue = aggregate(\n feature,\n valuesColumns,\n joinOperation\n ) as number;\n\n const isValid = featureValue !== null && featureValue !== undefined;\n\n if (!isValid) {\n return;\n }\n\n const binContainer = binsContainer.find(\n (bin) => bin.start <= featureValue && bin.end > featureValue\n );\n\n if (!binContainer) {\n return;\n }\n\n binContainer.values.push(featureValue);\n });\n\n const targetOperation = aggregationFunctions[operation];\n const transformedBins = binsContainer.map(\n (binContainer) => binContainer.values\n );\n return transformedBins.map((values) =>\n values.length ? targetOperation(values) : 0\n );\n}\n","import {aggregate} from './aggregation';\nimport {FeatureData} from '../types-internal';\nimport {AggregationType} from '../types';\n\nexport type ScatterPlotFeature = [number, number][];\n\n/**\n * Filters invalid features and formats data.\n * @internalRemarks Source: @carto/react-core\n */\nexport function scatterPlot({\n data,\n xAxisColumns,\n xAxisJoinOperation,\n yAxisColumns,\n yAxisJoinOperation,\n}: {\n data: FeatureData[];\n xAxisColumns: string[];\n xAxisJoinOperation?: AggregationType;\n yAxisColumns: string[];\n yAxisJoinOperation?: AggregationType;\n}): ScatterPlotFeature {\n return data.reduce(\n (acc, feature) => {\n const xValue = aggregate(\n feature,\n xAxisColumns,\n xAxisJoinOperation\n ) as number;\n\n const xIsValid = xValue !== null && xValue !== undefined;\n\n const yValue = aggregate(\n feature,\n yAxisColumns,\n yAxisJoinOperation\n ) as number;\n\n const yIsValid = yValue !== null && yValue !== undefined;\n\n if (xIsValid && yIsValid) {\n acc.push([xValue, yValue]);\n }\n\n return acc;\n },\n [] as [number, number][]\n );\n}\n","import {TilesetSourceOptions} from '../sources/index.js';\nimport type {ModelSource} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {InvalidColumnError, getApplicableFilters} from '../utils.js';\nimport {TileFormat} from '../constants.js';\nimport {SpatialFilter, Tile} from '../types.js';\nimport {\n TileFeatureExtractOptions,\n applyFilters,\n geojsonFeatures,\n tileFeatures,\n} from '../filters/index.js';\nimport {\n aggregationFunctions,\n applySorting,\n groupValuesByColumn,\n groupValuesByDateColumn,\n histogram,\n scatterPlot,\n} from '../operations/index.js';\nimport {FeatureData} from '../types-internal.js';\nimport {FeatureCollection} from 'geojson';\nimport {SpatialDataType} from '../sources/types.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\n\n// TODO(cleanup): Parameter defaults in source functions and widget API calls are\n// currently duplicated and possibly inconsistent. Consider consolidating and\n// operating on Required<T> objects. See:\n// https://github.com/CartoDB/carto-api-client/issues/39\n\nexport type WidgetTilesetSourceProps = WidgetSourceProps &\n Omit<TilesetSourceOptions, 'filters'> & {\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n };\n\nexport type WidgetTilesetSourceResult = {widgetSource: WidgetTilesetSource};\n\n/**\n * Source for Widget API requests on a data source defined by a tileset.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTilesetSource}, {@link h3TilesetSource}, or {@link quadbinTilesetSource},\n * which can be shared with map layers. Sources contain a `widgetSource`\n * property, for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTilesetSource } from '@carto/api-client';\n *\n * const data = vectorTilesetSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_rasters.my_tileset_source'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTilesetSource<\n Props extends WidgetTilesetSourceProps = WidgetTilesetSourceProps,\n> extends WidgetSource<Props> {\n protected _tiles: Tile[] = [];\n protected _features: FeatureData[] = [];\n\n protected override getModelSource(owner: string): ModelSource {\n return {\n ...super._getModelSource(owner),\n type: 'tileset',\n data: this.props.tableName,\n };\n }\n\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles: unknown[]) {\n this._tiles = tiles as Tile[];\n }\n\n /**\n * Extracts feature data from tiles previously loaded with {@link loadTiles}.\n * Must be called before computing statistics on tiles.\n */\n extractTileFeatures({\n spatialFilter,\n uniqueIdProperty,\n options,\n }: {\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n }) {\n this._features = tileFeatures({\n tiles: this._tiles,\n options,\n spatialFilter,\n uniqueIdProperty,\n ...this.props,\n });\n }\n\n /** Loads features as GeoJSON (used for testing). */\n loadGeoJSON({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n }: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n }) {\n this._features = geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n });\n }\n\n override async getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse> {\n throw new Error('getFeatures not supported for tilesets');\n }\n\n async getFormula({\n column = '*',\n operation = 'count',\n joinOperation,\n filterOwner,\n }: FormulaRequestOptions): Promise<FormulaResponse> {\n if (operation === 'custom') {\n throw new Error('Custom aggregation not supported for tilesets');\n }\n\n if (!this._features.length) {\n return {value: null};\n }\n\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== 'count') {\n assertColumn(this._features, column);\n }\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n if (filteredFeatures.length === 0 && operation !== 'count') {\n return {value: null};\n }\n\n const targetOperation = aggregationFunctions[operation];\n return {\n value: targetOperation(\n filteredFeatures as FeatureData[],\n column,\n joinOperation\n ),\n };\n }\n\n override async getHistogram({\n operation = 'count',\n ticks,\n column,\n joinOperation,\n filterOwner,\n }: HistogramRequestOptions): Promise<HistogramResponse> {\n if (!this._features.length) {\n return [];\n }\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n assertColumn(this._features, column);\n\n return histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation,\n });\n }\n\n override async getCategories({\n column,\n operation = 'count',\n operationColumn,\n joinOperation,\n filterOwner,\n }: CategoryRequestOptions): Promise<CategoryResponse> {\n if (!this._features.length) {\n return [];\n }\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n assertColumn(this._features, column as string, operationColumn as string);\n\n const groups = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n joinOperation,\n keysColumn: column,\n operation,\n });\n\n return groups || [];\n }\n\n override async getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filterOwner,\n }: ScatterRequestOptions): Promise<ScatterResponse> {\n if (!this._features.length) {\n return [];\n }\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n assertColumn(this._features, xAxisColumn, yAxisColumn);\n\n return scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation,\n });\n }\n\n override async getTable(\n options: TableRequestOptions\n ): Promise<TableResponse> {\n const {filterOwner, spatialFilter, abortController, ...params} = options;\n const {\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n } = params;\n\n if (!this._features.length) {\n return {rows: [], totalCount: 0};\n }\n\n // Filter.\n let filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n // Search.\n // TODO: Could we get the same behavior by applying filters in loadTiles()?\n if (searchFilterColumn && searchFilterText) {\n filteredFeatures = filteredFeatures.filter(\n (row) =>\n row[searchFilterColumn] &&\n String(row[searchFilterColumn])\n .toLowerCase()\n .includes(String(searchFilterText).toLowerCase())\n );\n }\n\n // Sort.\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType,\n });\n const totalCount = rows.length;\n\n // Offset and limit.\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount)\n );\n\n // Select columns.\n rows = rows.map((srcRow: FeatureData) => {\n const dstRow: FeatureData = {};\n for (const column of columns) {\n dstRow[column] = srcRow[column];\n }\n return dstRow;\n });\n\n return {rows, totalCount} as TableResponse;\n }\n\n override async getTimeSeries({\n column,\n stepSize,\n operation,\n operationColumn,\n joinOperation,\n filterOwner,\n }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse> {\n if (!this._features.length) {\n return {rows: []};\n }\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n\n assertColumn(this._features, column as string, operationColumn as string);\n\n const rows =\n groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n keysColumn: column,\n groupType: stepSize,\n operation,\n joinOperation,\n }) || [];\n\n return {rows};\n }\n\n override async getRange({\n column,\n filterOwner,\n }: RangeRequestOptions): Promise<RangeResponse> {\n if (!this._features.length) {\n // TODO: Is this the only nullable response in the Widgets API? If so,\n // can we do something more consistent?\n return null;\n }\n\n assertColumn(this._features, column);\n\n const filteredFeatures = this._getFilteredFeatures(filterOwner);\n return {\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column),\n };\n }\n\n /****************************************************************************\n * INTERNAL\n */\n\n private _getFilteredFeatures(filterOwner: string | undefined): FeatureData[] {\n return applyFilters(\n this._features,\n getApplicableFilters(filterOwner, this.props.filters),\n this.props.filtersLogicalOperator || 'and'\n );\n }\n}\n\nfunction assertColumn(\n features: FeatureData[],\n ...columnArgs: string[] | string[][]\n) {\n // TODO(cleanup): Can drop support for multiple column shapes here?\n\n // Due to the multiple column shape, we normalise it as an array with normalizeColumns\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()));\n\n const featureKeys = Object.keys(features[0]);\n\n const invalidColumns = columns.filter(\n (column) => !featureKeys.includes(column)\n );\n\n if (invalidColumns.length) {\n throw new InvalidColumnError(\n `Missing column(s): ${invalidColumns.join(', ')}`\n );\n }\n}\n\nfunction normalizeColumns(columns: string | string[]): string[] {\n return Array.isArray(columns)\n ? columns\n : typeof columns === 'string'\n ? [columns]\n : [];\n}\n","import {RasterMetadata} from '../sources/index.js';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceProps,\n} from './widget-tileset-source.js';\n\nexport type WidgetRasterSourceProps = WidgetTilesetSourceProps & {\n rasterMetadata: RasterMetadata;\n spatialDataType: 'quadbin';\n};\n\nexport type WidgetRasterSourceResult = {widgetSource: WidgetRasterSource};\n\nexport class WidgetRasterSource extends WidgetTilesetSource<WidgetRasterSourceProps> {}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\n\nexport type WidgetTableSourceResult = {widgetSource: WidgetTableSource};\n\n/**\n * Source for Widget API requests on a data source defined as a table.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTableSource}, {@link h3TableSource}, or {@link quadbinTableSource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTableSource } from '@carto/api-client';\n *\n * const data = vectorTableSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTableSource extends WidgetRemoteSource<\n LayerTableSourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(owner: string): ModelSource {\n return {\n ...super._getModelSource(owner),\n type: 'table',\n data: this.props.tableName,\n };\n }\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal';\nimport {WidgetQuerySource, WidgetQuerySourceResult} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types';\n\nexport type H3QuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;\n\nexport const h3QuerySource = async function (\n options: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n sqlQuery,\n spatialDataColumn = 'h3',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType,\n q: sqlQuery,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal';\nimport {WidgetTableSource, WidgetTableSourceResult} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types';\n\nexport type H3TableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;\n\nexport const h3TableSource = async function (\n options: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n spatialDataColumn = 'h3',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","import {TileFormat} from '../constants.js';\nimport {Tilejson} from '../sources/types.js';\n\nexport function getTileFormat(tilejson: Tilejson): TileFormat {\n const tileParams = new URL(tilejson.tiles[0]).searchParams;\n return tileParams.get('formatTiles') === 'mvt'\n ? TileFormat.MVT\n : TileFormat.BINARY;\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getTileFormat} from '../utils/getTileFormat';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types';\n\nexport type H3TilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type H3TilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName, spatialDataColumn = 'h3'} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'h3',\n }),\n })\n ) as Promise<H3TilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getTileFormat} from '../utils/getTileFormat';\nimport {WidgetRasterSource, WidgetRasterSourceResult} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n FilterOptions,\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types';\n\nexport type RasterSourceOptions = SourceOptions &\n TilesetSourceOptions &\n FilterOptions;\ntype UrlParameters = {\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type RasterSourceResponse = TilejsonResult & WidgetRasterSourceResult;\n\nexport const rasterSource = async function (\n options: RasterSourceOptions\n): Promise<RasterSourceResponse> {\n const {tableName, filters} = options;\n const urlParameters: UrlParameters = {name: tableName};\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('raster', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetRasterSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn: 'quadbin',\n spatialDataType: 'quadbin',\n rasterMetadata: (result as TilejsonResult).raster_metadata!,\n }),\n })\n ) as Promise<RasterSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal';\nimport {WidgetQuerySource, WidgetQuerySourceResult} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types';\n\nexport type QuadbinQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const quadbinQuerySource = async function (\n options: QuadbinQuerySourceOptions\n): Promise<QuadbinQuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n sqlQuery,\n spatialDataColumn = 'quadbin',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal';\nimport {WidgetTableSource, WidgetTableSourceResult} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types';\n\nexport type QuadbinTableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const quadbinTableSource = async function (\n options: QuadbinTableSourceOptions\n): Promise<QuadbinTableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n spatialDataColumn = 'quadbin',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getTileFormat} from '../utils/getTileFormat';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types';\n\nexport type QuadbinTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type QuadbinTilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName, spatialDataColumn = 'quadbin'} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'quadbin',\n }),\n })\n ) as Promise<QuadbinTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source';\nimport type {\n FilterOptions,\n SourceOptions,\n QuerySourceOptions,\n SpatialDataType,\n TilejsonResult,\n ColumnsOption,\n} from './types';\n\nexport type VectorQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n aggregationExp?: string;\n};\n\nexport type VectorQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const vectorQuerySource = async function (\n options: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source';\nimport type {\n FilterOptions,\n ColumnsOption,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types';\n\nexport type VectorTableSourceOptions = SourceOptions &\n TableSourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n name: string;\n aggregationExp?: string;\n};\n\nexport type VectorTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const vectorTableSource = async function (\n options: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal';\nimport {getTileFormat} from '../utils/getTileFormat';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources';\nimport {baseSource} from './base-source';\nimport type {\n SourceOptions,\n TilesetSourceOptions,\n TilejsonResult,\n} from './types';\n\nexport type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type VectorTilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName, spatialDataColumn = DEFAULT_GEO_COLUMN} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'geo',\n }),\n })\n ) as Promise<VectorTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {SOURCE_DEFAULTS} from '../sources/index';\nimport type {\n SourceOptions,\n QuerySourceOptions,\n QueryResult,\n} from '../sources/types';\nimport {buildQueryUrl} from './endpoints';\nimport {requestWithParameters} from './request-with-parameters';\nimport {APIErrorContext} from './carto-api-error';\n\nexport type QueryOptions = SourceOptions & QuerySourceOptions;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (\n options: QueryOptions\n): Promise<QueryResult> {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n clientId = SOURCE_DEFAULTS.clientId,\n maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,\n localCache,\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 = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(parameters, undefined, 2),\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n};\n"],"names":["client","getClient","setClient","c","FilterType","ApiVersion","DEFAULT_API_BASE_URL","TileFormat","SpatialIndex","Provider","FILTER_TYPES","Set","Object","values","isFilterType","type","has","getApplicableFilters","owner","filters","applicableFilters","column","filter","isApplicable","normalizeObjectKeys","el","Array","isArray","map","value","entries","reduce","acc","_ref","key","toLowerCase","assert","condition","message","Error","InvalidColumnError","constructor","NAME","name","is","error","includes","isEmptyObject","object","_","isObject","x","isPureObject","addFilter","removeFilter","_ref2","clearFilters","keys","hasFilter","_ref3","getFilter","_ref4","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","bboxPolygon","geometry","spatialFilter","_normalizeGeometry","undefined","minx","miny","maxx","maxy","WORLD","worldClip","_clean","bboxClip","geometryTxWest","_tx","geometryTxEast","result","worldWestClip","collection","featureCollection","feature","merged","union","worldEastClip","_cleanPolygonCoords","cc","coords","length","_cleanMultiPolygonCoords","ccc","_isPolygon","coordinates","polygon","_isMultiPolygon","multiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","V3_MINOR_VERSION","DEFAULT_GEO_COLUMN","DEFAULT_MAX_LENGTH_URL","DEFAULT_TILE_RESOLUTION","DEFAULT_AGGREGATION_RES_LEVEL_H3","DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN","joinPath","slice","call","arguments","part","endsWith","join","buildV3Path","apiBaseUrl","version","endpoint","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","CartoAPIError","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","replace","s","toUpperCase","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","v","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","Promise","resolve","get","url","createURLWithParameters","DEFAULT_HEADERS","fetchPromise","fetch","method","body","JSON","stringify","jsonPromise","then","_response","json","ok","catch","delete","set","e","reject","Accept","DEFAULT_REQUEST_CACHE","Map","cacheControl","parameterEntries","sort","a","b","headerEntries","_ref5","baseUrlString","URL","searchParams","toString","param","baseSource","options","urlParameters","accessToken","optionalOptions","mergedOptions","SOURCE_DEFAULTS","clientId","format","Authorization","connection","mapInstantiation","_exit","_temp2","_result","dataUrl","parseInt","_temp","boundaryQuerySource","columns","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","DEFAULT_TILE_SIZE","QUADBIN_ZOOM_MAX_OFFSET","getSpatialFiltersResolution","viewState","dataResolution","Number","MAX_VALUE","aggregationResLevel","spatialDataType","aggregationResLevelOffset","Math","max","floor","currentZoomInt","ceil","zoom","tileSize","maxResolutionForZoom","maxH3SpatialFiltersResolutions","find","maxSpatialFiltersResolution","min","hexagonResolution","_getHexagonResolution","quadsResolution","BIAS","zoomOffset","log2","hexagonScaleFactor","latitudeScaleFactor","log","cos","PI","latitude","WidgetSource","props","defaultProps","_getModelSource","apiVersion","filtersLogicalOperator","spatialDataColumn","_getSpatialFiltersResolution","referenceViewState","V3","makeCall","opts","dealWithApiError","data","isPost","_catch","signal","abortController","otherOptions","_fetch","_response$json","column_name","msg","hint","AVAILABLE_MODELS","REQUEST_GET_MAX_URL_LENGTH","executeModel","model","params","spatialFiltersMode","spatialFiltersResolution","queryParams","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","String","WidgetRemoteSource","getCategories","_this","filterOwner","spatialIndexReferenceViewState","operation","operationColumn","getModelSource","res","rows","getFeatures","_this2","dataType","featureIds","z","limit","tileResolution","getFormula","_this3","operationExp","getHistogram","_this4","ticks","fill","forEach","tick","getRange","_this5","getScatter","_this6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","y","getTable","_this7","sortBy","sortDirection","offset","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_this8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","sqlQuery","makeIntervalComplete","intervals","val","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","filterFunctions","IN","filterIn","BETWEEN","filterBetween","TIME","filterTime","CLOSED_OPEN","filterClosedOpen","STRING_SEARCH","filterStringSearch","filterValues","featureValue","checkRange","range","lowerBound","upperBound","some","featureValueAsTimestamp","Date","getTime","isFinite","normalizedFeatureValue","normalize","stringRegExp","useRegExp","filterValue","escapeRegExp","mustStart","mustEnd","regex","RegExp","caseSensitive","match","specialCharRegExp","normalizeRegExp","normalizedData","keepSpecialCharacters","LOGICAL_OPERATOR_METHODS","and","or","passesFilter","columnFilters","columnFilterTypes","every","filterFunction","buildFeatureFilter","f","properties","featurePassesFilter","applyFilters","features","buildBinaryFeatureFilter","featureIdIdx","binaryData","passesFilterUsingBinary","getValueFromNumericProps","numericProps","getValueFromProperties","propertyIdx","GET_VALUE_BY_BINARY_PROP","getBinaryPropertyByFilterValues","flat","getFeatureValue","binaryProp","getFeatureValueFn","filterFn","geojsonFeatures","geojson","uniqueIdProperty","uniqueIdx","uniqueId","intersects","from","DEFAULT_CONFIG","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","_cartographicRadians","globalThis","mathgl","config","ArrayBuffer","isView","DataView","lerp","t","ai","i","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","TILE_SIZE","lngLatToWorld","lngLat","lng","lat","lambda2","phi2","tan","worldToLngLat","xy","atan","exp","TRANSFORM_FN","Point","transformPoint","MultiPoint","transformMultiPoint","LineString","transformLineString","MultiLineString","transformMultiLineString","Polygon","transformPolygon","MultiPolygon","transformMultiPolygon","transformToTileCoords","bbox","west","south","east","north","nw","projectFlat","se","projectedBbox","transformFn","pointX","pointY","inverseLerp","getPoints","g","multiPoint","line","multiLineString","lineString","polygonRing","xyz","transformTileCoordsToWGS84","FEATURE_GEOM_PROPERTY","tileFeaturesGeometries","tiles","tileFormat","tile","isVisible","bboxToGeom","tileIsFullyVisible","booleanWithin","spatialFilterFeature","clippedGeometryToIntersect","intersect","transformedGeometryToIntersect","MVT","createIndicesForPoints","points","calculateFeatures","geometryIntersection","lines","polygons","processTileFeatureProperties","startIndex","endIndex","storeGeometry","tileProps","getPropertiesFromTile","uniquePropertyValue","getUniquePropertyValue","positions","ringCoordinates","getRingCoordinatesFor","getFeatureByType","parseProperties","addIntersectedFeaturesInTile","indices","getIndices","pointIndices","pathIndices","primitivePolygonIndices","getFeatureId","featureId","fields","id","assign","getValueFromTileProps","artificialId","size","propertyName","j","push","subarray","addAllFeaturesInTile","lastFeatureId","PointIndicesArray","tileFeaturesSpatialIndex","spatialIndex","getSpatialIndex","resolution","getResolution","spatialIndexIDName","cells","getCellsCoverGeometry","cellsSet","d","QUADBIN","quadbinGetResolution","H3","h3GetResolution","bboxWest","bboxEast","geometryToCells","polygonToCells","concat","tileFeaturesRaster","bandMetadataByName","band","rasterMetadata","bands","isRasterTileVisible","index","q","tileBlockSize","blockSize","cellResolution","BigInt","spatialFilterCells","parent","children","cellToChildrenSorted","cellData","cellDataExists","nodata","isRasterTile","hasOwnProperty","_cellToChildren","cellA","cellB","tileA","cellToTile","tileB","tileFeatures","aggregationFunctions","count","applyAggregationFunction","sum","avg","aggregate","isPotentiallyValidNumber","aggregationFn","trim","aggFn","normalizedKeys","normalizeKeys","elements","filterFalsyElements","Infinity","thenBy_module","identity","ignoreCase","makeCompareFunction","opt","direction","prop","v1","uf","preprocess","cmp","v2","descTokens","desc","tb","func","firstBy","thenBy","applySorting","sortByDirection","sortByColumnType","isValidSortBy","sortFn","createSortFn","firstSortOption","othersSortOptions","normalizeSortByOptions","sortOptions","numberFormat","sortByEl","groupValuesByColumn","valuesColumns","keysColumn","groups","accumulator","item","group","aggregatedValue","isValid","targetOperation","getUTCMonday","date","dateCp","day","getUTCDay","diff","getUTCDate","setUTCDate","UTC","getUTCFullYear","getUTCMonth","GROUP_KEY_FN_MAPPING","year","month","week","hour","getUTCHours","minute","getUTCMinutes","second","getUTCSeconds","groupValuesByDateColumn","groupType","groupKeyFn","formattedValue","groupKey","isNaN","groupedValues","histogram","binsContainer","arr","bin","start","end","binContainer","transformedBins","scatterPlot","xAxisColumns","yAxisColumns","xValue","xIsValid","yValue","yIsValid","WidgetTilesetSource","_tiles","_features","tableName","loadTiles","extractTileFeatures","loadGeoJSON","assertColumn","filteredFeatures","_getFilteredFeatures","normalizeColumns","_ref6","searchFilterColumn","searchFilterText","row","srcRow","dstRow","_ref7","_ref8","featureKeys","invalidColumns","WidgetRasterSource","WidgetTableSource","h3QuerySource","aggregationExp","widgetSource","h3TableSource","getTileFormat","tilejson","tileParams","BINARY","h3TilesetSource","rasterSource","raster_metadata","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query"],"mappings":"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","x_google_ignoreList":[22,23,24,32]}
1
+ {"version":3,"file":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils/makeIntervalComplete.ts","../src/filters/FilterTypes.ts","../src/filters/Filter.ts","../src/filters/geosjonFeatures.ts","../node_modules/@math.gl/core/dist/lib/common.js","../node_modules/@math.gl/web-mercator/dist/assert.js","../node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js","../src/utils/transformToTileCoords.ts","../src/utils/transformTileCoordsToWGS84.ts","../src/filters/tileFeaturesGeometries.ts","../src/filters/tileFeaturesSpatialIndex.ts","../src/constants-internal.ts","../src/filters/tileFeaturesRaster.ts","../src/utils.ts","../src/filters/tileFeatures.ts","../src/deck/get-data-filter-extension-props.ts","../src/filters.ts","../src/geo.ts","../src/api/endpoints.ts","../src/api/carto-api-error.ts","../src/api/request-with-parameters.ts","../src/sources/base-source.ts","../src/sources/boundary-query-source.ts","../src/sources/boundary-table-source.ts","../src/spatial-index.ts","../src/widget-sources/widget-source.ts","../src/models/common.ts","../src/models/model.ts","../src/widget-sources/widget-remote-source.ts","../src/widget-sources/widget-query-source.ts","../src/operations/aggregation.ts","../node_modules/thenby/thenBy.module.js","../src/operations/applySorting.ts","../src/operations/groupBy.ts","../src/utils/dateUtils.ts","../src/operations/groupByDate.ts","../src/operations/histogram.ts","../src/operations/scatterPlot.ts","../src/widget-sources/widget-tileset-source.ts","../src/widget-sources/widget-raster-source.ts","../src/widget-sources/widget-table-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.ts","../src/utils/getTileFormat.ts","../src/sources/h3-tileset-source.ts","../src/sources/raster-source.ts","../src/sources/quadbin-query-source.ts","../src/sources/quadbin-table-source.ts","../src/sources/quadbin-tileset-source.ts","../src/sources/vector-query-source.ts","../src/sources/vector-table-source.ts","../src/sources/vector-tileset-source.ts","../src/api/query.ts"],"sourcesContent":["/**\n * @internal\n * @privateRemarks Source: @carto/react-core, @carto/constants, @deck.gl/carto\n */\nlet client = 'deck-gl-carto';\n\n/**\n * Returns current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function getClient() {\n return client;\n}\n\n/**\n * Sets current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function setClient(c: string) {\n client = c;\n}\n","/**\n * Defines a comparator used when matching a column's values against given filter values.\n *\n * Example:\n *\n * ```javascript\n * import { FilterType } from '@carto/api-client';\n * const filters = {\n * column_name: { [FilterType.IN]: { values: ['a', 'b', 'c'] } }\n * };\n * ```\n *\n * @privateRemarks Source: @carto/react-api, @deck.gl/carto\n */\nexport enum FilterType {\n IN = 'in',\n /** [a, b] both are included. */\n BETWEEN = 'between',\n /** [a, b) a is included, b is not. */\n CLOSED_OPEN = 'closed_open',\n TIME = 'time',\n STRING_SEARCH = 'stringSearch',\n}\n\n/** @privateRemarks Source: @carto/constants */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum TileFormat {\n MVT = 'mvt',\n JSON = 'json',\n GEOJSON = 'geojson',\n BINARY = 'binary',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum SpatialIndex {\n H3 = 'h3',\n S2 = 's2',\n QUADBIN = 'quadbin',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum Provider {\n BIGQUERY = 'bigquery',\n REDSHIFT = 'redshift',\n POSTGRES = 'postgres',\n SNOWFLAKE = 'snowflake',\n DATABRICKS = 'databricks',\n DATABRICKS_REST = 'databricksRest',\n}\n","import {FilterInterval, FilterIntervalComplete} from '../types.js';\n\nexport function makeIntervalComplete(\n intervals: FilterInterval[]\n): FilterIntervalComplete[] {\n return intervals.map((val) => {\n if (val[0] === undefined || val[0] === null) {\n return [Number.MIN_SAFE_INTEGER, val[1]];\n }\n\n if (val[1] === undefined || val[1] === null) {\n return [val[0], Number.MAX_SAFE_INTEGER];\n }\n\n return val;\n }) as FilterIntervalComplete[];\n}\n","import {FilterType} from '../constants.js';\nimport {FilterInterval, StringSearchOptions} from '../types.js';\nimport {makeIntervalComplete} from '../utils/makeIntervalComplete.js';\n\nexport type FilterFunction = (\n filterValues: unknown[],\n featureValue: unknown,\n params?: Record<string, unknown>\n) => boolean;\n\nexport const filterFunctions: Record<FilterType, FilterFunction> = {\n [FilterType.IN]: filterIn,\n [FilterType.BETWEEN]: filterBetween,\n [FilterType.TIME]: filterTime,\n [FilterType.CLOSED_OPEN]: filterClosedOpen,\n [FilterType.STRING_SEARCH]: filterStringSearch,\n};\n\nfunction filterIn(filterValues: unknown[], featureValue: unknown): boolean {\n return filterValues.includes(featureValue);\n}\n\n// FilterTypes.BETWEEN\nfunction filterBetween(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) <= upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as FilterInterval[]).some(\n checkRange\n );\n}\n\nfunction filterTime(filterValues: unknown[], featureValue: unknown) {\n const featureValueAsTimestamp = new Date(featureValue as number).getTime();\n if (isFinite(featureValueAsTimestamp)) {\n return filterBetween(filterValues, featureValueAsTimestamp);\n } else {\n throw new Error(`Column used to filter by time isn't well formatted.`);\n }\n}\n\n// FilterTypes.CLOSED_OPEN\nfunction filterClosedOpen(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) < upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as [number, number][]).some(\n checkRange\n );\n}\n\n// FilterTypes.STRING_SEARCH\nfunction filterStringSearch(\n filterValues: unknown[],\n featureValue: unknown,\n params: StringSearchOptions = {}\n): boolean {\n const normalizedFeatureValue = normalize(featureValue, params);\n const stringRegExp = params.useRegExp\n ? filterValues\n : filterValues.map((filterValue) => {\n let stringRegExp = escapeRegExp(normalize(filterValue, params));\n\n if (params.mustStart) stringRegExp = `^${stringRegExp}`;\n if (params.mustEnd) stringRegExp = `${stringRegExp}$`;\n\n return stringRegExp;\n });\n\n const regex = new RegExp(\n stringRegExp.join('|'),\n params.caseSensitive ? 'g' : 'gi'\n );\n return !!normalizedFeatureValue.match(regex);\n}\n\n// Aux\nconst specialCharRegExp = /[.*+?^${}()|[\\]\\\\]/g;\nconst normalizeRegExp = /\\p{Diacritic}/gu;\n\nfunction escapeRegExp(value: string) {\n return value.replace(specialCharRegExp, '\\\\$&');\n}\n\nfunction normalize(data: unknown, params: StringSearchOptions) {\n let normalizedData = String(data);\n if (!params.keepSpecialCharacters)\n normalizedData = normalizedData\n .normalize('NFD')\n .replace(normalizeRegExp, '');\n\n return normalizedData;\n}\n","import {filterFunctions} from './FilterTypes.js';\nimport {Filter, FilterLogicalOperator, Filters} from '../types.js';\nimport {Feature} from 'geojson';\nimport {FilterType} from '../constants.js';\nimport {FeatureData} from '../types-internal.js';\nimport {BinaryFeature} from '@loaders.gl/schema';\n\nconst LOGICAL_OPERATOR_METHODS: Record<\n FilterLogicalOperator,\n 'every' | 'some'\n> = {\n and: 'every',\n or: 'some',\n};\n\nfunction passesFilter(\n columns: string[],\n filters: Filters,\n feature: FeatureData,\n filtersLogicalOperator: FilterLogicalOperator\n): boolean {\n const method = LOGICAL_OPERATOR_METHODS[filtersLogicalOperator];\n return columns[method]((column) => {\n const columnFilters = filters[column];\n const columnFilterTypes = Object.keys(columnFilters) as FilterType[];\n\n if (!feature || feature[column] === null || feature[column] === undefined) {\n return false;\n }\n\n return columnFilterTypes.every((filter) => {\n const filterFunction = filterFunctions[filter];\n\n if (!filterFunction) {\n throw new Error(`\"${filter}\" filter is not implemented.`);\n }\n\n return filterFunction(\n columnFilters[filter]!.values,\n feature[column],\n (columnFilters[filter] as Filter[FilterType.STRING_SEARCH])!.params\n );\n });\n });\n}\n\n/**\n * @internal\n * @privateRemarks Exported for use in @deck.gl/carto's getDataFilterExtensionProps.\n */\nexport function _buildFeatureFilter({\n filters = {},\n type = 'boolean',\n filtersLogicalOperator = 'and',\n}: {\n filters?: Filters;\n type?: 'number' | 'boolean';\n filtersLogicalOperator?: FilterLogicalOperator;\n}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => (type === 'number' ? 1 : true);\n }\n\n return (feature: Feature | FeatureData) => {\n const f = feature.properties || feature;\n const featurePassesFilter = passesFilter(\n columns,\n filters,\n f as FeatureData,\n filtersLogicalOperator\n );\n\n return type === 'number'\n ? Number(featurePassesFilter)\n : featurePassesFilter;\n };\n}\n\n/**\n * Apply certain filters to a collection of features.\n * @internal\n */\nexport function applyFilters(\n features: FeatureData[],\n filters: Filters,\n filtersLogicalOperator: FilterLogicalOperator\n) {\n return Object.keys(filters).length\n ? features.filter(_buildFeatureFilter({filters, filtersLogicalOperator}))\n : features;\n}\n\n/**\n * Binary.\n * @internal\n */\nexport function buildBinaryFeatureFilter({filters = {}}: {filters: Filters}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => 1;\n }\n\n return (featureIdIdx: number, binaryData: BinaryFeature) =>\n passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData);\n}\n\nfunction getValueFromNumericProps(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n return binaryData.numericProps?.[column]?.value[featureIdIdx];\n}\n\nfunction getValueFromProperties(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n const propertyIdx = binaryData.featureIds.value[featureIdIdx];\n return (binaryData.properties[propertyIdx] as Record<string, unknown>)?.[\n column\n ];\n}\n\nconst GET_VALUE_BY_BINARY_PROP = {\n properties: getValueFromProperties,\n numericProps: getValueFromNumericProps,\n};\n\nfunction getBinaryPropertyByFilterValues(filterValues: unknown[]) {\n return typeof filterValues.flat()[0] === 'string'\n ? 'properties'\n : 'numericProps';\n}\n\nfunction getFeatureValue(\n featureIdIdx: number,\n binaryData: any,\n filter: {type: FilterType; column: string; values: unknown[]}\n) {\n const {column, values} = filter;\n const binaryProp = getBinaryPropertyByFilterValues(values);\n const getFeatureValueFn = GET_VALUE_BY_BINARY_PROP[binaryProp];\n return getFeatureValueFn(featureIdIdx, binaryData, {column});\n}\n\nfunction passesFilterUsingBinary(\n columns: string[],\n filters: Filters,\n featureIdIdx: number,\n binaryData: BinaryFeature\n) {\n return columns.every((column) => {\n const columnFilters = filters[column];\n\n return Object.entries(columnFilters).every(([type, {values}]) => {\n const filterFn = filterFunctions[type as FilterType];\n if (!filterFn) {\n throw new Error(`\"${type}\" filter is not implemented.`);\n }\n\n if (!values) return 0;\n\n const featureValue = getFeatureValue(featureIdIdx, binaryData, {\n type: type as FilterType,\n column,\n values,\n });\n\n if (featureValue === undefined || featureValue === null) return 0;\n\n return filterFn(values, featureValue);\n });\n });\n}\n","import intersects from '@turf/boolean-intersects';\nimport {FeatureCollection} from 'geojson';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialFilter} from '../types.js';\n\nexport function geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n}: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n}): FeatureData[] {\n let uniqueIdx = 0;\n const map = new Map();\n\n if (!spatialFilter) {\n return [];\n }\n\n for (const feature of geojson.features) {\n const uniqueId = uniqueIdProperty\n ? feature.properties![uniqueIdProperty]\n : ++uniqueIdx;\n if (!map.has(uniqueId) && intersects(spatialFilter, feature)) {\n map.set(uniqueId, feature.properties);\n }\n }\n\n return Array.from(map.values());\n}\n","// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\nconst DEFAULT_CONFIG = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true,\n _cartographicRadians: false\n};\n// Configuration is truly global as of v3.6 to ensure single config even if multiple copies of math.gl\n// Multiple copies of config can be quite tricky to debug...\nglobalThis.mathgl = globalThis.mathgl || { config: { ...DEFAULT_CONFIG } };\nexport const config = globalThis.mathgl.config;\nexport function configure(options) {\n // Only copy existing keys\n Object.assign(config, options);\n return config;\n}\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(value, { precision = config.precision } = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n * @note isTypedArray and isNumericArray are often more useful in TypeScript\n */\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\nexport function clone(array) {\n return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n return radians(degrees);\n}\nexport function toDegrees(radians) {\n return degrees(radians);\n}\nexport function radians(degrees, result) {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians, result) {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians, result) {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians, result) {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians, result) {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians, result) {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians, result) {\n return map(radians, (angle) => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n/* eslint-disable */\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n }\n finally {\n config.EPSILON = oldEpsilon;\n }\n}\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n/* eslint-enable */\nexport function withEpsilon(epsilon, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n }\n finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n// HELPERS\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n // @ts-expect-error We check for math.gl class methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return array.clone ? array.clone() : new Array(array.length);\n}\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n const array = value;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n const val = typeof value === 'number' ? value : value[i];\n result[i] = func(val, i, result);\n }\n return result;\n }\n return func(value);\n}\n//# sourceMappingURL=common.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\nimport { createMat4, transformVector, clamp, log2 } from \"./math-utils.js\";\nimport { mat4, vec2, vec3 } from '@math.gl/core';\nimport { assert } from \"./assert.js\";\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options) {\n const { latitude } = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options) {\n const { latitude, longitude, highPrecision = false } = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n // eslint-disable-next-line no-shadow\n const { unitsPerMeter, unitsPerMeter2 } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options) {\n const { \n // Viewport props\n height, pitch, bearing, altitude, \n // Pre-calculated parameters\n scale, center } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n return vm;\n}\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options) {\n const { width, height, altitude, pitch = 0, offset, center, scale, nearZMultiplier = 1, farZMultiplier = 1 } = options;\n let { fovy = altitudeToFovy(DEFAULT_ALTITUDE) } = options;\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance = (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options) {\n const { fov, aspect, near, far } = getProjectionParameters(options);\n const projectionMatrix = mat4.perspective([], fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n return projectionMatrix;\n}\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import {lngLatToWorld} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform WGS84 coordinates to tile coords.\n * It's the inverse of deck.gl coordinate-transform (https://github.com/visgl/deck.gl/blob/master/modules/geo-layers/src/mvt-layer/coordinate-transform.js)\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformToTileCoords<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = projectFlat([west, north]);\n const se = projectFlat([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = inverseLerp(nw[0], se[0], pointX);\n const y = inverseLerp(nw[1], se[1], pointY);\n\n return [x, y];\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(projectFlat(g), bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n\nfunction projectFlat(xyz: Position): Position {\n return lngLatToWorld(xyz);\n}\n\nfunction inverseLerp(a: number, b: number, x: number): number {\n return (x - a) / (b - a);\n}\n","import {lerp} from '@math.gl/core';\nimport {lngLatToWorld, worldToLngLat} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform tile coords to WGS84 coordinates.\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformTileCoordsToWGS84<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = lngLatToWorld([west, north]);\n const se = lngLatToWorld([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return worldToLngLat([x, y]);\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(g, bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n","import bboxPolygon from '@turf/bbox-polygon';\nimport intersects from '@turf/boolean-intersects';\nimport booleanWithin from '@turf/boolean-within';\nimport intersect from '@turf/intersect';\nimport {transformToTileCoords} from '../utils/transformToTileCoords.js';\nimport {transformTileCoordsToWGS84} from '../utils/transformTileCoordsToWGS84.js';\nimport {TileFormat} from '../constants.js';\nimport {\n BBox,\n Feature,\n Geometry,\n LineString,\n MultiPolygon,\n Point,\n Polygon,\n Position,\n} from 'geojson';\nimport {SpatialFilter, Tile} from '../types.js';\nimport {TileFeatureExtractOptions} from './tileFeatures.js';\nimport {featureCollection} from '@turf/helpers';\nimport {FeatureData} from '../types-internal.js';\nimport {\n BinaryAttribute,\n BinaryFeature,\n BinaryGeometryType,\n BinaryPointFeature,\n TypedArrayConstructor,\n} from '@loaders.gl/schema';\n\nexport const FEATURE_GEOM_PROPERTY = '__geomValue';\n\ntype TileMap = Map<unknown, unknown>;\n\ntype TileDataInternal = {\n uniqueId: string | number | undefined;\n properties: any;\n numericProps: Record<string, number>;\n};\n\nexport function tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n}: {\n tiles: Tile[];\n tileFormat?: TileFormat;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: {storeGeometry?: boolean};\n}): FeatureData[] {\n const map = new Map();\n\n for (const tile of tiles) {\n // Discard if it's not a visible tile (only check false value, not undefined)\n // or tile has not data\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n const bbox = [\n tile.bbox.west,\n tile.bbox.south,\n tile.bbox.east,\n tile.bbox.north,\n ] as BBox;\n const bboxToGeom = bboxPolygon(bbox);\n const tileIsFullyVisible = booleanWithin(bboxToGeom, spatialFilter);\n\n // Clip the geometry to intersect with the tile\n const spatialFilterFeature: Feature<Polygon | MultiPolygon> = {\n type: 'Feature',\n geometry: spatialFilter,\n properties: {},\n };\n const clippedGeometryToIntersect = intersect(\n featureCollection([bboxToGeom, spatialFilterFeature])\n );\n\n if (!clippedGeometryToIntersect) {\n continue;\n }\n\n // We assume that MVT tileFormat uses local coordinates so we transform the geometry to intersect to tile coordinates [0..1],\n // while in the case of 'geojson' or binary, the geometries are already in WGS84\n const transformedGeometryToIntersect =\n tileFormat === TileFormat.MVT\n ? transformToTileCoords(clippedGeometryToIntersect.geometry, bbox)\n : clippedGeometryToIntersect.geometry;\n\n createIndicesForPoints(tile.data.points!);\n\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.points!,\n type: 'Point',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.lines!,\n type: 'LineString',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.polygons!,\n type: 'Polygon',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n return Array.from(map.values());\n}\n\nfunction processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n}: {\n map: TileMap;\n data: BinaryFeature;\n startIndex: number;\n endIndex: number;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n storeGeometry: boolean;\n geometryIntersection?: Geometry;\n}) {\n const tileProps = getPropertiesFromTile(data, startIndex);\n const uniquePropertyValue = getUniquePropertyValue(\n tileProps,\n uniqueIdProperty,\n map\n );\n\n if (!uniquePropertyValue || map.has(uniquePropertyValue)) {\n return;\n }\n let geometry: Geometry | null = null;\n\n // Only calculate geometry if necessary\n if (storeGeometry || geometryIntersection) {\n const {positions} = data;\n const ringCoordinates = getRingCoordinatesFor(\n startIndex,\n endIndex,\n positions\n );\n geometry = getFeatureByType(ringCoordinates, type);\n }\n\n // If intersection is required, check before proceeding\n if (\n geometry &&\n geometryIntersection &&\n !intersects(geometry, geometryIntersection)\n ) {\n return;\n }\n\n const properties = parseProperties(tileProps);\n\n // Only save geometry if necessary\n if (storeGeometry && geometry) {\n properties[FEATURE_GEOM_PROPERTY] =\n tileFormat === TileFormat.MVT\n ? transformTileCoordsToWGS84(geometry, bbox)\n : geometry;\n }\n map.set(uniquePropertyValue, properties);\n}\n\nfunction addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n geometryIntersection: Geometry;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n });\n }\n}\n\nfunction getIndices(data: BinaryFeature) {\n let indices: BinaryAttribute;\n switch (data.type) {\n case 'Point':\n // @ts-expect-error Missing or changed types?\n indices = data.pointIndices;\n break;\n case 'LineString':\n indices = data.pathIndices;\n break;\n case 'Polygon':\n indices = data.primitivePolygonIndices;\n break;\n default:\n throw new Error(`Unexpected type, \"${(data as BinaryFeature).type}\"`);\n }\n return indices.value;\n}\n\nfunction getFeatureId(data: BinaryFeature, startIndex: number) {\n return data.featureIds.value[startIndex];\n}\n\nfunction getPropertiesFromTile(data: BinaryFeature, startIndex: number) {\n const featureId = getFeatureId(data, startIndex);\n const {properties, numericProps, fields} = data;\n const result: TileDataInternal = {\n uniqueId: (fields?.[featureId] as {id: string | number})?.id,\n properties: properties[featureId],\n numericProps: {},\n };\n\n for (const key in numericProps) {\n result.numericProps[key] = numericProps[key].value[startIndex];\n }\n\n return result;\n}\n\nfunction parseProperties(tileProps: TileDataInternal) {\n const {properties, numericProps} = tileProps;\n return Object.assign({}, properties, numericProps);\n}\n\nfunction getUniquePropertyValue(\n tileProps: TileDataInternal,\n uniqueIdProperty: string | undefined,\n map: TileMap\n) {\n if (uniqueIdProperty) {\n return getValueFromTileProps(tileProps, uniqueIdProperty);\n }\n\n if (tileProps.uniqueId) {\n return tileProps.uniqueId;\n }\n\n const artificialId = map.size + 1; // a counter, assumed as a valid new id\n return (\n getValueFromTileProps(tileProps, 'cartodb_id') ||\n getValueFromTileProps(tileProps, 'geoid') ||\n artificialId\n );\n}\n\nfunction getValueFromTileProps(\n tileProps: TileDataInternal,\n propertyName: string\n) {\n const {properties, numericProps} = tileProps;\n return numericProps[propertyName] || properties[propertyName];\n}\n\nfunction getFeatureByType(\n coordinates: Position[],\n type: BinaryGeometryType\n): Polygon | LineString | Point {\n switch (type) {\n case 'Polygon':\n return {type: 'Polygon', coordinates: [coordinates]};\n case 'LineString':\n return {type: 'LineString', coordinates};\n case 'Point':\n return {type: 'Point', coordinates: coordinates[0]};\n default:\n throw new Error('Invalid geometry type');\n }\n}\n\nfunction getRingCoordinatesFor(\n startIndex: number,\n endIndex: number,\n positions: BinaryAttribute\n) {\n const ringCoordinates = [];\n\n for (let j = startIndex; j < endIndex; j++) {\n ringCoordinates.push(\n Array.from(\n positions.value.subarray(j * positions.size, (j + 1) * positions.size)\n )\n );\n }\n\n return ringCoordinates;\n}\n\nfunction calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n tileIsFullyVisible: boolean;\n geometryIntersection: SpatialFilter;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n if (!data?.properties.length) {\n return;\n }\n\n if (tileIsFullyVisible) {\n addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n } else {\n addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n}\n\nfunction addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n });\n }\n}\n\nfunction createIndicesForPoints(data: BinaryPointFeature) {\n const featureIds = data.featureIds.value;\n const lastFeatureId = featureIds[featureIds.length - 1];\n const PointIndicesArray = featureIds.constructor as TypedArrayConstructor;\n\n const pointIndices: BinaryAttribute = {\n value: new PointIndicesArray(featureIds.length + 1),\n size: 1,\n };\n pointIndices.value.set(featureIds);\n pointIndices.value.set([lastFeatureId + 1], featureIds.length);\n\n // @ts-expect-error Missing or changed types?\n data.pointIndices = pointIndices;\n}\n","import {SpatialIndex} from '../constants.js';\nimport {getResolution as quadbinGetResolution, geometryToCells} from 'quadbin';\nimport bboxClip from '@turf/bbox-clip';\nimport {SpatialFilter, SpatialIndexTile} from '../types.js';\nimport {BBox, Feature} from 'geojson';\nimport {getResolution as h3GetResolution, polygonToCells} from 'h3-js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\nexport type TileFeaturesSpatialIndexOptions = {\n tiles: SpatialIndexTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n};\n\nexport function tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n}: TileFeaturesSpatialIndexOptions): FeatureData[] {\n const map = new Map();\n const spatialIndex = getSpatialIndex(spatialDataType);\n const resolution = getResolution(tiles, spatialIndex);\n const spatialIndexIDName = spatialDataColumn\n ? spatialDataColumn\n : spatialIndex;\n\n if (!resolution) {\n return [];\n }\n const cells = getCellsCoverGeometry(spatialFilter, spatialIndex, resolution);\n\n if (!cells?.length) {\n return [];\n }\n\n // We transform cells to Set to improve the performace\n const cellsSet = new Set<bigint | string>(cells);\n\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n tile.data.forEach((d: Feature) => {\n if (cellsSet.has(d.id as bigint | string)) {\n map.set(d.id, {...d.properties, [spatialIndexIDName]: d.id});\n }\n });\n }\n return Array.from(map.values());\n}\n\nfunction getResolution(\n tiles: SpatialIndexTile[],\n spatialIndex: SpatialIndex\n): number | undefined {\n const data = tiles.find((tile) => tile.data?.length)?.data;\n\n if (!data) {\n return;\n }\n\n if (spatialIndex === SpatialIndex.QUADBIN) {\n return Number(quadbinGetResolution(data[0].id));\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n return h3GetResolution(data[0].id);\n }\n}\n\nconst bboxWest: BBox = [-180, -90, 0, 90];\nconst bboxEast: BBox = [0, -90, 180, 90];\n\nfunction getCellsCoverGeometry(\n geometry: SpatialFilter,\n spatialIndex: SpatialIndex,\n resolution: number\n) {\n if (spatialIndex === SpatialIndex.QUADBIN) {\n // @ts-expect-error TODO: Probably ought to be stricter about number vs. bigint types in this file.\n return geometryToCells(geometry, resolution);\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n // The current H3 polyfill algorithm can't deal with polygon segments of greater than 180 degrees longitude\n // so we clip the geometry to be sure that none of them is greater than 180 degrees\n // https://github.com/uber/h3-js/issues/24#issuecomment-431893796\n return polygonToCells(\n bboxClip(geometry, bboxWest).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n ).concat(\n polygonToCells(\n bboxClip(geometry, bboxEast).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n )\n );\n }\n}\n\nfunction getSpatialIndex(spatialDataType: SpatialDataType): SpatialIndex {\n switch (spatialDataType) {\n case 'h3':\n return SpatialIndex.H3;\n case 'quadbin':\n return SpatialIndex.QUADBIN;\n default:\n throw new Error('Unexpected spatial data type');\n }\n}\n","/**\n * Current version of @carto/api-client.\n * @internal\n */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\n\n/** @internal */\nexport const V3_MINOR_VERSION = '3.4';\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/**\n * Fastly default limit is 8192; leave some padding.\n * @privateRemarks Source: @deck.gl/carto\n */\nexport const DEFAULT_MAX_LENGTH_URL = 7000;\n\n/** @privateRemarks Source: @deck.gl/carto */\nexport const DEFAULT_TILE_RESOLUTION = 0.5;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\n","import {\n cellToChildren as _cellToChildren,\n cellToTile,\n geometryToCells,\n getResolution,\n} from 'quadbin';\nimport {RasterTile, SpatialFilter, Tile} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\nimport {\n RasterMetadata,\n RasterMetadataBand,\n SpatialDataType,\n} from '../sources/types.js';\n\nexport type TileFeaturesRasterOptions = {\n tiles: RasterTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n rasterMetadata: RasterMetadata;\n};\n\nexport function tileFeaturesRaster({\n tiles,\n ...options\n}: TileFeaturesRasterOptions): FeatureData[] {\n // Cache band metadata for faster lookup while iterating over pixels.\n const bandMetadataByName: Record<string, RasterMetadataBand> = {};\n for (const band of options.rasterMetadata.bands) {\n bandMetadataByName[band.name] = band;\n }\n\n // Omit empty and invisible tiles for simpler processing and types.\n tiles = tiles.filter(isRasterTileVisible);\n if (tiles.length === 0) return [];\n\n // Raster tiles, and all pixels, are quadbin cells. Resolution of a pixel is\n // the resolution of the tile, plus the number of subdivisions. Block size\n // must be square, N x N, where N is a power of two.\n const tileResolution = getResolution(tiles[0].index.q);\n const tileBlockSize = tiles[0].data!.blockSize;\n const cellResolution = tileResolution + BigInt(Math.log2(tileBlockSize));\n\n // Compute covering cells for the spatial filter, at same resolution as the\n // raster pixels, to be used as a mask.\n const spatialFilterCells = new Set(\n geometryToCells(options.spatialFilter, cellResolution)\n );\n\n const data = new Map<bigint, FeatureData>();\n\n for (const tile of tiles as Required<RasterTile>[]) {\n const parent = tile.index.q;\n\n const children = cellToChildrenSorted(parent, cellResolution);\n\n // For each pixel/cell within the spatial filter, create a FeatureData.\n // Order is row-major, starting from NW and ending at SE.\n for (let i = 0; i < children.length; i++) {\n if (!spatialFilterCells.has(children[i])) continue;\n\n const cellData: FeatureData = {};\n let cellDataExists = false;\n\n for (const band in tile.data.cells.numericProps) {\n const value = tile.data.cells.numericProps[band].value[i];\n // TODO(cleanup): nodata should be a number, not a string.\n if (Number(bandMetadataByName[band].nodata) !== value) {\n cellData[band] = tile.data.cells.numericProps[band].value[i];\n cellDataExists = true;\n }\n }\n\n if (cellDataExists) {\n data.set(children[i], cellData);\n }\n }\n }\n\n return Array.from(data.values());\n}\n\n/**\n * Detects whether a given {@link Tile} is a {@link RasterTile}.\n * @privateRemarks Method of detection is arbitrary, and may be changed.\n */\nexport function isRasterTile(tile: Tile): tile is RasterTile {\n return !!(tile.data as Record<string, unknown>)?.cells;\n}\n\nfunction isRasterTileVisible(tile: RasterTile): tile is Required<RasterTile> {\n return !!(tile.isVisible && tile.data?.cells?.numericProps);\n}\n\n/**\n * For the raster format, children are sorted in row-major order, starting from\n * NW and ending at SE. Order returned by quadbin's cellToChildren() is not\n * defined (and not related to the raster format), so sort explicitly here.\n */\nfunction cellToChildrenSorted(parent: bigint, resolution: bigint): bigint[] {\n return _cellToChildren(parent, resolution).sort(\n (cellA: bigint, cellB: bigint) => {\n const tileA = cellToTile(cellA);\n const tileB = cellToTile(cellB);\n if (tileA.y !== tileB.y) {\n return tileA.y > tileB.y ? 1 : -1;\n }\n return tileA.x > tileB.x ? 1 : -1;\n }\n );\n}\n","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\n\nconst FILTER_TYPES = new Set(Object.values(FilterType));\nconst isFilterType = (type: string): type is FilterType =>\n FILTER_TYPES.has(type as FilterType);\n\n/**\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function getApplicableFilters(\n owner?: string,\n filters?: Record<string, Filter>\n): Record<string, Filter> {\n if (!filters) return {};\n\n const applicableFilters: Record<string, Filter> = {};\n\n for (const column in filters) {\n for (const type in filters[column]) {\n if (!isFilterType(type)) continue;\n\n const filter = filters[column][type];\n const isApplicable = !owner || !filter?.owner || filter?.owner !== owner;\n if (filter && isApplicable) {\n applicableFilters[column] ||= {};\n (applicableFilters[column][type] as typeof filter) = filter;\n }\n }\n }\n\n return applicableFilters;\n}\n\ntype Row<T> = Record<string, T> | Record<string, T>[] | T[] | T;\n\n/**\n * Due to each data warehouse having its own behavior with columns,\n * we need to normalize them and transform every key to lowercase.\n *\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function normalizeObjectKeys<T, R extends Row<T>>(el: R): R {\n if (Array.isArray(el)) {\n return el.map((value) => normalizeObjectKeys(value)) as R;\n } else if (typeof el !== 'object') {\n return el;\n }\n\n return Object.entries(el as Record<string, T>).reduce(\n (acc, [key, value]) => {\n acc[key.toLowerCase()] =\n typeof value === 'object' && value ? normalizeObjectKeys(value) : value;\n return acc;\n },\n {} as Record<string, T>\n ) as R;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * @privateRemarks Source: @carto/react-core\n * @internal\n */\nexport class InvalidColumnError extends Error {\n protected static readonly NAME = 'InvalidColumnError';\n\n constructor(message: string) {\n super(`${InvalidColumnError.NAME}: ${message}`);\n this.name = InvalidColumnError.NAME;\n }\n\n static is(error: unknown) {\n return (\n error instanceof InvalidColumnError ||\n (error as Error).message?.includes(InvalidColumnError.NAME)\n );\n }\n}\n\nexport function isEmptyObject(object: object): boolean {\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n/** @internal */\nexport const isObject: (x: unknown) => boolean = (x) =>\n x !== null && typeof x === 'object';\n\n/** @internal */\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\n","import {RasterTile, SpatialFilter, SpatialIndexTile, Tile} from '../types.js';\nimport {tileFeaturesGeometries} from './tileFeaturesGeometries.js';\nimport {tileFeaturesSpatialIndex} from './tileFeaturesSpatialIndex.js';\nimport {TileFormat} from '../constants.js';\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {FeatureData} from '../types-internal.js';\nimport {RasterMetadata, SpatialDataType} from '../sources/types.js';\nimport {isRasterTile, tileFeaturesRaster} from './tileFeaturesRaster.js';\nimport {assert} from '../utils.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatures = {\n tiles: Tile[];\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n rasterMetadata?: RasterMetadata;\n options?: TileFeatureExtractOptions;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatureExtractOptions = {\n storeGeometry?: boolean;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function tileFeatures({\n tiles,\n spatialFilter,\n uniqueIdProperty,\n tileFormat,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialDataType,\n rasterMetadata,\n options = {},\n}: TileFeatures): FeatureData[] {\n if (spatialDataType === 'geo') {\n return tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n });\n }\n\n if (tiles.some(isRasterTile)) {\n assert(rasterMetadata, 'Missing raster metadata');\n return tileFeaturesRaster({\n tiles: tiles as RasterTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n rasterMetadata,\n });\n }\n\n return tileFeaturesSpatialIndex({\n tiles: tiles as SpatialIndexTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n });\n}\n","import {Feature} from 'geojson';\nimport {FilterLogicalOperator, Filters} from '../types.js';\nimport {FilterType} from '../constants.js';\nimport {_buildFeatureFilter} from '../filters/index.js';\nimport {FeatureData} from '../types-internal.js';\n\ntype TimeFilter = Filters['string'][FilterType.TIME] & {\n params?: {offsetBy?: number};\n};\n\n/** @experimental Prefer type definition from deck.gl. */\nexport type _DataFilterExtensionProps = {\n filterRange: number[][];\n updateTriggers: Record<string, string>;\n getFilterValue: (feature: Feature | FeatureData) => number[];\n};\n\n/**\n * Creates props for DataFilterExtension, from `@deck.gl/extensions`, given\n * a set of filters.\n *\n * @privateRemarks DataFilterExtension accepts up to 4 values to filter. This\n * implementation uses the 1st for all filters except the time filter, and the\n * 2nd for the time filter.\n */\nexport function getDataFilterExtensionProps(\n filters: Filters,\n filtersLogicalOperator?: FilterLogicalOperator,\n filterSize?: 0 | 1 | 2 | 3 | 4\n): _DataFilterExtensionProps {\n filterSize ??= 4;\n const {filtersWithoutTimeType, timeColumn, timeFilter} =\n getFiltersByType(filters);\n return {\n filterRange: getFilterRange(timeFilter, filterSize),\n updateTriggers: getUpdateTriggers(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter\n ),\n getFilterValue: getFilterValue(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n filterSize,\n filtersLogicalOperator\n ),\n };\n}\n\n/** @internal */\nfunction getFiltersByType(filters: Filters) {\n const filtersWithoutTimeType: Filters = {};\n\n let timeColumn: string | null = null;\n let timeFilter: TimeFilter | null = null;\n\n for (const [column, columnData] of Object.entries(filters)) {\n for (const [type, typeData] of Object.entries(columnData) as [\n FilterType,\n unknown,\n ][]) {\n if (type === FilterType.TIME) {\n timeColumn = column;\n timeFilter = typeData as TimeFilter;\n } else {\n filtersWithoutTimeType[column] = {[type]: typeData};\n }\n }\n }\n\n return {\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n };\n}\n\n/** @internal */\nfunction getFilterRange(\n timeFilter: TimeFilter | null,\n filterSize: number\n): number[][] {\n const result = Array(filterSize).fill([0, 0]);\n // According to getFilterValue all filters are resolved as 0 or 1 in the first position of the array\n // except the time filter value that is resolved with the real value of the feature in the second position of the array\n result[0] = [1, 1];\n if (timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n result[1] = timeFilter.values[0].map((v) => v - offsetBy);\n }\n return result;\n}\n\n/** @internal */\nfunction getUpdateTriggers(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null\n) {\n const result: Record<string, object> = {...filtersWithoutTimeType};\n\n // We don't want to change the layer UpdateTriggers every time that the time filter changes\n // because this filter is changed by the time series widget during its animation\n // so we remove the time filter value from the `updateTriggers`\n if (timeColumn && timeFilter) {\n result[timeColumn] = {\n ...result[timeColumn],\n offsetBy: timeFilter.params?.offsetBy,\n [FilterType.TIME]: {}, // Allows working with other filters, without an impact on performance.\n };\n }\n return {\n getFilterValue: JSON.stringify(result),\n };\n}\n\n/** @internal */\nfunction getFilterValue(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null,\n filterSize: number,\n filtersLogicalOperator?: FilterLogicalOperator\n) {\n const result = Array(filterSize).fill(0);\n const featureFilter = _buildFeatureFilter({\n filters: filtersWithoutTimeType,\n type: 'number',\n filtersLogicalOperator,\n });\n\n // We evaluate all filters except the time filter using _buildFeatureFilter function.\n // For the time filter, we return the value of the feature and we will change the getFilterRange result\n // every time this filter changes\n return (feature: Feature | FeatureData) => {\n result[0] = featureFilter(feature);\n\n if (timeColumn && timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n const f = (feature.properties || feature) as Record<string, unknown>;\n result[1] = (f[timeColumn] as number) - offsetBy;\n }\n return result;\n };\n}\n","import {FilterType} from './constants.js';\nimport {Filter} from './types.js';\nimport {isEmptyObject} from './utils.js';\n\ntype FilterTypeOptions<T extends FilterType> = {\n type: T;\n column: string;\n} & Filter[T];\n\nexport type AddFilterOptions =\n | FilterTypeOptions<FilterType.IN>\n | FilterTypeOptions<FilterType.BETWEEN>\n | FilterTypeOptions<FilterType.CLOSED_OPEN>\n | FilterTypeOptions<FilterType.TIME>\n | FilterTypeOptions<FilterType.STRING_SEARCH>;\n\n/**\n * Adds a {@link Filter} to the filter set. Any previous filters with the same\n * `column` and `type` will be replaced.\n */\nexport function addFilter(\n filters: Record<string, Filter>,\n {column, type, values, owner}: AddFilterOptions\n): Record<string, Filter> {\n if (!filters[column]) {\n filters[column] = {};\n }\n\n const filter = {values, owner} as FilterTypeOptions<typeof type>;\n (filters[column][type] as FilterTypeOptions<typeof type>) = filter;\n\n return filters;\n}\n\nexport type RemoveFilterOptions = {\n column: string;\n owner?: string;\n};\n\n/**\n * Removes one or more {@link Filter filters} from the filter set. If only\n * `column` is specified, then all filters on that column are removed. If both\n * `column` and `owner` are specified, then only filters for that column\n * associated with the owner are removed.\n */\nexport function removeFilter(\n filters: Record<string, Filter>,\n {column, owner}: RemoveFilterOptions\n): Record<string, Filter> {\n const filter = filters[column];\n if (!filter) {\n return filters;\n }\n\n if (owner) {\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n delete filter[type as FilterType];\n }\n }\n }\n\n if (!owner || isEmptyObject(filter)) {\n delete filters[column];\n }\n\n return filters;\n}\n\n/**\n * Clears all {@link Filter filters} from the filter set.\n */\nexport function clearFilters(\n filters: Record<string, Filter>\n): Record<string, Filter> {\n for (const column of Object.keys(filters)) {\n delete filters[column];\n }\n return filters;\n}\n\nexport type HasFilterOptions = {\n column: string;\n owner?: string;\n};\n\nexport function hasFilter(\n filters: Record<string, Filter>,\n {column, owner}: HasFilterOptions\n): boolean {\n const filter = filters[column];\n if (!filter) {\n return false;\n }\n\n if (!owner) {\n return true;\n }\n\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n return true;\n }\n }\n\n return false;\n}\n\nexport type GetFilterOptions<T extends FilterType> = {\n column: string;\n type: T;\n owner?: string;\n};\n\nexport function getFilter<T extends FilterType>(\n filters: Record<string, Filter>,\n {column, type, owner}: GetFilterOptions<T>\n): Filter[T] | null {\n const filter = filters[column];\n if (!filter) {\n return null;\n }\n\n if (!owner || owner === filter[type]?.owner) {\n return filter[type] || null;\n }\n\n return null;\n}\n","import bboxClip from '@turf/bbox-clip';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport union from '@turf/union';\nimport {getType} from '@turf/invariant';\nimport {polygon, multiPolygon, feature, featureCollection} from '@turf/helpers';\nimport type {BBox, Geometry, MultiPolygon, Polygon, Position} from 'geojson';\nimport {SpatialFilter} from './types.js';\n\n/**\n * Returns a {@link SpatialFilter} for a given viewport, typically obtained\n * from deck.gl's `viewport.getBounds()` method ([west, south, east, north]).\n * If the viewport covers the entire world (to some margin of error in Web\n * Mercator space), `undefined` is returned instead.\n *\n * If the viewport extends beyond longitude range [-180, +180], the polygon\n * may be reformatted for compatibility with CARTO APIs.\n */\nexport function createViewportSpatialFilter(\n viewport: BBox\n): SpatialFilter | undefined {\n if (_isGlobalViewport(viewport)) {\n return;\n }\n return createPolygonSpatialFilter(bboxPolygon(viewport).geometry);\n}\n\n/**\n * Returns a {@link SpatialFilter} for a given {@link Polygon} or\n * {@link MultiPolygon}. If the polygon(s) extend outside longitude\n * range [-180, +180], the result may be reformatted for compatibility\n * with CARTO APIs.\n */\nexport function createPolygonSpatialFilter(\n spatialFilter: Polygon | MultiPolygon\n): SpatialFilter | undefined {\n return (spatialFilter && _normalizeGeometry(spatialFilter)) || undefined;\n}\n\n/**\n * Check if a viewport is large enough to represent a global coverage.\n * In this case the spatial filter parameter for widget calculation is removed.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _isGlobalViewport(viewport: BBox) {\n const [minx, miny, maxx, maxy] = viewport;\n return maxx - minx > 179.5 * 2 && maxy - miny > 85.05 * 2;\n}\n\n/**\n * Normalized a geometry, coming from a mask or a viewport. The parts\n * spanning outside longitude range [-180, +180] are clipped and \"folded\"\n * back to the valid range and unioned to the polygons inide that range.\n *\n * It results in a Polygon or MultiPolygon strictly inside the validity range.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _normalizeGeometry(\n geometry: Polygon | MultiPolygon\n): Polygon | MultiPolygon | null {\n const WORLD = [-180, -90, +180, +90] as BBox;\n const worldClip = _clean(\n bboxClip(geometry, WORLD).geometry as Polygon | MultiPolygon\n );\n\n const geometryTxWest = _tx(geometry, 360);\n const geometryTxEast = _tx(geometry, -360);\n\n let result: Polygon | MultiPolygon | null = worldClip;\n\n if (result && geometryTxWest) {\n const worldWestClip = _clean(\n bboxClip(geometryTxWest, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldWestClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldWestClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n if (result && geometryTxEast) {\n const worldEastClip = _clean(\n bboxClip(geometryTxEast, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldEastClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldEastClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n return result;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanPolygonCoords(cc: Position[][]) {\n const coords = cc.filter((c) => c.length > 0);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanMultiPolygonCoords(ccc: Position[][][]) {\n const coords = ccc.map(_cleanPolygonCoords).filter((cc) => cc);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _clean(\n geometry: Polygon | MultiPolygon | null\n): Polygon | MultiPolygon | null {\n if (!geometry) {\n return null;\n }\n\n if (_isPolygon(geometry)) {\n const coords = _cleanPolygonCoords(geometry.coordinates);\n return coords ? polygon(coords).geometry : null;\n }\n\n if (_isMultiPolygon(geometry)) {\n const coords = _cleanMultiPolygonCoords(geometry.coordinates);\n return coords ? multiPolygon(coords as Position[][][]).geometry : null;\n }\n\n return null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txContourCoords(cc: Position[], distance: number) {\n return cc.map((c) => [c[0] + distance, c[1]]);\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txPolygonCoords(ccc: Position[][], distance: number) {\n return ccc.map((cc) => _txContourCoords(cc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txMultiPolygonCoords(cccc: Position[][][], distance: number) {\n return cccc.map((ccc) => _txPolygonCoords(ccc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _tx(geometry: Polygon | MultiPolygon, distance: number) {\n if (geometry && getType(geometry) === 'Polygon') {\n const coords = _txPolygonCoords(\n (geometry as Polygon).coordinates,\n distance\n );\n return polygon(coords).geometry;\n } else if (geometry && getType(geometry) === 'MultiPolygon') {\n const coords = _txMultiPolygonCoords(\n (geometry as MultiPolygon).coordinates,\n distance\n );\n return multiPolygon(coords).geometry;\n } else {\n return null;\n }\n}\n\nfunction _isPolygon(geometry: Geometry): geometry is Polygon {\n return getType(geometry) === 'Polygon';\n}\n\nfunction _isMultiPolygon(geometry: Geometry): geometry is MultiPolygon {\n return getType(geometry) === 'MultiPolygon';\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type V3Endpoint = 'maps' | 'stats' | 'sql';\n\nfunction joinPath(...args: string[]): string {\n return args\n .map((part) => (part.endsWith('/') ? part.slice(0, -1) : part))\n .join('/');\n}\n\nfunction buildV3Path(\n apiBaseUrl: string,\n version: 'v3',\n endpoint: V3Endpoint,\n ...rest: string[]\n): string {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildPublicMapUrl({\n apiBaseUrl,\n cartoMapId,\n}: {\n apiBaseUrl: string;\n cartoMapId: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildStatsUrl({\n attribute,\n apiBaseUrl,\n connectionName,\n source,\n type,\n}: {\n attribute: string;\n apiBaseUrl: string;\n connectionName: string;\n source: string;\n type: MapType;\n}): string {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n\n // type === 'table'\n return buildV3Path(\n apiBaseUrl,\n 'v3',\n 'stats',\n connectionName,\n source,\n attribute\n );\n}\n\nexport function buildSourceUrl({\n apiBaseUrl,\n connectionName,\n endpoint,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n endpoint: MapType;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\n\nexport function buildQueryUrl({\n apiBaseUrl,\n connectionName,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type APIRequestType =\n | 'Map data'\n | 'Map instantiation'\n | 'Public map'\n | 'Tile stats'\n | 'SQL'\n | 'Basemap style';\n\nexport type APIErrorContext = {\n requestType: APIRequestType;\n mapId?: string;\n connection?: string;\n source?: string;\n type?: MapType;\n};\n\n/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n /** Source error from server */\n error: Error;\n\n /** Context (API call & parameters) in which error occured */\n errorContext: APIErrorContext;\n\n /** Response from server */\n response?: Response;\n\n /** JSON Response from server */\n responseJson?: any;\n\n constructor(\n error: Error,\n errorContext: APIErrorContext,\n response?: Response,\n responseJson?: any\n ) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n } else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n } else if (response.status === 404) {\n responseString += 'Not found';\n } else {\n responseString += 'Error';\n }\n\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType') continue;\n message += `\\n${formatErrorKey(key)}: ${(errorContext as any)[key]}`;\n }\n message += '\\n';\n\n super(message);\n\n this.name = 'CartoAPIError';\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key: string) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase());\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {isPureObject} from '../utils.js';\nimport {CartoAPIError, APIErrorContext} from './carto-api-error.js';\nimport {V3_MINOR_VERSION} from '../constants-internal.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {getClient} from '../client.js';\nimport {LocalCacheOptions} from '../sources/types.js';\n\nconst DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\n\nconst DEFAULT_REQUEST_CACHE = new Map<string, Promise<unknown>>();\n\nexport async function requestWithParameters<T = any>({\n baseUrl,\n parameters = {},\n headers: customHeaders = {},\n errorContext,\n maxLengthURL = DEFAULT_MAX_LENGTH_URL,\n localCache,\n}: {\n baseUrl: string;\n parameters?: Record<string, unknown>;\n headers?: Record<string, string>;\n errorContext: APIErrorContext;\n maxLengthURL?: number;\n localCache?: LocalCacheOptions;\n}): Promise<T> {\n // Parameters added to all requests issued with `requestWithParameters()`.\n // These parameters override parameters already in the base URL, but not\n // user-provided parameters.\n parameters = {\n v: V3_MINOR_VERSION,\n client: getClient(),\n ...(typeof deck !== 'undefined' &&\n deck.VERSION && {deckglVersion: deck.VERSION}),\n ...parameters,\n };\n\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n\n const {\n cache: REQUEST_CACHE,\n canReadCache,\n canStoreInCache,\n } = getCacheSettings(localCache);\n\n if (canReadCache && REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key) as Promise<T>;\n }\n\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n\n /* global fetch */\n const fetchPromise =\n url.length > maxLengthURL\n ? fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(parameters),\n headers,\n })\n : fetch(url, {headers});\n\n let response: Response | undefined;\n let responseJson: unknown;\n const jsonPromise: Promise<T> = fetchPromise\n .then((_response: Response) => {\n response = _response;\n return response.json();\n })\n .then((json: any) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n })\n .catch((error: Error) => {\n if (canStoreInCache) {\n REQUEST_CACHE.delete(key);\n }\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n\n if (canStoreInCache) {\n REQUEST_CACHE.set(key, jsonPromise);\n }\n return jsonPromise;\n}\n\nfunction getCacheSettings(localCache: LocalCacheOptions | undefined) {\n const canReadCache = localCache?.cacheControl?.includes('no-cache')\n ? false\n : true;\n const canStoreInCache = localCache?.cacheControl?.includes('no-store')\n ? false\n : true;\n const cache = localCache?.cache || DEFAULT_REQUEST_CACHE;\n\n return {\n cache,\n canReadCache,\n canStoreInCache,\n };\n}\n\nfunction createCacheKey(\n baseUrl: string,\n parameters: Record<string, unknown>,\n headers: Record<string, string>\n): string {\n const parameterEntries = Object.entries(parameters).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n const headerEntries = Object.entries(headers).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n return JSON.stringify({\n baseUrl,\n parameters: parameterEntries,\n headers: headerEntries,\n });\n}\n\n/**\n * Appends query string parameters to a URL. Existing URL parameters are kept,\n * unless there is a conflict, in which case the new parameters override\n * those already in the URL.\n */\nfunction createURLWithParameters(\n baseUrlString: string,\n parameters: Record<string, unknown>\n): string {\n const baseUrl = new URL(baseUrlString);\n for (const [key, value] of Object.entries(parameters)) {\n if (isPureObject(value) || Array.isArray(value)) {\n baseUrl.searchParams.set(key, JSON.stringify(value));\n } else {\n baseUrl.searchParams.set(\n key,\n (value as string | boolean | number).toString()\n );\n }\n }\n return baseUrl.toString();\n}\n\n/**\n * Deletes query string parameters from a URL.\n */\nfunction excludeURLParameters(baseUrlString: string, parameters: string[]) {\n const baseUrl = new URL(baseUrlString);\n for (const param of parameters) {\n if (baseUrl.searchParams.has(param)) {\n baseUrl.searchParams.delete(param);\n }\n }\n return baseUrl.toString();\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_API_BASE_URL} from '../constants.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {buildSourceUrl} from '../api/endpoints.js';\nimport {requestWithParameters} from '../api/request-with-parameters.js';\nimport type {\n GeojsonResult,\n JsonResult,\n SourceOptionalOptions,\n SourceRequiredOptions,\n TilejsonMapInstantiation,\n TilejsonResult,\n} from './types.js';\nimport {MapType} from '../types.js';\nimport {APIErrorContext} from '../api/index.js';\nimport {getClient} from '../client.js';\n\nexport const SOURCE_DEFAULTS: SourceOptionalOptions = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n format: 'tilejson',\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL,\n};\n\nexport async function baseSource<UrlParameters extends Record<string, unknown>>(\n endpoint: MapType,\n options: Partial<SourceOptionalOptions> & SourceRequiredOptions,\n urlParameters: UrlParameters\n): Promise<TilejsonResult | GeojsonResult | JsonResult> {\n const {accessToken, connectionName, cache, ...optionalOptions} = options;\n const mergedOptions = {\n ...SOURCE_DEFAULTS,\n accessToken,\n connectionName,\n endpoint,\n };\n for (const key in optionalOptions) {\n if (optionalOptions[key as keyof typeof optionalOptions]) {\n (mergedOptions as any)[key] =\n optionalOptions[key as keyof typeof optionalOptions];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const {clientId, maxLengthURL, format, localCache} = mergedOptions;\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2),\n };\n const mapInstantiation =\n await requestWithParameters<TilejsonMapInstantiation>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(\n new URL(dataUrl).searchParams.get('cache') || '',\n 10\n );\n }\n errorContext.requestType = 'Map data';\n\n if (format === 'tilejson') {\n const json = await requestWithParameters<TilejsonResult>({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n return json;\n }\n\n return await requestWithParameters<GeojsonResult | JsonResult>({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {QueryParameters} from '../types.js';\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryQuerySourceOptions = SourceOptions &\n FilterOptions & {\n columns?: string[];\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: QueryParameters;\n };\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: Record<string, unknown> | unknown[];\n};\n\nexport type BoundaryQuerySourceResponse = TilejsonResult;\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<BoundaryQuerySourceResponse> {\n const {\n columns,\n filters,\n tilesetTableName,\n propertiesSqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesSqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryQuerySourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryTableSourceOptions = SourceOptions &\n FilterOptions & {\n tilesetTableName: string;\n columns?: string[];\n propertiesTableName: string;\n };\ntype UrlParameters = {\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n columns?: string;\n propertiesTableName: string;\n};\n\nexport type BoundaryTableSourceResponse = TilejsonResult;\n\nexport const boundaryTableSource = async function (\n options: BoundaryTableSourceOptions\n): Promise<BoundaryTableSourceResponse> {\n const {filters, tilesetTableName, columns, propertiesTableName} = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesTableName,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryTableSourceResponse>;\n};\n","import {\n DEFAULT_AGGREGATION_RES_LEVEL_H3,\n DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n} from './constants-internal.js';\nimport type {ModelSource} from './models/model.js';\nimport type {AggregationOptions} from './sources/types.js';\nimport type {ViewState} from './widget-sources/index.js';\n\nconst DEFAULT_TILE_SIZE = 512;\nconst QUADBIN_ZOOM_MAX_OFFSET = 4;\n\nexport function getSpatialFiltersResolution(\n source: Partial<ModelSource & AggregationOptions>,\n viewState: ViewState\n): number | undefined {\n const dataResolution = source.dataResolution ?? Number.MAX_VALUE;\n\n const aggregationResLevel =\n source.aggregationResLevel ??\n (source.spatialDataType === 'h3'\n ? DEFAULT_AGGREGATION_RES_LEVEL_H3\n : DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN);\n\n const aggregationResLevelOffset = Math.max(\n 0,\n Math.floor(aggregationResLevel)\n );\n\n const currentZoomInt = Math.ceil(viewState.zoom);\n if (source.spatialDataType === 'h3') {\n const tileSize = DEFAULT_TILE_SIZE;\n const maxResolutionForZoom =\n maxH3SpatialFiltersResolutions.find(\n ([zoom]) => zoom === currentZoomInt\n )?.[1] ?? Math.max(0, currentZoomInt - 3);\n\n const maxSpatialFiltersResolution = maxResolutionForZoom\n ? Math.min(dataResolution, maxResolutionForZoom)\n : dataResolution;\n\n const hexagonResolution =\n _getHexagonResolution(viewState, tileSize) + aggregationResLevelOffset;\n\n return Math.min(hexagonResolution, maxSpatialFiltersResolution);\n }\n\n if (source.spatialDataType === 'quadbin') {\n const maxResolutionForZoom = currentZoomInt + QUADBIN_ZOOM_MAX_OFFSET;\n const maxSpatialFiltersResolution = Math.min(\n dataResolution,\n maxResolutionForZoom\n );\n\n const quadsResolution =\n Math.floor(viewState.zoom) + aggregationResLevelOffset;\n return Math.min(quadsResolution, maxSpatialFiltersResolution);\n }\n\n return undefined;\n}\n\nconst maxH3SpatialFiltersResolutions = [\n [20, 14],\n [19, 13],\n [18, 12],\n [17, 11],\n [16, 10],\n [15, 9],\n [14, 8],\n [13, 7],\n [12, 7],\n [11, 7],\n [10, 6],\n [9, 6],\n [8, 5],\n [7, 4],\n [6, 4],\n [5, 3],\n [4, 2],\n [3, 1],\n [2, 1],\n [1, 0],\n];\n\n// stolen from https://github.com/visgl/deck.gl/blob/master/modules/carto/src/layers/h3-tileset-2d.ts\n\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\n\n/**\n * Resolution conversion function. Takes a WebMercatorViewport and returns\n * a H3 resolution such that the screen space size of the hexagons is\n * \"similar\" to the given tileSize on screen. Intended for use with deck.gl.\n * @internal\n */\nexport function _getHexagonResolution(\n viewport: {zoom: number; latitude: number},\n tileSize: number\n): number {\n // Difference in given tile size compared to deck's internal 512px tile size,\n // expressed as an offset to the viewport zoom.\n const zoomOffset = Math.log2(tileSize / DEFAULT_TILE_SIZE);\n const hexagonScaleFactor = (2 / 3) * (viewport.zoom - zoomOffset);\n const latitudeScaleFactor = Math.log(\n 1 / Math.cos((Math.PI * viewport.latitude) / 180)\n );\n\n // Clip and bias\n return Math.max(\n 0,\n Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS)\n );\n}\n","import {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n ViewState,\n} from './types.js';\nimport {\n FilterLogicalOperator,\n Filter,\n SpatialFilter,\n Filters,\n} from '../types.js';\nimport {getApplicableFilters} from '../utils.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\nimport {SourceOptions} from '../sources/index.js';\nimport {ApiVersion, DEFAULT_API_BASE_URL} from '../constants.js';\nimport {getSpatialFiltersResolution} from '../spatial-index.js';\nimport {AggregationOptions} from '../sources/types.js';\n\nexport interface WidgetSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetSource<Props extends WidgetSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetSourceProps> = {\n apiVersion: ApiVersion.V3,\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n filters: {},\n filtersLogicalOperator: 'and',\n };\n\n constructor(props: Props) {\n this.props = {...WidgetSource.defaultProps, ...props};\n }\n\n /**\n * Subclasses of {@link WidgetRemoteSource} must implement this method, calling\n * {@link WidgetRemoteSource.prototype._getModelSource} for common source\n * properties, and adding additional required properties including 'type' and\n * 'data'.\n */\n protected abstract getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource;\n\n protected _getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): Omit<ModelSource, 'type' | 'data'> {\n const props = this.props;\n return {\n apiVersion: props.apiVersion as ApiVersion,\n apiBaseUrl: props.apiBaseUrl as string,\n clientId: props.clientId as string,\n accessToken: props.accessToken,\n connectionName: props.connectionName,\n filters: getApplicableFilters(filterOwner, filters || props.filters),\n filtersLogicalOperator: props.filtersLogicalOperator,\n spatialDataType: props.spatialDataType,\n spatialDataColumn: props.spatialDataColumn,\n dataResolution: (props as Partial<AggregationOptions>).dataResolution,\n };\n }\n\n protected _getSpatialFiltersResolution(\n source: Omit<ModelSource, 'type' | 'data'>,\n spatialFilter?: SpatialFilter,\n referenceViewState?: ViewState\n ): number | undefined {\n // spatialFiltersResolution applies only to spatial index sources.\n if (!spatialFilter || source.spatialDataType === 'geo') {\n return;\n }\n\n if (!referenceViewState) {\n throw new Error(\n 'Missing required option, \"spatialIndexReferenceViewState\".'\n );\n }\n\n return getSpatialFiltersResolution(source, referenceViewState);\n }\n\n /**\n * Returns a list of labeled datapoints for categorical data. Suitable for\n * charts including grouped bar charts, pie charts, and tree charts.\n */\n abstract getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse>;\n\n /**\n * Given a list of feature IDs (as found in `_carto_feature_id`) returns all\n * matching features. In datasets containing features with duplicate geometries,\n * feature IDs may be duplicated (IDs are a hash of geometry) and so more\n * results may be returned than IDs in the request.\n * @internal\n * @experimental\n */\n abstract getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse>;\n\n /**\n * Returns a scalar numerical statistic over all matching data. Suitable\n * for 'headline' or 'scorecard' figures such as counts and sums.\n */\n abstract getFormula(options: FormulaRequestOptions): Promise<FormulaResponse>;\n\n /**\n * Returns a list of labeled datapoints for 'bins' of data defined as ticks\n * over a numerical range. Suitable for histogram charts.\n */\n abstract getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse>;\n\n /**\n * Returns a range (min and max) for a numerical column of matching rows.\n * Suitable for displaying certain 'headline' or 'scorecard' statistics,\n * or rendering a range slider UI for filtering.\n */\n abstract getRange(options: RangeRequestOptions): Promise<RangeResponse>;\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\n */\n abstract getScatter(options: ScatterRequestOptions): Promise<ScatterResponse>;\n\n /**\n * Returns a list of arbitrary data rows, with support for pagination and\n * sorting. Suitable for displaying tables and lists.\n */\n abstract getTable(options: TableRequestOptions): Promise<TableResponse>;\n\n /**\n * Returns a series of labeled numerical values, grouped into equally-sized\n * time intervals. Suitable for rendering time series charts.\n */\n abstract getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse>;\n}\n","import {InvalidColumnError} from '../utils.js';\n\n/** @privateRemarks Source: @carto/react-api */\nexport interface ModelRequestOptions {\n method: 'GET' | 'POST';\n headers?: Record<string, string>;\n abortController?: AbortController;\n otherOptions?: Record<string, unknown>;\n body?: string;\n}\n\ninterface ModelErrorResponse {\n error?: string | string[];\n hint?: string;\n column_name?: string;\n}\n\n/**\n * Return more descriptive error from API\n * @privateRemarks Source: @carto/react-api\n */\nexport function dealWithApiError({\n response,\n data,\n}: {\n response: Response;\n data: ModelErrorResponse;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (\n typeof data.error === 'string' &&\n data.error?.includes('Missing columns')\n ) {\n throw new InvalidColumnError(data.error);\n }\n\n switch (response.status) {\n case 401:\n throw new Error('Unauthorized access. Invalid credentials');\n case 403:\n throw new Error('Forbidden access to the requested data');\n default:\n throw new Error(\n data && data.error && typeof data.error === 'string'\n ? data.error\n : JSON.stringify(data?.hint || data.error?.[0])\n );\n }\n}\n\n/** @privateRemarks Source: @carto/react-api */\nexport async function makeCall({\n url,\n accessToken,\n opts,\n}: {\n url: string;\n accessToken: string;\n opts: ModelRequestOptions;\n}) {\n let response;\n let data;\n const isPost = opts?.method === 'POST';\n try {\n response = await fetch(url.toString(), {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...(isPost && {'Content-Type': 'application/json'}),\n ...opts.headers,\n },\n ...(isPost && {\n method: opts?.method,\n body: opts?.body,\n }),\n signal: opts?.abortController?.signal,\n ...opts?.otherOptions,\n });\n data = await response.json();\n } catch (error) {\n if ((error as Error).name === 'AbortError') throw error;\n\n throw new Error(`Failed request: ${error as Error}`);\n }\n\n if (!response.ok) {\n dealWithApiError({response, data});\n }\n\n return data;\n}\n","import {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n MapType,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {assert, isPureObject} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\nimport {ApiVersion} from '../constants.js';\nimport {SpatialDataType, SpatialFilterPolyfillMode} from '../sources/types.js';\n\n/** @privateRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\n 'pick',\n 'timeseries',\n 'range',\n 'scatterplot',\n 'table',\n] as const;\n\nexport type Model = (typeof AVAILABLE_MODELS)[number];\n\nexport interface ModelSource {\n type: MapType;\n apiVersion: ApiVersion;\n apiBaseUrl: string;\n accessToken: string;\n clientId: string;\n connectionName: string;\n data: string;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\n spatialDataColumn?: string;\n spatialDataType?: SpatialDataType;\n spatialFiltersResolution?: number;\n spatialFiltersMode?: SpatialFilterPolyfillMode;\n /** original resolution of the spatial index data as stored in the DW */\n dataResolution?: number;\n}\n\nconst {V3} = ApiVersion;\nconst REQUEST_GET_MAX_URL_LENGTH = 2048;\n\n/**\n * Execute a SQL model request.\n * @privateRemarks Source: @carto/react-api\n */\nexport function executeModel(props: {\n model: Model;\n source: ModelSource;\n params: Record<string, unknown>;\n opts?: Partial<ModelRequestOptions>;\n}) {\n assert(props.source, 'executeModel: missing source');\n assert(props.model, 'executeModel: missing model');\n assert(props.params, 'executeModel: missing params');\n\n assert(\n AVAILABLE_MODELS.includes(props.model),\n `executeModel: model provided isn't valid. Available models: ${AVAILABLE_MODELS.join(\n ', '\n )}`\n );\n\n const {model, source, params, opts} = props;\n const {type, apiVersion, apiBaseUrl, accessToken, connectionName, clientId} =\n source;\n\n assert(apiBaseUrl, 'executeModel: missing apiBaseUrl');\n assert(accessToken, 'executeModel: missing accessToken');\n assert(apiVersion === V3, 'executeModel: SQL Model API requires CARTO 3+');\n assert(type !== 'tileset', 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {\n data,\n filters,\n filtersLogicalOperator = 'and',\n spatialDataType = 'geo',\n spatialFiltersMode = 'intersects',\n spatialFiltersResolution = 0,\n } = source;\n\n const queryParams: Record<string, unknown> = {\n type,\n client: clientId,\n source: data,\n params,\n queryParameters: source.queryParameters || '',\n filters,\n filtersLogicalOperator,\n };\n\n const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;\n\n // Picking Model API requires 'spatialDataColumn'.\n if (model === 'pick') {\n queryParams.spatialDataColumn = spatialDataColumn;\n }\n\n // API supports multiple filters, we apply it only to spatialDataColumn\n const spatialFilters = source.spatialFilter\n ? {[spatialDataColumn]: source.spatialFilter}\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters;\n queryParams.spatialDataColumn = spatialDataColumn;\n queryParams.spatialDataType = spatialDataType;\n }\n\n if (spatialDataType !== 'geo') {\n if (spatialFiltersResolution > 0) {\n queryParams.spatialFiltersResolution = spatialFiltersResolution;\n }\n queryParams.spatialFiltersMode = spatialFiltersMode;\n }\n\n const urlWithSearchParams =\n url + '?' + objectToURLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n }\n return makeCall({\n url,\n accessToken: source.accessToken,\n opts: {\n ...opts,\n method: isGet ? 'GET' : 'POST',\n ...(!isGet && {body: JSON.stringify(queryParams)}),\n },\n });\n}\n\nfunction objectToURLSearchParams(object: Record<string, unknown>) {\n const params = new URLSearchParams();\n for (const key in object) {\n if (isPureObject(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (Array.isArray(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (object[key] === null) {\n params.append(key, 'null');\n } else if (object[key] !== undefined) {\n params.append(key, String(object[key] as unknown));\n }\n }\n return params;\n}\n","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {normalizeObjectKeys} from '../utils.js';\nimport {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\n\nexport type WidgetRemoteSourceProps = WidgetSourceProps;\n\n/**\n * Source for Widget API requests.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetRemoteSource<\n Props extends WidgetRemoteSourceProps,\n> extends WidgetSource<Props> {\n protected _headers: Record<string, string> = {};\n\n /** Assigns HTTP headers to be included on API requests from this source. */\n setRequestHeaders(headers: Record<string, string>): void {\n this._headers = headers;\n }\n\n async getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column, operation, operationColumn} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n operation,\n operationColumn: operationColumn || column,\n },\n opts: {abortController, headers: this._headers},\n }).then((res: CategoriesModelResponse) => normalizeObjectKeys(res.rows));\n }\n\n async getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {columns, dataType, featureIds, z, limit, tileResolution} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type FeaturesModelResponse = {rows: Record<string, unknown>[]};\n\n return executeModel({\n model: 'pick',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n columns,\n dataType,\n featureIds,\n z,\n limit: limit || 1000,\n tileResolution: tileResolution || DEFAULT_TILE_RESOLUTION,\n },\n opts: {abortController, headers: this._headers},\n // Avoid `normalizeObjectKeys()`, which changes column names.\n }).then(({rows}: FeaturesModelResponse) => ({rows}));\n }\n\n async getFormula(options: FormulaRequestOptions): Promise<FormulaResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: column ?? '*',\n operation: operation ?? 'count',\n operationExp,\n },\n opts: {abortController, headers: this._headers},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column, operation, ticks} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column, operation, ticks},\n opts: {abortController, headers: this._headers},\n }).then((res: HistogramModelResponse) => normalizeObjectKeys(res.rows));\n\n if (data.length) {\n // Given N ticks the API returns up to N+1 bins, omitting any empty bins. Bins\n // include 1 bin below the lowest tick, N-1 between ticks, and 1 bin above the highest tick.\n const result = Array(ticks.length + 1).fill(0);\n data.forEach(\n ({tick, value}: {tick: number; value: number}) => (result[tick] = value)\n );\n return result;\n }\n\n return [];\n }\n\n async getRange(options: RangeRequestOptions): Promise<RangeResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {column} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column},\n opts: {abortController, headers: this._headers},\n }).then((res: RangeModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getScatter(options: ScatterRequestOptions): Promise<ScatterResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\n\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n // Make sure this is sync with the same constant in cloud-native/maps-api\n const HARD_LIMIT = 500;\n\n type ScatterModelResponse = {rows: {x: number; y: number}[]};\n\n return executeModel({\n model: 'scatterplot',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n xAxisColumn,\n xAxisJoinOperation,\n yAxisColumn,\n yAxisJoinOperation,\n limit: HARD_LIMIT,\n },\n opts: {abortController, headers: this._headers},\n })\n .then((res: ScatterModelResponse) => normalizeObjectKeys(res.rows))\n .then((res) => res.map(({x, y}: {x: number; y: number}) => [x, y]));\n }\n\n async getTable(options: TableRequestOptions): Promise<TableResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n abortController,\n ...params\n } = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset,\n },\n opts: {abortController, headers: this._headers},\n }).then((res: TableModelResponse) => ({\n // Avoid `normalizeObjectKeys()`, which changes column names.\n rows: res.rows ?? (res as any).ROWS,\n totalCount: res.metadata?.total ?? (res as any).METADATA?.TOTAL,\n }));\n }\n\n async getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse> {\n const {\n filters = this.props.filters,\n filterOwner,\n abortController,\n spatialFilter,\n spatialFiltersMode,\n spatialIndexReferenceViewState,\n ...params\n } = options;\n const {\n column,\n operationColumn,\n joinOperation,\n operation,\n stepSize,\n stepMultiplier,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n } = params;\n\n const source = this.getModelSource(filters, filterOwner);\n const spatialFiltersResolution = this._getSpatialFiltersResolution(\n source,\n spatialFilter,\n spatialIndexReferenceViewState\n );\n\n type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {\n ...source,\n spatialFiltersResolution,\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n stepSize,\n stepMultiplier,\n operationColumn: operationColumn || column,\n joinOperation,\n operation,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n },\n opts: {abortController, headers: this._headers},\n }).then((res: TimeSeriesModelResponse) => ({\n rows: normalizeObjectKeys(res.rows),\n categories: res.metadata?.categories,\n }));\n }\n}\n","import {\n H3QuerySourceOptions,\n QuadbinQuerySourceOptions,\n VectorQuerySourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerQuerySourceOptions =\n | Omit<VectorQuerySourceOptions, 'filters'>\n | Omit<H3QuerySourceOptions, 'filters'>\n | Omit<QuadbinQuerySourceOptions, 'filters'>;\n\nexport type WidgetQuerySourceResult = {widgetSource: WidgetQuerySource};\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorQuerySource}, {@link h3QuerySource}, or {@link quadbinQuerySource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorQuerySource } from '@carto/api-client';\n *\n * const data = vectorQuerySource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * sqlQuery: 'SELECT * FROM carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetQuerySource extends WidgetRemoteSource<\n LayerQuerySourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'query',\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type AggregationFunction = (\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n) => number;\n\n/** @privateRemarks Source: @carto/react-core */\nexport const aggregationFunctions: Record<\n Exclude<AggregationType, 'custom'>,\n AggregationFunction\n> = {\n count: (values) => values.length,\n min: (...args) => applyAggregationFunction(min, ...args),\n max: (...args) => applyAggregationFunction(max, ...args),\n sum: (...args) => applyAggregationFunction(sum, ...args),\n avg: (...args) => applyAggregationFunction(avg, ...args),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function aggregate(\n feature: FeatureData,\n keys?: string[],\n operation?: AggregationType\n): unknown {\n if (!keys?.length) {\n throw new Error('Cannot aggregate a feature without having keys');\n } else if (keys.length === 1) {\n const value = feature[keys[0]];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n }\n\n const aggregationFn =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (!aggregationFn) {\n throw new Error(`${operation} isn't a valid aggregation function`);\n }\n\n return aggregationFn(\n keys.map((column) => {\n const value = feature[column];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n })\n );\n}\n\n/*\n * Forced casting to Number (just of non empty strings) allows to work-around\n * some specific situations, where a big numeric field is transformed into a string when generating the tileset(eg.PG)\n */\nfunction isPotentiallyValidNumber(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nconst applyAggregationFunction = (\n aggFn: AggregationFunction,\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n operation?: AggregationType\n) => {\n const normalizedKeys = normalizeKeys(keys);\n const elements =\n (normalizedKeys?.length || 0) <= 1\n ? filterFalsyElements(values as unknown[], normalizedKeys || [])\n : values;\n return aggFn(elements, keys, operation);\n};\n\nfunction filterFalsyElements(\n values: unknown[] | FeatureData[],\n keys: string[]\n) {\n const filterFn = (value: unknown) => value !== null && value !== undefined;\n\n if (!keys?.length) {\n return values.filter(filterFn);\n }\n\n return (values as FeatureData[]).filter((v) => filterFn(v[keys[0]]));\n}\n\n// Aggregation functions\nfunction avg(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n return sum(values, keys, joinOperation) / (values.length || 1);\n}\n\nfunction sum(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) => a + (aggregate(b, normalizedKeys, joinOperation) as number),\n 0\n );\n }\n\n return values.reduce((a: number, b: unknown) => a + (b as number), 0);\n}\n\nfunction min(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.min(a, aggregate(b, normalizedKeys, joinOperation) as number),\n Infinity\n );\n }\n return Math.min(...(values as number[]));\n}\n\nfunction max(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.max(a, aggregate(b, normalizedKeys, joinOperation) as number),\n -Infinity\n );\n }\n return Math.max(...(values as number[]));\n}\n\n// Aux\n\n// Keys can come as a string (one column) or a strings array (multiple column)\n// Use always an array to make the code easier\nfunction normalizeKeys(keys: unknown): string[] | undefined {\n return Array.isArray(keys)\n ? keys\n : typeof keys === 'string'\n ? [keys]\n : undefined;\n}\n","/***\n Copyright 2013 Teun Duynstee\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nmodule.exports = (function() {\n\n function identity(v){return v;}\n\n function ignoreCase(v){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\n\n function makeCompareFunction(f, opt){\n opt = typeof(opt)===\"object\" ? opt : {direction:opt};\n \n if(typeof(f)!=\"function\"){\n var prop = f;\n // make unary function\n f = function(v1){return !!v1[prop] ? v1[prop] : \"\";}\n }\n if(f.length === 1) {\n // f is a unary function mapping a single item to its sort score\n var uf = f;\n var preprocess = opt.ignoreCase?ignoreCase:identity;\n var cmp = opt.cmp || function(v1,v2) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\n f = function(v1,v2) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\n }\n const descTokens = {\"-1\":'', desc:''};\n if(opt.direction in descTokens) return function(v1,v2){return -f(v1,v2)};\n return f;\n }\n\n /* adds a secondary compare function to the target function (`this` context)\n which is applied in case the first one returns 0 (equal)\n returns a new compare function, which has a `thenBy` method as well */\n function tb(func, opt) {\n /* should get value false for the first call. This can be done by calling the \n exported function, or the firstBy property on it (for es6 module compatibility)\n */\n var x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a,b) || y(a,b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n})();\n","import {firstBy} from 'thenby';\nimport {SortDirection} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n// TODO(cleanup): Could this be simplified?\ntype SortColumns = string | string[] | object[];\n\ninterface SortOptions {\n sortBy?: SortColumns;\n sortByDirection?: SortDirection;\n sortByColumnType?: 'number' | 'string' | 'date';\n}\n\n/**\n * Apply sort structure to a collection of features\n * @param features\n * @param [sortOptions]\n * @param [sortOptions.sortBy] - One or more columns to sort by\n * @param [sortOptions.sortByDirection] - Direction by the columns will be sorted\n * @param [sortOptions.sortByColumnType] - Column type\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function applySorting(\n features: FeatureData[],\n {\n sortBy,\n sortByDirection = 'asc',\n sortByColumnType = 'string',\n }: SortOptions = {}\n): FeatureData[] {\n // If sortBy is undefined, pass all features\n if (sortBy === undefined) {\n return features;\n }\n\n // sortOptions exists, but are bad formatted\n const isValidSortBy =\n (Array.isArray(sortBy) && sortBy.length) || // sortBy can be an array of columns\n typeof sortBy === 'string'; // or just one column\n\n if (!isValidSortBy) {\n throw new Error('Sorting options are bad formatted');\n }\n const sortFn = createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType: sortByColumnType || 'string',\n });\n return features.sort(sortFn);\n}\n\n// Aux\nfunction createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const [firstSortOption, ...othersSortOptions] = normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n }) as Parameters<typeof firstBy>[];\n\n let sortFn = firstBy(...firstSortOption);\n for (const sortOptions of othersSortOptions) {\n sortFn = sortFn.thenBy(...sortOptions);\n }\n\n return sortFn;\n}\n\nfunction normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const numberFormat = sortByColumnType === 'number' && {\n cmp: (a: number, b: number) => a - b,\n };\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((sortByEl) => {\n // sortByEl is 'column'\n if (typeof sortByEl === 'string') {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n if (Array.isArray(sortByEl)) {\n // sortBy is ['column']\n if (sortByEl[1] === undefined) {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n // sortBy is ['column', { ... }]\n if (typeof sortByEl[1] === 'object') {\n const othersSortOptions = numberFormat\n ? {...numberFormat, ...sortByEl[1]}\n : sortByEl[1];\n return [\n sortByEl[0],\n {direction: sortByDirection, ...othersSortOptions},\n ];\n }\n }\n return sortByEl;\n });\n}\n","import {aggregationFunctions, aggregate} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type GroupByFeature = {\n name: string;\n value: number;\n}[];\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: AggregationType;\n keysColumn: string;\n operation: AggregationType;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n const groups = data.reduce((accumulator, item) => {\n const group = item[keysColumn];\n\n const values = accumulator.get(group) || [];\n accumulator.set(group, values);\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid =\n (operation === 'count' ? true : aggregatedValue !== null) &&\n aggregatedValue !== undefined;\n\n if (isValid) {\n values.push(aggregatedValue);\n accumulator.set(group, values);\n }\n\n return accumulator;\n }, new Map()); // We use a map to be able to maintain the type in the key value\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (targetOperation) {\n return Array.from(groups).map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }));\n }\n\n return [];\n}\n","/**\n * Returns midnight (local time) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getDay();\n const diff = dateCp.getDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setDate(diff);\n dateCp.setHours(0, 0, 0, 0);\n return dateCp.getTime();\n}\n\n/**\n * Returns midnight (UTC) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getUTCMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getUTCDay();\n const diff = dateCp.getUTCDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setUTCDate(diff);\n return Date.UTC(\n dateCp.getUTCFullYear(),\n dateCp.getUTCMonth(),\n dateCp.getUTCDate()\n );\n}\n","import {AggregationType, GroupDateType} from '../types.js';\nimport {getUTCMonday} from '../utils/dateUtils.js';\nimport {aggregate, aggregationFunctions} from './aggregation.js';\nimport {GroupByFeature} from './groupBy.js';\n\nconst GROUP_KEY_FN_MAPPING: Record<GroupDateType, (date: Date) => number> = {\n year: (date: Date) => Date.UTC(date.getUTCFullYear()),\n month: (date: Date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth()),\n week: (date: Date) => getUTCMonday(date),\n day: (date: Date) =>\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n hour: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours()\n ),\n minute: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes()\n ),\n second: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n ),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByDateColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n groupType,\n operation,\n}: {\n data: Record<string, unknown>[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n keysColumn: string;\n groupType: GroupDateType;\n operation?: Exclude<AggregationType, 'custom'>;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n\n const groupKeyFn = GROUP_KEY_FN_MAPPING[groupType];\n\n if (!groupKeyFn) {\n return null;\n }\n\n const groups = data.reduce((acc, item) => {\n const value = item[keysColumn];\n const formattedValue = new Date(value as number);\n const groupKey = groupKeyFn(formattedValue);\n\n if (!isNaN(groupKey)) {\n let groupedValues = acc.get(groupKey);\n if (!groupedValues) {\n groupedValues = [];\n acc.set(groupKey, groupedValues);\n }\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid = aggregatedValue !== null && aggregatedValue !== undefined;\n\n if (isValid) {\n groupedValues.push(aggregatedValue);\n acc.set(groupKey, groupedValues);\n }\n }\n\n return acc;\n }, new Map());\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n return [...groups.entries()]\n .map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }))\n .sort((a, b) => a.name - b.name);\n}\n","import {aggregate, aggregationFunctions} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/**\n * Histogram computation.\n * @privateRemarks Source: @carto/react-core\n */\nexport function histogram({\n data,\n valuesColumns,\n joinOperation,\n ticks,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n ticks: number[];\n operation: Exclude<AggregationType, 'custom'>;\n}): number[] {\n if (Array.isArray(data) && data.length === 0) {\n return [];\n }\n\n const binsContainer = [Number.MIN_SAFE_INTEGER, ...ticks].map(\n (tick, index, arr) => ({\n bin: index,\n start: tick,\n end: index === arr.length - 1 ? Number.MAX_SAFE_INTEGER : arr[index + 1],\n values: [] as number[],\n })\n );\n\n data.forEach((feature) => {\n const featureValue = aggregate(\n feature,\n valuesColumns,\n joinOperation\n ) as number;\n\n const isValid = featureValue !== null && featureValue !== undefined;\n\n if (!isValid) {\n return;\n }\n\n const binContainer = binsContainer.find(\n (bin) => bin.start <= featureValue && bin.end > featureValue\n );\n\n if (!binContainer) {\n return;\n }\n\n binContainer.values.push(featureValue);\n });\n\n const targetOperation = aggregationFunctions[operation];\n const transformedBins = binsContainer.map(\n (binContainer) => binContainer.values\n );\n return transformedBins.map((values) =>\n values.length ? targetOperation(values) : 0\n );\n}\n","import {aggregate} from './aggregation.js';\nimport {FeatureData} from '../types-internal.js';\nimport {AggregationType} from '../types.js';\n\nexport type ScatterPlotFeature = [number, number][];\n\n/**\n * Filters invalid features and formats data.\n * @privateRemarks Source: @carto/react-core\n */\nexport function scatterPlot({\n data,\n xAxisColumns,\n xAxisJoinOperation,\n yAxisColumns,\n yAxisJoinOperation,\n}: {\n data: FeatureData[];\n xAxisColumns: string[];\n xAxisJoinOperation?: AggregationType;\n yAxisColumns: string[];\n yAxisJoinOperation?: AggregationType;\n}): ScatterPlotFeature {\n return data.reduce(\n (acc, feature) => {\n const xValue = aggregate(\n feature,\n xAxisColumns,\n xAxisJoinOperation\n ) as number;\n\n const xIsValid = xValue !== null && xValue !== undefined;\n\n const yValue = aggregate(\n feature,\n yAxisColumns,\n yAxisJoinOperation\n ) as number;\n\n const yIsValid = yValue !== null && yValue !== undefined;\n\n if (xIsValid && yIsValid) {\n acc.push([xValue, yValue]);\n }\n\n return acc;\n },\n [] as [number, number][]\n );\n}\n","/* eslint-disable @typescript-eslint/require-await */\nimport {TilesetSourceOptions} from '../sources/index.js';\nimport type {ModelSource} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {InvalidColumnError, assert, getApplicableFilters} from '../utils.js';\nimport {TileFormat} from '../constants.js';\nimport {Filter, Filters, SpatialFilter, Tile} from '../types.js';\nimport {\n TileFeatureExtractOptions,\n applyFilters,\n geojsonFeatures,\n tileFeatures,\n} from '../filters/index.js';\nimport {\n aggregationFunctions,\n applySorting,\n groupValuesByColumn,\n groupValuesByDateColumn,\n histogram,\n scatterPlot,\n} from '../operations/index.js';\nimport {FeatureData} from '../types-internal.js';\nimport {FeatureCollection} from 'geojson';\nimport {SpatialDataType} from '../sources/types.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\nimport {booleanEqual} from '@turf/boolean-equal';\n\n// TODO(cleanup): Parameter defaults in source functions and widget API calls are\n// currently duplicated and possibly inconsistent. Consider consolidating and\n// operating on Required<T> objects. See:\n// https://github.com/CartoDB/carto-api-client/issues/39\n\nexport type WidgetTilesetSourceProps = WidgetSourceProps &\n Omit<TilesetSourceOptions, 'filters'> & {\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n };\n\nexport type WidgetTilesetSourceResult = {widgetSource: WidgetTilesetSource};\n\n/**\n * Source for Widget API requests on a data source defined by a tileset.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTilesetSource}, {@link h3TilesetSource}, or {@link quadbinTilesetSource},\n * which can be shared with map layers. Sources contain a `widgetSource`\n * property, for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTilesetSource } from '@carto/api-client';\n *\n * const data = vectorTilesetSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_rasters.my_tileset_source'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTilesetSource<\n Props extends WidgetTilesetSourceProps = WidgetTilesetSourceProps,\n> extends WidgetSource<Props> {\n private _tiles: Tile[] = [];\n private _features: FeatureData[] = [];\n private _tileFeatureExtractOptions: TileFeatureExtractOptions = {};\n private _tileFeatureExtractPreviousInputs: {spatialFilter?: SpatialFilter} =\n {};\n\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'tileset',\n data: this.props.tableName,\n };\n }\n\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles: unknown[]) {\n this._tiles = tiles as Tile[];\n this._features.length = 0;\n }\n\n /** Configures options used to extract features from tiles. */\n setTileFeatureExtractOptions(options: TileFeatureExtractOptions) {\n this._tileFeatureExtractOptions = options;\n this._features.length = 0;\n }\n\n protected _extractTileFeatures(spatialFilter: SpatialFilter) {\n // When spatial filter has not changed, don't redo extraction. If tiles or\n // tile extract options change, features will have been cleared already.\n const prevInputs = this._tileFeatureExtractPreviousInputs;\n if (\n this._features.length &&\n prevInputs.spatialFilter &&\n booleanEqual(prevInputs.spatialFilter, spatialFilter)\n ) {\n return;\n }\n\n this._features = tileFeatures({\n ...this.props,\n ...this._tileFeatureExtractOptions,\n tiles: this._tiles,\n spatialFilter,\n });\n\n prevInputs.spatialFilter = spatialFilter;\n }\n\n /**\n * Loads features as GeoJSON (used for testing).\n * @experimental\n * @internal Not for public use. Spatial filters in other method calls will be ignored.\n */\n loadGeoJSON({\n geojson,\n spatialFilter,\n }: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n }) {\n this._features = geojsonFeatures({\n geojson,\n spatialFilter,\n ...this._tileFeatureExtractOptions,\n });\n this._tileFeatureExtractPreviousInputs.spatialFilter = spatialFilter;\n }\n\n override async getFeatures(): Promise<FeaturesResponse> {\n throw new Error('getFeatures not supported for tilesets');\n }\n\n async getFormula({\n column = '*',\n operation = 'count',\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: FormulaRequestOptions): Promise<FormulaResponse> {\n if (operation === 'custom') {\n throw new Error('Custom aggregation not supported for tilesets');\n }\n\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== 'count') {\n assertColumn(this._features, column);\n }\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (filteredFeatures.length === 0 && operation !== 'count') {\n return {value: null};\n }\n\n const targetOperation = aggregationFunctions[operation];\n return {\n value: targetOperation(filteredFeatures, column, joinOperation),\n };\n }\n\n override async getHistogram({\n operation = 'count',\n ticks,\n column,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: HistogramRequestOptions): Promise<HistogramResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n assertColumn(this._features, column);\n\n if (!this._features.length) {\n return [];\n }\n\n return histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation,\n });\n }\n\n override async getCategories({\n column,\n operation = 'count',\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: CategoryRequestOptions): Promise<CategoryResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const groups = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n joinOperation,\n keysColumn: column,\n operation,\n });\n\n return groups || [];\n }\n\n override async getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: ScatterRequestOptions): Promise<ScatterResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, xAxisColumn, yAxisColumn);\n\n return scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation,\n });\n }\n\n override async getTable({\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n filters,\n filterOwner,\n spatialFilter,\n }: TableRequestOptions): Promise<TableResponse> {\n // Filter.\n let filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: [], totalCount: 0};\n }\n\n // Search.\n if (searchFilterColumn && searchFilterText) {\n filteredFeatures = filteredFeatures.filter(\n (row) =>\n row[searchFilterColumn] &&\n String(row[searchFilterColumn] as unknown)\n .toLowerCase()\n .includes(String(searchFilterText).toLowerCase())\n );\n }\n\n // Sort.\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType,\n });\n const totalCount = rows.length;\n\n // Offset and limit.\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount)\n );\n\n // Select columns.\n rows = rows.map((srcRow: FeatureData) => {\n const dstRow: FeatureData = {};\n for (const column of columns) {\n dstRow[column] = srcRow[column];\n }\n return dstRow;\n });\n\n return {rows, totalCount} as TableResponse;\n }\n\n override async getTimeSeries({\n column,\n stepSize,\n operation,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: []};\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const rows =\n groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n keysColumn: column,\n groupType: stepSize,\n operation,\n joinOperation,\n }) || [];\n\n return {rows};\n }\n\n override async getRange({\n column,\n filters,\n filterOwner,\n spatialFilter,\n }: RangeRequestOptions): Promise<RangeResponse> {\n assertColumn(this._features, column);\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!this._features.length) {\n // TODO: Is this the only nullable response in the Widgets API? If so,\n // can we do something more consistent?\n return null;\n }\n\n return {\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column),\n };\n }\n\n /****************************************************************************\n * INTERNAL\n */\n\n private _getFilteredFeatures(\n spatialFilter?: SpatialFilter,\n filters?: Record<string, Filter>,\n filterOwner?: string\n ): FeatureData[] {\n assert(spatialFilter, 'spatialFilter required for tilesets');\n this._extractTileFeatures(spatialFilter);\n return applyFilters(\n this._features,\n getApplicableFilters(filterOwner, filters || this.props.filters),\n this.props.filtersLogicalOperator || 'and'\n );\n }\n}\n\nfunction assertColumn(\n features: FeatureData[],\n ...columnArgs: string[] | string[][]\n) {\n // TODO(cleanup): Can drop support for multiple column shapes here?\n\n // Due to the multiple column shape, we normalise it as an array with normalizeColumns\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()));\n\n const featureKeys = Object.keys(features[0]);\n\n const invalidColumns = columns.filter(\n (column) => !featureKeys.includes(column)\n );\n\n if (invalidColumns.length) {\n throw new InvalidColumnError(\n `Missing column(s): ${invalidColumns.join(', ')}`\n );\n }\n}\n\nfunction normalizeColumns(columns: string | string[]): string[] {\n return Array.isArray(columns)\n ? columns\n : typeof columns === 'string'\n ? [columns]\n : [];\n}\n","import {RasterMetadata} from '../sources/index.js';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceProps,\n} from './widget-tileset-source.js';\n\nexport type WidgetRasterSourceProps = WidgetTilesetSourceProps & {\n rasterMetadata: RasterMetadata;\n spatialDataType: 'quadbin';\n};\n\nexport type WidgetRasterSourceResult = {widgetSource: WidgetRasterSource};\n\nexport class WidgetRasterSource extends WidgetTilesetSource<WidgetRasterSourceProps> {}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\n\nexport type WidgetTableSourceResult = {widgetSource: WidgetTableSource};\n\n/**\n * Source for Widget API requests on a data source defined as a table.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTableSource}, {@link h3TableSource}, or {@link quadbinTableSource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTableSource } from '@carto/api-client';\n *\n * const data = vectorTableSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTableSource extends WidgetRemoteSource<\n LayerTableSourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'table',\n data: this.props.tableName,\n };\n }\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type H3QuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;\n\nexport const h3QuerySource = async function (\n options: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n sqlQuery,\n spatialDataColumn = 'h3',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType,\n q: sqlQuery,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type H3TableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;\n\nexport const h3TableSource = async function (\n options: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n spatialDataColumn = 'h3',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","import {TileFormat} from '../constants.js';\nimport {Tilejson} from '../sources/types.js';\n\nexport function getTileFormat(tilejson: Tilejson): TileFormat {\n const tileParams = new URL(tilejson.tiles[0]).searchParams;\n return tileParams.get('formatTiles') === 'mvt'\n ? TileFormat.MVT\n : TileFormat.BINARY;\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getTileFormat} from '../utils/getTileFormat.js';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type H3TilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type H3TilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName, spatialDataColumn = 'h3'} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'h3',\n }),\n })\n ) as Promise<H3TilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport {getTileFormat} from '../utils/getTileFormat.js';\nimport {\n WidgetRasterSource,\n WidgetRasterSourceResult,\n} from '../widget-sources/index.js';\n\nimport type {\n FilterOptions,\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type RasterSourceOptions = SourceOptions &\n TilesetSourceOptions &\n FilterOptions;\ntype UrlParameters = {\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type RasterSourceResponse = TilejsonResult & WidgetRasterSourceResult;\n\nexport const rasterSource = async function (\n options: RasterSourceOptions\n): Promise<RasterSourceResponse> {\n const {tableName, filters} = options;\n const urlParameters: UrlParameters = {name: tableName};\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('raster', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetRasterSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn: 'quadbin',\n spatialDataType: 'quadbin',\n rasterMetadata: (result as TilejsonResult).raster_metadata!,\n }),\n })\n ) as Promise<RasterSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const quadbinQuerySource = async function (\n options: QuadbinQuerySourceOptions\n): Promise<QuadbinQuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n sqlQuery,\n spatialDataColumn = 'quadbin',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinTableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const quadbinTableSource = async function (\n options: QuadbinTableSourceOptions\n): Promise<QuadbinTableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n spatialDataColumn = 'quadbin',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getTileFormat} from '../utils/getTileFormat.js';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type QuadbinTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type QuadbinTilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName, spatialDataColumn = 'quadbin'} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'quadbin',\n }),\n })\n ) as Promise<QuadbinTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n SourceOptions,\n QuerySourceOptions,\n SpatialDataType,\n TilejsonResult,\n ColumnsOption,\n} from './types.js';\n\nexport type VectorQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n aggregationExp?: string;\n};\n\nexport type VectorQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const vectorQuerySource = async function (\n options: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n ColumnsOption,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTableSourceOptions = SourceOptions &\n TableSourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n name: string;\n aggregationExp?: string;\n};\n\nexport type VectorTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const vectorTableSource = async function (\n options: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {getTileFormat} from '../utils/getTileFormat.js';\nimport {\n WidgetTilesetSource,\n WidgetTilesetSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilesetSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type VectorTilesetSourceResponse = TilejsonResult &\n WidgetTilesetSourceResult;\n\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName, spatialDataColumn = DEFAULT_GEO_COLUMN} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>('tileset', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTilesetSource({\n ...options,\n tileFormat: getTileFormat(result as TilejsonResult),\n spatialDataColumn,\n spatialDataType: 'geo',\n }),\n })\n ) as Promise<VectorTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {SOURCE_DEFAULTS} from '../sources/index.js';\nimport type {\n SourceOptions,\n QuerySourceOptions,\n QueryResult,\n} from '../sources/types.js';\nimport {buildQueryUrl} from './endpoints.js';\nimport {requestWithParameters} from './request-with-parameters.js';\nimport {APIErrorContext} from './carto-api-error.js';\n\nexport type QueryOptions = SourceOptions & QuerySourceOptions;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (\n options: QueryOptions\n): Promise<QueryResult> {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n clientId = SOURCE_DEFAULTS.clientId,\n maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,\n localCache,\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 = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(parameters, undefined, 2),\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n};\n"],"names":["client","getClient","setClient","c","FilterType","ApiVersion","DEFAULT_API_BASE_URL","TileFormat","SpatialIndex","Provider","makeIntervalComplete","intervals","map","val","undefined","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","filterFunctions","IN","filterIn","BETWEEN","filterBetween","TIME","filterTime","CLOSED_OPEN","filterClosedOpen","STRING_SEARCH","filterStringSearch","filterValues","featureValue","includes","checkRange","range","lowerBound","upperBound","some","featureValueAsTimestamp","Date","getTime","isFinite","Error","params","normalizedFeatureValue","normalize","stringRegExp","useRegExp","filterValue","escapeRegExp","mustStart","mustEnd","regex","RegExp","join","caseSensitive","match","specialCharRegExp","normalizeRegExp","value","replace","data","normalizedData","String","keepSpecialCharacters","LOGICAL_OPERATOR_METHODS","and","or","passesFilter","columns","filters","feature","filtersLogicalOperator","method","column","columnFilters","columnFilterTypes","Object","keys","every","filter","filterFunction","values","_buildFeatureFilter","_ref","type","length","f","properties","featurePassesFilter","applyFilters","features","buildBinaryFeatureFilter","_ref2","featureIdIdx","binaryData","passesFilterUsingBinary","getValueFromNumericProps","_ref3","numericProps","getValueFromProperties","_ref4","propertyIdx","featureIds","GET_VALUE_BY_BINARY_PROP","getBinaryPropertyByFilterValues","flat","getFeatureValue","binaryProp","getFeatureValueFn","entries","_ref5","filterFn","geojsonFeatures","geojson","spatialFilter","uniqueIdProperty","uniqueIdx","Map","uniqueId","has","intersects","set","Array","from","DEFAULT_CONFIG","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","_cartographicRadians","globalThis","mathgl","config","isArray","ArrayBuffer","isView","DataView","lerp","a","b","t","ai","i","assert","condition","message","PI","Math","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","TILE_SIZE","lngLatToWorld","lngLat","lng","lat","lambda2","phi2","x","y","log","tan","worldToLngLat","xy","atan","exp","TRANSFORM_FN","Point","transformPoint","MultiPoint","transformMultiPoint","LineString","transformLineString","MultiLineString","transformMultiLineString","Polygon","transformPolygon","MultiPolygon","transformMultiPolygon","transformToTileCoords","geometry","bbox","west","south","east","north","nw","projectFlat","se","projectedBbox","transformFn","coordinates","pointX","pointY","inverseLerp","getPoints","g","multiPoint","line","multiLineString","lineString","polygon","polygonRing","multiPolygon","xyz","transformTileCoordsToWGS84","FEATURE_GEOM_PROPERTY","tileFeaturesGeometries","tiles","tileFormat","options","tile","isVisible","bboxToGeom","bboxPolygon","tileIsFullyVisible","booleanWithin","spatialFilterFeature","clippedGeometryToIntersect","intersect","featureCollection","transformedGeometryToIntersect","MVT","createIndicesForPoints","points","calculateFeatures","geometryIntersection","lines","polygons","processTileFeatureProperties","startIndex","endIndex","storeGeometry","tileProps","getPropertiesFromTile","uniquePropertyValue","getUniquePropertyValue","positions","ringCoordinates","getRingCoordinatesFor","getFeatureByType","parseProperties","addIntersectedFeaturesInTile","indices","getIndices","pointIndices","pathIndices","primitivePolygonIndices","getFeatureId","featureId","fields","result","id","key","assign","getValueFromTileProps","artificialId","size","propertyName","j","push","subarray","addAllFeaturesInTile","lastFeatureId","PointIndicesArray","constructor","tileFeaturesSpatialIndex","spatialDataColumn","spatialDataType","spatialIndex","getSpatialIndex","resolution","getResolution","spatialIndexIDName","cells","getCellsCoverGeometry","cellsSet","Set","forEach","d","find","QUADBIN","quadbinGetResolution","H3","h3GetResolution","bboxWest","bboxEast","geometryToCells","polygonToCells","bboxClip","concat","V3_MINOR_VERSION","DEFAULT_GEO_COLUMN","DEFAULT_MAX_LENGTH_URL","DEFAULT_TILE_RESOLUTION","DEFAULT_AGGREGATION_RES_LEVEL_H3","DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN","tileFeaturesRaster","bandMetadataByName","band","rasterMetadata","bands","name","isRasterTileVisible","tileResolution","index","q","tileBlockSize","blockSize","cellResolution","BigInt","log2","spatialFilterCells","parent","children","cellToChildrenSorted","cellData","cellDataExists","nodata","isRasterTile","_cellToChildren","sort","cellA","cellB","tileA","cellToTile","tileB","FILTER_TYPES","isFilterType","getApplicableFilters","owner","applicableFilters","isApplicable","normalizeObjectKeys","el","reduce","acc","toLowerCase","InvalidColumnError","NAME","is","error","isEmptyObject","object","_","isObject","isPureObject","tileFeatures","getDataFilterExtensionProps","filterSize","filtersWithoutTimeType","timeColumn","timeFilter","getFiltersByType","filterRange","getFilterRange","updateTriggers","getUpdateTriggers","getFilterValue","columnData","typeData","fill","offsetBy","v","JSON","stringify","featureFilter","addFilter","removeFilter","clearFilters","hasFilter","getFilter","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","_normalizeGeometry","minx","miny","maxx","maxy","WORLD","worldClip","_clean","geometryTxWest","_tx","geometryTxEast","worldWestClip","collection","merged","union","worldEastClip","_cleanPolygonCoords","cc","coords","_cleanMultiPolygonCoords","ccc","_isPolygon","_isMultiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","joinPath","slice","call","arguments","part","endsWith","buildV3Path","apiBaseUrl","version","endpoint","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","CartoAPIError","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","s","toUpperCase","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","Promise","resolve","get","url","createURLWithParameters","DEFAULT_HEADERS","fetchPromise","fetch","body","jsonPromise","then","_response","json","ok","catch","delete","e","reject","Accept","DEFAULT_REQUEST_CACHE","cacheControl","parameterEntries","headerEntries","baseUrlString","URL","searchParams","toString","param","baseSource","urlParameters","accessToken","optionalOptions","mergedOptions","SOURCE_DEFAULTS","clientId","format","Authorization","connection","mapInstantiation","_exit","_temp2","_result","dataUrl","parseInt","_temp","boundaryQuerySource","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","DEFAULT_TILE_SIZE","QUADBIN_ZOOM_MAX_OFFSET","getSpatialFiltersResolution","viewState","dataResolution","MAX_VALUE","aggregationResLevel","aggregationResLevelOffset","max","floor","currentZoomInt","ceil","zoom","tileSize","maxResolutionForZoom","maxH3SpatialFiltersResolutions","maxSpatialFiltersResolution","min","hexagonResolution","_getHexagonResolution","quadsResolution","BIAS","zoomOffset","hexagonScaleFactor","latitudeScaleFactor","cos","latitude","WidgetSource","props","defaultProps","_getModelSource","filterOwner","apiVersion","_getSpatialFiltersResolution","referenceViewState","V3","makeCall","opts","dealWithApiError","isPost","_catch","signal","abortController","otherOptions","_fetch","_response$json","column_name","hint","AVAILABLE_MODELS","REQUEST_GET_MAX_URL_LENGTH","executeModel","model","spatialFiltersMode","spatialFiltersResolution","queryParams","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","WidgetRemoteSource","_headers","setRequestHeaders","getCategories","_this","spatialIndexReferenceViewState","operation","operationColumn","getModelSource","res","rows","getFeatures","_this2","dataType","z","limit","getFormula","_this3","operationExp","getHistogram","_this4","ticks","tick","getRange","_this5","getScatter","_this6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","getTable","_this7","sortBy","sortDirection","offset","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_this8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","sqlQuery","aggregationFunctions","count","applyAggregationFunction","sum","avg","aggregate","isPotentiallyValidNumber","aggregationFn","trim","aggFn","normalizedKeys","normalizeKeys","elements","filterFalsyElements","Infinity","thenBy_module","identity","ignoreCase","makeCompareFunction","opt","direction","prop","v1","uf","preprocess","cmp","v2","descTokens","desc","tb","func","firstBy","thenBy","applySorting","sortByDirection","sortByColumnType","isValidSortBy","sortFn","createSortFn","firstSortOption","othersSortOptions","normalizeSortByOptions","sortOptions","numberFormat","sortByEl","groupValuesByColumn","valuesColumns","keysColumn","groups","accumulator","item","group","aggregatedValue","isValid","targetOperation","getUTCMonday","date","dateCp","day","getUTCDay","diff","getUTCDate","setUTCDate","UTC","getUTCFullYear","getUTCMonth","GROUP_KEY_FN_MAPPING","year","month","week","hour","getUTCHours","minute","getUTCMinutes","second","getUTCSeconds","groupValuesByDateColumn","groupType","groupKeyFn","formattedValue","groupKey","isNaN","groupedValues","histogram","binsContainer","arr","bin","start","end","binContainer","transformedBins","scatterPlot","xAxisColumns","yAxisColumns","xValue","xIsValid","yValue","yIsValid","WidgetTilesetSource","_tiles","_features","_tileFeatureExtractOptions","_tileFeatureExtractPreviousInputs","tableName","loadTiles","setTileFeatureExtractOptions","_extractTileFeatures","prevInputs","booleanEqual","loadGeoJSON","assertColumn","filteredFeatures","_getFilteredFeatures","normalizeColumns","_ref6","searchFilterColumn","searchFilterText","row","srcRow","dstRow","_ref7","_ref8","featureKeys","invalidColumns","WidgetRasterSource","WidgetTableSource","h3QuerySource","aggregationExp","widgetSource","h3TableSource","getTileFormat","tilejson","tileParams","BINARY","h3TilesetSource","rasterSource","raster_metadata","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query"],"mappings":"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","x_google_ignoreList":[6,7,8,33]}