
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@classytic/bd-areas
Advanced tools
Bangladesh delivery areas with multi-provider support (RedX, Pathao, Steadfast) - 8 divisions, 64 districts, 2836+ areas
Bangladesh delivery areas with multi-provider support. Contains 8 divisions, 64 districts, and 2836 areas with provider-specific IDs for RedX, Pathao, and Steadfast.
npm install @classytic/bd-areas
import {
getDivisions,
getDistrictsByDivision,
getAreasByDistrict,
searchAreas,
} from '@classytic/bd-areas';
// Get all divisions for first dropdown
const divisions = getDivisions();
// [{ id: 'dhaka', name: 'Dhaka', nameLocal: 'ঢাকা' }, ...]
// When user selects a division, get districts
const districts = getDistrictsByDivision('dhaka');
// [{ id: 'dhaka', name: 'Dhaka', divisionId: 'dhaka', ... }, ...]
// When user selects a district, get areas
const areas = getAreasByDistrict('dhaka');
// [{ internalId: 1, name: 'Mohammadpur', providers: { redx: 1 }, ... }, ...]
// Autocomplete search
const results = searchAreas('mirpur');
import {
getArea,
resolveArea,
getAreaByProvider,
convertProviderId,
} from '@classytic/bd-areas';
// Get area by internal ID (from your database)
const area = getArea(1);
// { internalId: 1, name: 'Mohammadpur', providers: { redx: 1 }, ... }
// Get full area with division/district objects
const resolved = resolveArea(1);
// { ...area, division: { id: 'dhaka', name: 'Dhaka', ... }, district: { ... } }
// Get area by provider-specific ID
const areaFromRedx = getAreaByProvider('redx', 1);
// Convert between provider IDs
const pathaoId = convertProviderId('redx', 1, 'pathao');
| Function | Description |
|---|---|
getDivisions() | Get all 8 divisions |
getDivisionById(id) | Get division by ID |
getDivisionByName(name) | Get division by name |
| Function | Description |
|---|---|
getDistrictsByDivision(divisionId) | Get districts in a division |
getDistrictById(id) | Get district by ID |
getAllDistricts() | Get all 64 districts |
| Function | Description |
|---|---|
getArea(internalId) | Get area by internal ID |
getAreaByProvider(provider, providerId) | Get area by provider-specific ID |
getAreasByDistrict(districtId) | Get areas in a district |
getAreasByDivision(divisionId) | Get areas in a division |
getAreasByPostCode(postCode) | Get areas by postal code |
getAllAreas() | Get all 2836 areas |
searchAreas(query, limit?) | Search areas by name/postcode/district |
resolveArea(internalId) | Get area with full division/district objects |
convertProviderId(from, id, to) | Convert between provider area IDs |
import { getStats } from '@classytic/bd-areas';
const stats = getStats();
// {
// divisions: 8,
// districts: 64,
// areas: 2836,
// providerCoverage: { redx: 2836, pathao: 0, steadfast: 0 },
// byDivision: [{ division: 'Dhaka', districts: 13, areas: 1295 }, ...]
// }
interface Division {
id: string;
name: string;
nameLocal: string; // Bengali name
}
interface District {
id: string;
name: string;
divisionId: string;
divisionName: string;
}
interface Area {
internalId: number; // Use this in your database
name: string;
postCode: number | null;
zoneId: number;
districtId: string;
districtName: string;
divisionId: string;
divisionName: string;
providers: {
redx?: number;
pathao?: number;
steadfast?: number;
};
}
// When saving customer address
const area = searchAreas('mohammadpur')[0];
await saveAddress({
areaId: area.internalId, // Store this
areaName: area.name,
district: area.districtName,
division: area.divisionName,
});
// When creating shipment with RedX
const area = getArea(savedAddress.areaId);
const redxAreaId = area.providers.redx;
await redxClient.createParcel({
deliveryAreaId: redxAreaId,
// ...
});
MIT © Classytic
FAQs
Bangladesh delivery areas with multi-provider support (RedX, Pathao, Steadfast) - 8 divisions, 64 districts, 2836+ areas
We found that @classytic/bd-areas demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.