@carto/api-client 0.4.2-alpha.0 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/build/api/query.d.ts +1 -1
  3. package/build/api-client.cjs +990 -1163
  4. package/build/api-client.cjs.map +1 -1
  5. package/build/api-client.modern.js +876 -1044
  6. package/build/api-client.modern.js.map +1 -1
  7. package/build/index.d.ts +1 -1
  8. package/build/models/model.d.ts +1 -7
  9. package/build/sources/boundary-query-source.d.ts +2 -1
  10. package/build/sources/boundary-table-source.d.ts +2 -1
  11. package/build/sources/h3-query-source.d.ts +2 -1
  12. package/build/sources/h3-table-source.d.ts +2 -1
  13. package/build/sources/h3-tileset-source.d.ts +2 -1
  14. package/build/sources/index.d.ts +13 -14
  15. package/build/sources/quadbin-query-source.d.ts +2 -1
  16. package/build/sources/quadbin-table-source.d.ts +2 -1
  17. package/build/sources/quadbin-tileset-source.d.ts +2 -1
  18. package/build/sources/raster-source.d.ts +2 -1
  19. package/build/sources/types.d.ts +57 -36
  20. package/build/sources/vector-query-source.d.ts +2 -1
  21. package/build/sources/vector-table-source.d.ts +2 -1
  22. package/build/sources/vector-tileset-source.d.ts +2 -1
  23. package/build/utils.d.ts +1 -1
  24. package/build/widget-sources/types.d.ts +1 -8
  25. package/build/widget-sources/widget-base-source.d.ts +1 -0
  26. package/package.json +1 -1
  27. package/src/api/query.ts +2 -1
  28. package/src/index.ts +1 -36
  29. package/src/models/model.ts +24 -47
  30. package/src/sources/boundary-query-source.ts +4 -2
  31. package/src/sources/boundary-table-source.ts +4 -2
  32. package/src/sources/h3-query-source.ts +4 -8
  33. package/src/sources/h3-table-source.ts +4 -7
  34. package/src/sources/h3-tileset-source.ts +4 -2
  35. package/src/sources/index.ts +54 -24
  36. package/src/sources/quadbin-query-source.ts +5 -7
  37. package/src/sources/quadbin-table-source.ts +5 -7
  38. package/src/sources/quadbin-tileset-source.ts +4 -2
  39. package/src/sources/raster-source.ts +4 -2
  40. package/src/sources/types.ts +63 -41
  41. package/src/sources/vector-query-source.ts +10 -5
  42. package/src/sources/vector-table-source.ts +10 -5
  43. package/src/sources/vector-tileset-source.ts +4 -2
  44. package/src/utils.ts +1 -1
  45. package/src/widget-sources/types.ts +1 -9
  46. package/src/widget-sources/widget-base-source.ts +21 -190
  47. package/build/spatial-index.d.ts +0 -11
  48. package/src/spatial-index.ts +0 -119
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';
@@ -1,7 +1,6 @@
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';
5
4
  /** @internalRemarks Source: @carto/react-api */
6
5
  declare const AVAILABLE_MODELS: readonly ["category", "histogram", "formula", "pick", "timeseries", "range", "scatterplot", "table"];
7
6
  export type Model = (typeof AVAILABLE_MODELS)[number];
@@ -15,14 +14,9 @@ export interface ModelSource {
15
14
  data: string;
16
15
  filters?: Record<string, Filter>;
17
16
  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;
26
20
  }
27
21
  /**
28
22
  * 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 declare const boundaryQuerySource: (options: BoundaryQuerySourceOptions) => Promise<TilejsonResult>;
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 declare const boundaryTableSource: (options: BoundaryTableSourceOptions) => Promise<TilejsonResult>;
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 declare const h3QuerySource: (options: H3QuerySourceOptions) => Promise<TilejsonResult & WidgetQuerySourceResult>;
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 declare const h3TableSource: (options: H3TableSourceOptions) => Promise<TilejsonResult & WidgetTableSourceResult>;
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 declare const h3TilesetSource: (options: H3TilesetSourceOptions) => Promise<TilejsonResult>;
3
+ export type H3TilesetSourceResponse = TilejsonResult;
4
+ export declare const h3TilesetSource: (options: H3TilesetSourceOptions) => Promise<H3TilesetSourceResponse>;
@@ -1,27 +1,26 @@
1
1
  export { SOURCE_DEFAULTS } from './base-source';
2
- export type { VectorLayer, RasterMetadataBandStats, RasterBandColorinterp, RasterMetadataBand, RasterMetadata, TilejsonResult, GeojsonResult, JsonResult, QueryResult, } from './types';
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 declare const quadbinQuerySource: (options: QuadbinQuerySourceOptions) => Promise<TilejsonResult & WidgetQuerySourceResult>;
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 declare const quadbinTableSource: (options: QuadbinTableSourceOptions) => Promise<TilejsonResult & WidgetTableSourceResult>;
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 declare const quadbinTilesetSource: (options: QuadbinTilesetSourceOptions) => Promise<TilejsonResult>;
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 declare const rasterSource: (options: RasterSourceOptions) => Promise<TilejsonResult>;
3
+ export type RasterSourceResponse = TilejsonResult;
4
+ export declare const rasterSource: (options: RasterSourceOptions) => Promise<RasterSourceResponse>;
@@ -38,30 +38,6 @@ 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;
65
41
  /**
66
42
  * By default, local in-memory caching is enabled.
67
43
  */
@@ -97,10 +73,6 @@ export type AggregationOptions = {
97
73
  * @default 6 for quadbin and 4 for h3 sources
98
74
  */
99
75
  aggregationResLevel?: number;
100
- /**
101
- * Original resolution of the spatial index data as stored in the DW
102
- */
103
- dataResolution?: number;
104
76
  };
105
77
  export type FilterOptions = {
106
78
  /**
@@ -109,8 +81,28 @@ export type FilterOptions = {
109
81
  filters?: Filters;
110
82
  };
111
83
  export type QuerySourceOptions = {
112
- /** Full SQL query with query paremeter placeholders (if any). */
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. */
113
91
  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;
114
106
  /**
115
107
  * Values for named or positional paramteres in the query.
116
108
  *
@@ -136,12 +128,48 @@ export type QuerySourceOptions = {
136
128
  * ```
137
129
  */
138
130
  queryParameters?: QueryParameters;
131
+ /**
132
+ * Comma-separated aggregation expressions. If assigned on a vector source, source is grouped by geometry and then aggregated.
133
+ *
134
+ * Example:
135
+ *
136
+ * 1 as value, avg(rev) as average_revenue
137
+ */
138
+ aggregationExp?: string;
139
139
  };
140
140
  export type TableSourceOptions = {
141
141
  /**
142
142
  * Fully qualified name of table.
143
143
  */
144
144
  tableName: string;
145
+ /**
146
+ * The column name and the type of geospatial support.
147
+ *
148
+ * If not present, defaults to `'geom'` for generic tables, `'quadbin'` for Quadbin sources and `'h3'` for H3 sources.
149
+ */
150
+ spatialDataColumn?: string;
151
+ /**
152
+ * Relative resolution of a tile. Higher values increase density and data size. At `tileResolution = 1`, tile geometry is
153
+ * quantized to a 1024x1024 grid. Increasing or decreasing the resolution will increase or decrease the dimensions of
154
+ * the quantization grid proportionately.
155
+ *
156
+ * Supported `tileResolution` values, with corresponding grid sizes:
157
+ *
158
+ * - 0.25: 256x256
159
+ * - 0.5: 512x512
160
+ * - 1: 1024x1024
161
+ * - 2: 2048x2048
162
+ * - 4: 4096x4096
163
+ */
164
+ tileResolution?: TileResolution;
165
+ /**
166
+ * Comma-separated aggregation expressions. If assigned on a vector source, source is grouped by geometry and then aggregated.
167
+ *
168
+ * Example:
169
+ *
170
+ * 1 as value, avg(rev) as average_revenue
171
+ */
172
+ aggregationExp?: string;
145
173
  };
