diff --git a/packages/turf-distance/index.ts b/packages/turf-distance/index.ts index dfee90be94..186b15a58f 100644 --- a/packages/turf-distance/index.ts +++ b/packages/turf-distance/index.ts @@ -1,14 +1,15 @@ import { Point } from "geojson"; import { getCoord } from "@turf/invariant"; +import type { Coord, Datum, Units } from "@turf/helpers"; import { + datums, radiansToLength, degreesToRadians, - datums, - Coord, - Datum, - Units, convertLength, } from "@turf/helpers"; +// Unable to find an equivalent import statement that works. Fails when building +// index.mjs → turf.min.js in packages/turf/ +// import { LatLonEllipsoidal as LatLon } from "geodesy"; const LatLon = require("geodesy").LatLonEllipsoidal; //http://en.wikipedia.org/wiki/Haversine_formula @@ -142,7 +143,10 @@ function geodesic_ellipsoid_distance( fromLatLon.datum = datums.WGS84; } - const meters = fromLatLon.distanceTo(toLatLon); + // LatLonEllipsoidal types don't properly list all base LatLon functions + // e.g. distanceTo. Should be able to remove when we can move to a newer + // version of geodesy. + const meters = (fromLatLon as any).distanceTo(toLatLon); // geodesy lib result is in meters return convertLength(meters, "meters", options.units); } diff --git a/packages/turf-distance/test.js b/packages/turf-distance/test.js index 7a00755d7b..fcc6281302 100644 --- a/packages/turf-distance/test.js +++ b/packages/turf-distance/test.js @@ -3,7 +3,7 @@ const path = require("path"); const test = require("tape"); const load = require("load-json-file"); const write = require("write-json-file"); -import { datums, point } from "@turf/helpers"; +const { datums, point } = require("@turf/helpers"); const distance = require("./index").default; const directories = { diff --git a/packages/turf-helpers/index.ts b/packages/turf-helpers/index.ts index b03f772d39..871d255226 100644 --- a/packages/turf-helpers/index.ts +++ b/packages/turf-helpers/index.ts @@ -14,7 +14,11 @@ import { Position, GeoJsonProperties, } from "geojson"; -import { Datums, LatLonEllipsoidal } from "geodesy"; +import type { Datum } from "geodesy"; +// Unable to find an equivalent import statement that works. Fails when building +// index.mjs → turf.min.js in packages/turf/ +// import { LatLonEllipsoidal as LatLon } from "geodesy"; +const LatLon = require("geodesy").LatLonEllipsoidal; import { Id } from "./lib/geojson"; export * from "./lib/geojson"; @@ -122,11 +126,12 @@ export const areaFactors: Record<AreaUnits, number> = { * @memberof helpers * @type {Object} */ -export const datums: Datums = LatLonEllipsoidal.datum; +const datums = LatLon.datum; +export { datums }; // Re-export type from geodesy so clients don't need to refer directly to // geodesy types. -export type { Datum } from "geodesy"; +export type { Datum }; /** * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}. diff --git a/packages/turf-length/index.ts b/packages/turf-length/index.ts index 984e41f7ff..a91fa15875 100644 --- a/packages/turf-length/index.ts +++ b/packages/turf-length/index.ts @@ -1,6 +1,6 @@ import { Feature, FeatureCollection, GeometryCollection } from "geojson"; import distance from "@turf/distance"; -import { Datum, Units } from "@turf/helpers"; +import type { Datum, Units } from "@turf/helpers"; import { segmentReduce } from "@turf/meta"; /**