@carto/api-client 0.5.3 → 0.5.4-alpha.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.
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "homepage": "https://github.com/CartoDB/carto-api-client#readme",
9
9
  "author": "Don McCurdy <donmccurdy@carto.com>",
10
10
  "packageManager": "yarn@4.3.1",
11
- "version": "0.5.3",
11
+ "version": "0.5.4-alpha.1",
12
12
  "license": "MIT",
13
13
  "publishConfig": {
14
14
  "access": "public"
@@ -128,5 +128,6 @@
128
128
  "resolutions": {
129
129
  "@carto/api-client": "portal:./",
130
130
  "rollup": "^4.20.0"
131
- }
131
+ },
132
+ "stableVersion": "0.5.3"
132
133
  }
@@ -22,7 +22,7 @@ export type TileFeatures = {
22
22
  spatialFilter: SpatialFilter;
23
23
  uniqueIdProperty?: string;
24
24
  rasterMetadata?: RasterMetadata;
25
- options?: TileFeatureExtractOptions;
25
+ storeGeometry?: boolean;
26
26
  };
27
27
 
28
28
  /** @privateRemarks Source: @carto/react-core */
@@ -42,7 +42,7 @@ export function tileFeatures({
42
42
  spatialDataColumn = DEFAULT_GEO_COLUMN,
43
43
  spatialDataType,
44
44
  rasterMetadata,
45
- options = {},
45
+ storeGeometry = false,
46
46
  }: TileFeatures): FeatureData[] {
47
47
  if (spatialDataType === 'geo') {
48
48
  return tileFeaturesGeometries({
@@ -50,7 +50,7 @@ export function tileFeatures({
50
50
  tileFormat,
51
51
  spatialFilter,
52
52
  uniqueIdProperty,
53
- options,
53
+ options: {storeGeometry},
54
54
  });
55
55
  }
56
56
 
@@ -16,7 +16,6 @@ import type {
16
16
  Position,
17
17
  } from 'geojson';
18
18
  import type {SpatialFilter, Tile} from '../types.js';
19
- import type {TileFeatureExtractOptions} from './tileFeatures.js';
20
19
  import {featureCollection} from '@turf/helpers';
21
20
  import type {FeatureData} from '../types-internal.js';
22
21
  import type {
@@ -39,6 +38,10 @@ type TileDataInternal = {
39
38
  numericProps: Record<string, number>;
40
39
  };
41
40
 
41
+ type GeometryExtractOptions = {
42
+ storeGeometry?: boolean;
43
+ };
44
+
42
45
  export function tileFeaturesGeometries({
43
46
  tiles,
44
47
  tileFormat,
@@ -50,7 +53,7 @@ export function tileFeaturesGeometries({
50
53
  tileFormat?: TileFormat;
51
54
  spatialFilter: SpatialFilter;
52
55
  uniqueIdProperty?: string;
53
- options?: {storeGeometry?: boolean};
56
+ options?: GeometryExtractOptions;
54
57
  }): FeatureData[] {
55
58
  const map = new Map();
56
59
 
@@ -212,7 +215,7 @@ function addIntersectedFeaturesInTile({
212
215
  bbox: BBox;
213
216
  tileFormat?: TileFormat;
214
217
  uniqueIdProperty?: string;
215
- options?: TileFeatureExtractOptions;
218
+ options?: GeometryExtractOptions;
216
219
  }) {
217
220
  const indices = getIndices(data, type);
218
221
  const storeGeometry = options?.storeGeometry || false;
@@ -364,7 +367,7 @@ function calculateFeatures({
364
367
  bbox: BBox;
365
368
  tileFormat?: TileFormat;
366
369
  uniqueIdProperty?: string;
367
- options?: TileFeatureExtractOptions;
370
+ options?: GeometryExtractOptions;
368
371
  }) {
369
372
  if (!data?.properties.length) {
370
373
  return;
@@ -409,7 +412,7 @@ function addAllFeaturesInTile({
409
412
  bbox: BBox;
410
413
  tileFormat?: TileFormat;
411
414
  uniqueIdProperty?: string;
412
- options?: TileFeatureExtractOptions;
415
+ options?: GeometryExtractOptions;
413
416
  }) {
414
417
  const indices = getIndices(data, type);
415
418
  const storeGeometry = options?.storeGeometry || false;
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';
6
+ import {getWidgetSpatialDataType} from '../utils.js';
6
7
  import {
7
8
  WidgetQuerySource,
8
9
  type WidgetQuerySourceResult,
@@ -72,7 +73,11 @@ export const h3QuerySource = async function (
72
73
  ...options,
73
74
  // NOTE: Parameters with default values above must be explicitly passed here.
74
75
  spatialDataColumn,
75
- spatialDataType,
76
+ spatialDataType: getWidgetSpatialDataType(
77
+ spatialDataType,
78
+ spatialDataColumn,
79
+ result.schema
80
+ ),
76
81
  }),
77
82
  })
78
83
  );
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';
6
+ import {getWidgetSpatialDataType} from '../utils.js';
6
7
  import {
7
8
  WidgetTableSource,
8
9
  type WidgetTableSourceResult,
@@ -67,7 +68,11 @@ export const h3TableSource = async function (
67
68
  ...options,
68
69
  // NOTE: Parameters with default values above must be explicitly passed here.
69
70
  spatialDataColumn,
70
- spatialDataType,
71
+ spatialDataType: getWidgetSpatialDataType(
72
+ spatialDataType,
73
+ spatialDataColumn,
74
+ result.schema
75
+ ),
71
76
  }),
72
77
  })
73
78
  );
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';
6
+ import {getWidgetSpatialDataType} from '../utils.js';
6
7
  import {
7
8
  WidgetQuerySource,
8
9
  type WidgetQuerySourceResult,
@@ -73,7 +74,11 @@ export const quadbinQuerySource = async function (
73
74
  ...options,
74
75
  // NOTE: Parameters with default values above must be explicitly passed here.
75
76
  spatialDataColumn,
76
- spatialDataType,
77
+ spatialDataType: getWidgetSpatialDataType(
78
+ spatialDataType,
79
+ spatialDataColumn,
80
+ result.schema
81
+ ),
77
82
  }),
78
83
  })
79
84
  );
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';
6
+ import {getWidgetSpatialDataType} from '../utils.js';
6
7
  import {
7
8
  WidgetTableSource,
8
9
  type WidgetTableSourceResult,
@@ -68,7 +69,11 @@ export const quadbinTableSource = async function (
68
69
  ...options,
69
70
  // NOTE: Parameters with default values above must be explicitly passed here.
70
71
  spatialDataColumn,
71
- spatialDataType,
72
+ spatialDataType: getWidgetSpatialDataType(
73
+ spatialDataType,
74
+ spatialDataColumn,
75
+ result.schema
76
+ ),
72
77
  }),
73
78
  })
