algeria-wilayas
Version:
A comprehensive package for handling Algerian administrative divisions
135 lines (100 loc) • 3.02 kB
Markdown
# AlgerianWilayas
A comprehensive Node.js package providing data and utilities for Algerian administrative divisions (Wilayas, Daïras, and Communes).
## Features
- Complete data for all 58 Algerian Wilayas (provinces)
- Detailed information about all Daïras (districts) and Communes (municipalities)
- Support for multiple languages (Arabic, French, and ASCII/Latin)
- Easy-to-use API for querying and filtering administrative divisions
- TypeScript support with full type definitions
## Installation
```bash
npm install algerian-wilayas
```
Or using yarn:
```bash
yarn add algerian-wilayas
```
## Usage
### Basic Usage
```typescript
import algerianWilayas from 'algerian-wilayas';
// Get all wilayas
const allWilayas = algerianWilayas.getAllWilayas();
// Get a specific wilaya by code
const wilaya = algerianWilayas.getWilayaByCode('16'); // Alger/Algiers
// Get all daïras in a wilaya
const dairas = algerianWilayas.getDairasByWilaya('16');
// Get all communes in a wilaya
const communes = algerianWilayas.getCommunesByWilaya('16');
// Get communes in a specific daïra
const communesInDaira = algerianWilayas.getCommunesByDaira('daira_id');
// Get wilaya name in a specific language
const wilayaNameArabic = algerianWilayas.getWilayaName('16', 'arabic');
const wilayaNameFrench = algerianWilayas.getWilayaName('16', 'french');
const wilayaNameAscii = algerianWilayas.getWilayaName('16', 'ascii');
```
### Getting Statistics
```typescript
// Get statistics for a wilaya
const stats = algerianWilayas.getWilayaStats('16');
console.log(stats);
/* Output:
{
totalCommunes: 13,
totalDairas: 4,
communesPerDaira: [
{ daira: { arabic: "...", french: "...", ascii: "..." }, communeCount: 3 },
...
]
}
*/
```
### Formatting Wilaya Codes
```typescript
// Format wilaya code to ensure 2 digits
const formattedCode = algerianWilayas.formatWilayaCode(1); // Returns "01"
```
## Data Structure
### Wilaya
```typescript
interface Wilaya {
code: string;
name: BilingualName;
}
interface BilingualName {
arabic: string;
french: string;
ascii: string;
}
```
### Daïra
```typescript
interface Daira {
id: string;
wilaya_code: string;
name: BilingualName;
}
```
### Commune
```typescript
interface Commune {
id: string;
wilaya_code: string;
daira_name_ascii: string;
name: BilingualName;
}
```
## Language Support
The package supports three languages for names:
- `arabic`: Names in Arabic script
- `french`: Names in French
- `ascii`: Latinized/ASCII names (default)
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request