JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 18
  • Score
    100M100P100Q26147F
  • License MIT

A TypeScript library for parsing unstructured Excel worksheets into cleaned and structured CSV files

Package Exports

  • sakti-parser-fa
  • sakti-parser-fa/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sakti-parser-fa) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Sakti Parser FA

npm version License: MIT TypeScript

Library TypeScript untuk memproses data Laporan Ketersediaan Dana (FA) dari aplikasi Sakti Kementerian Keuangan Republik Indonesia. Mengkonversi file Excel yang tidak terstruktur menjadi data JSON atau CSV yang terorganisir dengan struktur hierarki anggaran yang tepat.

๐ŸŽฏ Deskripsi

Library ini dirancang khusus untuk mem-parsing file Excel laporan FA (Financial Availability) dari sistem Sakti (Sistem Aplikasi Keuangan Tingkat Instansi) Kementerian Keuangan RI. Sistem Sakti menggunakan struktur hierarki anggaran 11 level yang kompleks, dan library ini secara otomatis mengekstrak, memvalidasi, dan mengorganisir data tersebut.

๐Ÿ›๏ธ Struktur Hierarki Anggaran Sakti

Level 1: Kementerian (145 - KEMENTERIAN KEUANGAN)
โ”œโ”€โ”€ Level 2: Unit (06 - SEKRETARIAT JENDERAL)
โ”‚   โ”œโ”€โ”€ Level 3: Satuan Kerja (123456 - BIRO KEUANGAN)
โ”‚   โ”‚   โ”œโ”€โ”€ Level 4: Program (GM - PROGRAM DUKUNGAN MANAJEMEN)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 5: Kegiatan (7717 - DUKUNGAN MANAJEMEN KEMENTERIAN)
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 6: Output (CBJ - LAYANAN DUKUNGAN MANAJEMEN)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 7: Sub Output (001 - KOORDINASI DAN SINKRONISASI)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 8: Komponen (101 - GAJI DAN TUNJANGAN)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 9: Sub Komponen (0D - BELANJA PEGAWAI)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Level 10: Akun (536111 - GAJI POKOK PNS)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Level 11: Detail (000052 - BELANJA GAJI POKOK)

โœจ Fitur Utama

  • ๐Ÿ”„ Parsing Otomatis - Ekstraksi metadata dan data anggaran dari Excel FA
  • ๐Ÿ—๏ธ Struktur Hierarki - Membangun hierarki anggaran 11 level sesuai standar Sakti
  • ๐Ÿ“Š Multi Format Output - Mendukung Object, JSON, dan CSV
  • โœ… Validasi Data - Otomatis validasi dan cleaning data
  • ๐Ÿงฎ Agregasi Anggaran - Perhitungan agregasi nilai anggaran secara hierarki
  • ๐Ÿ”’ Type Safety - Full TypeScript support dengan type definitions
  • ๐ŸŒ Bahasa Indonesia - Mendukung parsing tanggal dan teks Indonesia
  • โšก Performance - Optimized untuk file Excel besar

๐Ÿ“ฆ Instalasi

npm install sakti-parser-fa

๐Ÿš€ Penggunaan Cepat

Parsing Dasar

import { SaktiParser } from 'sakti-parser-fa';

// Buat instance parser
const parser = new SaktiParser();

// Parse file Excel FA dengan struktur hierarki lengkap
const result = await parser.parseStructuredData('laporan-fa-juli-2025.xlsx');

// Akses metadata
console.log('Kementerian:', result.metadata.kementerian_nama);
console.log('Periode:', result.metadata.periode_text);
console.log('Satuan Kerja:', result.metadata.satuan_kerja_nama);

// Akses data anggaran
result.data.forEach(item => {
  console.log(`Level ${item._level}: ${item.uraian}`);
  console.log(`Pagu: Rp ${item.pagu.toLocaleString('id-ID')}`);
  console.log(`Realisasi: ${(item.realisasi_persen * 100).toFixed(2)}%`);
});

Export ke Format Lain

// Export ke CSV
const parser = new SaktiParser({
  outputFormat: 'csv',
  csvOptions: {
    delimiter: ';',
    header: true
  }
});

const csvResult = await parser.parseAndFormat('laporan-fa.xlsx');
console.log(csvResult.content.data); // String CSV

// Export ke JSON
const jsonParser = new SaktiParser({ outputFormat: 'json' });
const jsonResult = await jsonParser.parseAndFormat('laporan-fa.xlsx');
console.log(jsonResult.content); // JSON string

Analisis Data

const result = await parser.parseStructuredData('laporan-fa.xlsx');

// Filter program utama (level 4)
const programs = result.data.filter(item => item._level === 4);

// Hitung total anggaran
const totalBudget = result.data
  .filter(item => item._level === 11) // Level detail
  .reduce((sum, item) => sum + item.pagu, 0);

