1.0.3 • Published 5 months ago

caballo-client v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Caballo Client

Type-safe Deno/Node.js client for validating e-Invoices against EU standards using the Caballo API.

Table of Contents

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

Node.js

npm install caballo-client

Usage

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

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

type FileContent = Uint8Array | Blob | File;

interface ValidationResult {
  valid: boolean;
  conformanceLevel?: string;
  structureErrors?: string[];
  pdfErrors?: string[];
}

Examples

See the examples directory for more usage examples.

Development

# 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

1.0.3

5 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago