@carto/api-client 0.4.4 → 0.4.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.modern.js","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/models/common.ts","../src/models/model.ts","../src/spatial-index.ts","../src/widget-sources/widget-base-source.ts","../src/widget-sources/widget-query-source.ts","../src/widget-sources/widget-table-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.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","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((acc, [key, value]) => {\n acc[key.toLowerCase()] =\n typeof value === 'object' && value ? normalizeObjectKeys(value) : value;\n return acc;\n }, {} as Record<string, T>) 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 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 return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryTableSourceResponse>;\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 {\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 {assert} from './utils';\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// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\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 {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 ViewState,\n} from './types.js';\nimport {FilterLogicalOperator, Filter, SpatialFilter} from '../types.js';\nimport {getApplicableFilters, normalizeObjectKeys} 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 {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {getSpatialFiltersResolution} from '../spatial-index.js';\nimport {AggregationOptions} from '../sources/types.js';\n\nexport interface WidgetBaseSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\nexport type WidgetSource = WidgetBaseSource<WidgetBaseSourceProps>;\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 WidgetBaseSource<Props extends WidgetBaseSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetBaseSourceProps> = {\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 = {...WidgetBaseSource.defaultProps, ...props};\n }\n\n /**\n * Subclasses of {@link WidgetBaseSource} must implement this method, calling\n * {@link WidgetBaseSource.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 * CATEGORIES\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 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 /****************************************************************************\n * FEATURES\n */\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 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 /****************************************************************************\n * FORMULA\n */\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 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: {column: column ?? '*', operation, operationExp},\n opts: {abortController},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n /****************************************************************************\n * HISTOGRAM\n */\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 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 /****************************************************************************\n * RANGE\n */\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 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 /****************************************************************************\n * SCATTER\n */\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\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 /****************************************************************************\n * TABLE\n */\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 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 /****************************************************************************\n * TIME SERIES\n */\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 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 {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-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 WidgetBaseSource<\n LayerQuerySourceOptions & WidgetBaseSourceProps\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 {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-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 WidgetBaseSource<\n LayerTableSourceOptions & WidgetBaseSourceProps\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 const urlParameters: UrlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType: 'h3',\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 return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: passing redundant spatialDataColumn here to apply the default value 'h3'\n spatialDataColumn,\n spatialDataType: 'h3',\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 const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'h3',\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: passing redundant spatialDataColumn here to apply the default value 'h3'\n spatialDataColumn,\n spatialDataType: 'h3',\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\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\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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';\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;\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 return baseSource<UrlParameters>(\n 'raster',\n options,\n urlParameters\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 const urlParameters: UrlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType: 'quadbin',\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 return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: passing redundant spatialDataColumn here to apply the default value 'quadbin'\n spatialDataColumn,\n spatialDataType: 'quadbin',\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 urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'quadbin',\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: passing redundant spatialDataColumn here to apply the default value 'quadbin'\n spatialDataColumn,\n spatialDataType: 'quadbin',\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\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\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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 {DEFAULT_TILE_RESOLUTION} 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 = 'geom',\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n } = options;\n\n const urlParameters: UrlParameters = {\n spatialDataColumn,\n spatialDataType: 'geo',\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 return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n spatialDataType: 'geo',\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_TILE_RESOLUTION} 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 = 'geom',\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n } = options;\n\n const urlParameters: UrlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'geo',\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 return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n spatialDataType: 'geo',\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\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\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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","FILTER_TYPES","Set","Object","values","isFilterType","type","has","getApplicableFilters","owner","filters","applicableFilters","column","filter","isApplicable","normalizeObjectKeys","el","Array","isArray","map","value","entries","reduce","acc","key","toLowerCase","assert","condition","message","Error","InvalidColumnError","constructor","NAME","name","is","error","_error$message","includes","isEmptyObject","object","_","isObject","x","isPureObject","addFilter","removeFilter","_filter$type","clearFilters","keys","hasFilter","_filter$type2","getFilter","_filter$type3","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","args","part","endsWith","slice","join","buildV3Path","apiBaseUrl","version","endpoint","rest","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","CartoAPIError","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","replace","s","toUpperCase","DEFAULT_HEADERS","Accept","DEFAULT_REQUEST_CACHE","Map","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","_extends","v","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","get","url","createURLWithParameters","fetchPromise","fetch","method","body","JSON","stringify","jsonPromise","then","_response","json","ok","catch","delete","set","_localCache$cacheCont","_localCache$cacheCont2","cacheControl","parameterEntries","sort","a","b","headerEntries","baseUrlString","URL","searchParams","toString","param","SOURCE_DEFAULTS","clientId","format","baseSource","options","urlParameters","accessToken","optionalOptions","_objectWithoutPropertiesLoose","_excluded","mergedOptions","Authorization","connection","mapInstantiation","dataUrl","parseInt","boundaryQuerySource","columns","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","dealWithApiError","data","_data$error","_data$error2","column_name","msg","hint","makeCall","opts","isPost","_opts$abortController","signal","abortController","otherOptions","AVAILABLE_MODELS","V3","REQUEST_GET_MAX_URL_LENGTH","executeModel","props","model","params","apiVersion","filtersLogicalOperator","spatialDataType","spatialFiltersMode","spatialFiltersResolution","queryParams","spatialDataColumn","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","String","DEFAULT_TILE_SIZE","QUADBIN_ZOOM_MAX_OFFSET","getSpatialFiltersResolution","viewState","_source$dataResolutio","_source$aggregationRe","dataResolution","Number","MAX_VALUE","aggregationResLevel","aggregationResLevelOffset","Math","max","floor","currentZoomInt","ceil","zoom","_maxH3SpatialFiltersR","_maxH3SpatialFiltersR2","tileSize","maxResolutionForZoom","maxH3SpatialFiltersResolutions","find","maxSpatialFiltersResolution","min","hexagonResolution","getHexagonResolution","quadsResolution","BIAS","zoomOffset","log2","hexagonScaleFactor","latitudeScaleFactor","log","cos","PI","latitude","WidgetBaseSource","defaultProps","_getModelSource","_getSpatialFiltersResolution","referenceViewState","getCategories","filterOwner","spatialIndexReferenceViewState","operation","operationColumn","getModelSource","res","rows","getFeatures","_excluded2","dataType","featureIds","z","limit","tileResolution","getFormula","operationExp","_excluded3","getHistogram","_excluded4","ticks","fill","forEach","tick","getRange","_excluded5","getScatter","_excluded6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","y","getTable","_excluded7","sortBy","sortDirection","offset","_res$rows","_res$metadata$total","_res$metadata","_res$METADATA","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_excluded8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","_res$metadata2","categories","WidgetQuerySource","sqlQuery","WidgetTableSource","tableName","h3QuerySource","aggregationExp","q","widgetSource","h3TableSource","h3TilesetSource","rasterSource","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query"],"mappings":"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"}
1
+ {"version":3,"file":"api-client.modern.js","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/models/common.ts","../src/models/model.ts","../src/spatial-index.ts","../src/widget-sources/widget-base-source.ts","../src/widget-sources/widget-query-source.ts","../src/widget-sources/widget-table-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.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","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 {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 {\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 {assert} from './utils';\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// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\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 {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 ViewState,\n} from './types.js';\nimport {FilterLogicalOperator, Filter, SpatialFilter} from '../types.js';\nimport {getApplicableFilters, normalizeObjectKeys} 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 {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {getSpatialFiltersResolution} from '../spatial-index.js';\nimport {AggregationOptions} from '../sources/types.js';\n\nexport interface WidgetBaseSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\nexport type WidgetSource = WidgetBaseSource<WidgetBaseSourceProps>;\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 WidgetBaseSource<Props extends WidgetBaseSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetBaseSourceProps> = {\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 = {...WidgetBaseSource.defaultProps, ...props};\n }\n\n /**\n * Subclasses of {@link WidgetBaseSource} must implement this method, calling\n * {@link WidgetBaseSource.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 * CATEGORIES\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 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 /****************************************************************************\n * FEATURES\n */\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 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 /****************************************************************************\n * FORMULA\n */\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 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: {column: column ?? '*', operation, operationExp},\n opts: {abortController},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n /****************************************************************************\n * HISTOGRAM\n */\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 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 /****************************************************************************\n * RANGE\n */\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 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 /****************************************************************************\n * SCATTER\n */\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\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 /****************************************************************************\n * TABLE\n */\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 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 /****************************************************************************\n * TIME SERIES\n */\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 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 {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-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 WidgetBaseSource<\n LayerQuerySourceOptions & WidgetBaseSourceProps\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 {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-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 WidgetBaseSource<\n LayerTableSourceOptions & WidgetBaseSourceProps\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","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\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\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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';\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;\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 return baseSource<UrlParameters>(\n 'raster',\n options,\n urlParameters\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 {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\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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 {DEFAULT_TILE_RESOLUTION} 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 = 'geom',\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 {DEFAULT_TILE_RESOLUTION} 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 = 'geom',\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 {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\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\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","FILTER_TYPES","Set","Object","values","isFilterType","type","has","getApplicableFilters","owner","filters","applicableFilters","column","filter","isApplicable","normalizeObjectKeys","el","Array","isArray","map","value","entries","reduce","acc","key","toLowerCase","assert","condition","message","Error","InvalidColumnError","constructor","NAME","name","is","error","_error$message","includes","isEmptyObject","object","_","isObject","x","isPureObject","addFilter","removeFilter","_filter$type","clearFilters","keys","hasFilter","_filter$type2","getFilter","_filter$type3","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","args","part","endsWith","slice","join","buildV3Path","apiBaseUrl","version","endpoint","rest","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","CartoAPIError","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","replace","s","toUpperCase","DEFAULT_HEADERS","Accept","DEFAULT_REQUEST_CACHE","Map","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","_extends","v","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","get","url","createURLWithParameters","fetchPromise","fetch","method","body","JSON","stringify","jsonPromise","then","_response","json","ok","catch","delete","set","_localCache$cacheCont","_localCache$cacheCont2","cacheControl","parameterEntries","sort","a","b","headerEntries","baseUrlString","URL","searchParams","toString","param","SOURCE_DEFAULTS","clientId","format","baseSource","options","urlParameters","accessToken","optionalOptions","_objectWithoutPropertiesLoose","_excluded","mergedOptions","Authorization","connection","mapInstantiation","dataUrl","parseInt","boundaryQuerySource","columns","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","dealWithApiError","data","_data$error","_data$error2","column_name","msg","hint","makeCall","opts","isPost","_opts$abortController","signal","abortController","otherOptions","AVAILABLE_MODELS","V3","REQUEST_GET_MAX_URL_LENGTH","executeModel","props","model","params","apiVersion","filtersLogicalOperator","spatialDataType","spatialFiltersMode","spatialFiltersResolution","queryParams","spatialDataColumn","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","String","DEFAULT_TILE_SIZE","QUADBIN_ZOOM_MAX_OFFSET","getSpatialFiltersResolution","viewState","_source$dataResolutio","_source$aggregationRe","dataResolution","Number","MAX_VALUE","aggregationResLevel","aggregationResLevelOffset","Math","max","floor","currentZoomInt","ceil","zoom","_maxH3SpatialFiltersR","_maxH3SpatialFiltersR2","tileSize","maxResolutionForZoom","maxH3SpatialFiltersResolutions","find","maxSpatialFiltersResolution","min","hexagonResolution","getHexagonResolution","quadsResolution","BIAS","zoomOffset","log2","hexagonScaleFactor","latitudeScaleFactor","log","cos","PI","latitude","WidgetBaseSource","defaultProps","_getModelSource","_getSpatialFiltersResolution","referenceViewState","getCategories","filterOwner","spatialIndexReferenceViewState","operation","operationColumn","getModelSource","res","rows","getFeatures","_excluded2","dataType","featureIds","z","limit","tileResolution","getFormula","operationExp","_excluded3","getHistogram","_excluded4","ticks","fill","forEach","tick","getRange","_excluded5","getScatter","_excluded6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","y","getTable","_excluded7","sortBy","sortDirection","offset","_res$rows","_res$metadata$total","_res$metadata","_res$METADATA","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_excluded8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","_res$metadata2","categories","WidgetQuerySource","sqlQuery","WidgetTableSource","tableName","h3QuerySource","aggregationExp","q","widgetSource","h3TableSource","h3TilesetSource","rasterSource","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query"],"mappings":"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"}