algeria-wilayas
Version:
A comprehensive package for handling Algerian administrative divisions
60 lines (51 loc) • 1.44 kB
text/typescript
// src/scripts/extractWilayas.ts
import fs from 'fs';
import path from 'path';
interface Commune {
id: number;
commune_name_ascii: string;
commune_name: string;
daira_name_ascii: string;
daira_name: string;
wilaya_code: string;
wilaya_name_ascii: string;
wilaya_name: string;
}
interface Wilaya {
code: string;
name: {
arabic: string;
ascii: string;
};
}
const extractWilayas = () => {
// Read communes file
const rawData = JSON.parse(
fs.readFileSync(path.join(__dirname, '../data/communes.json'), 'utf-8')
) as Commune[];
// Create a Map to store unique wilayas
const wilayasMap = new Map<string, Wilaya>();
// Process each commune to extract wilaya information
rawData.forEach(commune => {
if (!wilayasMap.has(commune.wilaya_code)) {
wilayasMap.set(commune.wilaya_code, {
code: commune.wilaya_code,
name: {
arabic: commune.wilaya_name,
ascii: commune.wilaya_name_ascii
}
});
}
});
// Convert Map to array and sort by wilaya code
const wilayas = Array.from(wilayasMap.values()).sort((a, b) =>
Number(a.code) - Number(b.code)
);
// Write to file
fs.writeFileSync(
path.join(__dirname, '../data/wilayas.json'),
JSON.stringify(wilayas, null, 2)
);
console.log(`Successfully extracted ${wilayas.length} wilayas`);
};
extractWilayas();