146
174
  export type TilesetSourceOptions = {
147
175
  /**
@@ -158,13 +186,6 @@ export type ColumnsOption = {
158
186
  columns?: string[];
159
187
  };
160
188
  export type SpatialDataType = 'geo' | 'h3' | 'quadbin';
161
- /**
162
- * Strategy used for covering spatial filter geometry with spatial indexes.
163
- * See https://docs.carto.com/data-and-analysis/analytics-toolbox-for-bigquery/sql-reference/quadbin#quadbin_polyfill_mode
164
- * or https://docs.carto.com/data-and-analysis/analytics-toolbox-for-bigquery/sql-reference/h3#h3_polyfill_mode for more information.
165
- * @internalRemarks Source: cloud-native maps-api
166
- * */
167
- export type SpatialFilterPolyfillMode = 'center' | 'intersects' | 'contains';
168
189
  export type TilejsonMapInstantiation = MapInstantiation & {
169
190
  tilejson: {
170
191
  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 declare const vectorQuerySource: (options: VectorQuerySourceOptions) => Promise<TilejsonResult & WidgetQuerySourceResult>;
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 declare const vectorTableSource: (options: VectorTableSourceOptions) => Promise<TilejsonResult & WidgetTableSourceResult>;
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 declare const vectorTilesetSource: (options: VectorTilesetSourceOptions) => Promise<TilejsonResult>;
3
+ export type VectorTilesetSourceResponse = TilejsonResult;
4
+ export declare const vectorTilesetSource: (options: VectorTilesetSourceOptions) => Promise<VectorTilesetSourceResponse>;
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): asserts condition;
17
+ export declare function assert(condition: unknown, message: string): void;
18
18
  /**
19
19
  * @internalRemarks Source: @carto/react-core
20
20
  * @internal
@@ -1,20 +1,13 @@
1
- import { SpatialFilterPolyfillMode, TileResolution } from '../sources/types';
1
+ import { 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
- }
11
6
  /** Common options for {@link WidgetBaseSource} requests. */
12
7
  interface BaseRequestOptions {
13
8
  spatialFilter?: SpatialFilter;
14
- spatialFiltersMode?: SpatialFilterPolyfillMode;
15
9
  abortController?: AbortController;
16
10
  filterOwner?: string;
17
- viewState?: ViewState;
18
11
  }
19
12
  /** Options for {@link WidgetBaseSource#getCategories}. */
20
13
  export interface CategoryRequestOptions extends BaseRequestOptions {
@@ -5,6 +5,7 @@ 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;
8
9
  filters?: Record<string, Filter>;
9
10
  filtersLogicalOperator?: FilterLogicalOperator;
10
11
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "repository": "github:CartoDB/carto-api-client",
5
5
  "author": "Don McCurdy <donmccurdy@carto.com>",
6
6
  "packageManager": "yarn@4.3.1",
7
- "version": "0.4.2-alpha.0",
7
+ "version": "0.4.3",
8
8
  "license": "MIT",
9
9
  "publishConfig": {
10
10
  "access": "public",
package/src/api/query.ts CHANGED
@@ -12,7 +12,8 @@ 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 & QuerySourceOptions;
15
+ export type QueryOptions = SourceOptions &
16
+ Omit<QuerySourceOptions, 'spatialDataColumn'>;
16
17
  type UrlParameters = {q: string; queryParameters?: string};
17
18
 
18
19
  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';
@@ -7,10 +7,9 @@ import {
7
7
  SpatialFilter,
8
8
  } from '../types.js';
9
9
  import {$TODO} from '../types-internal.js';
10
- import {assert, isPureObject} from '../utils.js';
10
+ import {assert} 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';
14
13
 
15
14
  /** @internalRemarks Source: @carto/react-api */
16
15
  const AVAILABLE_MODELS = [
@@ -36,14 +35,9 @@ export interface ModelSource {
36
35
  data: string;
37
36
  filters?: Record<string, Filter>;
38
37
  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;
47
41
  }
48
42
 
49
43
  const {V3} = ApiVersion;
@@ -85,51 +79,50 @@ export function executeModel(props: {
85
79
  data,
86
80
  filters,
87
81
  filtersLogicalOperator = 'and',
88
- spatialDataType = 'geo',
89
- spatialFiltersMode = 'intersects',
90
- spatialFiltersResolution = 0,
82
+ geoColumn = DEFAULT_GEO_COLUMN,
91
83
  } = source;
92
84
 
93
- const queryParams: Record<string, unknown> = {
85
+ const queryParameters = source.queryParameters
86
+ ? JSON.stringify(source.queryParameters)
87
+ : '';
88
+
89
+ const queryParams: Record<string, string> = {
94
90
  type,
95
91
  client: clientId,
96
92
  source: data,
97
- params,
98
- queryParameters: source.queryParameters || '',
99
- filters,
93
+ params: JSON.stringify(params),
94
+ queryParameters,
95
+ filters: JSON.stringify(filters),
100
96
  filtersLogicalOperator,
101
97
  };
102
98
 
103
- const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;
104
-
105
99
  // Picking Model API requires 'spatialDataColumn'.
106
100
  if (model === 'pick') {
107
- queryParams.spatialDataColumn = spatialDataColumn;
101
+ queryParams.spatialDataColumn = geoColumn;
108
102
  }
109
103
 
110
- // API supports multiple filters, we apply it only to spatialDataColumn
104
+ // API supports multiple filters, we apply it only to geoColumn
111
105
  const spatialFilters = source.spatialFilter
112
- ? {[spatialDataColumn]: source.spatialFilter}
106
+ ? {[geoColumn]: source.spatialFilter}
113
107
  : undefined;
114
108
 
115
109
  if (spatialFilters) {
116
- queryParams.spatialFilters = spatialFilters; // JSON.stringify(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;
110
+ queryParams.spatialFilters = JSON.stringify(spatialFilters);
126
111
  }
127
112
 
128
113
  const urlWithSearchParams =
129
- url + '?' + objectToURLSearchParams(queryParams).toString();
114
+ url + '?' + new URLSearchParams(queryParams).toString();
130
115
  const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;
131
116
  if (isGet) {
132
117
  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
+ }
133
126
  }
134
127
  return makeCall({
135
128
  url,
@@ -141,19 +134,3 @@ export function executeModel(props: {
141
134
  },
142
135
  });
143
136
  }
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<TilejsonResult> {
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<TilejsonResult>;
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<TilejsonResult> {
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<TilejsonResult>;
42
+ ) as Promise<BoundaryTableSourceResponse>;
41
43
  };
@@ -19,7 +19,6 @@ export type H3QuerySourceOptions = SourceOptions &
19
19
  QuerySourceOptions &
20
20
  AggregationOptions &
21
21
  FilterOptions;
22
-
23
22
  type UrlParameters = {
24
23
  aggregationExp: string;
25
24
  aggregationResLevel?: string;
@@ -30,9 +29,11 @@ type UrlParameters = {
30
29
  filters?: Record<string, unknown>;
31
30
  };
32
31
 
32
+ export type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;
33
+
33
34
  export const h3QuerySource = async function (
34
35
  options: H3QuerySourceOptions
35
- ): Promise<TilejsonResult & WidgetQuerySourceResult> {
36
+ ): Promise<H3QuerySourceResponse> {
36
37
  const {
37
38
  aggregationExp,
38
39
  aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,
@@ -60,12 +61,7 @@ export const h3QuerySource = async function (
60
61
  return baseSource<UrlParameters>('query', options, urlParameters).then(
61
62
  (result) => ({
62
63
  ...(result as TilejsonResult),
63
- widgetSource: new WidgetQuerySource({
64
- ...options,
65
- // NOTE: passing redundant spatialDataColumn here to apply the default value 'h3'
66
- spatialDataColumn,
67
- spatialDataType: 'h3',
68
- }),
64
+ widgetSource: new WidgetQuerySource(options),
69
65
  })
70
66
  );
71
67
  };
@@ -29,9 +29,11 @@ type UrlParameters = {
29
29
  filters?: Record<string, unknown>;
30
30
  };
31
31
 
32
+ export type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;
33
+
32
34
  export const h3TableSource = async function (
33
35
  options: H3TableSourceOptions
34
- ): Promise<TilejsonResult & WidgetTableSourceResult> {
36
+ ): Promise<H3TableSourceResponse> {
35
37
  const {
36
38
  aggregationExp,
37
39
  aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,
@@ -55,12 +57,7 @@ export const h3TableSource = async function (
55
57
  return baseSource<UrlParameters>('table', options, urlParameters).then(
56
58
  (result) => ({
57
59
  ...(result as TilejsonResult),
58
- widgetSource: new WidgetTableSource({
59
- ...options,
60
- // NOTE: passing redundant spatialDataColumn here to apply the default value 'h3'
61
- spatialDataColumn,
62
- spatialDataType: 'h3',
63
- }),
60
+ widgetSource: new WidgetTableSource(options),
64
61
  })
65
62
  );
66
63
  };