digipinjs
Version:
A comprehensive TypeScript library for encoding and decoding Indian geographic coordinates into DIGIPIN format (Indian Postal Digital PIN system). Features CLI tools, caching, batch processing, and Express middleware for seamless integration.
36 lines (35 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDistance = getDistance;
exports.getPreciseDistance = getPreciseDistance;
exports.orderByDistance = orderByDistance;
exports.findNearest = findNearest;
const core_1 = require("./core");
const geolib_1 = require("geolib");
const util_1 = require("./util");
function getDistance(startPin, endPin, accuracy = 1) {
(0, util_1.digiPinValidator)(startPin);
(0, util_1.digiPinValidator)(endPin);
const start = (0, core_1.getLatLngFromDigiPin)(startPin);
const end = (0, core_1.getLatLngFromDigiPin)(endPin);
return (0, geolib_1.getDistance)(start, end, accuracy);
}
function getPreciseDistance(startPin, endPin, accuracy = 1) {
(0, util_1.digiPinValidator)(startPin);
(0, util_1.digiPinValidator)(endPin);
const start = (0, core_1.getLatLngFromDigiPin)(startPin);
const end = (0, core_1.getLatLngFromDigiPin)(endPin);
return (0, geolib_1.getPreciseDistance)(start, end, accuracy);
}
function orderByDistance(referencePin, pins, distanceFn = getDistance) {
(0, util_1.digiPinValidator)(referencePin);
pins.forEach((p) => (0, util_1.digiPinValidator)(p));
return pins
.slice()
.sort((a, b) => distanceFn(referencePin, a) - distanceFn(referencePin, b));
}
function findNearest(referencePin, pins) {
(0, util_1.digiPinValidator)(referencePin);
pins.forEach((p) => (0, util_1.digiPinValidator)(p));
return orderByDistance(referencePin, pins)[0];
}