Skip to content

API Reference

Complete API documentation for ZIGX.

Core Functions

Compression

FunctionAliasDescription
compressbundleCreate an archive
compressData-Compress raw data

Extraction

FunctionAliasDescription
extractunbundleExtract an archive
extractWithResultunbundleWithResultExtract with details
listFileslistList files in archive

Archive Info

FunctionDescription
getArchiveInfoGet archive metadata
isValidArchiveQuick validity check

Validation

FunctionAliasDescription
validateverifyValidate archive
validateDetailedverifyDetailedDetailed validation
detectCorruption-Detect corruption type

Management

FunctionAliasDescription
manager.updateupdateAdd/remove files
manager.repairrepairRepair corrupted archive
manager.getMetadata-Get specific metadata value
manager.getAllMetadata-Get all metadata
manager.updateMetadata-Key-value CRUD for metadata
manager.setSignature-Sign an archive

Constants

zig
// Library version
pub const VERSION = "0.0.1";

// Archive format version
pub const FORMAT_VERSION: u16 = 0x0001;  // v1

// Compression algorithm version
pub const COMPRESSION_VERSION: u8 = 1;

// File extension
pub const FILE_EXTENSION = ".zigx";

Types

CompressionLevel

zig
pub const CompressionLevel = enum(u8) {
    none = 0,      // Store only, no compression
    fast = 1,      // Speed optimized (zstd 1)
    default = 3,   // Balanced (zstd 3)
    balanced = 6,  // Good balance (zstd 6)
    best = 19,     // High compression (zstd 19)
    ultra = 22,    // Maximum compression (zstd 22)
    
    // Fine-grained levels: level_2 through level_22
    
    pub fn custom(level: u8) CompressionLevel;  // Any level 1-22
    pub fn toInt(self: CompressionLevel) u8;    // Get raw value
    pub fn fromInt(level: u8) CompressionLevel; // From integer
};

CompressOptions

zig
pub const CompressOptions = struct {
    allocator: Allocator,                    // Required
    include: ?[]const []const u8 = null,     // Files/directories
    exclude: []const []const u8 = &.{},      // Exclude patterns
    output_path: ?[]const u8 = null,         // Output file
    level: CompressionLevel = .best,         // Compression level
    compression_enabled: bool = true,        // Enable compression
    auto_metadata: bool = true,              // Auto-generate metadata
    progress_callback: ?ProgressCallback = null,    // Progress tracking
    progress_context: ?*anyopaque = null,           // Callback context
    adaptive_compression: bool = false,      // Auto-detect content type
    long_distance_matching: bool = false,    // Better for large files
};

ExtractOptions

zig
pub const ExtractOptions = struct {
    archive_path: []const u8,                // Required
    output_dir: []const u8,                  // Required
    allocator: Allocator,                    // Required
    validate: bool = true,                   // Validate checksums
    overwrite: bool = false,                 // Overwrite existing
    progress_callback: ?ExtractProgressCallback = null,  // Progress tracking
    progress_context: ?*anyopaque = null,                // Callback context
};

Progress Types

zig
// Bundle progress
pub const ProgressEvent = enum { scanning, reading_file, compressing, writing, finalizing };
pub const ProgressInfo = struct {
    event: ProgressEvent,
    current_file: ?[]const u8,
    files_processed: usize,
    total_files: usize,
    bytes_processed: u64,
    total_bytes: u64,
    pub fn getPercent(self: *const ProgressInfo) f64;
};
pub const ProgressCallback = *const fn (info: ProgressInfo, context: ?*anyopaque) void;

// Extract progress
pub const ExtractProgressEvent = enum { started, reading_archive, decompressing, extracting_file, verifying, completed };
pub const ExtractProgressInfo = struct {
    event: ExtractProgressEvent,
    current_file: ?[]const u8,
    files_extracted: usize,
    total_files: usize,
    bytes_written: u64,
    total_bytes: u64,
    pub fn getPercent(self: *const ExtractProgressInfo) f64;
};
pub const ExtractProgressCallback = *const fn (info: ExtractProgressInfo, context: ?*anyopaque) void;

ArchiveInfo

zig
pub const ArchiveInfo = struct {
    format_version: u16,
    compression_version: u8,
    file_count: u32,
    original_size: u64,
    compressed_size: u64,
    payload_hash: [64]u8,
    archive_hash: [64]u8,
    metadata: Metadata,
    checksums: ChecksumList,

    pub fn deinit(self: *ArchiveInfo) void;
    pub fn getCompressionRatio(self: *const ArchiveInfo) f64;
    pub fn getSavedPercent(self: *const ArchiveInfo) f64;
};

Released under the Apache License 2.0.