@carto/api-client 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/api/query.d.ts +1 -1
- package/build/api-client.cjs +1136 -984
- package/build/api-client.cjs.map +1 -1
- package/build/api-client.modern.js +1014 -869
- package/build/api-client.modern.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/models/model.d.ts +7 -1
- package/build/sources/boundary-query-source.d.ts +2 -1
- package/build/sources/boundary-table-source.d.ts +2 -1
- package/build/sources/h3-query-source.d.ts +2 -1
- package/build/sources/h3-table-source.d.ts +2 -1
- package/build/sources/h3-tileset-source.d.ts +2 -1
- package/build/sources/index.d.ts +13 -14
- package/build/sources/quadbin-query-source.d.ts +2 -1
- package/build/sources/quadbin-table-source.d.ts +2 -1
- package/build/sources/quadbin-tileset-source.d.ts +2 -1
- package/build/sources/raster-source.d.ts +2 -1
- package/build/sources/types.d.ts +48 -37
- package/build/sources/vector-query-source.d.ts +2 -1
- package/build/sources/vector-table-source.d.ts +2 -1
- package/build/sources/vector-tileset-source.d.ts +2 -1
- package/build/spatial-index.d.ts +8 -0
- package/build/utils.d.ts +1 -1
- package/build/widget-sources/types.d.ts +9 -1
- package/build/widget-sources/widget-base-source.d.ts +3 -3
- package/package.json +1 -1
- package/src/api/query.ts +1 -2
- package/src/index.ts +1 -36
- package/src/models/model.ts +47 -24
- package/src/sources/boundary-query-source.ts +4 -2
- package/src/sources/boundary-table-source.ts +4 -2
- package/src/sources/h3-query-source.ts +10 -2
- package/src/sources/h3-table-source.ts +9 -2
- package/src/sources/h3-tileset-source.ts +4 -2
- package/src/sources/index.ts +54 -24
- package/src/sources/quadbin-query-source.ts +10 -2
- package/src/sources/quadbin-table-source.ts +10 -2
- package/src/sources/quadbin-tileset-source.ts +4 -2
- package/src/sources/raster-source.ts +4 -2
- package/src/sources/types.ts +54 -40
- package/src/sources/vector-query-source.ts +13 -2
- package/src/sources/vector-table-source.ts +14 -2
- package/src/sources/vector-tileset-source.ts +4 -2
- package/src/spatial-index.ts +111 -0
- package/src/utils.ts +1 -1
- package/src/widget-sources/types.ts +10 -1
- package/src/widget-sources/widget-base-source.ts +183 -23
package/build/index.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ export * from './client.js';
|
|
|
2
2
|
export * from './constants.js';
|
|
3
3
|
export * from './filters.js';
|
|
4
4
|
export * from './geo.js';
|
|
5
|
+
export * from './sources/index.js';
|
|
5
6
|
export * from './widget-sources/index.js';
|
|
6
7
|
export * from './types.js';
|
|
7
8
|
export { APIErrorContext, APIRequestType, CartoAPIError, QueryOptions, buildPublicMapUrl, // Internal, but required for fetchMap().
|
|
8
9
|
buildStatsUrl, // Internal, but required for fetchMap().
|
|
9
10
|
query, requestWithParameters, } from './api/index.js';
|
|
10
|
-
export { BoundaryQuerySourceOptions, BoundaryTableSourceOptions, GeojsonResult, H3QuerySourceOptions, H3TableSourceOptions, H3TilesetSourceOptions, JsonResult, QuadbinQuerySourceOptions, QuadbinTableSourceOptions, QuadbinTilesetSourceOptions, QueryResult, QuerySourceOptions, RasterSourceOptions, SOURCE_DEFAULTS, SourceOptions, TableSourceOptions, TilejsonResult, TilesetSourceOptions, VectorQuerySourceOptions, VectorTableSourceOptions, VectorTilesetSourceOptions, boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, rasterSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, } from './sources/index.js';
|
package/build/models/model.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Filter, FilterLogicalOperator, MapType, QueryParameters, SpatialFilter } from '../types.js';
|
|
2
2
|
import { ModelRequestOptions } from './common.js';
|
|
3
3
|
import { ApiVersion } from '../constants.js';
|
|
4
|
+
import { SpatialDataType, SpatialFilterPolyfillMode } from '../sources/types.js';
|
|
4
5
|
/** @internalRemarks Source: @carto/react-api */
|
|
5
6
|
declare const AVAILABLE_MODELS: readonly ["category", "histogram", "formula", "pick", "timeseries", "range", "scatterplot", "table"];
|
|
6
7
|
export type Model = (typeof AVAILABLE_MODELS)[number];
|
|
@@ -14,9 +15,14 @@ export interface ModelSource {
|
|
|
14
15
|
data: string;
|
|
15
16
|
filters?: Record<string, Filter>;
|
|
16
17
|
filtersLogicalOperator?: FilterLogicalOperator;
|
|
17
|
-
geoColumn?: string;
|
|
18
18
|
spatialFilter?: SpatialFilter;
|
|
19
19
|
queryParameters?: QueryParameters;
|
|
20
|
+
spatialDataColumn?: string;
|
|
21
|
+
spatialDataType?: SpatialDataType;
|
|
22
|
+
spatialFiltersResolution?: number;
|
|
23
|
+
spatialFiltersMode?: SpatialFilterPolyfillMode;
|
|
24
|
+
/** original resolution of the spatial index data as stored in the DW */
|
|
25
|
+
dataResolution?: number;
|
|
20
26
|
}
|
|
21
27
|
/**
|
|
22
28
|
* Execute a SQL model request.
|
|
@@ -6,4 +6,5 @@ export type BoundaryQuerySourceOptions = SourceOptions & FilterOptions & {
|
|
|
6
6
|
propertiesSqlQuery: string;
|
|
7
7
|
queryParameters?: QueryParameters;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type BoundaryQuerySourceResponse = TilejsonResult;
|
|
10
|
+
export declare const boundaryQuerySource: (options: BoundaryQuerySourceOptions) => Promise<BoundaryQuerySourceResponse>;
|
|
@@ -4,4 +4,5 @@ export type BoundaryTableSourceOptions = SourceOptions & FilterOptions & {
|
|
|
4
4
|
columns?: string[];
|
|
5
5
|
propertiesTableName: string;
|
|
6
6
|
};
|
|
7
|
-
export
|
|
7
|
+
export type BoundaryTableSourceResponse = TilejsonResult;
|
|
8
|
+
export declare const boundaryTableSource: (options: BoundaryTableSourceOptions) => Promise<BoundaryTableSourceResponse>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetQuerySourceResult } from '../widget-sources';
|
|
2
2
|
import type { AggregationOptions, FilterOptions, QuerySourceOptions, SourceOptions, TilejsonResult } from './types';
|
|
3
3
|
export type H3QuerySourceOptions = SourceOptions & QuerySourceOptions & AggregationOptions & FilterOptions;
|
|
4
|
-
export
|
|
4
|
+
export type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;
|
|
5
|
+
export declare const h3QuerySource: (options: H3QuerySourceOptions) => Promise<H3QuerySourceResponse>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetTableSourceResult } from '../widget-sources';
|
|
2
2
|
import type { AggregationOptions, FilterOptions, SourceOptions, TableSourceOptions, TilejsonResult } from './types';
|
|
3
3
|
export type H3TableSourceOptions = SourceOptions & TableSourceOptions & AggregationOptions & FilterOptions;
|
|
4
|
-
export
|
|
4
|
+
export type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;
|
|
5
|
+
export declare const h3TableSource: (options: H3TableSourceOptions) => Promise<H3TableSourceResponse>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { SourceOptions, TilejsonResult, TilesetSourceOptions } from './types';
|
|
2
2
|
export type H3TilesetSourceOptions = SourceOptions & TilesetSourceOptions;
|
|
3
|
-
export
|
|
3
|
+
export type H3TilesetSourceResponse = TilejsonResult;
|
|
4
|
+
export declare const h3TilesetSource: (options: H3TilesetSourceOptions) => Promise<H3TilesetSourceResponse>;
|
package/build/sources/index.d.ts
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
export { SOURCE_DEFAULTS } from './base-source';
|
|
2
|
-
export type {
|
|
2
|
+
export type { GeojsonResult, JsonResult, QueryResult, QuerySourceOptions, RasterBandColorinterp, RasterMetadata, RasterMetadataBand, RasterMetadataBandStats, SourceOptions, TableSourceOptions, TilejsonResult, TilesetSourceOptions, VectorLayer, } from './types';
|
|
3
3
|
export { boundaryQuerySource } from './boundary-query-source';
|
|
4
|
-
export type { BoundaryQuerySourceOptions } from './boundary-query-source';
|
|
4
|
+
export type { BoundaryQuerySourceOptions, BoundaryQuerySourceResponse, } from './boundary-query-source';
|
|
5
5
|
export { boundaryTableSource } from './boundary-table-source';
|
|
6
|
-
export type { BoundaryTableSourceOptions } from './boundary-table-source';
|
|
6
|
+
export type { BoundaryTableSourceOptions, BoundaryTableSourceResponse, } from './boundary-table-source';
|
|
7
7
|
export { h3QuerySource } from './h3-query-source';
|
|
8
|
-
export type { H3QuerySourceOptions } from './h3-query-source';
|
|
8
|
+
export type { H3QuerySourceOptions, H3QuerySourceResponse, } from './h3-query-source';
|
|
9
9
|
export { h3TableSource } from './h3-table-source';
|
|
10
|
-
export type { H3TableSourceOptions } from './h3-table-source';
|
|
10
|
+
export type { H3TableSourceOptions, H3TableSourceResponse, } from './h3-table-source';
|
|
11
11
|
export { h3TilesetSource } from './h3-tileset-source';
|
|
12
|
-
export type { H3TilesetSourceOptions } from './h3-tileset-source';
|
|
12
|
+
export type { H3TilesetSourceOptions, H3TilesetSourceResponse, } from './h3-tileset-source';
|
|
13
13
|
export { rasterSource } from './raster-source';
|
|
14
|
-
export type { RasterSourceOptions } from './raster-source';
|
|
14
|
+
export type { RasterSourceOptions, RasterSourceResponse } from './raster-source';
|
|
15
15
|
export { quadbinQuerySource } from './quadbin-query-source';
|
|
16
|
-
export type { QuadbinQuerySourceOptions } from './quadbin-query-source';
|
|
16
|
+
export type { QuadbinQuerySourceOptions, QuadbinQuerySourceResponse, } from './quadbin-query-source';
|
|
17
17
|
export { quadbinTableSource } from './quadbin-table-source';
|
|
18
|
-
export type { QuadbinTableSourceOptions } from './quadbin-table-source';
|
|
18
|
+
export type { QuadbinTableSourceOptions, QuadbinTableSourceResponse, } from './quadbin-table-source';
|
|
19
19
|
export { quadbinTilesetSource } from './quadbin-tileset-source';
|
|
20
|
-
export type { QuadbinTilesetSourceOptions } from './quadbin-tileset-source';
|
|
20
|
+
export type { QuadbinTilesetSourceOptions, QuadbinTilesetSourceResponse, } from './quadbin-tileset-source';
|
|
21
21
|
export { vectorQuerySource } from './vector-query-source';
|
|
22
|
-
export type { VectorQuerySourceOptions } from './vector-query-source';
|
|
22
|
+
export type { VectorQuerySourceOptions, VectorQuerySourceResponse, } from './vector-query-source';
|
|
23
23
|
export { vectorTableSource } from './vector-table-source';
|
|
24
|
-
export type { VectorTableSourceOptions } from './vector-table-source';
|
|
24
|
+
export type { VectorTableSourceOptions, VectorTableSourceResponse, } from './vector-table-source';
|
|
25
25
|
export { vectorTilesetSource } from './vector-tileset-source';
|
|
26
|
-
export type { VectorTilesetSourceOptions } from './vector-tileset-source';
|
|
27
|
-
export type { SourceOptions, QuerySourceOptions, TableSourceOptions, TilesetSourceOptions, } from './types';
|
|
26
|
+
export type { VectorTilesetSourceOptions, VectorTilesetSourceResponse, } from './vector-tileset-source';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetQuerySourceResult } from '../widget-sources';
|
|
2
2
|
import type { AggregationOptions, FilterOptions, QuerySourceOptions, SourceOptions, TilejsonResult } from './types';
|
|
3
3
|
export type QuadbinQuerySourceOptions = SourceOptions & QuerySourceOptions & AggregationOptions & FilterOptions;
|
|
4
|
-
export
|
|
4
|
+
export type QuadbinQuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;
|
|
5
|
+
export declare const quadbinQuerySource: (options: QuadbinQuerySourceOptions) => Promise<QuadbinQuerySourceResponse>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetTableSourceResult } from '../widget-sources';
|
|
2
2
|
import type { AggregationOptions, FilterOptions, SourceOptions, TableSourceOptions, TilejsonResult } from './types';
|
|
3
3
|
export type QuadbinTableSourceOptions = SourceOptions & TableSourceOptions & AggregationOptions & FilterOptions;
|
|
4
|
-
export
|
|
4
|
+
export type QuadbinTableSourceResponse = TilejsonResult & WidgetTableSourceResult;
|
|
5
|
+
export declare const quadbinTableSource: (options: QuadbinTableSourceOptions) => Promise<QuadbinTableSourceResponse>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { SourceOptions, TilejsonResult, TilesetSourceOptions } from './types';
|
|
2
2
|
export type QuadbinTilesetSourceOptions = SourceOptions & TilesetSourceOptions;
|
|
3
|
-
export
|
|
3
|
+
export type QuadbinTilesetSourceResponse = TilejsonResult;
|
|
4
|
+
export declare const quadbinTilesetSource: (options: QuadbinTilesetSourceOptions) => Promise<QuadbinTilesetSourceResponse>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { FilterOptions, SourceOptions, TilejsonResult, TilesetSourceOptions } from './types';
|
|
2
2
|
export type RasterSourceOptions = SourceOptions & TilesetSourceOptions & FilterOptions;
|
|
3
|
-
export
|
|
3
|
+
export type RasterSourceResponse = TilejsonResult;
|
|
4
|
+
export declare const rasterSource: (options: RasterSourceOptions) => Promise<RasterSourceResponse>;
|
package/build/sources/types.d.ts
CHANGED
|
@@ -38,6 +38,30 @@ export type SourceOptionalOptions = {
|
|
|
38
38
|
* @default {@link DEFAULT_MAX_LENGTH_URL}
|
|
39
39
|
*/
|
|
40
40
|
maxLengthURL?: number;
|
|
41
|
+
/**
|
|
42
|
+
* The column name and the type of geospatial support.
|
|
43
|
+
*
|
|
44
|
+
* If not present, defaults to `'geom'` for generic queries, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
|
|
45
|
+
*/
|
|
46
|
+
spatialDataColumn?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The type of geospatial support. Defaults to `'geo'`.
|
|
49
|
+
*/
|
|
50
|
+
spatialDataType?: SpatialDataType;
|
|
51
|
+
/**
|
|
52
|
+
* Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
|
|
53
|
+
* quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
|
|
54
|
+
* the quantization grid proportionately.
|
|
55
|
+
*
|
|
56
|
+
* Supported `tileResolution` values, with corresponding grid sizes:
|
|
57
|
+
*
|
|
58
|
+
* - 0.25: 256x256
|
|
59
|
+
* - 0.5: 512x512
|
|
60
|
+
* - 1: 1024x1024
|
|
61
|
+
* - 2: 2048x2048
|
|
62
|
+
* - 4: 4096x4096
|
|
63
|
+
*/
|
|
64
|
+
tileResolution?: TileResolution;
|
|
41
65
|
/**
|
|
42
66
|
* By default, local in-memory caching is enabled.
|
|
43
67
|
*/
|
|
@@ -73,6 +97,10 @@ export type AggregationOptions = {
|
|
|
73
97
|
* @default 6 for quadbin and 4 for h3 sources
|
|
74
98
|
*/
|
|
75
99
|
aggregationResLevel?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Original resolution of the spatial index data as stored in the DW
|
|
102
|
+
*/
|
|
103
|
+
dataResolution?: number;
|
|
76
104
|
};
|
|
77
105
|
export type FilterOptions = {
|
|
78
106
|
/**
|
|
@@ -81,28 +109,8 @@ export type FilterOptions = {
|
|
|
81
109
|
filters?: Filters;
|
|
82
110
|
};
|
|
83
111
|
export type QuerySourceOptions = {
|
|
84
|
-
/**
|
|
85
|
-
* The column name and the type of geospatial support.
|
|
86
|
-
*
|
|
87
|
-
* If not present, defaults to `'geom'` for generic queries, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
|
|
88
|
-
*/
|
|
89
|
-
spatialDataColumn?: string;
|
|
90
|
-
/** SQL query. */
|
|
112
|
+
/** Full SQL query with query paremeter placeholders (if any). */
|
|
91
113
|
sqlQuery: string;
|
|
92
|
-
/**
|
|
93
|
-
* Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
|
|
94
|
-
* quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
|
|
95
|
-
* the quantization grid proportionately.
|
|
96
|
-
*
|
|
97
|
-
* Supported `tileResolution` values, with corresponding grid sizes:
|
|
98
|
-
*
|
|
99
|
-
* - 0.25: 256x256
|
|
100
|
-
* - 0.5: 512x512
|
|
101
|
-
* - 1: 1024x1024
|
|
102
|
-
* - 2: 2048x2048
|
|
103
|
-
* - 4: 4096x4096
|
|
104
|
-
*/
|
|
105
|
-
tileResolution?: TileResolution;
|
|
106
114
|
/**
|
|
107
115
|
* Values for named or positional paramteres in the query.
|
|
108
116
|
*
|
|
@@ -128,6 +136,14 @@ export type QuerySourceOptions = {
|
|
|
128
136
|
* ```
|
|
129
137
|
*/
|
|
130
138
|
queryParameters?: QueryParameters;
|
|
139
|
+
/**
|
|
140
|
+
* Comma-separated aggregation expressions. If assigned on a vector source, source is grouped by geometry and then aggregated.
|
|
141
|
+
*
|
|
142
|
+
* Example:
|
|
143
|
+
*
|
|
144
|
+
* 1 as value, avg(rev) as average_revenue
|
|
145
|
+
*/
|
|
146
|
+
aggregationExp?: string;
|
|
131
147
|
};
|
|
132
148
|
export type TableSourceOptions = {
|
|
133
149
|
/**
|
|
@@ -135,25 +151,13 @@ export type TableSourceOptions = {
|
|
|
135
151
|
*/
|
|
136
152
|
tableName: string;
|
|
137
153
|
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* If not present, defaults to `'geom'` for generic tables, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
|
|
141
|
-
*/
|
|
142
|
-
spatialDataColumn?: string;
|
|
143
|
-
/**
|
|
144
|
-
* Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
|
|
145
|
-
* quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
|
|
146
|
-
* the quantization grid proportionately.
|
|
154
|
+
* Comma-separated aggregation expressions. If assigned on a vector source, source is grouped by geometry and then aggregated.
|
|
147
155
|
*
|
|
148
|
-
*
|
|
156
|
+
* Example:
|
|
149
157
|
*
|
|
150
|
-
*
|
|
151
|
-
* - 0.5: 512x512
|
|
152
|
-
* - 1: 1024x1024
|
|
153
|
-
* - 2: 2048x2048
|
|
154
|
-
* - 4: 4096x4096
|
|
158
|
+
* 1 as value, avg(rev) as average_revenue
|
|
155
159
|
*/
|
|
156
|
-
|
|
160
|
+
aggregationExp?: string;
|
|
157
161
|
};
|
|
158
162
|
export type TilesetSourceOptions = {
|
|
159
163
|
/**
|
|
@@ -170,6 +174,13 @@ export type ColumnsOption = {
|
|
|
170
174
|
columns?: string[];
|
|
171
175
|
};
|
|
172
176
|
export type SpatialDataType = 'geo' | 'h3' | 'quadbin';
|
|
177
|
+
/**
|
|
178
|
+
* Strategy used for covering spatial filter geometry with spatial indexes.
|
|
179
|
+
* See https://docs.carto.com/data-and-analysis/analytics-toolbox-for-bigquery/sql-reference/quadbin#quadbin_polyfill_mode
|
|
180
|
+
* or https://docs.carto.com/data-and-analysis/analytics-toolbox-for-bigquery/sql-reference/h3#h3_polyfill_mode for more information.
|
|
181
|
+
* @internalRemarks Source: cloud-native maps-api
|
|
182
|
+
* */
|
|
183
|
+
export type SpatialFilterPolyfillMode = 'center' | 'intersects' | 'contains';
|
|
173
184
|
export type TilejsonMapInstantiation = MapInstantiation & {
|
|
174
185
|
tilejson: {
|
|
175
186
|
url: string[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetQuerySourceResult } from '../widget-sources/index.js';
|
|
2
2
|
import type { FilterOptions, SourceOptions, QuerySourceOptions, TilejsonResult, ColumnsOption } from './types';
|
|
3
3
|
export type VectorQuerySourceOptions = SourceOptions & QuerySourceOptions & FilterOptions & ColumnsOption;
|
|
4
|
-
export
|
|
4
|
+
export type VectorQuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;
|
|
5
|
+
export declare const vectorQuerySource: (options: VectorQuerySourceOptions) => Promise<VectorQuerySourceResponse>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WidgetTableSourceResult } from '../widget-sources/index.js';
|
|
2
2
|
import type { FilterOptions, ColumnsOption, SourceOptions, TableSourceOptions, TilejsonResult } from './types';
|
|
3
3
|
export type VectorTableSourceOptions = SourceOptions & TableSourceOptions & FilterOptions & ColumnsOption;
|
|
4
|
-
export
|
|
4
|
+
export type VectorTableSourceResponse = TilejsonResult & WidgetTableSourceResult;
|
|
5
|
+
export declare const vectorTableSource: (options: VectorTableSourceOptions) => Promise<VectorTableSourceResponse>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { SourceOptions, TilesetSourceOptions, TilejsonResult } from './types';
|
|
2
2
|
export type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;
|
|
3
|
-
export
|
|
3
|
+
export type VectorTilesetSourceResponse = TilejsonResult;
|
|
4
|
+
export declare const vectorTilesetSource: (options: VectorTilesetSourceOptions) => Promise<VectorTilesetSourceResponse>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ModelSource } from './models/model';
|
|
2
|
+
import type { AggregationOptions } from './sources/types';
|
|
3
|
+
import type { ViewState } from './widget-sources';
|
|
4
|
+
export declare function getSpatialFiltersResolution(source: Partial<ModelSource & AggregationOptions>, viewState: ViewState): number | undefined;
|
|
5
|
+
export declare function getHexagonResolution(viewport: {
|
|
6
|
+
zoom: number;
|
|
7
|
+
latitude: number;
|
|
8
|
+
}, tileSize: number): number;
|
package/build/utils.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ type Row<T> = Record<string, T> | Record<string, T>[] | T[] | T;
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function normalizeObjectKeys<T, R extends Row<T>>(el: R): R;
|
|
16
16
|
/** @internalRemarks Source: @carto/react-core */
|
|
17
|
-
export declare function assert(condition: unknown, message: string):
|
|
17
|
+
export declare function assert(condition: unknown, message: string): asserts condition;
|
|
18
18
|
/**
|
|
19
19
|
* @internalRemarks Source: @carto/react-core
|
|
20
20
|
* @internal
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import { TileResolution } from '../sources/types';
|
|
1
|
+
import { SpatialFilterPolyfillMode, TileResolution } from '../sources/types';
|
|
2
2
|
import { GroupDateType, SortColumnType, SortDirection, SpatialFilter } from '../types';
|
|
3
3
|
/******************************************************************************
|
|
4
4
|
* WIDGET API REQUESTS
|
|
5
5
|
*/
|
|
6
|
+
export interface ViewState {
|
|
7
|
+
zoom: number;
|
|
8
|
+
latitude: number;
|
|
9
|
+
longitude: number;
|
|
10
|
+
}
|
|
6
11
|
/** Common options for {@link WidgetBaseSource} requests. */
|
|
7
12
|
interface BaseRequestOptions {
|
|
8
13
|
spatialFilter?: SpatialFilter;
|
|
14
|
+
spatialFiltersMode?: SpatialFilterPolyfillMode;
|
|
15
|
+
/** Required for table- and query-based spatial index sources (H3, Quadbin). */
|
|
16
|
+
spatialIndexReferenceViewState?: ViewState;
|
|
9
17
|
abortController?: AbortController;
|
|
10
18
|
filterOwner?: string;
|
|
11
19
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { CategoryRequestOptions, CategoryResponse, FeaturesRequestOptions, FeaturesResponse, FormulaRequestOptions, FormulaResponse, HistogramRequestOptions, HistogramResponse, RangeRequestOptions, RangeResponse, ScatterRequestOptions, ScatterResponse, TableRequestOptions, TableResponse, TimeSeriesRequestOptions, TimeSeriesResponse } from './types.js';
|
|
2
|
-
import { FilterLogicalOperator, Filter } from '../types.js';
|
|
1
|
+
import { CategoryRequestOptions, CategoryResponse, FeaturesRequestOptions, FeaturesResponse, FormulaRequestOptions, FormulaResponse, HistogramRequestOptions, HistogramResponse, RangeRequestOptions, RangeResponse, ScatterRequestOptions, ScatterResponse, TableRequestOptions, TableResponse, TimeSeriesRequestOptions, TimeSeriesResponse, ViewState } from './types.js';
|
|
2
|
+
import { FilterLogicalOperator, Filter, SpatialFilter } from '../types.js';
|
|
3
3
|
import { ModelSource } from '../models/model.js';
|
|
4
4
|
import { SourceOptions } from '../sources/index.js';
|
|
5
5
|
import { ApiVersion } from '../constants.js';
|
|
6
6
|
export interface WidgetBaseSourceProps extends Omit<SourceOptions, 'filters'> {
|
|
7
7
|
apiVersion?: ApiVersion;
|
|
8
|
-
geoColumn?: string;
|
|
9
8
|
filters?: Record<string, Filter>;
|
|
10
9
|
filtersLogicalOperator?: FilterLogicalOperator;
|
|
11
10
|
}
|
|
@@ -27,6 +26,7 @@ export declare abstract class WidgetBaseSource<Props extends WidgetBaseSourcePro
|
|
|
27
26
|
*/
|
|
28
27
|
protected abstract getModelSource(owner: string | undefined): ModelSource;
|
|
29
28
|
protected _getModelSource(owner?: string): Omit<ModelSource, 'type' | 'data'>;
|
|
29
|
+
protected _getSpatialFiltersResolution(source: Omit<ModelSource, 'type' | 'data'>, spatialFilter?: SpatialFilter, referenceViewState?: ViewState): number | undefined;
|
|
30
30
|
/****************************************************************************
|
|
31
31
|
* CATEGORIES
|
|
32
32
|
*/
|
package/package.json
CHANGED
package/src/api/query.ts
CHANGED
|
@@ -12,8 +12,7 @@ import {buildQueryUrl} from './endpoints';
|
|
|
12
12
|
import {requestWithParameters} from './request-with-parameters';
|
|
13
13
|
import {APIErrorContext} from './carto-api-error';
|
|
14
14
|
|
|
15
|
-
export type QueryOptions = SourceOptions &
|
|
16
|
-
Omit<QuerySourceOptions, 'spatialDataColumn'>;
|
|
15
|
+
export type QueryOptions = SourceOptions & QuerySourceOptions;
|
|
17
16
|
type UrlParameters = {q: string; queryParameters?: string};
|
|
18
17
|
|
|
19
18
|
export const query = async function (
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './client.js';
|
|
|
2
2
|
export * from './constants.js';
|
|
3
3
|
export * from './filters.js';
|
|
4
4
|
export * from './geo.js';
|
|
5
|
+
export * from './sources/index.js';
|
|
5
6
|
export * from './widget-sources/index.js';
|
|
6
7
|
export * from './types.js';
|
|
7
8
|
|
|
@@ -15,39 +16,3 @@ export {
|
|
|
15
16
|
query,
|
|
16
17
|
requestWithParameters,
|
|
17
18
|
} from './api/index.js';
|
|
18
|
-
|
|
19
|
-
export {
|
|
20
|
-
BoundaryQuerySourceOptions,
|
|
21
|
-
BoundaryTableSourceOptions,
|
|
22
|
-
GeojsonResult,
|
|
23
|
-
H3QuerySourceOptions,
|
|
24
|
-
H3TableSourceOptions,
|
|
25
|
-
H3TilesetSourceOptions,
|
|
26
|
-
JsonResult,
|
|
27
|
-
QuadbinQuerySourceOptions,
|
|
28
|
-
QuadbinTableSourceOptions,
|
|
29
|
-
QuadbinTilesetSourceOptions,
|
|
30
|
-
QueryResult,
|
|
31
|
-
QuerySourceOptions,
|
|
32
|
-
RasterSourceOptions,
|
|
33
|
-
SOURCE_DEFAULTS,
|
|
34
|
-
SourceOptions,
|
|
35
|
-
TableSourceOptions,
|
|
36
|
-
TilejsonResult,
|
|
37
|
-
TilesetSourceOptions,
|
|
38
|
-
VectorQuerySourceOptions,
|
|
39
|
-
VectorTableSourceOptions,
|
|
40
|
-
VectorTilesetSourceOptions,
|
|
41
|
-
boundaryQuerySource,
|
|
42
|
-
boundaryTableSource,
|
|
43
|
-
h3QuerySource,
|
|
44
|
-
h3TableSource,
|
|
45
|
-
h3TilesetSource,
|
|
46
|
-
quadbinQuerySource,
|
|
47
|
-
quadbinTableSource,
|
|
48
|
-
quadbinTilesetSource,
|
|
49
|
-
rasterSource,
|
|
50
|
-
vectorQuerySource,
|
|
51
|
-
vectorTableSource,
|
|
52
|
-
vectorTilesetSource,
|
|
53
|
-
} from './sources/index.js';
|
package/src/models/model.ts
CHANGED
|
@@ -7,9 +7,10 @@ import {
|
|
|
7
7
|
SpatialFilter,
|
|
8
8
|
} from '../types.js';
|
|
9
9
|
import {$TODO} from '../types-internal.js';
|
|
10
|
-
import {assert} from '../utils.js';
|
|
10
|
+
import {assert, isPureObject} from '../utils.js';
|
|
11
11
|
import {ModelRequestOptions, makeCall} from './common.js';
|
|
12
12
|
import {ApiVersion} from '../constants.js';
|
|
13
|
+
import {SpatialDataType, SpatialFilterPolyfillMode} from '../sources/types.js';
|
|
13
14
|
|
|
14
15
|
/** @internalRemarks Source: @carto/react-api */
|
|
15
16
|
const AVAILABLE_MODELS = [
|
|
@@ -35,9 +36,14 @@ export interface ModelSource {
|
|
|
35
36
|
data: string;
|
|
36
37
|
filters?: Record<string, Filter>;
|
|
37
38
|
filtersLogicalOperator?: FilterLogicalOperator;
|
|
38
|
-
geoColumn?: string;
|
|
39
39
|
spatialFilter?: SpatialFilter;
|
|
40
40
|
queryParameters?: QueryParameters;
|
|
41
|
+
spatialDataColumn?: string;
|
|
42
|
+
spatialDataType?: SpatialDataType;
|
|
43
|
+
spatialFiltersResolution?: number;
|
|
44
|
+
spatialFiltersMode?: SpatialFilterPolyfillMode;
|
|
45
|
+
/** original resolution of the spatial index data as stored in the DW */
|
|
46
|
+
dataResolution?: number;
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
const {V3} = ApiVersion;
|
|
@@ -79,50 +85,51 @@ export function executeModel(props: {
|
|
|
79
85
|
data,
|
|
80
86
|
filters,
|
|
81
87
|
filtersLogicalOperator = 'and',
|
|
82
|
-
|
|
88
|
+
spatialDataType = 'geo',
|
|
89
|
+
spatialFiltersMode = 'intersects',
|
|
90
|
+
spatialFiltersResolution = 0,
|
|
83
91
|
} = source;
|
|
84
92
|
|
|
85
|
-
const
|
|
86
|
-
? JSON.stringify(source.queryParameters)
|
|
87
|
-
: '';
|
|
88
|
-
|
|
89
|
-
const queryParams: Record<string, string> = {
|
|
93
|
+
const queryParams: Record<string, unknown> = {
|
|
90
94
|
type,
|
|
91
95
|
client: clientId,
|
|
92
96
|
source: data,
|
|
93
|
-
params
|
|
94
|
-
queryParameters,
|
|
95
|
-
filters
|
|
97
|
+
params,
|
|
98
|
+
queryParameters: source.queryParameters || '',
|
|
99
|
+
filters,
|
|
96
100
|
filtersLogicalOperator,
|
|
97
101
|
};
|
|
98
102
|
|
|
103
|
+
const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;
|
|
104
|
+
|
|
99
105
|
// Picking Model API requires 'spatialDataColumn'.
|
|
100
106
|
if (model === 'pick') {
|
|
101
|
-
queryParams.spatialDataColumn =
|
|
107
|
+
queryParams.spatialDataColumn = spatialDataColumn;
|
|
102
108
|
}
|
|
103
109
|
|
|
104
|
-
// API supports multiple filters, we apply it only to
|
|
110
|
+
// API supports multiple filters, we apply it only to spatialDataColumn
|
|
105
111
|
const spatialFilters = source.spatialFilter
|
|
106
|
-
? {[
|
|
112
|
+
? {[spatialDataColumn]: source.spatialFilter}
|
|
107
113
|
: undefined;
|
|
108
114
|
|
|
109
115
|
if (spatialFilters) {
|
|
110
|
-
queryParams.spatialFilters =
|
|
116
|
+
queryParams.spatialFilters = spatialFilters;
|
|
117
|
+
queryParams.spatialDataColumn = spatialDataColumn;
|
|
118
|
+
queryParams.spatialDataType = spatialDataType;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (spatialDataType !== 'geo') {
|
|
122
|
+
if (spatialFiltersResolution > 0) {
|
|
123
|
+
queryParams.spatialFiltersResolution = spatialFiltersResolution;
|
|
124
|
+
}
|
|
125
|
+
queryParams.spatialFiltersMode = spatialFiltersMode;
|
|
111
126
|
}
|
|
112
127
|
|
|
113
128
|
const urlWithSearchParams =
|
|
114
|
-
url + '?' +
|
|
129
|
+
url + '?' + objectToURLSearchParams(queryParams).toString();
|
|
115
130
|
const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;
|
|
116
131
|
if (isGet) {
|
|
117
132
|
url = urlWithSearchParams;
|
|
118
|
-
} else {
|
|
119
|
-
// undo the JSON.stringify, @TODO find a better pattern
|
|
120
|
-
queryParams.params = params as $TODO;
|
|
121
|
-
queryParams.filters = filters as $TODO;
|
|
122
|
-
queryParams.queryParameters = source.queryParameters as $TODO;
|
|
123
|
-
if (spatialFilters) {
|
|
124
|
-
queryParams.spatialFilters = spatialFilters as $TODO;
|
|
125
|
-
}
|
|
126
133
|
}
|
|
127
134
|
return makeCall({
|
|
128
135
|
url,
|
|
@@ -134,3 +141,19 @@ export function executeModel(props: {
|
|
|
134
141
|
},
|
|
135
142
|
});
|
|
136
143
|
}
|
|
144
|
+
|
|
145
|
+
function objectToURLSearchParams(object: Record<string, unknown>) {
|
|
146
|
+
const params = new URLSearchParams();
|
|
147
|
+
for (const key in object) {
|
|
148
|
+
if (isPureObject(object[key])) {
|
|
149
|
+
params.append(key, JSON.stringify(object[key]));
|
|
150
|
+
} else if (Array.isArray(object[key])) {
|
|
151
|
+
params.append(key, JSON.stringify(object[key]));
|
|
152
|
+
} else if (object[key] === null) {
|
|
153
|
+
params.append(key, 'null');
|
|
154
|
+
} else if (object[key] !== undefined) {
|
|
155
|
+
params.append(key, String(object[key]));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return params;
|
|
159
|
+
}
|
|
@@ -21,9 +21,11 @@ type UrlParameters = {
|
|
|
21
21
|
queryParameters?: Record<string, unknown> | unknown[];
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
export type BoundaryQuerySourceResponse = TilejsonResult;
|
|
25
|
+
|
|
24
26
|
export const boundaryQuerySource = async function (
|
|
25
27
|
options: BoundaryQuerySourceOptions
|
|
26
|
-
): Promise<
|
|
28
|
+
): Promise<BoundaryQuerySourceResponse> {
|
|
27
29
|
const {
|
|
28
30
|
columns,
|
|
29
31
|
filters,
|
|
@@ -49,5 +51,5 @@ export const boundaryQuerySource = async function (
|
|
|
49
51
|
'boundary',
|
|
50
52
|
options,
|
|
51
53
|
urlParameters
|
|
52
|
-
) as Promise<
|
|
54
|
+
) as Promise<BoundaryQuerySourceResponse>;
|
|
53
55
|
};
|
|
@@ -18,9 +18,11 @@ type UrlParameters = {
|
|
|
18
18
|
propertiesTableName: string;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
export type BoundaryTableSourceResponse = TilejsonResult;
|
|
22
|
+
|
|
21
23
|
export const boundaryTableSource = async function (
|
|
22
24
|
options: BoundaryTableSourceOptions
|
|
23
|
-
): Promise<
|
|
25
|
+
): Promise<BoundaryTableSourceResponse> {
|
|
24
26
|
const {filters, tilesetTableName, columns, propertiesTableName} = options;
|
|
25
27
|
const urlParameters: UrlParameters = {
|
|
26
28
|
tilesetTableName,
|
|
@@ -37,5 +39,5 @@ export const boundaryTableSource = async function (
|
|
|
37
39
|
'boundary',
|
|
38
40
|
options,
|
|
39
41
|
urlParameters
|
|
40
|
-
) as Promise<
|
|
42
|
+
) as Promise<BoundaryTableSourceResponse>;
|
|
41
43
|
};
|
|
@@ -19,6 +19,7 @@ export type H3QuerySourceOptions = SourceOptions &
|
|
|
19
19
|
QuerySourceOptions &
|
|
20
20
|
AggregationOptions &
|
|
21
21
|
FilterOptions;
|
|
22
|
+
|
|
22
23
|
type UrlParameters = {
|
|
23
24
|
aggregationExp: string;
|
|
24
25
|
aggregationResLevel?: string;
|
|
@@ -29,9 +30,11 @@ type UrlParameters = {
|
|
|
29
30
|
filters?: Record<string, unknown>;
|
|
30
31
|
};
|
|
31
32
|
|
|
33
|
+
export type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;
|
|
34
|
+
|
|
32
35
|
export const h3QuerySource = async function (
|
|
33
36
|
options: H3QuerySourceOptions
|
|
34
|
-
): Promise<
|
|
37
|
+
): Promise<H3QuerySourceResponse> {
|
|
35
38
|
const {
|
|
36
39
|
aggregationExp,
|
|
37
40
|
aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,
|
|
@@ -59,7 +62,12 @@ export const h3QuerySource = async function (
|
|
|
59
62
|
return baseSource<UrlParameters>('query', options, urlParameters).then(
|
|
60
63
|
(result) => ({
|
|
61
64
|
...(result as TilejsonResult),
|
|
62
|
-
widgetSource: new WidgetQuerySource(
|
|
65
|
+
widgetSource: new WidgetQuerySource({
|
|
66
|
+
...options,
|
|
67
|
+
// NOTE: passing redundant spatialDataColumn here to apply the default value 'h3'
|
|
68
|
+
spatialDataColumn,
|
|
69
|
+
spatialDataType: 'h3',
|
|
70
|
+
}),
|
|
63
71
|
})
|
|
64
72
|
);
|
|
65
73
|
};
|