@carto/api-client 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils.ts","../src/filters.ts","../src/geo.ts","../src/constants-internal.ts","../src/models/common.ts","../src/models/model.ts","../src/sources/widget-base-source.ts","../src/sources/widget-query-source.ts","../src/sources/widget-table-source.ts","../node_modules/@loaders.gl/loader-utils/dist/lib/env-utils/assert.js","../node_modules/@loaders.gl/loader-utils/dist/lib/env-utils/globals.js","../node_modules/@probe.gl/env/dist/lib/globals.js","../node_modules/@probe.gl/env/dist/lib/is-electron.js","../node_modules/@probe.gl/env/dist/lib/is-browser.js","../node_modules/@probe.gl/env/dist/index.js","../node_modules/@probe.gl/log/dist/utils/local-storage.js","../node_modules/@probe.gl/log/dist/utils/formatters.js","../node_modules/@probe.gl/log/dist/utils/color.js","../node_modules/@probe.gl/log/dist/utils/autobind.js","../node_modules/@probe.gl/log/dist/utils/assert.js","../node_modules/@probe.gl/log/dist/utils/hi-res-timestamp.js","../node_modules/@probe.gl/log/dist/log.js","../node_modules/@loaders.gl/core/dist/lib/loader-utils/option-utils.js","../node_modules/@loaders.gl/core/dist/lib/loader-utils/normalize-loader.js","../node_modules/@loaders.gl/core/dist/lib/api/register-loaders.js","../node_modules/@loaders.gl/images/dist/lib/utils/version.js","../node_modules/@loaders.gl/images/dist/lib/category-api/image-type.js","../node_modules/@loaders.gl/images/dist/lib/category-api/parsed-image-api.js","../node_modules/@loaders.gl/images/dist/lib/parsers/svg-utils.js","../node_modules/@loaders.gl/images/dist/lib/parsers/parse-to-image.js","../node_modules/@loaders.gl/images/dist/lib/parsers/parse-to-image-bitmap.js","../node_modules/@loaders.gl/images/dist/lib/category-api/parse-isobmff-binary.js","../node_modules/@loaders.gl/images/dist/lib/category-api/binary-image-api.js","../node_modules/@loaders.gl/images/dist/lib/parsers/parse-to-node-image.js","../node_modules/@loaders.gl/images/dist/lib/parsers/parse-image.js","../node_modules/@loaders.gl/images/dist/image-loader.js","../node_modules/@deck.gl/core/dist/utils/log.js","../node_modules/@deck.gl/core/dist/debug/loggers.js","../node_modules/@deck.gl/core/dist/debug/index.js","../node_modules/@deck.gl/core/dist/utils/json-loader.js","../node_modules/@deck.gl/core/dist/lib/init.js","../node_modules/@deck.gl/carto/dist/constants.js","../node_modules/@deck.gl/carto/dist/utils.js","../node_modules/@deck.gl/carto/dist/api/carto-api-error.js","../node_modules/@deck.gl/carto/dist/api/common.js","../node_modules/@deck.gl/carto/dist/api/endpoints.js","../node_modules/@deck.gl/carto/dist/api/request-with-parameters.js","../node_modules/@deck.gl/carto/dist/sources/base-source.js","../node_modules/@deck.gl/carto/dist/sources/boundary-query-source.js","../node_modules/@deck.gl/carto/dist/sources/boundary-table-source.js","../node_modules/@deck.gl/carto/dist/sources/h3-query-source.js","../node_modules/@deck.gl/carto/dist/sources/h3-table-source.js","../node_modules/@deck.gl/carto/dist/sources/h3-tileset-source.js","../node_modules/@deck.gl/carto/dist/sources/raster-source.js","../node_modules/@deck.gl/carto/dist/sources/quadbin-query-source.js","../node_modules/@deck.gl/carto/dist/sources/quadbin-table-source.js","../node_modules/@deck.gl/carto/dist/sources/quadbin-tileset-source.js","../node_modules/@deck.gl/carto/dist/sources/vector-query-source.js","../node_modules/@deck.gl/carto/dist/sources/vector-table-source.js","../node_modules/@deck.gl/carto/dist/sources/vector-tileset-source.js","../node_modules/@deck.gl/carto/dist/index.js","../src/sources/wrappers.ts"],"sourcesContent":["/**\n * @internal\n * @internalRemarks Source: @carto/react-core\n */\nlet client = 'carto-api-client';\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","/** Current version of @carto/api-client. */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\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","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\nimport {$TODO} from './types-internal.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] = filter as $TODO;\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) {\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","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 * DEFAULTS\n */\n\n/**\n * @internalRemarks Source: @carto/constants\n * @internal\n */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/**\n * @internalRemarks Source: @carto/constants\n * @internal\n */\nexport const DEFAULT_CLIENT = 'deck-gl-carto';\n\n/**\n * @internalRemarks Source: @carto/react-api\n * @internal\n */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/******************************************************************************\n * ENUMS\n */\n\n/**\n * @internal\n * @internalRemarks Source: @carto/constants\n */\nexport enum MapType {\n TABLE = 'table',\n QUERY = 'query',\n TILESET = 'tileset',\n}\n\n/**\n * @internal\n * @internalRemarks Source: @carto/constants\n */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n","import {$TODO} from '../types-internal.js';\nimport {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\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: $TODO;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (data.error?.includes('Missing columns')) {\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 {\n ApiVersion,\n DEFAULT_GEO_COLUMN,\n MapType,\n} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {$TODO} from '../types-internal.js';\nimport {assert} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\n\n/** @internalRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\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 geoColumn?: string;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\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 !== MapType.TILESET, 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {filters, filtersLogicalOperator = 'and', data} = source;\n const queryParameters = source.queryParameters\n ? JSON.stringify(source.queryParameters)\n : '';\n\n const queryParams: Record<string, string> = {\n type,\n client: clientId,\n source: data,\n params: JSON.stringify(params),\n queryParameters,\n filters: JSON.stringify(filters),\n filtersLogicalOperator,\n };\n\n // API supports multiple filters, we apply it only to geoColumn\n const spatialFilters = source.spatialFilter\n ? {\n [source.geoColumn ? source.geoColumn : DEFAULT_GEO_COLUMN]:\n source.spatialFilter,\n }\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = JSON.stringify(spatialFilters);\n }\n\n const urlWithSearchParams =\n url + '?' + new URLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n } else {\n // undo the JSON.stringify, @TODO find a better pattern\n queryParams.params = params as $TODO;\n queryParams.filters = filters as $TODO;\n queryParams.queryParameters = source.queryParameters as $TODO;\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters as $TODO;\n }\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","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {FilterLogicalOperator, Filter} from '../types.js';\nimport {SourceOptions} from '@deck.gl/carto';\nimport {getApplicableFilters, normalizeObjectKeys} from '../utils.js';\nimport {\n DEFAULT_API_BASE_URL,\n DEFAULT_GEO_COLUMN,\n ApiVersion,\n} from '../constants-internal.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\n\nexport interface WidgetBaseSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n geoColumn?: string;\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 geoColumn: DEFAULT_GEO_COLUMN,\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 geoColumn: props.geoColumn,\n };\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column, operation, operationColumn} = params;\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 * 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 abortController,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column, operation, ticks} = params;\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column} = params;\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\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: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {...this.getModelSource(filterOwner), spatialFilter},\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset,\n },\n opts: {abortController},\n }).then((res: TableModelResponse) => ({\n rows: normalizeObjectKeys(res.rows),\n totalCount: res.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 {filterOwner, abortController, spatialFilter, ...params} = 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 type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 '@deck.gl/carto';\nimport {MapType} from '../constants-internal.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\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: MapType.QUERY,\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '@deck.gl/carto';\nimport {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-source.js';\nimport {MapType} from '../constants-internal.js';\nimport {ModelSource} from '../models/model.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\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: MapType.TABLE,\n data: this.props.tableName,\n };\n }\n}\n","/**\n * Throws an `Error` with the optional `message` if `condition` is falsy\n * @note Replacement for the external assert method to reduce bundle size\n */\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","// Purpose: include this in your module to avoid\n// dependencies on micro modules like 'global' and 'is-browser';\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\n/** true if running in a browser */\nexport const isBrowser = \n// @ts-ignore process does not exist on browser\nBoolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\n/** true if running in a worker thread */\nexport const isWorker = typeof importScripts === 'function';\n// Extract node major version\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n/** Major Node version (as a number) */\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","// Do not name these variables the same as the global objects - will break bundling\nconst global_ = globalThis;\nconst window_ = globalThis;\nconst document_ = globalThis.document || {};\nconst process_ = globalThis.process || {};\nconst console_ = globalThis.console;\nconst navigator_ = globalThis.navigator || {};\nexport { global_ as global, global_ as self, window_ as window, document_ as document, process_ as process, console_ as console, navigator_ as navigator };\n","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport function isElectron(mockUserAgent) {\n // Renderer process\n // @ts-expect-error\n if (typeof window !== 'undefined' && window.process?.type === 'renderer') {\n return true;\n }\n // Main process\n // eslint-disable-next-line\n if (typeof process !== 'undefined' && Boolean(process.versions?.['electron'])) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent = typeof navigator !== 'undefined' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n return Boolean(userAgent && userAgent.indexOf('Electron') >= 0);\n}\n","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\nimport { isElectron } from \"./is-electron.js\";\n/** Check if in browser by duck-typing Node context */\nexport function isBrowser() {\n const isNode = \n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process?.browser;\n return !isNode || isElectron();\n}\n","// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof \"4.0.7\" !== 'undefined' ? \"4.0.7\" : 'untranspiled source';\n// ENVIRONMENT\nexport { self, window, global, document, process, console } from \"./lib/globals.js\";\nexport { isBrowser } from \"./lib/is-browser.js\";\nexport { getBrowser, isMobile } from \"./lib/get-browser.js\";\nexport { isElectron } from \"./lib/is-electron.js\";\n// ENVIRONMENT'S ASSERT IS 5-15KB, SO WE PROVIDE OUR OWN\nexport { assert } from \"./utils/assert.js\";\n// TODO - wish we could just export a constant\n// export const isBrowser = checkIfBrowser();\n","// probe.gl, MIT license\nfunction getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n }\n catch (e) {\n return null;\n }\n}\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n constructor(id, defaultConfig, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n getConfiguration() {\n return this.config;\n }\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","// probe.gl, MIT license\n/**\n * Format time\n */\nexport function formatTime(ms) {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n }\n else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n }\n else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n }\n else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\nexport function leftPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\nexport function rightPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\nexport function formatValue(v, options = {}) {\n const EPSILON = 1e-16;\n const { isInteger = false } = options;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, options);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n/** Helper to formatValue */\nfunction formatArrayValue(v, options) {\n const { maxElts = 16, size = 1 } = options;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], options);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n","import { isBrowser } from '@probe.gl/env';\nexport var COLOR;\n(function (COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\nconst BACKGROUND_INCREMENT = 10;\nfunction getColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n color = color.toUpperCase();\n return COLOR[color] || COLOR.WHITE;\n}\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n const colorCode = getColor(color);\n string = `\\u001b[${colorCode}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n const colorCode = getColor(background);\n string = `\\u001b[${colorCode + BACKGROUND_INCREMENT}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj, predefined = ['constructor']) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n const object = obj;\n for (const key of propNames) {\n const value = object[key];\n if (typeof value === 'function') {\n if (!predefined.find(name => key === name)) {\n object[key] = value.bind(obj);\n }\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","// probe.gl, MIT license\nimport { window, process, isBrowser } from '@probe.gl/env';\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser() && window.performance) {\n timestamp = window?.performance?.now?.();\n }\n else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n }\n else {\n timestamp = Date.now();\n }\n return timestamp;\n}\n","// probe.gl, MIT license\n/* eslint-disable no-console */\nimport { VERSION, isBrowser } from '@probe.gl/env';\nimport { LocalStorage } from \"./utils/local-storage.js\";\nimport { formatTime, leftPad } from \"./utils/formatters.js\";\nimport { addColor } from \"./utils/color.js\";\nimport { autobind } from \"./utils/autobind.js\";\nimport assert from \"./utils/assert.js\";\nimport { getHiResTimestamp } from \"./utils/hi-res-timestamp.js\";\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst DEFAULT_LOG_CONFIGURATION = {\n enabled: true,\n level: 0\n};\nfunction noop() { } // eslint-disable-line @typescript-eslint/no-empty-function\nconst cache = {};\nconst ONCE = { once: true };\n/** A console wrapper */\nexport class Log {\n constructor({ id } = { id: '' }) {\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n this.userData = {};\n // TODO - fix support from throttling groups\n this.LOG_THROTTLE_TIMEOUT = 0; // Time before throttled messages are logged again\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_LOG_CONFIGURATION);\n this.timeStamp(`${this.id} started`);\n autobind(this);\n Object.seal(this);\n }\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n get level() {\n return this.getLevel();\n }\n isEnabled() {\n return this._storage.config.enabled;\n }\n getLevel() {\n return this._storage.config.level;\n }\n /** @return milliseconds, with fractions */\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n /** @return milliseconds, with fractions */\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n /** @deprecated use logLevel */\n set priority(newPriority) {\n this.level = newPriority;\n }\n /** @deprecated use logLevel */\n get priority() {\n return this.level;\n }\n /** @deprecated use logLevel */\n getPriority() {\n return this.level;\n }\n // Configure\n enable(enabled = true) {\n this._storage.setConfiguration({ enabled });\n return this;\n }\n setLevel(level) {\n this._storage.setConfiguration({ level });\n return this;\n }\n /** return the current status of the setting */\n get(setting) {\n return this._storage.config[setting];\n }\n // update the status of the setting\n set(setting, value) {\n this._storage.setConfiguration({ [setting]: value });\n }\n /** Logs the current settings as a table */\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n }\n else {\n console.log(this._storage.config);\n }\n }\n // Unconditional logging\n assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n }\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n /** Print a deprecation warning */\n deprecated(oldUsage, newUsage) {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n /** Print a removal warning */\n removed(oldUsage, newUsage) {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n }\n /** Logs an object as a table */\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, (columns && [columns]), {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n group(logLevel, message, opts = { collapsed: false }) {\n const options = normalizeArguments({ logLevel, message, opts });\n const { collapsed } = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, { collapsed: true }));\n }\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n // EXPERIMENTAL\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n try {\n func();\n }\n finally {\n this.groupEnd(logLevel)();\n }\n }\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n // PRIVATE METHODS\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({ logLevel, message, args, opts });\n method = method || opts.method;\n assert(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n const tag = opts.tag || opts.message;\n if (opts.once && tag) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n }\n else {\n return noop;\n }\n }\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n message = decorateMessage(this.id, opts.message, opts);\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\nLog.VERSION = VERSION;\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts) {\n const { logLevel, message } = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) { }\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n case 'object':\n Object.assign(opts, logLevel);\n break;\n default:\n }\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, { args }, opts.opts);\n}\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n","// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { registerJSModules } from '@loaders.gl/loader-utils';\nimport { isPureObject, isObject } from \"../../javascript-utils/is-type.js\";\nimport { probeLog, NullLog } from \"./loggers.js\";\nimport { DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS } from \"./option-defaults.js\";\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState() {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const { loaders } = globalThis;\n // Add _state object to keep separate from modules added to globalThis.loaders\n if (!loaders._state) {\n loaders._state = {};\n }\n return loaders._state;\n}\n/**\n * Store global loader options on the global object to increase chances of cross loaders-version interoperability\n * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n * @returns global loader options merged with default loader options\n */\nexport function getGlobalLoaderOptions() {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS };\n return state.globalOptions;\n}\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options) {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n // @ts-expect-error First param looks incorrect\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n // Make sure any new modules are registered\n registerJSModules(options.modules);\n}\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n// VALIDATE OPTIONS\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options, loaders) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = ((options && options[loader.id]) || {});\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions = (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n // Validate loader specific options\n // @ts-ignore\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // <loader>.workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(`${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`)();\n }\n else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(`${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`)();\n }\n }\n }\n}\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\nfunction normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n const mergedOptions = { ...loaderDefaultOptions };\n addUrlOptions(mergedOptions, url);\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n return mergedOptions;\n}\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n }\n else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n/**\n * Harvest information from the url\n * @deprecated This is mainly there to support a hack in the GLTFLoader\n * TODO - baseUri should be a directory, i.e. remove file component from baseUri\n * TODO - extract extension?\n * TODO - extract query parameters?\n * TODO - should these be injected on context instead of options?\n */\nfunction addUrlOptions(options, url) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from '@loaders.gl/loader-utils';\nexport function isLoaderObject(loader) {\n if (!loader) {\n return false;\n }\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n const hasExtensions = Array.isArray(loader?.extensions);\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n return hasExtensions;\n}\nexport function normalizeLoader(loader) {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: { ...loader.options, ...options }\n };\n }\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n if (!loader.text) {\n loader.binary = true;\n }\n return loader;\n}\n","// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { normalizeLoader } from \"../loader-utils/normalize-loader.js\";\nimport { getGlobalLoaderState } from \"../loader-utils/option-utils.js\";\n/**\n * Store global registered loaders on the global object to increase chances of cross loaders-version interoperability\n * This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n */\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n/** Register a list of global loaders */\nexport function registerLoaders(loaders) {\n const loaderRegistry = getGlobalLoaderRegistry();\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find((registeredLoader) => normalizedLoader === registeredLoader)) {\n // add to the beginning of the loaderRegistry, so the last registeredLoader get picked\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\nexport function getRegisteredLoaders() {\n return getGlobalLoaderRegistry();\n}\n/** @deprecated For testing only */\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n","// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof \"4.2.3\" !== 'undefined' ? \"4.2.3\" : 'latest';\n","import { isBrowser } from '@loaders.gl/loader-utils';\n// @ts-ignore TS2339: Property does not exist on type\nconst parseImageNode = globalThis.loaders?.parseImageNode;\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);\nconst DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;\n/**\n * Checks if a loaders.gl image type is supported\n * @param type image type string\n */\nexport function isImageTypeSupported(type) {\n switch (type) {\n case 'auto':\n // Should only ever be false in Node.js, if polyfills have not been installed...\n return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'image':\n return IMAGE_SUPPORTED;\n case 'data':\n return DATA_SUPPORTED;\n default:\n throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);\n }\n}\n/**\n * Returns the \"most performant\" supported image type on this platform\n * @returns image type string\n */\nexport function getDefaultImageType() {\n if (IMAGE_BITMAP_SUPPORTED) {\n return 'imagebitmap';\n }\n if (IMAGE_SUPPORTED) {\n return 'image';\n }\n if (DATA_SUPPORTED) {\n return 'data';\n }\n // This should only happen in Node.js\n throw new Error('Install \\'@loaders.gl/polyfills\\' to parse images under Node.js');\n}\n","export function isImage(image) {\n return Boolean(getImageTypeOrNull(image));\n}\nexport function deleteImage(image) {\n switch (getImageType(image)) {\n case 'imagebitmap':\n image.close();\n break;\n default:\n // Nothing to do for images and image data objects\n }\n}\nexport function getImageType(image) {\n const format = getImageTypeOrNull(image);\n if (!format) {\n throw new Error('Not an image');\n }\n return format;\n}\nexport function getImageSize(image) {\n return getImageData(image);\n}\nexport function getImageData(image) {\n switch (getImageType(image)) {\n case 'data':\n return image;\n case 'image':\n case 'imagebitmap':\n // Extract the image data from the image via a canvas\n const canvas = document.createElement('canvas');\n // TODO - reuse the canvas?\n const context = canvas.getContext('2d');\n if (!context) {\n throw new Error('getImageData');\n }\n // @ts-ignore\n canvas.width = image.width;\n // @ts-ignore\n canvas.height = image.height;\n // @ts-ignore\n context.drawImage(image, 0, 0);\n // @ts-ignore\n return context.getImageData(0, 0, image.width, image.height);\n default:\n throw new Error('getImageData');\n }\n}\n// PRIVATE\n// eslint-disable-next-line complexity\nfunction getImageTypeOrNull(image) {\n if (typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n return 'imagebitmap';\n }\n if (typeof Image !== 'undefined' && image instanceof Image) {\n return 'image';\n }\n if (image && typeof image === 'object' && image.data && image.width && image.height) {\n return 'data';\n }\n return null;\n}\n","// SVG parsing has limitations, e.g:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=606319\nconst SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\nexport function isSVG(url) {\n return url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url));\n}\nexport function getBlobOrSVGDataUrl(arrayBuffer, url) {\n if (isSVG(url)) {\n // Prepare a properly tagged data URL, and load using normal mechanism\n const textDecoder = new TextDecoder();\n let xmlText = textDecoder.decode(arrayBuffer);\n // TODO Escape in browser to support e.g. Chinese characters\n try {\n if (typeof unescape === 'function' && typeof encodeURIComponent === 'function') {\n xmlText = unescape(encodeURIComponent(xmlText));\n }\n }\n catch (error) {\n throw new Error(error.message);\n }\n // base64 encoding is safer. utf-8 fails in some browsers\n const src = `data:image/svg+xml;base64,${btoa(xmlText)}`;\n return src;\n }\n return getBlob(arrayBuffer, url);\n}\nexport function getBlob(arrayBuffer, url) {\n if (isSVG(url)) {\n // https://bugs.chromium.org/p/chromium/issues/detail?id=606319\n // return new Blob([new Uint8Array(arrayBuffer)], {type: 'image/svg+xml'});\n throw new Error('SVG cannot be parsed directly to imagebitmap');\n }\n // TODO - how to determine mime type? Param? Sniff here?\n return new Blob([new Uint8Array(arrayBuffer)]); // MIME type not needed?\n}\n","import { getBlobOrSVGDataUrl } from \"./svg-utils.js\";\n// Parses html image from array buffer\nexport async function parseToImage(arrayBuffer, options, url) {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);\n const URL = self.URL || self.webkitURL;\n const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n try {\n return await loadToImage(objectUrl || blobOrDataUrl, options);\n }\n finally {\n if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n }\n}\nexport async function loadToImage(url, options) {\n const image = new Image();\n image.src = url;\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = (error) => {\n const message = error instanceof Error ? error.message : 'error';\n reject(new Error(message));\n };\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","import { isSVG, getBlob } from \"./svg-utils.js\";\nimport { parseToImage } from \"./parse-to-image.js\";\nconst EMPTY_OBJECT = {};\nlet imagebitmapOptionsSupported = true;\n/**\n * Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n * ImageBitmaps are supported on worker threads, but not supported on Edge, IE11 and Safari\n * https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n *\n * TODO - createImageBitmap supports source rect (5 param overload), pass through?\n */\nexport async function parseToImageBitmap(arrayBuffer, options, url) {\n let blob;\n // Cannot parse SVG directly to ImageBitmap, parse to Image first\n if (isSVG(url)) {\n // Note: this only works on main thread\n const image = await parseToImage(arrayBuffer, options, url);\n blob = image;\n }\n else {\n // Create blob from the array buffer\n blob = getBlob(arrayBuffer, url);\n }\n const imagebitmapOptions = options && options.imagebitmap;\n return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\n/**\n * Safely creates an imageBitmap with options\n * *\n * Firefox crashes if imagebitmapOptions is supplied\n * Avoid supplying if not provided or supported, remember if not supported\n */\nasync function safeCreateImageBitmap(blob, imagebitmapOptions = null) {\n if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n imagebitmapOptions = null;\n }\n if (imagebitmapOptions) {\n try {\n // @ts-ignore Options\n return await createImageBitmap(blob, imagebitmapOptions);\n }\n catch (error) {\n console.warn(error); // eslint-disable-line\n imagebitmapOptionsSupported = false;\n }\n }\n return await createImageBitmap(blob);\n}\nfunction isEmptyObject(object) {\n // @ts-ignore\n for (const key in object || EMPTY_OBJECT) {\n return false;\n }\n return true;\n}\n","// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// code adapted from https://github.com/sindresorhus/file-type under MIT license\n/**\n * Tests if a buffer is in ISO base media file format (ISOBMFF) @see https://en.wikipedia.org/wiki/ISO_base_media_file_format\n * (ISOBMFF is a media container standard based on the Apple QuickTime container format)\n */\nexport function getISOBMFFMediaType(buffer) {\n // Almost all ISO base media files start with `ftyp` box. (It's not required to be first, but it's recommended to be.)\n if (!checkString(buffer, 'ftyp', 4)) {\n return null;\n }\n // Extra check: test for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n if ((buffer[8] & 0x60) === 0x00) {\n return null;\n }\n // `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n return decodeMajorBrand(buffer);\n}\n/**\n * brands explained @see https://github.com/strukturag/libheif/issues/83\n * code adapted from @see https://github.com/sindresorhus/file-type/blob/main/core.js#L489-L492\n */\nexport function decodeMajorBrand(buffer) {\n const brandMajor = getUTF8String(buffer, 8, 12).replace('\\0', ' ').trim();\n switch (brandMajor) {\n case 'avif':\n case 'avis':\n return { extension: 'avif', mimeType: 'image/avif' };\n default:\n return null;\n }\n // We don't need these now, but they are easy to add\n // case 'mif1':\n // return {extension: 'heic', mimeType: 'image/heif'};\n // case 'msf1':\n // return {extension: 'heic', mimeType: 'image/heif-sequence'};\n // case 'heic':\n // case 'heix':\n // return {extension: 'heic', mimeType: 'image/heic'};\n // case 'hevc':\n // case 'hevx':\n // return {extension: 'heic', mimeType: 'image/heic-sequence'};\n // case 'qt':\n // return {ext: 'mov', mime: 'video/quicktime'};\n // case 'M4V':\n // case 'M4VH':\n // case 'M4VP':\n // return {ext: 'm4v', mime: 'video/x-m4v'};\n // case 'M4P':\n // return {ext: 'm4p', mime: 'video/mp4'};\n // case 'M4B':\n // return {ext: 'm4b', mime: 'audio/mp4'};\n // case 'M4A':\n // return {ext: 'm4a', mime: 'audio/x-m4a'};\n // case 'F4V':\n // return {ext: 'f4v', mime: 'video/mp4'};\n // case 'F4P':\n // return {ext: 'f4p', mime: 'video/mp4'};\n // case 'F4A':\n // return {ext: 'f4a', mime: 'audio/mp4'};\n // case 'F4B':\n // return {ext: 'f4b', mime: 'audio/mp4'};\n // case 'crx':\n // return {ext: 'cr3', mime: 'image/x-canon-cr3'};\n // default:\n // if (brandMajor.startsWith('3g')) {\n // if (brandMajor.startsWith('3g2')) {\n // return {ext: '3g2', mime: 'video/3gpp2'};\n // }\n // return {ext: '3gp', mime: 'video/3gpp'};\n // }\n // return {ext: 'mp4', mime: 'video/mp4'};\n}\n/** Interpret a chunk of bytes as a UTF8 string */\nfunction getUTF8String(array, start, end) {\n return String.fromCharCode(...array.slice(start, end));\n}\nfunction stringToBytes(string) {\n return [...string].map((character) => character.charCodeAt(0));\n}\nfunction checkString(buffer, header, offset = 0) {\n const headerBytes = stringToBytes(header);\n for (let i = 0; i < headerBytes.length; ++i) {\n if (headerBytes[i] !== buffer[i + offset]) {\n return false;\n }\n }\n return true;\n}\n","// Attributions\n// * Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\nimport { getISOBMFFMediaType } from \"./parse-isobmff-binary.js\";\nconst BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\n/**\n * Extracts `{mimeType, width and height}` from a memory buffer containing a known image format\n * Currently supports `image/png`, `image/jpeg`, `image/bmp` and `image/gif`.\n * @param binaryData: DataView | ArrayBuffer image file memory to parse\n * @returns metadata or null if memory is not a valid image file format layout.\n */\nexport function getBinaryImageMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n return (getPngMetadata(dataView) ||\n getJpegMetadata(dataView) ||\n getGifMetadata(dataView) ||\n getBmpMetadata(dataView) ||\n getISOBMFFMetadata(dataView));\n}\n// ISOBMFF\nfunction getISOBMFFMetadata(binaryData) {\n const buffer = new Uint8Array(binaryData instanceof DataView ? binaryData.buffer : binaryData);\n const mediaType = getISOBMFFMediaType(buffer);\n if (!mediaType) {\n return null;\n }\n return {\n mimeType: mediaType.mimeType,\n // TODO - decode width and height\n width: 0,\n height: 0\n };\n}\n// PNG\nfunction getPngMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check file contains the first 4 bytes of the PNG signature.\n const isPng = dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n if (!isPng) {\n return null;\n }\n // Extract size from a binary PNG file\n return {\n mimeType: 'image/png',\n width: dataView.getUint32(16, BIG_ENDIAN),\n height: dataView.getUint32(20, BIG_ENDIAN)\n };\n}\n// GIF\n// Extract size from a binary GIF file\n// TODO: GIF is not this simple\nfunction getGifMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check first 4 bytes of the GIF signature (\"GIF8\").\n const isGif = dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n if (!isGif) {\n return null;\n }\n // GIF is little endian.\n return {\n mimeType: 'image/gif',\n width: dataView.getUint16(6, LITTLE_ENDIAN),\n height: dataView.getUint16(8, LITTLE_ENDIAN)\n };\n}\n// BMP\n// TODO: BMP is not this simple\nexport function getBmpMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check magic number is valid (first 2 characters should be \"BM\").\n // The mandatory bitmap file header is 14 bytes long.\n const isBmp = dataView.byteLength >= 14 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0x424d &&\n dataView.getUint32(2, LITTLE_ENDIAN) === dataView.byteLength;\n if (!isBmp) {\n return null;\n }\n // BMP is little endian.\n return {\n mimeType: 'image/bmp',\n width: dataView.getUint32(18, LITTLE_ENDIAN),\n height: dataView.getUint32(22, LITTLE_ENDIAN)\n };\n}\n// JPEG\n// Extract width and height from a binary JPEG file\nfunction getJpegMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check file contains the JPEG \"start of image\" (SOI) marker\n // followed by another marker.\n const isJpeg = dataView.byteLength >= 3 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 &&\n dataView.getUint8(2) === 0xff;\n if (!isJpeg) {\n return null;\n }\n const { tableMarkers, sofMarkers } = getJpegMarkers();\n // Exclude the two byte SOI marker.\n let i = 2;\n while (i + 9 < dataView.byteLength) {\n const marker = dataView.getUint16(i, BIG_ENDIAN);\n // The frame that contains the width and height of the JPEG image.\n if (sofMarkers.has(marker)) {\n return {\n mimeType: 'image/jpeg',\n height: dataView.getUint16(i + 5, BIG_ENDIAN), // Number of lines\n width: dataView.getUint16(i + 7, BIG_ENDIAN) // Number of pixels per line\n };\n }\n // Miscellaneous tables/data preceding the frame header.\n if (!tableMarkers.has(marker)) {\n return null;\n }\n // Length includes size of length parameter but not the two byte header.\n i += 2;\n i += dataView.getUint16(i, BIG_ENDIAN);\n }\n return null;\n}\nfunction getJpegMarkers() {\n // Tables/misc header markers.\n // DQT, DHT, DAC, DRI, COM, APP_n\n const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n for (let i = 0xffe0; i < 0xfff0; ++i) {\n tableMarkers.add(i);\n }\n // SOF markers and DHP marker.\n // These markers are after tables/misc data.\n const sofMarkers = new Set([\n 0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc9, 0xffca, 0xffcb, 0xffcd, 0xffce,\n 0xffcf, 0xffde\n ]);\n return { tableMarkers, sofMarkers };\n}\n// TODO - move into image module?\nfunction toDataView(data) {\n if (data instanceof DataView) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n return new DataView(data.buffer);\n }\n // TODO: make these functions work for Node.js buffers?\n // if (bufferToArrayBuffer) {\n // data = bufferToArrayBuffer(data);\n // }\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n }\n throw new Error('toDataView');\n}\n","import { assert } from '@loaders.gl/loader-utils';\nimport { getBinaryImageMetadata } from \"../category-api/binary-image-api.js\";\n// Use polyfills if installed to parsed image using get-pixels\nexport async function parseToNodeImage(arrayBuffer, options) {\n const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};\n // @ts-ignore\n const parseImageNode = globalThis.loaders?.parseImageNode;\n assert(parseImageNode); // '@loaders.gl/polyfills not installed'\n // @ts-expect-error TODO should we throw error in this case?\n return await parseImageNode(arrayBuffer, mimeType);\n}\n","import { assert } from '@loaders.gl/loader-utils';\nimport { isImageTypeSupported, getDefaultImageType } from \"../category-api/image-type.js\";\nimport { getImageData } from \"../category-api/parsed-image-api.js\";\nimport { parseToImage } from \"./parse-to-image.js\";\nimport { parseToImageBitmap } from \"./parse-to-image-bitmap.js\";\nimport { parseToNodeImage } from \"./parse-to-node-image.js\";\n// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)\n// eslint-disable-next-line complexity\nexport async function parseImage(arrayBuffer, options, context) {\n options = options || {};\n const imageOptions = options.image || {};\n // The user can request a specific output format via `options.image.type`\n const imageType = imageOptions.type || 'auto';\n const { url } = context || {};\n // Note: For options.image.type === `data`, we may still need to load as `image` or `imagebitmap`\n const loadType = getLoadableImageType(imageType);\n let image;\n switch (loadType) {\n case 'imagebitmap':\n image = await parseToImageBitmap(arrayBuffer, options, url);\n break;\n case 'image':\n image = await parseToImage(arrayBuffer, options, url);\n break;\n case 'data':\n // Node.js loads imagedata directly\n image = await parseToNodeImage(arrayBuffer, options);\n break;\n default:\n assert(false);\n }\n // Browser: if options.image.type === 'data', we can now extract data from the loaded image\n if (imageType === 'data') {\n image = getImageData(image);\n }\n return image;\n}\n// Get a loadable image type from image type\nfunction getLoadableImageType(type) {\n switch (type) {\n case 'auto':\n case 'data':\n // Browser: For image data we need still need to load using an image format\n // Node: the default image type is `data`.\n return getDefaultImageType();\n default:\n // Throw an error if not supported\n isImageTypeSupported(type);\n return type;\n }\n}\n","// import type { ImageType } from '@loaders.gl/schema';\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { parseImage } from \"./lib/parsers/parse-image.js\";\nimport { getBinaryImageMetadata } from \"./lib/category-api/binary-image-api.js\";\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/vnd.microsoft.icon',\n 'image/svg+xml'\n];\nconst DEFAULT_IMAGE_LOADER_OPTIONS = {\n image: {\n type: 'auto',\n decode: true // if format is HTML\n }\n // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor\n};\n/**\n * Loads a platform-specific image type\n * Note: This type can be used as input data to WebGL texture creation\n */\nexport const ImageLoader = {\n dataType: null,\n batchType: null,\n id: 'image',\n module: 'images',\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n // TODO: byteOffset, byteLength;\n tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\n","import { Log } from '@probe.gl/log';\nconst defaultLogger = new Log({ id: 'deck' });\nexport default defaultLogger;\n","const logState = {\n attributeUpdateStart: -1,\n attributeManagerUpdateStart: -1,\n attributeUpdateMessages: []\n};\nconst LOG_LEVEL_MAJOR_UPDATE = 1; // Events with direct perf impact\nconst LOG_LEVEL_MINOR_UPDATE = 2; // Events that may affect perf\nconst LOG_LEVEL_UPDATE_DETAIL = 3;\nconst LOG_LEVEL_INFO = 4;\nconst LOG_LEVEL_DRAW = 2;\nexport const getLoggers = (log) => ({\n /* Layer events */\n 'layer.changeFlag': (layer, key, flags) => {\n log.log(LOG_LEVEL_UPDATE_DETAIL, `${layer.id} ${key}: `, flags[key])();\n },\n 'layer.initialize': layer => {\n log.log(LOG_LEVEL_MAJOR_UPDATE, `Initializing ${layer}`)();\n },\n 'layer.update': (layer, needsUpdate) => {\n if (needsUpdate) {\n const flags = layer.getChangeFlags();\n log.log(LOG_LEVEL_MINOR_UPDATE, `Updating ${layer} because: ${Object.keys(flags)\n .filter(key => flags[key])\n .join(', ')}`)();\n }\n else {\n log.log(LOG_LEVEL_INFO, `${layer} does not need update`)();\n }\n },\n 'layer.matched': (layer, changed) => {\n if (changed) {\n log.log(LOG_LEVEL_INFO, `Matched ${layer}, state transfered`)();\n }\n },\n 'layer.finalize': layer => {\n log.log(LOG_LEVEL_MAJOR_UPDATE, `Finalizing ${layer}`)();\n },\n /* CompositeLayer events */\n 'compositeLayer.renderLayers': (layer, updated, subLayers) => {\n if (updated) {\n log.log(LOG_LEVEL_MINOR_UPDATE, `Composite layer rendered new subLayers ${layer}`, subLayers)();\n }\n else {\n log.log(LOG_LEVEL_INFO, `Composite layer reused subLayers ${layer}`, subLayers)();\n }\n },\n /* LayerManager events */\n 'layerManager.setLayers': (layerManager, updated, layers) => {\n if (updated) {\n log.log(LOG_LEVEL_MINOR_UPDATE, `Updating ${layers.length} deck layers`)();\n }\n },\n 'layerManager.activateViewport': (layerManager, viewport) => {\n log.log(LOG_LEVEL_UPDATE_DETAIL, 'Viewport changed', viewport)();\n },\n /* AttributeManager events */\n 'attributeManager.invalidate': (attributeManager, trigger, attributeNames) => {\n log.log(LOG_LEVEL_MAJOR_UPDATE, attributeNames\n ? `invalidated attributes ${attributeNames} (${trigger}) for ${attributeManager.id}`\n : `invalidated all attributes for ${attributeManager.id}`)();\n },\n 'attributeManager.updateStart': attributeManager => {\n logState.attributeUpdateMessages.length = 0;\n logState.attributeManagerUpdateStart = Date.now();\n },\n 'attributeManager.updateEnd': (attributeManager, numInstances) => {\n const timeMs = Math.round(Date.now() - logState.attributeManagerUpdateStart);\n log.groupCollapsed(LOG_LEVEL_MINOR_UPDATE, `Updated attributes for ${numInstances} instances in ${attributeManager.id} in ${timeMs}ms`)();\n for (const updateMessage of logState.attributeUpdateMessages) {\n log.log(LOG_LEVEL_UPDATE_DETAIL, updateMessage)();\n }\n log.groupEnd(LOG_LEVEL_MINOR_UPDATE)();\n },\n /* Attribute events */\n 'attribute.updateStart': attribute => {\n logState.attributeUpdateStart = Date.now();\n },\n 'attribute.allocate': (attribute, numInstances) => {\n const message = `${attribute.id} allocated ${numInstances}`;\n logState.attributeUpdateMessages.push(message);\n },\n 'attribute.updateEnd': (attribute, numInstances) => {\n const timeMs = Math.round(Date.now() - logState.attributeUpdateStart);\n const message = `${attribute.id} updated ${numInstances} in ${timeMs}ms`;\n logState.attributeUpdateMessages.push(message);\n },\n /* Render events */\n 'deckRenderer.renderLayers': (deckRenderer, renderStats, opts) => {\n const { pass, redrawReason, stats } = opts;\n for (const status of renderStats) {\n const { totalCount, visibleCount, compositeCount, pickableCount } = status;\n const primitiveCount = totalCount - compositeCount;\n const hiddenCount = primitiveCount - visibleCount;\n log.log(LOG_LEVEL_DRAW, `RENDER #${deckRenderer.renderCount} \\\n ${visibleCount} (of ${totalCount} layers) to ${pass} because ${redrawReason} \\\n (${hiddenCount} hidden, ${compositeCount} composite ${pickableCount} pickable)`)();\n if (stats) {\n stats.get('Redraw Layers').add(visibleCount);\n }\n }\n }\n});\n","import deckLog from \"../utils/log.js\";\nimport { getLoggers } from \"./loggers.js\";\n/* debug utility */\nlet loggers = {};\n// Conditionally load default loggers in development mode\n// eslint-disable-next-line\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\nexport function register(handlers) {\n loggers = handlers;\n}\nexport default function debug(eventType, arg1, arg2, arg3) {\n if (deckLog.level > 0 && loggers[eventType]) {\n // Not using rest parameters to defeat perf hit from array construction\n loggers[eventType].call(null, arg1, arg2, arg3);\n }\n}\n","function isJSON(text) {\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n return (firstChar === '{' && lastChar === '}') || (firstChar === '[' && lastChar === ']');\n}\n// A light weight version instead of @loaders.gl/json (stream processing etc.)\nexport default {\n dataType: null,\n batchType: null,\n id: 'JSON',\n name: 'JSON',\n module: '',\n version: '',\n options: {},\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json', 'application/geo+json'],\n testText: isJSON,\n parseTextSync: JSON.parse\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport { registerLoaders } from '@loaders.gl/core';\nimport { ImageLoader } from '@loaders.gl/images';\nimport log from \"../utils/log.js\";\nimport { register } from \"../debug/index.js\";\nimport jsonLoader from \"../utils/json-loader.js\";\nfunction checkVersion() {\n // Version detection using typescript plugin.\n // Fallback for tests and SSR since global variable is defined by esbuild.\n const version = typeof \"9.0.30\" !== 'undefined'\n ? \"9.0.30\" : globalThis.DECK_VERSION || 'untranspiled source';\n // Note: a `deck` object not created by deck.gl may exist in the global scope\n const existingVersion = globalThis.deck && globalThis.deck.VERSION;\n if (existingVersion && existingVersion !== version) {\n throw new Error(`deck.gl - multiple versions detected: ${existingVersion} vs ${version}`);\n }\n if (!existingVersion) {\n log.log(1, `deck.gl ${version}`)();\n globalThis.deck = {\n ...globalThis.deck,\n VERSION: version,\n version,\n log,\n // experimental\n _registerLoggers: register\n };\n registerLoaders([\n jsonLoader,\n // @ts-expect-error non-standard Loader format\n [ImageLoader, { imagebitmap: { premultiplyAlpha: 'none' } }]\n ]);\n }\n return version;\n}\nexport const VERSION = checkVersion();\n","export const DEFAULT_TILE_SIZE = 512;\nexport const DEFAULT_TILE_RESOLUTION = 0.5;\nexport const DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\nexport const DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\n","import { log } from '@deck.gl/core';\nexport function assert(condition, message) {\n log.assert(condition, message);\n}\n// Returns a Proxy object that allows accessing binary data\n// as if it were JSON properties\nexport function createBinaryProxy(data, index) {\n const { properties, numericProps } = data;\n return new Proxy(properties[index] || {}, {\n get(target, property) {\n if (property in numericProps) {\n return numericProps[property].value[index];\n }\n return target[property];\n },\n has(target, property) {\n return property in numericProps || property in target;\n },\n ownKeys(target) {\n return [...Object.keys(numericProps), ...Reflect.ownKeys(target)];\n },\n getOwnPropertyDescriptor(target, prop) {\n return { enumerable: true, configurable: true };\n }\n });\n}\nexport function getWorkerUrl(id, version) {\n // For local testing `yarn build-workers` and then host `modules/carto/dist/`\n // return `http://localhost:8081/dist/${id}-worker.js`;\n return `https://unpkg.com/@deck.gl/carto@${version}/dist/${id}-worker.js`;\n}\nexport function scaleIdentity() {\n let unknown;\n function scale(x) {\n return x === null ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = d => d;\n scale.unknown = u => {\n if (u) {\n unknown = u;\n }\n return unknown;\n };\n scale.copy = () => {\n const scaleCopy = scaleIdentity();\n scaleCopy.unknown(unknown);\n return scaleCopy;\n };\n return scale;\n}\nexport const isObject = x => x !== null && typeof x === 'object';\nexport const isPureObject = x => isObject(x) && x.constructor === {}.constructor;\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 constructor(error, errorContext, response, responseJson) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n }\n else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n }\n else if (response.status === 404) {\n responseString += 'Not found';\n }\n else {\n responseString += 'Error';\n }\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType')\n continue; // eslint-disable-line no-continue\n message += `\\n${formatErrorKey(key)}: ${errorContext[key]}`;\n }\n message += '\\n';\n super(message);\n this.name = 'CartoAPIError';\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());\n}\n","export const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\nexport const DEFAULT_CLIENT = 'deck-gl-carto';\nexport const V3_MINOR_VERSION = '3.4';\n// Fastly default limit is 8192; leave some padding.\nexport const DEFAULT_MAX_LENGTH_URL = 7000;\n","function joinPath(...args) {\n return args.map(part => (part.endsWith('/') ? part.slice(0, -1) : part)).join('/');\n}\nfunction buildV3Path(apiBaseUrl, version, endpoint, ...rest) {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\nexport function buildPublicMapUrl({ apiBaseUrl, cartoMapId }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\nexport function buildStatsUrl({ attribute, apiBaseUrl, connectionName, source, type }) {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n // type === 'table'\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, source, attribute);\n}\nexport function buildSourceUrl({ apiBaseUrl, connectionName, endpoint }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\nexport function buildQueryUrl({ apiBaseUrl, connectionName }) {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n","import { VERSION } from '@deck.gl/core';\nimport { isPureObject } from \"../utils.js\";\nimport { CartoAPIError } from \"./carto-api-error.js\";\nimport { DEFAULT_MAX_LENGTH_URL, V3_MINOR_VERSION } from \"./common.js\";\n/**\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 */\nconst DEFAULT_PARAMETERS = {\n v: V3_MINOR_VERSION,\n deckglVersion: VERSION\n};\nconst DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n};\nconst REQUEST_CACHE = new Map();\nexport async function requestWithParameters({ baseUrl, parameters = {}, headers: customHeaders = {}, errorContext, maxLengthURL = DEFAULT_MAX_LENGTH_URL }) {\n parameters = { ...DEFAULT_PARAMETERS, ...parameters };\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n if (REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = { ...DEFAULT_HEADERS, ...customHeaders };\n /* global fetch */\n const fetchPromise = url.length > maxLengthURL\n ? fetch(baseUrl, { method: 'POST', body: JSON.stringify(parameters), headers })\n : fetch(url, { headers });\n let response;\n let responseJson;\n const jsonPromise = fetchPromise\n .then((_response) => {\n response = _response;\n return response.json();\n })\n .then((json) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n })\n .catch((error) => {\n REQUEST_CACHE.delete(key);\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n REQUEST_CACHE.set(key, jsonPromise);\n return jsonPromise;\n}\nfunction createCacheKey(baseUrl, parameters, headers) {\n const parameterEntries = Object.entries(parameters).sort(([a], [b]) => (a > b ? 1 : -1));\n const headerEntries = Object.entries(headers).sort(([a], [b]) => (a > b ? 1 : -1));\n return JSON.stringify({ baseUrl, parameters: parameterEntries, headers: headerEntries });\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(baseUrlString, parameters) {\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 }\n else {\n baseUrl.searchParams.set(key, value.toString());\n }\n }\n return baseUrl.toString();\n}\n/**\n * Deletes query string parameters from a URL.\n */\nfunction excludeURLParameters(baseUrlString, parameters) {\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","/* eslint-disable camelcase */\nimport { DEFAULT_API_BASE_URL, DEFAULT_CLIENT, DEFAULT_MAX_LENGTH_URL } from \"../api/common.js\";\nimport { buildSourceUrl } from \"../api/endpoints.js\";\nimport { requestWithParameters } from \"../api/request-with-parameters.js\";\nexport const SOURCE_DEFAULTS = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: DEFAULT_CLIENT,\n format: 'tilejson',\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL\n};\nexport async function baseSource(endpoint, options, urlParameters) {\n const { accessToken, connectionName, cache, ...optionalOptions } = options;\n const mergedOptions = { ...SOURCE_DEFAULTS, accessToken, connectionName, endpoint };\n for (const key in optionalOptions) {\n if (optionalOptions[key]) {\n mergedOptions[key] = optionalOptions[key];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const { clientId, maxLengthURL, format } = mergedOptions;\n const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };\n const parameters = { client: clientId, ...urlParameters };\n const errorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2)\n };\n const mapInstantiation = await requestWithParameters({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL\n });\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(new URL(dataUrl).searchParams.get('cache') || '', 10);\n }\n errorContext.requestType = 'Map data';\n if (format === 'tilejson') {\n const json = await requestWithParameters({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n return json;\n }\n return await requestWithParameters({\n baseUrl: dataUrl,\n headers,\n errorContext,\n maxLengthURL\n });\n}\n","import { baseSource } from \"./base-source.js\";\nexport const boundaryQuerySource = async function (options) {\n const { columns, filters, tilesetTableName, propertiesSqlQuery, queryParameters } = options;\n const urlParameters = {\n tilesetTableName,\n propertiesSqlQuery\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('boundary', options, urlParameters);\n};\n","import { baseSource } from \"./base-source.js\";\nexport const boundaryTableSource = async function (options) {\n const { filters, tilesetTableName, columns, propertiesTableName } = options;\n const urlParameters = {\n tilesetTableName,\n propertiesTableName\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource('boundary', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_AGGREGATION_RES_LEVEL_H3 } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const h3QuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3, sqlQuery, spatialDataColumn = 'h3', queryParameters, filters } = options;\n const urlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType: 'h3',\n q: sqlQuery\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('query', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_AGGREGATION_RES_LEVEL_H3 } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const h3TableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3, spatialDataColumn = 'h3', tableName, filters } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'h3'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource('table', options, urlParameters);\n};\n","import { baseSource } from \"./base-source.js\";\nexport const h3TilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n","import { baseSource } from \"./base-source.js\";\nexport const rasterSource = async function (options) {\n const { tableName, filters } = options;\n const urlParameters = { name: tableName };\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource('raster', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinQuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN, sqlQuery, spatialDataColumn = 'quadbin', queryParameters, filters } = options;\n const urlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType: 'quadbin'\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('query', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinTableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN, spatialDataColumn = 'quadbin', tableName, filters } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'quadbin'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource('table', options, urlParameters);\n};\n","import { baseSource } from \"./base-source.js\";\nexport const quadbinTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_TILE_RESOLUTION } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const vectorQuerySource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', sqlQuery, tileResolution = DEFAULT_TILE_RESOLUTION, queryParameters } = options;\n const urlParameters = {\n spatialDataColumn,\n spatialDataType: 'geo',\n tileResolution: tileResolution.toString(),\n q: sqlQuery\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('query', options, urlParameters);\n};\n","/* eslint-disable camelcase */\nimport { DEFAULT_TILE_RESOLUTION } from \"../constants.js\";\nimport { baseSource } from \"./base-source.js\";\nexport const vectorTableSource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', tableName, tileResolution = DEFAULT_TILE_RESOLUTION } = options;\n const urlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'geo',\n tileResolution: tileResolution.toString()\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n return baseSource('table', options, urlParameters);\n};\n","import { baseSource } from \"./base-source.js\";\nexport const vectorTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n","import { default as ClusterTileLayer } from \"./layers/cluster-tile-layer.js\";\nimport { default as H3TileLayer } from \"./layers/h3-tile-layer.js\";\nimport { default as HeatmapTileLayer } from \"./layers/heatmap-tile-layer.js\";\nimport { default as _PointLabelLayer } from \"./layers/point-label-layer.js\";\nimport { default as QuadbinTileLayer } from \"./layers/quadbin-tile-layer.js\";\nimport { default as RasterTileLayer } from \"./layers/raster-tile-layer.js\";\nimport { default as VectorTileLayer } from \"./layers/vector-tile-layer.js\";\nconst CARTO_LAYERS = {\n ClusterTileLayer,\n H3TileLayer,\n HeatmapTileLayer,\n _PointLabelLayer,\n QuadbinTileLayer,\n RasterTileLayer,\n VectorTileLayer\n};\nexport { CARTO_LAYERS, ClusterTileLayer, H3TileLayer, HeatmapTileLayer, _PointLabelLayer, QuadbinTileLayer, RasterTileLayer, VectorTileLayer };\nexport { default as BASEMAP, GOOGLE_BASEMAPS as _GOOGLE_BASEMAPS, getStyleUrl as _getStyleUrl, fetchStyle as _fetchStyle, applyLayerGroupFilters as _applyLayerGroupFilters, STYLE_LAYER_GROUPS as _STYLE_LAYER_GROUPS } from \"./basemap.js\";\nexport { default as colorBins } from \"./style/color-bins-style.js\";\nexport { default as colorCategories } from \"./style/color-categories-style.js\";\nexport { default as colorContinuous } from \"./style/color-continuous-style.js\";\nexport { CartoAPIError, fetchMap, query } from \"./api/index.js\";\nexport { fetchBasemapProps } from \"./api/basemap.js\";\nimport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, SOURCE_DEFAULTS } from \"./sources/index.js\";\nconst CARTO_SOURCES = {\n boundaryQuerySource,\n boundaryTableSource,\n h3QuerySource,\n h3TableSource,\n h3TilesetSource,\n rasterSource,\n quadbinQuerySource,\n quadbinTableSource,\n quadbinTilesetSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n};\nexport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, CARTO_SOURCES, SOURCE_DEFAULTS };\n","import {\n h3TableSource as _h3TableSource,\n h3QuerySource as _h3QuerySource,\n vectorTableSource as _vectorTableSource,\n vectorQuerySource as _vectorQuerySource,\n quadbinTableSource as _quadbinTableSource,\n quadbinQuerySource as _quadbinQuerySource,\n VectorTableSourceOptions as _VectorTableSourceOptions,\n VectorQuerySourceOptions as _VectorQuerySourceOptions,\n H3TableSourceOptions as _H3TableSourceOptions,\n H3QuerySourceOptions as _H3QuerySourceOptions,\n QuadbinTableSourceOptions as _QuadbinTableSourceOptions,\n QuadbinQuerySourceOptions as _QuadbinQuerySourceOptions,\n SourceOptions,\n} from '@deck.gl/carto';\nimport {WidgetBaseSourceProps} from './widget-base-source.js';\nimport {WidgetQuerySource} from './widget-query-source.js';\nimport {WidgetTableSource} from './widget-table-source.js';\n\ntype WrappedSourceOptions<T> = Omit<T, 'filters'> & WidgetBaseSourceProps;\n\n/******************************************************************************\n * RESPONSE OBJECTS\n */\n\ntype WidgetTableSourceResponse = {widgetSource: WidgetTableSource};\ntype WidgetQuerySourceResponse = {widgetSource: WidgetQuerySource};\n\nexport type VectorTableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _vectorTableSource>>;\nexport type VectorQuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _vectorQuerySource>>;\n\nexport type H3TableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _h3TableSource>>;\nexport type H3QuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _h3QuerySource>>;\n\nexport type QuadbinTableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _quadbinTableSource>>;\nexport type QuadbinQuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _quadbinQuerySource>>;\n\n/******************************************************************************\n * VECTOR SOURCES\n */\n\nexport type VectorTableSourceOptions =\n WrappedSourceOptions<_VectorTableSourceOptions>;\n\nexport type VectorQuerySourceOptions =\n WrappedSourceOptions<_VectorQuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [vectorTableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function vectorTableSource(\n props: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n assignDefaultProps(props);\n const response = await _vectorTableSource(props as _VectorTableSourceOptions);\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [vectorQuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function vectorQuerySource(\n props: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _vectorQuerySource(props as _VectorQuerySourceOptions);\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * H3 SOURCES\n */\n\nexport type H3TableSourceOptions = WrappedSourceOptions<_H3TableSourceOptions>;\nexport type H3QuerySourceOptions = WrappedSourceOptions<_H3QuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [h3TableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function h3TableSource(\n props: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n assignDefaultProps(props);\n const response = await _h3TableSource(props as _H3TableSourceOptions);\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [h3QuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function h3QuerySource(\n props: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _h3QuerySource(props as _H3QuerySourceOptions);\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * QUADBIN SOURCES\n */\n\nexport type QuadbinTableSourceOptions =\n WrappedSourceOptions<_QuadbinTableSourceOptions>;\n\nexport type QuadbinQuerySourceOptions =\n WrappedSourceOptions<_QuadbinQuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [quadbinTableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function quadbinTableSource(\n props: QuadbinTableSourceOptions & WidgetBaseSourceProps\n): Promise<QuadbinTableSourceResponse> {\n assignDefaultProps(props);\n const response = await _quadbinTableSource(\n props as _QuadbinTableSourceOptions\n );\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [quadbinQuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function quadbinQuerySource(\n props: QuadbinQuerySourceOptions & WidgetBaseSourceProps\n): Promise<QuadbinQuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _quadbinQuerySource(\n props as _QuadbinQuerySourceOptions\n );\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * DEFAULT PROPS\n */\n\ndeclare const deck: {VERSION?: string} | undefined;\nfunction assignDefaultProps<T extends SourceOptions>(props: T): void {\n if (typeof deck !== 'undefined' && deck && deck.VERSION) {\n props.clientId ||= 'deck-gl-carto';\n // TODO: Uncomment if/when `@deck.gl/carto` devDependency is removed,\n // and source functions are moved here rather than wrapped.\n // props.deckglVersion ||= deck.VERSION;\n }\n}\n"],"names":["client","getClient","setClient","c","API_CLIENT_VERSION","FilterType","FILTER_TYPES","Set","Object","values","isFilterType","type","has","getApplicableFilters","owner","filters","applicableFilters","column","filter","isApplicable","normalizeObjectKeys","el","Array","isArray","map","value","entries","reduce","acc","_ref","key","toLowerCase","assert","condition","message","Error","InvalidColumnError","constructor","NAME","name","is","error","includes","isEmptyObject","object","_","addFilter","removeFilter","_ref2","clearFilters","keys","hasFilter","_ref3","getFilter","_ref4","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","bboxPolygon","geometry","spatialFilter","_normalizeGeometry","undefined","minx","miny","maxx","maxy","WORLD","worldClip","_clean","bboxClip","geometryTxWest","_tx","geometryTxEast","result","worldWestClip","collection","featureCollection","feature","merged","union","worldEastClip","_cleanPolygonCoords","cc","coords","length","_cleanMultiPolygonCoords","ccc","_isPolygon","coordinates","polygon","_isMultiPolygon","multiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","DEFAULT_API_BASE_URL","DEFAULT_GEO_COLUMN","MapType","ApiVersion","makeCall","url","accessToken","opts","_exit","_temp2","_result","response","ok","dealWithApiError","data","isPost","method","_temp","_catch","Promise","resolve","fetch","toString","headers","Authorization","body","signal","abortController","otherOptions","then","_fetch","json","_response$json","e","reject","column_name","status","msg","JSON","stringify","hint","AVAILABLE_MODELS","V3","REQUEST_GET_MAX_URL_LENGTH","executeModel","props","source","model","params","join","apiVersion","apiBaseUrl","connectionName","clientId","TILESET","filtersLogicalOperator","queryParameters","queryParams","spatialFilters","geoColumn","urlWithSearchParams","URLSearchParams","isGet","WidgetBaseSource","defaultProps","_getModelSource","getCategories","options","_this","filterOwner","operation","operationColumn","getModelSource","res","rows","getFormula","_this2","operationExp","getHistogram","_this3","ticks","fill","forEach","tick","getRange","_this4","getScatter","_this5","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","limit","x","y","getTable","_this6","columns","sortBy","sortDirection","offset","totalCount","metadata","total","getTimeSeries","_this7","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","QUERY","sqlQuery","WidgetTableSource","TABLE","tableName","isBrowser","Boolean","process","String","browser","version","exec","window_","globalThis","process_","isElectron","mockUserAgent","window","versions","realUserAgent","navigator","userAgent","indexOf","isNode","VERSION","getStorage","storage","setItem","removeItem","LocalStorage","id","defaultConfig","config","_loadConfiguration","getConfiguration","setConfiguration","configuration","assign","serialized","serializedConfiguration","getItem","parse","formatTime","ms","formatted","toFixed","leftPad","string","padLength","Math","max","repeat","COLOR","BACKGROUND_INCREMENT","getColor","color","toUpperCase","WHITE","addColor","background","colorCode","autobind","obj","predefined","proto","getPrototypeOf","propNames","getOwnPropertyNames","find","bind","getHiResTimestamp","timestamp","performance","now","timeParts","hrtime","Date","originalConsole","debug","console","log","info","warn","DEFAULT_LOG_CONFIGURATION","enabled","level","noop","cache","ONCE","once","Log","_startTs","_deltaTs","userData","LOG_THROTTLE_TIMEOUT","_storage","timeStamp","seal","newLevel","setLevel","getLevel","isEnabled","getTotal","Number","toPrecision","getDelta","priority","newPriority","getPriority","enable","get","setting","set","settings","table","_getLogFunction","arguments","deprecated","oldUsage","newUsage","removed","probe","logLevel","time","tag","getTableHeader","timeEnd","group","collapsed","normalizeArguments","groupCollapsed","groupEnd","withGroup","func","trace","_shouldLog","normalizeLogLevel","args","delta","decorateMessage","resolvedLevel","isFinite","from","shift","unshift","messageType","title","getGlobalLoaderState","loaders","_state","isLoaderObject","loader","hasExtensions","extensions","normalizeLoader","parseTextSync","parseText","text","binary","getGlobalLoaderRegistry","state","loaderRegistry","registerLoaders","normalizedLoader","registeredLoader","parseImageNode","IMAGE_SUPPORTED","Image","IMAGE_BITMAP_SUPPORTED","ImageBitmap","NODE_IMAGE_SUPPORTED","DATA_SUPPORTED","isImageTypeSupported","getDefaultImageType","getImageType","image","format","getImageTypeOrNull","getImageData","canvas","document","createElement","context","getContext","width","height","drawImage","SVG_DATA_URL_PATTERN","SVG_URL_PATTERN","isSVG","test","getBlobOrSVGDataUrl","arrayBuffer","textDecoder","TextDecoder","xmlText","decode","unescape","encodeURIComponent","src","btoa","getBlob","Blob","Uint8Array","parseToImage","blobOrDataUrl","URL","self","webkitURL","objectUrl","createObjectURL","loadToImage","revokeObjectURL","onload","onerror","EMPTY_OBJECT","imagebitmapOptionsSupported","parseToImageBitmap","blob","imagebitmapOptions","imagebitmap","safeCreateImageBitmap","createImageBitmap","getISOBMFFMediaType","buffer","checkString","decodeMajorBrand","brandMajor","getUTF8String","replace","trim","extension","mimeType","array","start","end","fromCharCode","slice","stringToBytes","character","charCodeAt","header","headerBytes","i","BIG_ENDIAN","LITTLE_ENDIAN","getBinaryImageMetadata","binaryData","dataView","toDataView","getPngMetadata","getJpegMetadata","getGifMetadata","getBmpMetadata","getISOBMFFMetadata","DataView","mediaType","isPng","byteLength","getUint32","isGif","getUint16","isBmp","isJpeg","getUint8","tableMarkers","sofMarkers","getJpegMarkers","marker","add","ArrayBuffer","isView","parseToNodeImage","parseImage","imageOptions","imageType","loadType","getLoadableImageType","EXTENSIONS","MIME_TYPES","DEFAULT_IMAGE_LOADER_OPTIONS","ImageLoader","dataType","batchType","module","mimeTypes","tests","defaultLogger","logState","attributeUpdateStart","attributeManagerUpdateStart","attributeUpdateMessages","LOG_LEVEL_MAJOR_UPDATE","LOG_LEVEL_MINOR_UPDATE","LOG_LEVEL_UPDATE_DETAIL","LOG_LEVEL_INFO","LOG_LEVEL_DRAW","getLoggers","layer.changeFlag","layer","flags","layer.update","needsUpdate","getChangeFlags","layer.matched","changed","compositeLayer.renderLayers","updated","subLayers","layerManager.setLayers","layerManager","layers","layerManager.activateViewport","attributeManager.invalidate","attributeManager","trigger","attributeNames","attributeManager.updateEnd","numInstances","timeMs","round","updateMessage","attribute","attribute.allocate","push","attribute.updateEnd","deckRenderer.renderLayers","deckRenderer","renderStats","pass","redrawReason","stats","visibleCount","compositeCount","pickableCount","primitiveCount","hiddenCount","renderCount","env","NODE_ENV","loggers","deckLog","register","handlers","isJSON","firstChar","lastChar","testText","checkVersion","existingVersion","deck","_registerLoggers","jsonLoader","premultiplyAlpha","DEFAULT_TILE_RESOLUTION","DEFAULT_AGGREGATION_RES_LEVEL_H3","DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN","isObject","isPureObject","CartoAPIError","errorContext","responseJson","responseString","requestType","formatErrorKey","s","DEFAULT_CLIENT","V3_MINOR_VERSION","DEFAULT_MAX_LENGTH_URL","joinPath","part","endsWith","buildV3Path","endpoint","rest","buildSourceUrl","DEFAULT_PARAMETERS","v","deckglVersion","DEFAULT_HEADERS","Accept","REQUEST_CACHE","Map","requestWithParameters","baseUrl","parameters","customHeaders","maxLengthURL","excludeURLParameters","createCacheKey","createURLWithParameters","fetchPromise","jsonPromise","_response","catch","delete","parameterEntries","sort","a","b","headerEntries","baseUrlString","searchParams","param","SOURCE_DEFAULTS","baseSource","urlParameters","optionalOptions","mergedOptions","connection","mapInstantiation","dataUrl","parseInt","boundaryQuerySource","tilesetTableName","propertiesSqlQuery","boundaryTableSource","propertiesTableName","h3QuerySource","aggregationExp","aggregationResLevel","spatialDataColumn","spatialDataType","q","h3TableSource","h3TilesetSource","rasterSource","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","tileResolution","vectorTableSource","vectorTilesetSource","assignDefaultProps","_quadbinQuerySource","widgetSource","_quadbinTableSource","_h3QuerySource","_h3TableSource","_vectorQuerySource","_vectorTableSource"],"mappings":"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"}
1
+ {"version":3,"file":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils.ts","../src/filters.ts","../src/geo.ts","../src/constants-internal.ts","../src/models/common.ts","../src/models/model.ts","../src/sources/widget-base-source.ts","../src/sources/widget-query-source.ts","../src/sources/widget-table-source.ts","../src/sources/wrappers.ts"],"sourcesContent":["/**\n * @internal\n * @internalRemarks Source: @carto/react-core\n */\nlet client = 'carto-api-client';\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","/** Current version of @carto/api-client. */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\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","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\nimport {$TODO} from './types-internal.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] = filter as $TODO;\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) {\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","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 * DEFAULTS\n */\n\n/**\n * @internalRemarks Source: @carto/constants\n * @internal\n */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/**\n * @internalRemarks Source: @carto/constants\n * @internal\n */\nexport const DEFAULT_CLIENT = 'deck-gl-carto';\n\n/**\n * @internalRemarks Source: @carto/react-api\n * @internal\n */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/******************************************************************************\n * ENUMS\n */\n\n/**\n * @internal\n * @internalRemarks Source: @carto/constants\n */\nexport enum MapType {\n TABLE = 'table',\n QUERY = 'query',\n TILESET = 'tileset',\n}\n\n/**\n * @internal\n * @internalRemarks Source: @carto/constants\n */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n","import {$TODO} from '../types-internal.js';\nimport {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\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: $TODO;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (data.error?.includes('Missing columns')) {\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 {\n ApiVersion,\n DEFAULT_GEO_COLUMN,\n MapType,\n} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {$TODO} from '../types-internal.js';\nimport {assert} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\n\n/** @internalRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\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 geoColumn?: string;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\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 !== MapType.TILESET, 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {filters, filtersLogicalOperator = 'and', data} = source;\n const queryParameters = source.queryParameters\n ? JSON.stringify(source.queryParameters)\n : '';\n\n const queryParams: Record<string, string> = {\n type,\n client: clientId,\n source: data,\n params: JSON.stringify(params),\n queryParameters,\n filters: JSON.stringify(filters),\n filtersLogicalOperator,\n };\n\n // API supports multiple filters, we apply it only to geoColumn\n const spatialFilters = source.spatialFilter\n ? {\n [source.geoColumn ? source.geoColumn : DEFAULT_GEO_COLUMN]:\n source.spatialFilter,\n }\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = JSON.stringify(spatialFilters);\n }\n\n const urlWithSearchParams =\n url + '?' + new URLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n } else {\n // undo the JSON.stringify, @TODO find a better pattern\n queryParams.params = params as $TODO;\n queryParams.filters = filters as $TODO;\n queryParams.queryParameters = source.queryParameters as $TODO;\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters as $TODO;\n }\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","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {FilterLogicalOperator, Filter} from '../types.js';\nimport {SourceOptions} from '@deck.gl/carto';\nimport {getApplicableFilters, normalizeObjectKeys} from '../utils.js';\nimport {\n DEFAULT_API_BASE_URL,\n DEFAULT_GEO_COLUMN,\n ApiVersion,\n} from '../constants-internal.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\n\nexport interface WidgetBaseSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n geoColumn?: string;\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 geoColumn: DEFAULT_GEO_COLUMN,\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 geoColumn: props.geoColumn,\n };\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column, operation, operationColumn} = params;\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 * 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 abortController,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column, operation, ticks} = params;\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {column} = params;\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\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: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, spatialFilter, abortController, ...params} = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 {filterOwner, abortController, spatialFilter, ...params} = 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 type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {...this.getModelSource(filterOwner), spatialFilter},\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 '@deck.gl/carto';\nimport {MapType} from '../constants-internal.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\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: MapType.QUERY,\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '@deck.gl/carto';\nimport {WidgetBaseSource, WidgetBaseSourceProps} from './widget-base-source.js';\nimport {MapType} from '../constants-internal.js';\nimport {ModelSource} from '../models/model.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\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: MapType.TABLE,\n data: this.props.tableName,\n };\n }\n}\n","import {\n h3TableSource as _h3TableSource,\n h3QuerySource as _h3QuerySource,\n vectorTableSource as _vectorTableSource,\n vectorQuerySource as _vectorQuerySource,\n quadbinTableSource as _quadbinTableSource,\n quadbinQuerySource as _quadbinQuerySource,\n VectorTableSourceOptions as _VectorTableSourceOptions,\n VectorQuerySourceOptions as _VectorQuerySourceOptions,\n H3TableSourceOptions as _H3TableSourceOptions,\n H3QuerySourceOptions as _H3QuerySourceOptions,\n QuadbinTableSourceOptions as _QuadbinTableSourceOptions,\n QuadbinQuerySourceOptions as _QuadbinQuerySourceOptions,\n SourceOptions,\n} from '@deck.gl/carto';\nimport {WidgetBaseSourceProps} from './widget-base-source.js';\nimport {WidgetQuerySource} from './widget-query-source.js';\nimport {WidgetTableSource} from './widget-table-source.js';\n\ntype WrappedSourceOptions<T> = Omit<T, 'filters'> & WidgetBaseSourceProps;\n\n/******************************************************************************\n * RESPONSE OBJECTS\n */\n\ntype WidgetTableSourceResponse = {widgetSource: WidgetTableSource};\ntype WidgetQuerySourceResponse = {widgetSource: WidgetQuerySource};\n\nexport type VectorTableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _vectorTableSource>>;\nexport type VectorQuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _vectorQuerySource>>;\n\nexport type H3TableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _h3TableSource>>;\nexport type H3QuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _h3QuerySource>>;\n\nexport type QuadbinTableSourceResponse = WidgetTableSourceResponse &\n Awaited<ReturnType<typeof _quadbinTableSource>>;\nexport type QuadbinQuerySourceResponse = WidgetQuerySourceResponse &\n Awaited<ReturnType<typeof _quadbinQuerySource>>;\n\n/******************************************************************************\n * VECTOR SOURCES\n */\n\nexport type VectorTableSourceOptions =\n WrappedSourceOptions<_VectorTableSourceOptions>;\n\nexport type VectorQuerySourceOptions =\n WrappedSourceOptions<_VectorQuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [vectorTableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function vectorTableSource(\n props: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n assignDefaultProps(props);\n const response = await _vectorTableSource(props as _VectorTableSourceOptions);\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [vectorQuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function vectorQuerySource(\n props: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _vectorQuerySource(props as _VectorQuerySourceOptions);\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * H3 SOURCES\n */\n\nexport type H3TableSourceOptions = WrappedSourceOptions<_H3TableSourceOptions>;\nexport type H3QuerySourceOptions = WrappedSourceOptions<_H3QuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [h3TableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function h3TableSource(\n props: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n assignDefaultProps(props);\n const response = await _h3TableSource(props as _H3TableSourceOptions);\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [h3QuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function h3QuerySource(\n props: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _h3QuerySource(props as _H3QuerySourceOptions);\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * QUADBIN SOURCES\n */\n\nexport type QuadbinTableSourceOptions =\n WrappedSourceOptions<_QuadbinTableSourceOptions>;\n\nexport type QuadbinQuerySourceOptions =\n WrappedSourceOptions<_QuadbinQuerySourceOptions>;\n\n/** Wrapper adding Widget API support to [quadbinTableSource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function quadbinTableSource(\n props: QuadbinTableSourceOptions & WidgetBaseSourceProps\n): Promise<QuadbinTableSourceResponse> {\n assignDefaultProps(props);\n const response = await _quadbinTableSource(\n props as _QuadbinTableSourceOptions\n );\n return {...response, widgetSource: new WidgetTableSource(props)};\n}\n\n/** Wrapper adding Widget API support to [quadbinQuerySource](https://deck.gl/docs/api-reference/carto/data-sources). */\nexport async function quadbinQuerySource(\n props: QuadbinQuerySourceOptions & WidgetBaseSourceProps\n): Promise<QuadbinQuerySourceResponse> {\n assignDefaultProps(props);\n const response = await _quadbinQuerySource(\n props as _QuadbinQuerySourceOptions\n );\n return {...response, widgetSource: new WidgetQuerySource(props)};\n}\n\n/******************************************************************************\n * DEFAULT PROPS\n */\n\ndeclare const deck: {VERSION?: string} | undefined;\nfunction assignDefaultProps<T extends SourceOptions>(props: T): void {\n if (typeof deck !== 'undefined' && deck && deck.VERSION) {\n props.clientId ||= 'deck-gl-carto';\n // TODO: Uncomment if/when `@deck.gl/carto` devDependency is removed,\n // and source functions are moved here rather than wrapped.\n // props.deckglVersion ||= deck.VERSION;\n }\n}\n"],"names":["client","getClient","setClient","c","API_CLIENT_VERSION","FilterType","FILTER_TYPES","Set","Object","values","isFilterType","type","has","getApplicableFilters","owner","filters","applicableFilters","column","filter","isApplicable","normalizeObjectKeys","el","Array","isArray","map","value","entries","reduce","acc","_ref","key","toLowerCase","assert","condition","message","Error","InvalidColumnError","constructor","NAME","name","is","error","includes","isEmptyObject","object","_","addFilter","removeFilter","_ref2","clearFilters","keys","hasFilter","_ref3","getFilter","_ref4","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","bboxPolygon","geometry","spatialFilter","_normalizeGeometry","undefined","minx","miny","maxx","maxy","WORLD","worldClip","_clean","bboxClip","geometryTxWest","_tx","geometryTxEast","result","worldWestClip","collection","featureCollection","feature","merged","union","worldEastClip","_cleanPolygonCoords","cc","coords","length","_cleanMultiPolygonCoords","ccc","_isPolygon","coordinates","polygon","_isMultiPolygon","multiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","DEFAULT_API_BASE_URL","DEFAULT_GEO_COLUMN","MapType","ApiVersion","makeCall","url","accessToken","opts","_exit","_temp2","_result","response","ok","dealWithApiError","data","isPost","method","_temp","_catch","Promise","resolve","fetch","toString","headers","Authorization","body","signal","abortController","otherOptions","then","_fetch","json","_response$json","e","reject","column_name","status","msg","JSON","stringify","hint","AVAILABLE_MODELS","V3","REQUEST_GET_MAX_URL_LENGTH","executeModel","props","source","model","params","join","apiVersion","apiBaseUrl","connectionName","clientId","TILESET","filtersLogicalOperator","queryParameters","queryParams","spatialFilters","geoColumn","urlWithSearchParams","URLSearchParams","isGet","WidgetBaseSource","defaultProps","_getModelSource","getCategories","options","_this","filterOwner","operation","operationColumn","getModelSource","res","rows","getFormula","_this2","operationExp","getHistogram","_this3","ticks","fill","forEach","tick","getRange","_this4","getScatter","_this5","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","limit","x","y","getTable","_this6","columns","sortBy","sortDirection","offset","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_this7","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","QUERY","sqlQuery","WidgetTableSource","TABLE","tableName","quadbinQuerySource","assignDefaultProps","_quadbinQuerySource","widgetSource","quadbinTableSource","_quadbinTableSource","h3QuerySource","_h3QuerySource","h3TableSource","_h3TableSource","vectorQuerySource","_vectorQuerySource","vectorTableSource","_vectorTableSource","deck","VERSION"],"mappings":"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"}