# ✨ bps-wilayah-lib

Library untuk mengambil dan mengelola data wilayah administratif Indonesia (Provinsi, Kabupaten, Kecamatan, Desa) dari hasil crawling BPS.

## ⚡ Instalasi

```bash
pnpm add indonesiadata-lib
# atau
npm install indonesiadata-lib
# atau
yarn add indonesiadata-lib
```

### Import Fungsi

```ts
import {
  getProvinsiList,
  getKabupatenByProvinsi,
  getKecamatanByKabupaten,
  getDesaByKecamatan,
} from "indonesiadata-lib";
```

### Contoh Lengkap

```ts
async function main() {
  const provinsi = await getProvinsiList();
  console.log("Provinsi:", provinsi);

  const kabupaten = await getKabupatenByProvinsi("11");
  console.log("Kabupaten di ACEH:", kabupaten);

  const kecamatan = await getKecamatanByKabupaten("11", "1101");
  console.log("Kecamatan di Kab. Simeulue:", kecamatan);

  const desa = await getDesaByKecamatan("11", "1101", "1101010");
  console.log("Desa di Teupah Selatan:", desa);
}

main();
```

## 📊 Daftar Fungsi

| Fungsi                                                           | Deskripsi                                                           | Parameter                                                                | Return                                              |
| ---------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------- |
| `getProvinsiList()`                                              | Mengambil daftar semua provinsi                                     | –                                                                        | `Promise<{ kode: string, provinsiName: string }[]>` |
| `getKabupatenByProvinsi(kodeProvinsi)`                           | Mengambil daftar kabupaten/kota berdasarkan kode provinsi           | `kodeProvinsi: string`                                                   | `Promise<{ kode, kabupatenName, kecamatan[] }[]>`   |
| `getKecamatanByKabupaten(kodeProvinsi, kodeKabupaten)`           | Mengambil daftar kecamatan berdasarkan kabupaten dan provinsi       | `kodeProvinsi: string`, `kodeKabupaten: string`                          | `Promise<{ kode, kecamatanName, desa[] }[]>`        |
| `getDesaByKecamatan(kodeProvinsi, kodeKabupaten, kodeKecamatan)` | Mengambil daftar desa berdasarkan kecamatan, kabupaten dan provinsi | `kodeProvinsi: string`, `kodeKabupaten: string`, `kodeKecamatan: string` | `Promise<{ kode, desaName }[]>`                     |

## 📦 Struktur Folder Data

```
project-root/
├── data/
│   ├── 11.json  ← Data Provinsi Aceh
│   ├── 12.json
│   ├── ...
│   └── provinsi.json  ← Daftar semua provinsi
```

## 🎓 Tipe Data

```ts
interface Desa {
  kode: string;
  desaName: string;
}

interface Kecamatan {
  kode: string;
  kecamatanName: string;
  desa: Desa[];
}

interface Kabupaten {
  kode: string;
  kabupatenName: string;
  kecamatan: Kecamatan[];
}

interface Provinsi {
  kode: string;
  provinsiName: string;
  kabupaten: Kabupaten[];
}

interface ProvinsiList {
  kode: string;
  provinsiName: string;
}

interface Wilayah {
  provinsi: Provinsi[];
}
```

---

Untuk kontribusi atau laporan isu, silakan buka [GitHub](https://github.com/badaruddinl/bps-wilayah-indonesia-crawler)!
