first commit

This commit is contained in:
Raul Lugo
2024-12-25 20:30:57 +01:00
commit 6ef22531bb
165 changed files with 53426 additions and 0 deletions

129
dist/README.md vendored Normal file
View File

@@ -0,0 +1,129 @@
# Caballo Client
Type-safe Deno/Node.js client for validating e-Invoices against EU standards using the Caballo API.
## Table of Contents
- [Description](#description)
- [Key Features](#key-features)
- [Installation](#installation)
- [Deno](#deno)
- [Node.js](#nodejs)
- [Usage](#usage)
- [API Reference](#api-reference)
- [CaballoClient](#caballoclient)
- [Configuration](#configuration)
- [Methods](#methods)
- [Types](#types)
- [Examples](#examples)
- [Development](#development)
- [License](#license)
## Description
Caballo Client is a modern TypeScript library for validating electronic invoices (e-Invoices) against European Union standards. It provides a simple and type-safe interface to interact with the Caballo validation API, supporting both XML and PDF e-Invoice formats.
### Key Features
- Full TypeScript support with comprehensive types
- Zero dependencies, using standard Web APIs
- Support for both Deno and Node.js (ESM, Node 18+)
- Built-in validation for Factur-X/ZUGFeRD formats
- Efficient file handling with support for Uint8Array, Blob, and File inputs
- Clear error handling with detailed validation results
## Installation
### Deno
```ts
import { CaballoClient } from "https://deno.land/x/caballo_client@v1.0.0/mod.ts";
```
### Node.js
```bash
npm install caballo-client
```
## Usage
```ts
import { CaballoClient } from "caballo-client";
// Initialize client
const client = new CaballoClient({
baseUrl: "https://api.example.com",
timeout: 5000, // optional
});
// Validate XML
const xmlContent = await Deno.readFile("invoice.xml");
try {
const result = await client.validateXml(xmlContent);
console.log("XML Validation result:", result);
} catch (error) {
console.error("Validation failed:", error.message);
}
// Validate PDF
const pdfContent = await Deno.readFile("invoice.pdf");
try {
const result = await client.validatePdf(pdfContent);
console.log("PDF Validation result:", result);
} catch (error) {
console.error("Validation failed:", error.message);
}
```
## API Reference
### Caballo Client
#### Configuration
```ts
interface ClientConfig {
baseUrl: string; // Required: Base URL of the Caballo API
timeout?: number; // Optional: Timeout in milliseconds (default: 30000)
}
```
#### Methods
`validateXml(content: FileContent): Promise<ValidationResult>`
Validates an XML e-Invoice file.
`validatePdf(content: FileContent): Promise<ValidationResult>`
Validates a PDF e-Invoice file including its embedded XML and metadata.
#### Types
```ts
type FileContent = Uint8Array | Blob | File;
interface ValidationResult {
valid: boolean;
conformanceLevel?: string;
structureErrors?: string[];
pdfErrors?: string[];
}
```
## Examples
See the [examples](./examples/) directory for more usage examples.
## Development
```bash
# Run tests
deno task test
# Format code
deno task fmt
# Run linter
deno task lint
# Build npm package
deno task build:npm
```
## License
[MIT License](./LICENSE)