// Analisis realisasi
const lowRealization = result.data.filter(item => 
  item._level === 11 && 
  item.pagu > 100000000 && // > 100 juta
  item.realisasi_persen < 0.2 // < 20%
);

console.log(`Total Anggaran: Rp ${totalBudget.toLocaleString('id-ID')}`);
console.log(`Program dengan realisasi rendah: ${lowRealization.length}`);

๐Ÿ“Š Format Data

Input: File Excel FA

Library mengharapkan file Excel dengan struktur:

  • Baris 1: Judul laporan
  • Baris 3: Periode (contoh: "Periode Juli 2025")
  • Baris 4-6: Metadata kementerian, unit, satuan kerja
  • Baris 10+: Data anggaran hierarki

Output: Data Terstruktur

interface ParseResult {
  metadata: {
    judul: string;
    periode_text: string;
    periode_bulan: number;
    periode_tahun: number;
    kementerian_kode: string;
    kementerian_nama: string;
    unit_kode: string;
    unit_nama: string;
    satuan_kerja_kode: string;
    satuan_kerja_nama: string;
  };
  data: Array<{
    _level: number;                   // Level hierarki (1-11)
    _parent: string;                  // Mata anggaran parent
    mata_anggaran: string;            // Kode mata anggaran lengkap
    kode: string;                     // Kode item
    uraian: string;                   // Deskripsi
    pagu: number;                     // Anggaran (Rupiah)
    pagu_terkunci: number;            // Anggaran terkunci
    realisasi_sebelum: number;        // Realisasi periode sebelumnya
    realisasi_periode: number;        // Realisasi periode ini
    realisasi_kumulatif: number;      // Total realisasi
    realisasi_persen: number;         // Persentase realisasi (0.0-1.0)
    sisa_anggaran: number;            // Sisa anggaran
  }>;
}

๐Ÿ”ง Konfigurasi

const parser = new SaktiParser({
  outputFormat: 'csv',           // 'object' | 'json' | 'csv'
  csvOptions: {
    delimiter: ';',              // Pemisah kolom
    header: true,                // Include header
    quoted: true                 // Quote semua field
  },
  jsonOptions: {
    flat: true                   // Array flat vs nested object
  }
});

๐Ÿ“š Dokumentasi

๐Ÿงช Testing

# Jalankan semua test
npm test

# Test dengan coverage
npm run test:coverage

# Watch mode untuk development
npm run test:watch

Coverage: 85%+ dengan 28 test cases mencakup edge cases dan error handling.

๐Ÿ› ๏ธ Development

# Clone repository
git clone https://github.com/username/sakti-parser-fa.git
cd sakti-parser-fa

# Install dependencies
npm ci

# Build library
npm run build

# Format code
npm run format

# Lint code
npm run lint

# Check semua (lint + build)
npm run check

โš™๏ธ Requirements

  • Node.js >= 18.0.0
  • npm >= 8.0.0

๐Ÿ”„ Changelog

Lihat CHANGELOG.md untuk riwayat perubahan lengkap.

Versi Terbaru: 0.6.1

  • โœ… Dokumentasi lengkap dalam Bahasa Indonesia
  • โœ… README.md professional dengan visual hierarki Sakti
  • โœ… 12+ contoh penggunaan real-world
  • โœ… API reference dan troubleshooting guide
  • โœ… Panduan kontribusi untuk developer

๐Ÿค Contributing

Kami sangat menghargai kontribusi! Silakan baca panduan kontribusi untuk detail lengkap.

Quick Start Contributing:

  1. Fork repository
  2. Buat branch: git checkout -b feature/nama-fitur
  3. Commit: git commit -m 'Add amazing feature'
  4. Push: git push origin feature/nama-fitur
  5. Submit pull request

๐Ÿ“„ License

MIT License - lihat LICENSE untuk detail lengkap.

๐Ÿท๏ธ Keywords

sakti kementerian-keuangan anggaran excel-parser typescript indonesia government budget financial-data hierarchical-data

๐Ÿ†˜ Support

Butuh bantuan?

  1. ๐Ÿ“– Cek dokumentasi di folder docs
  2. ๐Ÿ” Search issues di GitHub Issues
  3. ๐Ÿ’ฌ Diskusi di GitHub Discussions
  4. ๐Ÿ› Laporkan bug dengan template yang disediakan

๐Ÿ“ˆ Stats

  • โญ GitHub Stars: GitHub stars
  • ๐Ÿ“ฆ NPM Downloads: npm
  • ๐Ÿ”ง TypeScript: 100%
  • ๐Ÿงช Test Coverage: 85%+
  • ๐Ÿ“š Documentation: Bahasa Indonesia

Dibuat dengan โค๏ธ untuk komunitas developer Indonesia

Website โ€ข Documentation โ€ข Examples โ€ข API Reference