@tomtom-org/maps-sdk 0.31.1 → 0.32.0

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,8 +1,13 @@
1
1
  {
2
2
  "name": "services",
3
3
  "description": "TomTom Maps SDK JS - bundle for service GeoJSON clients",
4
- "main": "main.js",
5
- "module": "./dist/services.es.js",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "default": "./dist/services.es.js"
9
+ }
10
+ },
6
11
  "sideEffects": false,
7
12
  "scripts": {
8
13
  "test": "vitest run",
@@ -13,10 +18,8 @@
13
18
  "type-check": "tsc --noEmit",
14
19
  "clean:dist": "rimraf ./dist"
15
20
  },
16
- "types": "./dist/index.d.ts",
17
21
  "devDependencies": {
18
22
  "@microsoft/api-extractor": "catalog:",
19
- "@rollup/plugin-terser": "catalog:",
20
23
  "@types/geojson": "catalog:",
21
24
  "@types/lodash-es": "catalog:",
22
25
  "@types/node": "catalog:",
@@ -1,530 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const defaultConfig = {
4
- commonBaseURL: "https://api.tomtom.com",
5
- apiKey: "",
6
- apiVersion: 1
7
- };
8
- const _TomTomConfig = class _TomTomConfig {
9
- constructor() {
10
- this.config = { ...defaultConfig };
11
- }
12
- /**
13
- * Merge configuration values into the global configuration.
14
- *
15
- * New values override existing ones. This performs a shallow merge,
16
- * so nested objects are replaced entirely rather than merged.
17
- *
18
- * @param config - Partial configuration to merge
19
- *
20
- * @example
21
- * ```typescript
22
- * TomTomConfig.instance.put({
23
- * apiKey: 'your-api-key',
24
- * language: 'de-DE'
25
- * });
26
- * ```
27
- */
28
- put(config) {
29
- this.config = { ...this.config, ...config };
30
- }
31
- /**
32
- * Reset configuration to default values.
33
- *
34
- * Clears all custom configuration and restores the initial defaults.
35
- * Note that the default API key is an empty string.
36
- *
37
- * @example
38
- * ```typescript
39
- * TomTomConfig.instance.reset();
40
- * ```
41
- */
42
- reset() {
43
- this.config = { ...defaultConfig };
44
- }
45
- /**
46
- * Get the current global configuration.
47
- *
48
- * @returns Current configuration object
49
- *
50
- * @example
51
- * ```typescript
52
- * const config = TomTomConfig.instance.get();
53
- * console.log(config.apiKey);
54
- * ```
55
- */
56
- get() {
57
- return this.config;
58
- }
59
- };
60
- _TomTomConfig.instance = new _TomTomConfig();
61
- let TomTomConfig = _TomTomConfig;
62
- const mergeFromGlobal = (givenConfig = {}) => ({
63
- ...TomTomConfig.instance.get(),
64
- ...givenConfig
65
- });
66
- const chargingStationAccessTypes = ["Public", "Authorized", "Restricted", "Private", "Unknown"];
67
- const chargingPointStatus = ["Available", "Reserved", "Occupied", "OutOfService", "Unknown"];
68
- const chargingPointCapabilities = [
69
- "ChargingProfileCapable",
70
- "ChargingPreferencesCapable",
71
- "ChipCardSupport",
72
- "ContactlessCardSupport",
73
- "CreditCardPayable",
74
- "DebitCardPayable",
75
- "PedTerminal",
76
- "RemoteStartStopCapable",
77
- "Reservable",
78
- "RfidReader",
79
- "StartSessionConnectorRequired",
80
- "TokenGroupCapable",
81
- "UnlockCapable",
82
- "PlugAndCharge",
83
- "Unknown"
84
- ];
85
- const chargingPointRestrictions = ["EvOnly", "Plugged", "Disabled", "Customers", "Motorcycles"];
86
- const connectorTypes = [
87
- "StandardHouseholdCountrySpecific",
88
- "IEC62196Type1",
89
- "IEC62196Type1CCS",
90
- "IEC62196Type2CableAttached",
91
- "IEC62196Type2Outlet",
92
- "IEC62196Type2CCS",
93
- "IEC62196Type3",
94
- "Chademo",
95
- "GBT20234Part2",
96
- "GBT20234Part3",
97
- "IEC60309AC3PhaseRed",
98
- "IEC60309AC1PhaseBlue",
99
- "IEC60309DCWhite",
100
- "Tesla"
101
- ];
102
- const currentTypes = ["AC1", "AC3", "DC"];
103
- const geographyTypes = [
104
- "Country",
105
- "CountrySubdivision",
106
- "CountrySecondarySubdivision",
107
- "CountryTertiarySubdivision",
108
- "Municipality",
109
- "MunicipalitySubdivision",
110
- "Neighbourhood",
111
- "PostalCodeArea"
112
- ];
113
- const placeTypes = ["POI", "Street", "Geography", "Point Address", "Address Range", "Cross Street"];
114
- const plugTypes = [
115
- "Small_Paddle_Inductive",
116
- "Large_Paddle_Inductive",
117
- "IEC_60309_1_Phase",
118
- "IEC_60309_3_Phase",
119
- "IEC_62196_Type_1_Outlet",
120
- "IEC_62196_Type_2_Outlet",
121
- "IEC_62196_Type_3_Outlet",
122
- "IEC_62196_Type_1_Connector_Cable_Attached",
123
- "IEC_62196_Type_2_Connector_Cable_Attached",
124
- "IEC_62196_Type_3_Connector_Cable_Attached",
125
- "Combo_to_IEC_62196_Type_1_Base",
126
- "Combo_to_IEC_62196_Type_2_Base",
127
- "Type_E_French_Standard_CEE_7_5",
128
- "Type_F_Schuko_CEE_7_4",
129
- "Type_G_British_Standard_BS_1363",
130
- "Type_J_Swiss_Standard_SEV_1011",
131
- "China_GB_Part_2",
132
- "China_GB_Part_3",
133
- "IEC_309_DC_Plug",
134
- "AVCON_Connector",
135
- "Tesla_Connector",
136
- "NEMA_5_20",
137
- "CHAdeMO",
138
- "SAE_J1772",
139
- "TEPCO",
140
- "Better_Place_Socket",
141
- "Marechal_Socket",
142
- "Standard_Household_Country_Specific"
143
- ];
144
- const paymentMethods = ["No_Payment", "Subscription", "Direct"];
145
- const avoidableTypes = [
146
- "tollRoads",
147
- "motorways",
148
- "ferries",
149
- "unpavedRoads",
150
- "carpools",
151
- "alreadyUsedRoads",
152
- "borderCrossings",
153
- "tunnels",
154
- "carTrains",
155
- "lowEmissionZones"
156
- ];
157
- const trafficCategories = [
158
- "jam",
159
- "accident",
160
- "roadworks",
161
- "road-closed",
162
- "narrow-lanes",
163
- "danger",
164
- "animals-on-road",
165
- "broken-down-vehicle",
166
- "lane-closed",
167
- "wind",
168
- "fog",
169
- "rain",
170
- "frost",
171
- "flooding",
172
- "other"
173
- ];
174
- const inputSectionTypes = [
175
- "carTrain",
176
- "ferry",
177
- "tunnel",
178
- "motorway",
179
- "pedestrian",
180
- "toll",
181
- "tollVignette",
182
- "country",
183
- "vehicleRestricted",
184
- "traffic",
185
- "carpool",
186
- "urban",
187
- "unpaved",
188
- "lowEmissionZone",
189
- "speedLimit",
190
- "roadShields",
191
- "importantRoadStretch"
192
- ];
193
- const inputSectionTypesWithGuidance = [...inputSectionTypes, "lanes"];
194
- const sectionTypes = [...inputSectionTypesWithGuidance, "leg"];
195
- const views = ["Unified", "AR", "IN", "PK", "IL", "MA", "RU", "TR", "CN"];
196
- const isBBoxWithArea = (bbox) => bbox ? bbox.length >= 4 && bbox[3] !== bbox[1] && bbox[2] !== bbox[0] : false;
197
- const bboxOnlyIfWithArea = (bbox) => isBBoxWithArea(bbox) ? bbox : void 0;
198
- const bboxExpandedWithPosition = (positionToContain, bboxToExpand) => {
199
- if (!positionToContain || positionToContain.length < 2) {
200
- return void 0;
201
- }
202
- return bboxToExpand ? [
203
- // min longitude:
204
- bboxToExpand[0] > positionToContain[0] ? positionToContain[0] : bboxToExpand[0],
205
- // min latitude:
206
- bboxToExpand[1] > positionToContain[1] ? positionToContain[1] : bboxToExpand[1],
207
- // max longitude:
208
- bboxToExpand[2] < positionToContain[0] ? positionToContain[0] : bboxToExpand[2],
209
- // max latitude:
210
- bboxToExpand[3] < positionToContain[1] ? positionToContain[1] : bboxToExpand[3]
211
- ] : (
212
- // single point bbox with no size:
213
- [positionToContain[0], positionToContain[1], positionToContain[0], positionToContain[1]]
214
- );
215
- };
216
- const bboxExpandedWithBBox = (bboxToContain, bboxToExpand) => {
217
- if (!bboxToExpand || !bboxToContain) {
218
- return bboxToContain || bboxToExpand;
219
- }
220
- return [
221
- // min longitude:
222
- bboxToExpand[0] > bboxToContain[0] ? bboxToContain[0] : bboxToExpand[0],
223
- // min latitude:
224
- bboxToExpand[1] > bboxToContain[1] ? bboxToContain[1] : bboxToExpand[1],
225
- // max longitude:
226
- bboxToExpand[2] < bboxToContain[2] ? bboxToContain[2] : bboxToExpand[2],
227
- // max latitude:
228
- bboxToExpand[3] < bboxToContain[3] ? bboxToContain[3] : bboxToExpand[3]
229
- ];
230
- };
231
- const bboxFromBBoxes = (bboxes) => bboxes?.length ? bboxes.reduce((previous, current) => bboxExpandedWithBBox(current, previous)) : void 0;
232
- const bboxFromCoordsArray = (coordinates) => {
233
- const length = coordinates?.length;
234
- if (!length) {
235
- return void 0;
236
- }
237
- let bbox;
238
- const indexInterval = Math.ceil(length / 1e3);
239
- for (let i = 0; i < length; i += indexInterval) {
240
- bbox = bboxExpandedWithPosition(coordinates[i], bbox);
241
- }
242
- return indexInterval === 1 ? bbox : bboxExpandedWithPosition(coordinates[length - 1], bbox);
243
- };
244
- const bboxFromGeoJSON = (hasBBox) => {
245
- if (!hasBBox) {
246
- return void 0;
247
- }
248
- if (Array.isArray(hasBBox)) {
249
- if (typeof hasBBox[0] === "number") {
250
- return hasBBox.length >= 4 ? hasBBox : void 0;
251
- }
252
- return bboxFromBBoxes(hasBBox.map((geoJsonItem) => bboxFromGeoJSON(geoJsonItem)));
253
- }
254
- if (hasBBox.bbox) {
255
- return hasBBox.bbox;
256
- }
257
- switch (hasBBox.type) {
258
- case "Feature":
259
- return bboxFromGeoJSON(hasBBox.geometry);
260
- case "FeatureCollection":
261
- return bboxFromBBoxes(hasBBox.features.map(bboxFromGeoJSON));
262
- case "GeometryCollection":
263
- return bboxFromBBoxes(hasBBox.geometries.map(bboxFromGeoJSON));
264
- case "Point":
265
- return bboxExpandedWithPosition(hasBBox.coordinates);
266
- case "LineString":
267
- case "MultiPoint":
268
- return bboxFromCoordsArray(hasBBox.coordinates);
269
- case "MultiLineString":
270
- case "Polygon":
271
- return bboxFromBBoxes(hasBBox.coordinates.map(bboxFromCoordsArray));
272
- case "MultiPolygon":
273
- return bboxFromBBoxes(
274
- hasBBox.coordinates.flatMap((polygon) => polygon.map(bboxFromCoordsArray))
275
- );
276
- default:
277
- return void 0;
278
- }
279
- };
280
- const bboxExpandedWithGeoJSON = (geoJson, bboxToExpand) => bboxExpandedWithBBox(bboxFromGeoJSON(geoJson), bboxToExpand);
281
- const bboxCenter = (bbox) => [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];
282
- const generateId = () => Date.now().toString(36) + Math.random().toString(36).substring(2);
283
- const TOMTOM_USER_AGENT_SDK_NAME = "MapsSDKJS";
284
- const validateTrackingId = (trackingId) => {
285
- if (!/^[a-zA-Z0-9-]{1,100}$/.test(trackingId)) {
286
- throw new TypeError(
287
- `a string matching regular expression ^[a-zA-Z0-9-]{1,100}$ is expected, but ${trackingId} ['${typeof trackingId}'] given`
288
- );
289
- }
290
- return trackingId;
291
- };
292
- const generateTomTomHeaders = (params) => ({
293
- "TomTom-User-Agent": `${TOMTOM_USER_AGENT_SDK_NAME}/${"0.31.1"}`,
294
- // TODO: restore if we implement oauth2 access
295
- // optional oauth2 access token:
296
- // ...(params.apiAccessToken && { Authorization: `Bearer ${params.apiAccessToken}` }),
297
- ...params.trackingId && { "Tracking-ID": validateTrackingId(params.trackingId) }
298
- });
299
- const getMainEntryPoint = (place) => place?.properties?.entryPoints?.find((entryPoint) => entryPoint.type === "main");
300
- const getPosition = (hasLngLat, options) => {
301
- if (hasLngLat) {
302
- if (Array.isArray(hasLngLat)) {
303
- return hasLngLat;
304
- }
305
- if (hasLngLat.coordinates) {
306
- return hasLngLat.coordinates;
307
- }
308
- if (hasLngLat.geometry) {
309
- if (options?.useEntryPoint === "main-when-available") {
310
- const mainEntryPoint = getMainEntryPoint(hasLngLat);
311
- return mainEntryPoint?.position ?? hasLngLat.geometry.coordinates;
312
- }
313
- return hasLngLat.geometry.coordinates;
314
- }
315
- }
316
- return null;
317
- };
318
- const getPositionStrict = (hasLngLat, options) => {
319
- const position = getPosition(hasLngLat, options);
320
- if (!position) {
321
- throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(hasLngLat)}`);
322
- }
323
- return position;
324
- };
325
- const toPointFeature = (lngLat) => ({
326
- type: "Feature",
327
- geometry: { type: "Point", coordinates: lngLat },
328
- properties: {}
329
- });
330
- const asSoftWaypoint = (hasLngLat, radiusMeters) => {
331
- let inputAsFeature;
332
- if (Array.isArray(hasLngLat) || hasLngLat.type !== "Feature") {
333
- inputAsFeature = toPointFeature(getPositionStrict(hasLngLat));
334
- } else {
335
- inputAsFeature = hasLngLat;
336
- }
337
- return { ...inputAsFeature, properties: { ...inputAsFeature.properties, radiusMeters } };
338
- };
339
- const getRoutePlanningLocationType = (routePlanningLocation) => {
340
- if (Array.isArray(routePlanningLocation)) {
341
- if (Array.isArray(routePlanningLocation[0])) {
342
- return "path";
343
- }
344
- return "waypoint";
345
- }
346
- if (routePlanningLocation.type === "Feature") {
347
- if (routePlanningLocation.geometry.type === "LineString") {
348
- return "path";
349
- }
350
- return "waypoint";
351
- }
352
- return "waypoint";
353
- };
354
- const indexedMagnitudes = ["unknown", "minor", "moderate", "major", "indefinite"];
355
- function isNil(value) {
356
- return value == null;
357
- }
358
- const minuteUnits = (displayUnits) => displayUnits?.minutes ?? "min";
359
- const hourUnits = (displayUnits) => displayUnits?.hours ?? "hr";
360
- const formatDuration = (seconds, options) => {
361
- if (seconds) {
362
- const hours = Math.abs(seconds) / 3600;
363
- let flooredHours = Math.floor(hours);
364
- let minutes = Math.round(hours % 1 * 60);
365
- if (minutes === 60) {
366
- minutes = 0;
367
- flooredHours++;
368
- }
369
- const mergedOptions = { ...TomTomConfig.instance.get().displayUnits?.time, ...options };
370
- if (flooredHours) {
371
- return `${flooredHours} ${hourUnits(mergedOptions)} ${minutes.toString().padStart(2, "0")} ${minuteUnits(mergedOptions)}`;
372
- }
373
- if (minutes) {
374
- return `${minutes.toString()} ${minuteUnits(mergedOptions)}`;
375
- }
376
- }
377
- return void 0;
378
- };
379
- const MILE_IN_METERS = 1609.344;
380
- const FEET_IN_METERS = 0.3048;
381
- const YARD_IN_METERS = 0.9144;
382
- const meterUnits = (displayUnits) => displayUnits?.meters ?? "m";
383
- const kmUnits = (displayUnits) => displayUnits?.kilometers ?? "km";
384
- const formatMetric = (meters, displayUnits) => {
385
- const absMeters = Math.abs(meters);
386
- if (absMeters < 10) {
387
- return `${meters} ${meterUnits(displayUnits)}`;
388
- }
389
- if (absMeters < 500) {
390
- return `${Math.round(meters / 10) * 10} ${meterUnits(displayUnits)}`;
391
- }
392
- if (absMeters < 1e3) {
393
- const roundedMeters = Math.round(meters / 100) * 100;
394
- return roundedMeters === 1e3 || roundedMeters === -1e3 ? `${meters < 0 ? "-" : ""}1 ${kmUnits(displayUnits)}` : `${roundedMeters} ${meterUnits(displayUnits)}`;
395
- }
396
- if (absMeters < 1e4) {
397
- return `${Math.round(meters / 100) * 100 / 1e3} ${kmUnits(displayUnits)}`;
398
- }
399
- return `${Math.round(meters / 1e3)} ${kmUnits(displayUnits)}`;
400
- };
401
- const formatFeet = (meters, feetUnits) => {
402
- const feet = Math.round(meters / FEET_IN_METERS);
403
- const absFeet = Math.abs(feet);
404
- if (absFeet < 30) {
405
- return `${feet} ${feetUnits}`;
406
- }
407
- if (absFeet < 500) {
408
- return `${Math.round(feet / 10) * 10} ${feetUnits}`;
409
- }
410
- return `${Math.round(feet / 100) * 100} ${feetUnits}`;
411
- };
412
- const formatYards = (meters, yardUnits) => {
413
- const yards = Math.round(meters / YARD_IN_METERS);
414
- if (Math.abs(yards) < 10) {
415
- return `${Math.round(yards)} ${yardUnits}`;
416
- }
417
- return `${Math.round(yards / 10) * 10} ${yardUnits}`;
418
- };
419
- const formatUsMilesLessThanThree = (miles, absMiles, mileUnits) => {
420
- const milesInteger = Number.parseInt(absMiles.toString());
421
- const milesFloat = absMiles - milesInteger;
422
- const sign = miles < 0 ? "-" : "";
423
- if (milesFloat < 0.125) {
424
- return `${sign}${milesInteger} ${mileUnits}`;
425
- }
426
- const showIntegerIfNotZero = milesInteger > 0 ? milesInteger : "";
427
- if (milesFloat < 0.375) {
428
- return `${sign}${showIntegerIfNotZero}¼ ${mileUnits}`;
429
- }
430
- if (milesFloat < 0.625) {
431
- return `${sign}${showIntegerIfNotZero}½ ${mileUnits}`;
432
- }
433
- if (milesFloat < 0.875) {
434
- return `${sign}${showIntegerIfNotZero}¾ ${mileUnits}`;
435
- }
436
- return `${sign}${milesInteger + 1} ${mileUnits}`;
437
- };
438
- const formatUsMilesLessThanTen = (miles, absMiles, mileUnits) => {
439
- const milesInteger = Number.parseInt(absMiles.toString());
440
- const milesFloat = absMiles - milesInteger;
441
- const sign = miles < 0 ? "-" : "";
442
- if (milesFloat < 0.25) {
443
- return `${sign}${milesInteger} ${mileUnits}`;
444
- }
445
- if (milesFloat < 0.75) {
446
- return `${sign}${milesInteger}½ ${mileUnits}`;
447
- }
448
- return `${sign}${milesInteger + 1} ${mileUnits}`;
449
- };
450
- const formatMiles = (miles, absMiles, mileUnits) => {
451
- if (absMiles < 3) {
452
- return formatUsMilesLessThanThree(miles, absMiles, mileUnits);
453
- }
454
- if (absMiles < 10) {
455
- return formatUsMilesLessThanTen(miles, absMiles, mileUnits);
456
- }
457
- return `${Math.round(miles)} ${mileUnits}`;
458
- };
459
- const mileUnitsWithDefault = (displayUnits) => displayUnits.miles ?? "mi";
460
- const formatUs = (meters, displayUnits) => {
461
- const miles = meters / MILE_IN_METERS;
462
- const absMiles = Math.abs(miles);
463
- if (absMiles < 0.125) {
464
- return formatFeet(meters, displayUnits.feet ?? "ft");
465
- }
466
- return formatMiles(miles, absMiles, mileUnitsWithDefault(displayUnits));
467
- };
468
- const formatUk = (meters, displayUnits) => {
469
- const miles = meters / MILE_IN_METERS;
470
- const absMiles = Math.abs(miles);
471
- if (absMiles < 0.125) {
472
- return formatYards(meters, displayUnits.yards ?? "yd");
473
- }
474
- return formatMiles(miles, absMiles, mileUnitsWithDefault(displayUnits));
475
- };
476
- const formatDistance = (meters, options) => {
477
- if (isNil(meters)) {
478
- return "";
479
- }
480
- const mergedOptions = { ...TomTomConfig.instance.get().displayUnits?.distance, ...options };
481
- const unitsType = mergedOptions?.type ?? "metric";
482
- switch (unitsType) {
483
- case "metric":
484
- return formatMetric(meters, mergedOptions);
485
- case "imperial_us":
486
- return formatUs(meters, mergedOptions);
487
- case "imperial_uk":
488
- return formatUk(meters, mergedOptions);
489
- }
490
- };
491
- exports.TOMTOM_USER_AGENT_SDK_NAME = TOMTOM_USER_AGENT_SDK_NAME;
492
- exports.TomTomConfig = TomTomConfig;
493
- exports.asSoftWaypoint = asSoftWaypoint;
494
- exports.avoidableTypes = avoidableTypes;
495
- exports.bboxCenter = bboxCenter;
496
- exports.bboxExpandedWithBBox = bboxExpandedWithBBox;
497
- exports.bboxExpandedWithGeoJSON = bboxExpandedWithGeoJSON;
498
- exports.bboxExpandedWithPosition = bboxExpandedWithPosition;
499
- exports.bboxFromBBoxes = bboxFromBBoxes;
500
- exports.bboxFromCoordsArray = bboxFromCoordsArray;
501
- exports.bboxFromGeoJSON = bboxFromGeoJSON;
502
- exports.bboxOnlyIfWithArea = bboxOnlyIfWithArea;
503
- exports.chargingPointCapabilities = chargingPointCapabilities;
504
- exports.chargingPointRestrictions = chargingPointRestrictions;
505
- exports.chargingPointStatus = chargingPointStatus;
506
- exports.chargingStationAccessTypes = chargingStationAccessTypes;
507
- exports.connectorTypes = connectorTypes;
508
- exports.currentTypes = currentTypes;
509
- exports.defaultConfig = defaultConfig;
510
- exports.formatDistance = formatDistance;
511
- exports.formatDuration = formatDuration;
512
- exports.generateId = generateId;
513
- exports.generateTomTomHeaders = generateTomTomHeaders;
514
- exports.geographyTypes = geographyTypes;
515
- exports.getPosition = getPosition;
516
- exports.getPositionStrict = getPositionStrict;
517
- exports.getRoutePlanningLocationType = getRoutePlanningLocationType;
518
- exports.indexedMagnitudes = indexedMagnitudes;
519
- exports.inputSectionTypes = inputSectionTypes;
520
- exports.inputSectionTypesWithGuidance = inputSectionTypesWithGuidance;
521
- exports.isBBoxWithArea = isBBoxWithArea;
522
- exports.mergeFromGlobal = mergeFromGlobal;
523
- exports.paymentMethods = paymentMethods;
524
- exports.placeTypes = placeTypes;
525
- exports.plugTypes = plugTypes;
526
- exports.sectionTypes = sectionTypes;
527
- exports.toPointFeature = toPointFeature;
528
- exports.trafficCategories = trafficCategories;
529
- exports.views = views;
530
- //# sourceMappingURL=core.cjs.js.map