74
79
  );
package/src/utils.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type {Filter} from './types.js';
1
+ import {SchemaFieldType, type Filter, type SchemaField} from './types.js';
2
2
  import {FilterType} from './constants.js';
3
+ import type {SpatialDataType} from './sources/types.js';
3
4
 
4
5
  const FILTER_TYPES = new Set(Object.values(FilterType));
5
6
  const isFilterType = (type: string): type is FilterType =>
@@ -127,3 +128,21 @@ export function assignOptional<T extends object, U>(
127
128
  }
128
129
  return target as T & U;
129
130
  }
131
+
132
+ /**
133
+ * Returns the spatialDataType expected for widget operations, given layer source props. The
134
+ * spatialDataType used in widget operations may be different from that of the layer. For
135
+ * dynamically aggregated point datasets, widgets use type 'geo', not the aggregation type.
136
+ */
137
+ export function getWidgetSpatialDataType(
138
+ spatialDataType: SpatialDataType,
139
+ spatialDataColumn: string,
140
+ schema: SchemaField[]
141
+ ): SpatialDataType {
142
+ const field = schema.find((field) => field.name === spatialDataColumn);
143
+ if (field && field.type === SchemaFieldType.Geometry) {
144
+ return 'geo';
145
+ }
146
+
147
+ return spatialDataType;
148
+ }