• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

visgl / deck.gl / 15441073668

04 Jun 2025 11:27AM UTC coverage: 91.679% (+0.3%) from 91.421%
15441073668

Pull #9643

github

web-flow
Merge 9f8956170 into f9ca91bb1
Pull Request #9643: Test website build in CI

6764 of 7430 branches covered (91.04%)

Branch coverage included in aggregate %.

55795 of 60807 relevant lines covered (91.76%)

14501.07 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

60.27
/modules/carto/src/api/fetch-map.ts
1
import {_ConstructorOf, Layer} from '@deck.gl/core';
1✔
2
import ClusterTileLayer from '../layers/cluster-tile-layer';
1✔
3
import H3TileLayer from '../layers/h3-tile-layer';
1✔
4
import HeatmapTileLayer from '../layers/heatmap-tile-layer';
1✔
5
import VectorTileLayer from '../layers/vector-tile-layer';
1✔
6
import QuadbinTileLayer from '../layers/quadbin-tile-layer';
1✔
7
import RasterTileLayer from '../layers/raster-tile-layer';
1✔
8

1✔
9
import {
1✔
10
  fetchMap as _fetchMap,
1✔
11
  FetchMapOptions as _FetchMapOptions,
1✔
12
  FetchMapResult as _FetchMapResult,
1✔
13
  LayerDescriptor,
1✔
14
  LayerType
1✔
15
} from '@carto/api-client';
1✔
16

1✔
17
export type FetchMapResult = Omit<_FetchMapResult, 'layers'> & {
1✔
18
  layers: Layer[];
1✔
19
};
1✔
20

1✔
21
export type FetchMapOptions = Omit<_FetchMapOptions, 'onNewData'> & {
1✔
22
  onNewData?: (result: FetchMapResult) => void;
1✔
23
};
1✔
24

1✔
25
// Layer factory to create deck.gl layers from layer descriptors
1✔
26
const layerClasses: Record<LayerType, _ConstructorOf<Layer>> = {
1✔
27
  clusterTile: ClusterTileLayer,
1✔
28
  h3: H3TileLayer,
1✔
29
  heatmapTile: HeatmapTileLayer,
1✔
30
  mvt: VectorTileLayer,
1✔
31
  quadbin: QuadbinTileLayer,
1✔
32
  raster: RasterTileLayer,
1✔
33
  tileset: VectorTileLayer
1✔
34
} as const;
1✔
35

1✔
36
export function LayerFactory(descriptor: LayerDescriptor): Layer {
1✔
37
  const LayerClass = layerClasses[descriptor.type];
×
38
  if (!LayerClass) {
×
39
    throw new Error(`No layer class found for type: ${descriptor.type}`);
×
40
  }
×
41
  return new LayerClass(descriptor.props);
×
42
}
×
43

1✔
44
function createResult(result: _FetchMapResult): FetchMapResult {
×
45
  return {
×
46
    ...result,
×
47
    layers: result.layers.map(descriptor => LayerFactory(descriptor))
×
48
  };
×
49
}
×
50

1✔
51
/**
1✔
52
 * fetchMap is a wrapper around the @carto/api-client fetchMap function, with additions for convenience and backward-compatibility.
1✔
53
 * Where @carto/api-client fetchMap returns layer props, @deck.gl/carto fetchMap returns Layer instances ready for use.
1✔
54
 * For greater control, use the @carto/api-client fetchMap function directly and use LayerFactory to create layers manually.
1✔
55
 */
1✔
56
export async function fetchMap(options: FetchMapOptions): Promise<FetchMapResult> {
×
57
  const {onNewData, ...rest} = options;
×
58
  const _options: _FetchMapOptions = {
×
59
    ...rest,
×
60
    onNewData:
×
61
      typeof onNewData === 'function'
×
62
        ? result => {
×
63
            onNewData(createResult(result));
×
64
          }
×
65
        : undefined
×
66
  };
×
67

×
68
  // For backwards compatibility, provide a shim for the old API
×
69
  const _result: _FetchMapResult = await _fetchMap(_options);
×
70
  const result: FetchMapResult = createResult(_result);
×
71
  return result;
×
72
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc