lawkit-js
Version:
Node.js bindings for lawkit - statistical law analysis toolkit for fraud detection, data quality assessment, and audit compliance. Powered by Rust for blazing fast performance.
194 lines (146 loc) • 5.79 kB
Markdown
# lawkit
Node.js wrapper for the `lawkit` CLI tool - comprehensive statistical law analysis toolkit for fraud detection, data quality assessment, and business intelligence.
## Installation
```bash
npm install lawkit
```
Includes all platform binaries (universal bundle) - no download required.
### Supported Platforms
- **Linux**: x86_64
- **macOS**: x86_64 and Apple Silicon (ARM64)
- **Windows**: x86_64
All binaries are pre-bundled in the package for immediate use:
```
bin/
├── linux-x64/lawkit
├── darwin-x64/lawkit
├── darwin-arm64/lawkit
└── win32-x64/lawkit.exe
```
## Quick Start
### CLI Usage
```bash
# Fraud detection with Benford Law
lawkit benf financial-data.csv
# Business analysis with Pareto principle
lawkit pareto sales.csv --business-analysis
# Multi-law analysis
lawkit analyze data.csv --laws benf,pareto,zipf
# Data validation
lawkit validate data.csv --consistency-check
# Conflict diagnosis
lawkit diagnose data.csv --report detailed
# Generate test data
lawkit generate benf --count 1000 --output-file test-data.csv
```
### JavaScript API (Unified API)
```javascript
const { law } = require('lawkit');
// Benford's Law analysis on JavaScript array
const numbers = [123, 187, 234, 298, 345, 456, 567, 678, 789, 1234];
const benfordResult = law("benford", numbers);
console.log(`Benford analysis: ${benfordResult[0].data.analysis_summary}`);
console.log(`Risk level: ${benfordResult[0].data.risk_level}`);
console.log(`P-value: ${benfordResult[0].data.p_value}`);
// Pareto analysis
const salesData = [10000, 9500, 9000, 8500, 1000, 950, 900, 850, 800, 750];
const paretoResult = law("pareto", salesData);
console.log(`Top 20% contribution: ${paretoResult[0].data.top_20_percent_contribution}%`);
// Normal distribution analysis
const qualityScores = [98.5, 99.2, 100.1, 99.8, 100.4, 99.6, 100.8, 99.9];
const normalResult = law("normal", qualityScores);
console.log(`Mean: ${normalResult[0].data.mean}`);
console.log(`Standard deviation: ${normalResult[0].data.std_dev}`);
// Data validation
const testData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const validationResult = law("validate", testData);
console.log(`Validation passed: ${validationResult[0].data.validation_passed}`);
console.log(`Data quality score: ${validationResult[0].data.data_quality_score}`);
// Generate sample data
const config = { type: "benford", count: 100 };
const generatedResult = law("generate", config);
console.log(`Generated ${generatedResult[0].data.count} data points`);
console.log(`Sample data: ${generatedResult[0].data.sample_data.slice(0, 5)}...`);
// Comprehensive analysis
const comprehensiveData = {
financial_data: [123, 187, 234, 298, 345],
quality_scores: [98.5, 99.2, 100.1, 99.8, 100.4]
};
const analysisResult = law("analyze", comprehensiveData);
console.log(`Found ${analysisResult.length} analyses`);
analysisResult.forEach(result => {
console.log(`${result.type}: ${result.data.analysis_summary}`);
});
```
## API Reference
### Unified API
#### `law(subcommand, data, options?)`
The unified function for all statistical law analysis.
**Parameters:**
- `subcommand`: String - The analysis type ("benford", "pareto", "zipf", "normal", "poisson", "analyze", "validate", "diagnose", "generate")
- `data`: Array or Object - The data to analyze (or configuration object for "generate")
- `options`: Object (optional) - Analysis options
**Supported Subcommands:**
- `"benford"` - Benford's Law analysis for fraud detection
- `"pareto"` - Pareto Principle analysis for business insights
- `"zipf"` - Zipf's Law analysis for frequency distributions
- `"normal"` - Normal distribution analysis for quality control
- `"poisson"` - Poisson distribution analysis for event analysis
- `"validate"` - Data quality validation
- `"diagnose"` - Data anomaly diagnosis
- `"generate"` - Sample data generation
- `"analyze"` - Comprehensive multi-law analysis
**Return Value:**
Returns an array of analysis result objects, each containing:
- `type`: The analysis type (e.g., 'BenfordAnalysis', 'ParetoAnalysis')
- `data`: Analysis results with statistical measures and summary
### Options
All analysis functions accept these common options:
```typescript
interface LawkitOptions {
output?: 'text' | 'json' | 'csv' | 'yaml' | 'toml' | 'xml';
minCount?: number;
confidence?: number;
sampleSize?: number;
minValue?: number;
quiet?: boolean;
verbose?: boolean;
outputFile?: string;
businessAnalysis?: boolean;
giniCoefficient?: boolean;
percentiles?: string;
crossValidation?: boolean;
consistencyCheck?: boolean;
confidenceLevel?: number;
report?: boolean;
}
```
## Error Handling
```javascript
const { law } = require('lawkit');
try {
const result = law("benford", [1, 2, 3]);
console.log(result);
} catch (error) {
console.error('lawkit error:', error.message);
// Handle error appropriately
}
```
## Features
- **Universal Binary Support**: Automatic platform detection and binary download
- **Comprehensive API**: Full JavaScript API with TypeScript definitions
- **Statistical Laws**: Benford, Pareto, Zipf, Normal, Poisson distributions
- **Advanced Analysis**: Multi-law comparison, validation, diagnostics
- **Data Generation**: Create test datasets for validation
- **Multiple Output Formats**: JSON, CSV, YAML, TOML, XML support
- **Business Intelligence**: Built-in business analysis features
- **Cross-platform**: Linux, macOS (Intel & ARM), Windows support
## Requirements
- Node.js 12.0.0 or higher
- Internet connection for initial binary download
## License
MIT
## Links
- [GitHub Repository](https://github.com/kako-jun/lawkit)
- [Documentation](https://github.com/kako-jun/lawkit/tree/main/docs)
- [Issues](https://github.com/kako-jun/lawkit/issues)